Welcome to my site & blog! I'm a Computer Science & Statistics student at the
University of Waterloo interested in machine learning and
programming languages.
Previously, I did deep learning research on collaborative self-driving at
Uber ATG, helped improve the neural network optimization algorithm
library K-FAC at Google
Brain, accelerated BERT inference at NVIDIATensorRT, and developed
data-driven models to identify fraud at John Hancock Financial. I've
also worked as a Research Assistant for Prof. Gautam Kamath in
differential privacy, Prof. Lin Tan in deep learning-driven software
analysis, and Prof. Pascal Poupart on neural network parameter learning.
Follow me on twitter, I mostly
tweet about technical topics! Checkout my
resources page for links to cool blog posts, talks, and other gems. Feel
free to reach out through email: nicholas.vadivelu [at] gmail [dot]
com.
Papers
Learning to Communicate and Correct Pose Errors.
Nicholas Vadivelu, Mengye Ren, James Tu, Jingkang Wang, Raquel Urtasun.
Conference on Robot Learning (CoRL), Virtual, 2020.
[arxiv]
[abstract]
[video]
Learned communication makes multi-agent systems more effective by aggregating distributed information. However, it also exposes individual agents to the threat of erroneous messages they might receive. In this paper, we study the setting proposed in V2VNet, where nearby self-driving vehicles jointly perform object detection and motion forecasting in a cooperative manner. Despite a huge performance boost when the agents solve the task together, the gain is quickly diminished in the presence of pose noise since the communication relies on spatial transformations. Hence, we propose a novel neural reasoning framework that learns to communicate, to estimate potential errors, and finally, to reach a consensus about those errors. Experiments confirm that our proposed framework significantly improves the robustness of multi-agent self-driving perception and motion forecasting systems under realistic and severe localization noise.
Enabling Fast Differentially Private SGD via Just-in-Time Compilation and Vectorization.
Pranav Subramani, Nicholas Vadivelu, Gautam Kamath.
NeuRIPS Privacy-Preserving Machine Learning Workshop, Virtual, 2020.
[arxiv]
[code]
[abstract]
A common pain point in differentially private machine learning is the significant runtime overhead incurred when executing Differentially Private Stochastic Gradient Descent (DPSGD), which may be as large as two orders of magnitude. We thoroughly demonstrate that by exploiting powerful language primitives, including vectorization, just-in-time compilation, and static graph optimization, one can dramatically reduce these overheads, in many cases nearly matching the best non-private running times. These gains are realized in two frameworks: JAX and TensorFlow. JAX provides rich support for these primitives as core features of the language through the XLA compiler. We also rebuild core parts of TensorFlow Privacy, integrating features from TensorFlow 2 as well as XLA compilation, granting significant memory and runtime improvements over the current release version. These approaches allow us to achieve up to 50x speedups in comparison to the best alternatives.
The group-by (or split-apply-combine) pattern, illustrated below, is ubiquitous in data analysis. Essentially, you have data with predefined groups and want to compute some summarizing statistics for each of those groups. For example, suppose you have a set of High School students and want to estimate the average height by...
continue reading
Through this post, we’ll explore data using altair, create simple dashboards, and deploy them for others to use. This was heavily inspired by Jake VanderPlas’s workshop at PyCon 2018. If this post piques your interest, definitely check that video out for a longer more in depth version. This article provides...
continue reading
Partitioning an array involves moving all elements that satisfy some predicate to one side of the array. The most common example is partitioning an array of numbers based on a pivot number, so that all elements on the left side of the array are less than or equal to the...
continue reading
Research Assistant roles are a great way to gain experience in research and fields that are rare/competitive in an industry role. This guide will focus on part-time assistant roles in Math, Computer Science or Engineering at the University of Waterloo (but hopefully some of the advice will generalize to other...
continue reading
This list of resources is designed for someone who has completed high school and would like a practical, hands-on introduction to data science/machine learning, then eventually find a job/internship in the field. There are tons of resources and lists of resources online: this one is short and curated (i.e. very...
continue reading
In this workshop, we will learn about Neural Networks and how to build them in TensorFlow 2. This article provides a summary of the main workshop, which you can watch here. Here is a colab link to run all the code. The colab and article have a section on metrics,...
continue reading
Through this workshop you will learn how to quickly model and understand datasets using scikit-learn. Topics will include a basic introduction to using decisions trees and random forests, understanding feature importance, identifying model weaknesses, explaining your model, and more. If you are not familiar with pandas, check out this post...
continue reading
Through this workshop, you will learn how to use Pandas to explore and “wrangle” datasets. Topics will include an introduction to Jupyter Notebooks/Colab, data cleaning with pandas, feature engineering with pandas, basic visualization and more. This workshop will focus on actual coding. This article provides a summary of the main...
continue reading
This summer, I had the pleasure of working at John Hancock Financial as a Data Science Intern. I worked with data scientists, actuaries, clinicians, and fraud analysts to build fraud detection models for long-term care insurance. Though I picked up many technical skills, I learned the most about working with...
continue reading
Competitive Pokemon is a turn-by-turn multiplayer game where you build a team of 6 Pokemon to battle other players. It differs from the traditional Pokemon games in that you don’t have to catch or train the pokemon: you can simply choose them. Pokemon are split into tiers based on their...
continue reading
Talks
Clustering for Image Analysis (with Kanika Chopra)
WiSTEM High School Student Conference, Virtual, Feb 2021.
[description]
[slides]
[notebook]
Learn about the basics of K-Means clustering as demonstrated on the MNIST dataset. We cover a basic introduction to Data Science & Machine Learning, Python & NumPy, and finally, implement K-Means.
Conventional software engineering workflows are sub-optimal for DS & ML. Through this workshop, you'll learn about best practices for experiment configuration, productivity tools, continuous integration for data science, static analysis, and more.
Learn how to create beautiful, interactive data visualizations using Altair in Python. Through this workshop, we'll explore data using Altair, learn about the grammar of graphics, create simple dashboards, and deploy them for others to use.
Overview of Data Science and Data Science Careers.
University of Waterloo Data Science Club, Waterloo, Aug 2020.
[video]
[description]
[slides]
In this talk, you'll learn about UWaterloo's data science club, data science in general, data science careers, and how to tailor your education for a data science career. This presentation was made for first-year students entering UWaterloo in Fall 2020.
What You See is What You Get: Exploiting Visibility for 3D Object Detection.
Uber ATG Paper Reading Group, Toronto, July 2020.
[description]
[slides]
Summary and critique of the paper What You See is What You Get: Exploiting Visibility for 3D Object Detection by Peiyun Hu, Jason Ziglar, David Held, Deva Ramanan.
Introduction to JAX for Machine Learning and More.
University of Waterloo Data Science Club, Waterloo, July 2020.
[video]
[description]
[notebook]
JAX is a numeric computing library with a numpy-like interface. It specializes in function transformations such as auto-differentiation, just in time compilation (via XLA), and more. Through this workshop, you'll learn about what JAX is, how to use it, how it is different from other libraries like PyTorch and TensorFlow, why you should consider adding it to your toolkit.
Stand-Alone Self-Attention in Vision Models.
Uber ATG Paper Reading Group, Toronto, April 2020.
[description]
[slides]
Summary and critique of the paper Stand-Alone Self-Attention in Vision Models by Prajit Ramachandran, Niki Parmar, Ashish Vaswani, Irwan Bello, Anselm Levskaya, Jonathon Shlens.
Overview of gradient-based neural network optimization algorithms, including momentum, nesterov, adagrad variants, adam variants, and K-FAC.
Introduction to Neural Networks in TensorFlow 2.0.
Laurier Developer Student Club, Waterloo, Nov 2019.
[video]
[description]
[notebook]
This workshop introduces neural networks in TensorFlow 2.0. Topics covered include linear regression, multiclass logistic regression, gradient descent, and neural network. TF 2.0 features such as tf.keras, tf.data, and more are covered. This was co-hosted by the UW Data Science Club and Laurier Developer Student Club.
Introduction to Machine Learning with Scikit-learn.
Hack the North, Waterloo, Sep 2019.
[video]
[description]
[notebook]
[slides]
Through this workshop you will learn how to quickly model and understand datasets using scikit-learn. Topics will include a basic introduction to using decisions trees and random forests, understanding feature importance, identifying model weaknesses, explaining your model and more. This workshop will focus on evaluating your model with less emphasis on syntax and mechanics.
Introduction to Pandas for Python.
Hack the North, Waterloo, Sep 2019.
[video]
[description]
[notebook]
Through this workshop, you will learn how to use Pandas to explore and “wrangle” datasets. Topics will include an introduction to Jupyer Notebooks/Colab, data cleaning with pandas, feature engineering with pandas, basic visualization and more. This workshop will focus on actual coding.