Research Engineer, Infrastructure, Training Systems
Thinking Machines Lab · San Francisco · $350,000–$475,000 (stated in the posting)
About Thinking Machines
The mission of Thinking Machines is to build AI that extends human will and judgment. We are training frontier models with Inkling, developing Tinker to let people make models their own, and crafting interfaces that broaden human-AI communication. We believe the future worth building is human, and we're hiring people who want to build it.
About the Role
Frontier model training depends on systems that can keep large accelerator clusters working efficiently and reliably through runs lasting days or weeks. We’re looking for engineers to build and improve those systems, working closely with researchers on the infrastructure behind large-scale pre-training and mid-training.
The work spans the training stack: dividing models across accelerators, improving numerical and hardware efficiency, coordinating distributed workloads, and recovering from failures without losing valuable training time. You might optimize FP4/FP8 training, implement a parallelism strategy, remove a communication bottleneck, or make a large training workload more reliable.
We’re especially interested in two complementary areas:
Distributed Training: Build and optimize the frameworks, runtimes and workflows that make large-scale model training possible. Relevant experience includes FSDP, sharded model and optimizer states, expert or context parallelism, distributed checkpointing, training-job scheduling, and improvements to model FLOPs utilization.
Communication / Collectives: Build and optimize the communication systems that connect accelerators during training. Relevant experience includes NCCL or equivalent runtimes, collective algorithms, topology-aware communication, communication/computation overlap, and fault-tolerant training.
You do not need to specialize in both areas. We value depth in a difficult subsystem, the ability to reason across the training stack, and a track record of turning that understanding into working systems.
Our training systems stack is written in Rust. Prior Rust experience is helpful, but strong systems engineers who are interested in learning it are encouraged to apply.
What You’ll Do
Design, implement and operate distributed training infrastructure that scales across thousands of GPUs and nodes.
Improve training throughput, accelerator utilization and time to train by diagnosing bottlenecks across compute, memory, networking and storage.
Develop parallelism strategies, runtime components, communication primitives or workload orchestration that support evolving model architectures.
Make long-running training jobs more reliable through better observability, checkpointing, failure diagnosis and recovery.
Work closely with researchers to understand new workloads, test systems changes and measure their effect on training performance and correctness.
Build reusable, maintainable frameworks and libraries that make experimentation faster and training more reproducible.
Share useful findings through documentation, open-source contributions or technical reports.
Your focus will depend on your strengths and the problems the team needs to solve.
What We’re Looking For
Strong engineering skills: you write performant, maintainable code and can debug complex systems.
Hands-on experience building, optimizing or operating distributed model-training infrastructure, with a clear understanding of your personal contributions.
Depth in at least one relevant area, such as distributed training frameworks, parallelism, GPU communication, low-precision training, runtime systems or training-workload orchestration.
Understanding of deep learning frameworks such as PyTorch or JAX and the systems beneath them.
The ability to investigate problems across subsystem boundaries and independently carry a solution through implementation and validation.
A collaborative approach to working with researchers and engineers, including clear communication about evidence, uncertainty and tradeoffs.
A bachelor’s degree in a relevant technical field or equivalent practical experience.
We welcome engineers at different career stages. Technical contribution and judgment matter more than a particular title or number of years.
Experience That Could Be Especially Relevant
We encourage you to apply if some, rather than all, of these describe your work:
Implementing or improving FSDP, ZeRO, tensor, pipeline, expert, context or sequence parallelism.
Improving training MFU, throughput, memory efficiency or cost through profiling, mixed precision, FP4/FP8, kernels or compiler work.
Developing NCCL or equivalent communication runtimes, collective algorithms, or topology-aware communication.
Improving distributed checkpointing, restart behavior, fault tolerance or training stability.
Building scheduling or runtime infrastructure for large, long-running model-training workloads.
Contributing substantial features to projects such as PyTorch, XLA, Megatron-LM, DeepSpeed or related infrastructure.
We’re interested in what you built, the scale and constraints you worked with, how you diagnosed problems, and what improved as a result.
Logistics
Location: San Francisco, California.
Compensation: Depending on background, skills and experience, the expected annual salary range for this position is $350,000–$475,000 USD.
Visa sponsorship: We sponsor visas. While we can’t guarantee success for every candidate or role, if you’re the right fit, we’re committed to working through the visa process together.
Benefits: Generous health, dental and vision benefits, unlimited PTO, paid parental leave, and relocation support as needed.
Application note: This is an evergreen role, and we continuously review applications as opportunities arise. There may not always be an immediate opening aligned with your experience. Please avoid applying more than once every six months; you are welcome to apply separately to a specific team or project opening.
More jobs at Thinking Machines Lab · Software Engineering jobs in San Francisco