Phuc Nguyen

ML research engineer.

Current Learning Goals

I'm currently working towards these goals by gradually achieving small intermediate goals along the way every day:

451 study hours logged. Last studied: .

Math [why]My ultimate goal for learning math is building a strong mathematical background to contribute to the science of almost any fundamental problems in deep learning such as new optimization techniques, new architectures, ...: Working towards Metric Spaces and Geometry, Real and Complex Analysis, Measure Theory and Functional Analysis, Mean Field Theory, and 10 more courses.

Physics [why]My ultimate goal for learning physics is building a technical foundation to pursue sci-fi and disruptive technology projects, and bring the latest advances in science and technology to reality: Working towards Condensed Matter Physics, Fission and Fusion, Nuclear Physics, Particle Physics, General Relativity, Suns, Stars and Planets, and 19 more courses.

Intro

I'm currently a ML research engineer working on post-training and building pre/post-training infrastructure at Nous Research in 🇫🇷 Paris.

Previously, I was a research engineer at Hugging Face, where I was part of the distributed training team nanotron and worked on various research reproduction effortsThese Twitter threads document my research experiments - scroll through earlier and later tweets to see the full journey and discoveries on the Hugging Face science team (FP8 research, Infini-Attention, MoE's Expert Parallelism, DoMiNo, DoReMi).

More About Me

In my free time, I mostly read non-fiction - a bit of history, rationality, and a fairly diverse mix of other things; here's favorite reading. Once in a while I come across a quote that resonates with me, and I save those here. Sometimes I also collect photos that I find inspiring. I also keep a list of people I admire, favorite organizations, and things I wish to understand deeply someday (and potentially work on in the future).

I also keep a timeline of moments I see as meaningful contributions to human progress.

Before Hugging Face, I designed a study plan that spanned across many subjects and then consistently studied from 3:30 AM to 3:30 PM, then went to sleep from 5:20 PM to 3:00 AM and repeated for 2 years.

Books

The Ultra-Scale Playbook cover

The Ultra-Scale Playbook: Training LLMs on GPU Clusters paperback podcast

Nouamane Tazi, Ferdinand Mom, Haojun Zhao, Phuc Nguyen, Mohamed Mekkouri, Leandro Werra, Thomas Wolf — Lulu, 2025.

Embark on a journey to orchestrate thousands of GPUs to scale LLM training to the largest compute clusters today. Starting with the memory and compute anatomy of model training we then explore 5 dimensions of parallelism to distribute training efficiently. From there we dive deeper into how GPUs are designed and how specialised kernels help increase training efficiency further. This book is a great starting point if you want to get into training ever larger models efficiently at scale!

Selected Work

MoE Pretraining Infrastructure @ NousResearch [Blog]

Post-training for a new generation Hermes model.

Post-training infra for Kimi K2 (1 trillion parameters) on 512 GPUs.

Built a new expert parallelism implementation and validated near-linear scaling across 16 nodes (128 GPUs) on Qwen3-30B-A3B model: [Pull Request]
• 50% faster than torchtitan's default expert parallelism (15,057 vs 9,930 tok/s/GPU at EP=8)
• Scales near-linearly to 16 nodes (128 GPUs, 13,856 tok/s/GPU), enabling 10T tokens/month throughput at 256 GPUs
• Implemented kernel fusion to fuse expert_outputs * router_probs to silu activation in moe FFN [link], and implemented expert_outputs * router_probs fusion to DeepEP's combining kernel [deepep fork]
Identified a potential optimization that could bump throughput by 30%New fix coming up, translating to 21k throughput, equivalent to 30 trillion tokens in 2 months (for reference, Qwen3-30B-A3B was trained on 36T tokens)

Implemented Least-Loaded Expert Parallelism technique for MoE training - redistributes expert workloads across GPUs at runtime to eliminate straggler GPUs and imbalance memory caused by token routing imbalance during training. [Pull Request]

Talks