Staff Software Engineer, TPU, Performance
Summary
Staff software engineer on Google's Core ML team optimizing the performance of ML models like Gemini and leading open-source models on TPU hardware across JAX and PyTorch. Day to day: build and maintain training/serving benchmarks, find bottlenecks, and improve compilers, runtimes, and next-gen TPU architectures.
Google’s Core Machine Learning (ML) organization is seeking software engineers to join the team known for pioneering work with Tensor Processing Units (TPUs). In this role, you will work on Gemini, as well as industry leading open-source models, to understand model architecture and optimize the performance of these Machine Learning (ML) models on TPU systems for both Just After eXecution (JAX) and PyTorch platforms. You will improve the performance of ever-evolving ML workloads, achieving results. These fundamental efforts will influence next-generation (next-gen) TPU architectures via partnerships, ensuring performance for Gemini and Open-Source Software (OSS) Machine Learning (ML) models.The Core team builds the technical foundation behind Google’s flagship products. We are owners and advocates for the underlying design elements, developer platforms, product components, and infrastructure at Google. These are the essential building blocks for excellent, safe, and coherent experiences for our users and drive the pace of innovation for every developer. We look across Google’s products to build central solutions, break down technical barriers and strengthen existing systems. As the Core team, we have a mandate and a unique opportunity to impact important technical decisions across the company.Individual pay is determined by factors including job-related skills, experience, and relevant education or training.
US: $207000 - $300000 (USD) + 20% bonus target + equity + benefits
Learn more about benefits at Google.
- Identify and maintain ML training and serving benchmarks that are representative to Google production and broader ML industry.
- Achieve performance for customer launches, and in case of third-party/Open-Source Software (3P/OSS) models, for engaged benchmark submissions ML commons, InferenceMAX, etc.).
- Use the benchmarks to identify performance opportunities and drive out-of-the-box performance toward improving the compiler, runtime, etc., in collaboration with those teams.
- Engage with Google Product teams and researchers to solve their performance problems (e.g., onboard new ML models and products on Google new TPU hardware, enabling larger models (giant models) to train efficiently on a very large-scale (i.e., thousands of TPUs).
- Analyze performance and efficiency metrics to identify bottlenecks, design, and implement solutions at Google fleet-wide scale.
Minimum qualifications:
- Bachelor’s degree or equivalent practical experience.
- 8 years of experience in software development.
- 5 years of experience with one or more of the following: speech/audio (e.g., technology duplicating and responding to the human voice), reinforcement learning (e.g., sequential decision making), ML infrastructure, or specialization in another ML field.
- 5 years of experience with ML design and ML infrastructure (e.g., model deployment, model evaluation, data processing, debugging, fine tuning).
- 5 years of experience testing, and launching software products, and 3 years of experience with software design and architecture.
Preferred qualifications:
- Master’s degree or PhD in Engineering, Computer Science, or a related technical field.
- 8 years of experience with data structures and algorithms.
- Experience with machine learning, compiler optimization, code generation, and runtime systems for GPU architectures (OpenXLA, MLIR, Triton, etc).
- Experience in tailoring algorithms and ML models to exploit ML accelerator architecture strengths and minimize weaknesses.
- Experience in low-level GPU programming (CUDA, OpenCL, etc.) and performance tuning techniques.
- Understanding of modern Graphics Processing Unit (GPU), TPU or other ML accelerator architectures, memory hierarchies, and performance bottlenecks.