About the RoleAs a
Training Runtime: Runtime Foundations Engineer, you will work on the software that ties thousands of computers together and exposes them as a unified system.
This system has to serve individual researchers running multiple parallel experiments, as well as our largest training runs spanning 100's of thousands and even millions of machines and accelerators. This requires easy to use, introspectable systems that can promote a fast debugging and development cycle, as well as relentless optimization for scale while maintaining stability and performance throughout.
You will work primarily in
Codex + Rust, building high-performance asynchronous systems with a strong emphasis on performance, correctness, resilience, and scalability.
Working at this scale and at the frontier of AI development poses novel challenges. We support many different types of research, and the problems you will be working on are highly ambiguous and require a superb ability to jump into novel domains, understand user problems, and demonstrate both strong design judgment and proficient execution to advance our programs.
We're looking for people who love optimizing an end-to-end platform, understanding high-performance architectures to maximize both local and distributed performance across our supercomputers. We're looking for engineers excited by the rapid pace of responding to the dynamic and evolving needs of our training runtime and compute stack.
This role is based in San Francisco, CA. We use a hybrid work model of 3 days in the office per week and offer relocation assistance to new employees.
In this role, you will:- Work across our Python and Rust stack
- Design, build, and maintain software to orchestrate and monitor machine learning workloads on our largest supercomputers
- Profile and optimize our software stack to support computation orchestration at frontier scale
- Improve reliability, observability, and fault tolerance for long-running jobs
- Debug complex distributed systems issues across large clusters
- Respond to the changing shapes and needs of the ML systems to enable our researchers
You might thrive in this role if you:- Have experience developing distributed systems
- Enjoy understanding how large systems behave and fail at scale
- Love being both a developer and an operator
- Care deeply about performance, correctness, and reliability
- Have strong software engineering skills and are proficient in Rust or another systems programming language (e.g. C++)
- Have solid Linux knowledge, and are comfortable with systems-level debugging, performance analysis, and memory profiling
- Are comfortable and experienced in developing asynchronous and concurrent systems
- Like high-ownership environments with light process and strong engineering agency