stas00/ml-engineering · 上手攻略
- 仓库:stas00/ml-engineering
- 链接:https://github.com/stas00/ml-engineering
- 分类:engineering / llm-infra
- 作者:Tom
- 更新:2026-07-10
这是什么
stas00/ml-engineering 是一本机器学习工程开放手册,由 Meta(参与 BLOOM-176B 训练)、HuggingFace(参与 BLOOM-176B、IDEFICS-80B 训练)、Contextual.AI 等一线团队的 ML 工程师 Stas Bekman 多年实战经验沉淀而成。
与一般教程不同,它不是教你怎么用 transformers.trainer,而是解决真实大规模训练中会遇到的具体工程问题:多节点 GPU 通信调优、SLURM 集群配置、分布式存储选型、PyTorch 分布式调试、NCCL 网络基准测试、算子优化等。内容全部来自生产环境,有大量可直接复制使用的命令和脚本。
许可为 CC-BY-SA-4.0,可自由使用但需署名。
解决什么问题
- 大规模 LLM 训练无从下手:缺少从 1 卡扩到 64+ 卡的系统性工程指南。
- 训练卡在调试阶段:PyTorch 分布式任务 hang 住不知道从哪下手,本书有专门的 debugging 章节。
- 集群配置选型困惑:不知道 SSD vs NVMe vs Lustre 的使用场景,不知道 InfiniBand vs RoCE 的取舍。
- 重复踩坑:很多 ML 工程师在网络调优、存储瓶颈上反复浪费 Weeks 的时间。
- 中文资料稀缺:主流资料多为模型使用,工程侧(训练、推理、优化)中文资料极度匮乏。
内容结构(7 大板块)
Part 1. Insights
├── AI Battlefield Engineering # 成功训练需要了解的整体图景
└── How to Choose a Cloud Provider # 选云指南
Part 2. Hardware
├── Compute # GPU/CPU 选型、TFLOPS 对比、内存带宽
├── Storage # 本地、分布式、共享文件系统
└── Network # 节点内/节点间网络(InfiniBand/RoCE/NVLink)
Part 3. Orchestration
├── Orchestration Systems # 容器管理、资源调度
└── SLURM # 完整的 SLURM 使用指南
Part 4. Training
└── 训练相关指南(从入门到生产)
Part 5. Inference
└── 推理优化相关
Part 6. Development
├── Debugging and Troubleshooting # PyTorch 分布式调试
└── Testing # 测试最佳实践
Part 7. Miscellaneous
└── Resources # LLM/VLM 训练日志公开资源
核心亮点内容
GPU 算力对比表
包含各代 GPU(V100/A100/H100/H200 等)的理论 TFLOPS 和实际测量 TFLOPS,帮助选型决策。
all_reduce_bench.py
比 NCCL-tests 更容易使用的网络吞吐基准测试工具,用于验证多节点 GPU 通信效率。
torch-distributed-gpu-test.py
快速验证多节点 GPU 互联是否正常,避免训练中途才发现网络配置错误。
mamf-finder.py
实测你的 GPU 实际 TFLOPS,对比理论值,排查硬件或驱动问题。
SLURM 速查表
包含常用命令、常见问题排查,比官方文档更贴近实战。
PyTorch 分布式调试指南
涵盖 hang 检测、死锁排查、梯度同步失败等高频问题,有具体排查命令。
快速上手建议
这不是一个「安装后运行」的工具库,而是一本参考手册。建议用法:
-
AI Agent 集成:仓库内置
SKILL.md,可以直接给 AI agent 读,让它获得训练大模型的系统性工程知识:# 在支持 SKILL.md 的 AI Agent 中加载此仓库 # Agent 即具备训练/调优 LLM 的工程知识 -
遇到问题时搜索:每个章节都有具体操作步骤和命令,先定位问题板块再细读。
典型适用场景
| 场景 | 适用内容 |
|---|---|
| 搭建训练集群 | Compute/Storage/Network 全流程选型指南 |
| 多节点分布式训练 | SLURM 配置、NCCL 调优、all_reduce_bench |
| PyTorch 调试 | pytorch.md 调试章节,hang/break 排查 |
| 推理服务优化 | Inference 章节 |
| 换云或选云 | How to Choose a Cloud Provider |
| 训练日志分析 | Resources 章节收录了 BLOOM 等公开训练日志 |
坑与注意
- 不是入门教程:假设读者有 ML 基础(会用 PyTorch、知道什么是梯度),内容聚焦工程侧,不讲模型原理。
- 部分内容有时效性:GPU 型号、网络技术快速迭代,书中的具体数值(如某型号的 TFLOPS)是历史快照,需要到厂商官网获取最新数据。
- 深度有余、广度不足:每个话题讲得很深,但不会覆盖所有话题(如 RLHF、模型压缩等非工程侧话题不在范围内)。
- SLURM 为主:Orchestration 章节以 SLURM 为主要示例,如果你用 Kubernetes/MPI/其他调度系统,部分内容需要适配。
- 中文翻译少:目前中文社区资料极少,遇到问题主要靠读英文原版。
- 电子书版本可能滞后:建议直接参考 GitHub 上的 Markdown 源文件以获取最新内容。
与同类对比
| 资源 | 定位 | 优势 | 劣势 |
|---|---|---|---|
| ml-engineering | 工程实战手册 | 来自一线经验、命令脚本可直接用、内容全面 | 无中文、非互动式 |
| HuggingFace 博客 | 训练技巧分享 | 及时、权威 | 碎片化、不系统 |
| The Stack Overflow for ML | 问题求解 | 覆盖面广 | 质量参差不齐 |
| NVIDIA 官方文档 | 硬件/驱动 | 最权威 | 过于底层、不讲实战 |
| CUDA Python 官方教程 | GPU 编程入门 | 系统化 | 不涉及集群/分布式 |
一句话结论
如果你正在或即将从事大模型训练或推理工程,无论团队大小,这本手册都是目前最贴近生产实践的免费工程参考书。建议先通读 Insights 章节建立全局认知,再根据具体任务定向查阅。