What to Expect
As a Software Engineer within the AI group, you will work on reinforcing, optimizing, and scaling our neural network training and auto-labeling infrastructure for both Autopilot and the Humanoid robot.
At the core of our autonomy capabilities are multiple neural networks that the Deep Learning team is designing to train on very large amounts of data across large-scale GPU clusters and, soon, our supercomputer Dojo.
Robustly training networks at scale, whether for production models or quick experiments, and completing them in the shortest amount of time possible, is critical to our mission.
What You’ll Do
Reduce wall clock time to convergence of our training jobs by identifying bottlenecks in the ML stack, from data-loading up to the GPU.
Integrate efficient, low-level code with the overall high-level training framework.
Profile our workloads and implement solutions to increase training efficiency.
Optimize workloads for efficient hardware utilization (e.
g.
CPU and GPU compute, data throughput, networking).
What You’ll Bring
Extensive experience in CUDA kernel programming and pushing GPUs to their limits
Experience programming in Python.
Experience with at least one deep learning framework (ideally in PyTorch).
Demonstrated experience in profiling CPU/GPU code.
Proficient in system-level software, in particular hardware-software interactions and resource utilization.
Good knowledge of CUDA kernels used in training state-of-the-art deep learning models.
Optional: Experience with high-performance networking (e.
g.
Infiniband, RDMA, NCCL).
Optional: Experience with Triton.