AI 时代最值钱的技能之一:GPU 集群管理完整学习路径,看懂了你就是稀缺人才
AI 时代最值钱的技能之一:GPU 集群管理完整学习路径,看懂了你就是稀缺人才
现在整个 AI 行业,最缺什么样的人?
不是调包侠,不是写 prompt 的,不是做前端的,甚至不是写大模型算法的。
最缺的,是能管好一个有几千张 GPU 的大集群的人。
这种人有多值钱?
我可以告诉你:现在国内能管好 1000 张以上 GPU 集群的工程师,年薪百万起,上不封顶,而且各大公司抢着要。
甚至很多公司愿意出两倍三倍的工资,从别的公司挖。
但是这种人太少了。
少到什么程度?整个中国,可能也就几百个人真正有这个能力。
为什么这么少?
因为这个技能太综合了,太偏实战了,学校里不教,网上也几乎没有系统的学习资料。
你需要懂硬件,懂网络,懂操作系统,懂驱动,懂 Kubernetes,懂调度,懂存储,懂可观测性,懂故障处理。
每一个单拎出来都是一个完整的方向,而你需要全部都懂,而且还要能把它们串起来。
今天这篇文章,我就给你画一张完整的地图。
从入门到精通,你需要学什么,按什么顺序学,有哪些坑,有哪些资源。
看完这篇,你就知道这个方向的水有多深,以及你应该怎么入门。
先搞清楚:这个岗位到底是做什么的?
在讲学习路径之前,我们先搞清楚,GPU 集群管理员,每天到底在做什么。
很多人以为,不就是装装驱动,跑跑任务吗?有什么难的。
大错特错。
一个合格的 GPU 集群管理员,他的日常工作是:
- 集群建设:新采购了 500 张 GPU,怎么组网,怎么部署,怎么上线,怎么验证每一张卡都是好的。
- 作业调度:几百个用户同时提交训练任务,怎么分配资源,怎么排优先级,怎么避免抢资源,怎么保证重要的任务先跑。
- 性能优化:为什么别人的 8 卡训练能跑到 90% 的利用率,你的只能跑到 50%?瓶颈在哪里?是网络?是存储?还是驱动?怎么调?
- 故障处理:半夜三点告警,训练任务突然全部卡住了,或者失败了,怎么快速定位问题?是卡坏了?是网络断了?是存储挂了?还是调度器出问题了?怎么最快恢复?
- 利用率提升:现在整个集群的平均利用率只有 30%,怎么提升到 60%,甚至 70%?这相当于用同样的钱,多买了一倍的卡。
- 用户支持:用户说我的任务怎么跑不起来,怎么跑这么慢,怎么看不到日志,怎么数据读不出来?你得帮他排查。
简单说:
整个公司几个亿甚至几十个亿的 GPU 资产,能不能发挥出它应有的价值,90% 取决于这几个人。
一个好的集群管理员,能把集群利用率从 30% 提升到 60%,相当于给公司省了一半的硬件钱。
一个差的集群管理员,可能一半的卡都在空转,或者天天出故障,训练任务跑三天两头断,整个公司的算法工程师都在等资源。
这就是为什么这个岗位这么值钱。
知识体系第一层:硬件层,你得先知道你管的到底是什么东西
很多做集群管理的工程师,根本不懂硬件。
他们只会用 Kubernetes,GPU 在他们眼里就是一个抽象的资源单位,和 CPU 没有什么区别。
这是绝大多数人的第一个天花板。
你想真正管好 GPU 集群,你必须懂硬件。
你必须知道这些卡到底是怎么连起来的,瓶颈在哪里。
你需要掌握的硬件知识:
1. GPU 本身的知识
- NVIDIA 各个系列 GPU 的规格参数和区别:A100、A800、H100、H800、B100、GB200
- CUDA Core、Tensor Core、RT Core 分别是做什么的,什么计算用什么
- GPU 的显存带宽、显存大小、TDP 功耗对训练的影响
- 为什么同样是 H100,PCIe 版和 SXM 版性能差 30%
2. GPU 之间的互联
- NVLink 是什么,NVSwitch 是什么,它们的带宽是多少,延迟是多少
- 为什么 8 卡机的训练速度比 8 个单卡机快好几倍
- RDMA 是什么,RoCE 和 InfiniBand 的区别,什么场景用哪个
- 为什么大模型训练必须用 InfiniBand,用 RoCE 就是找死
3. 服务器内部的其他部件
- CPU 怎么选,核数够不够,会不会成为瓶颈
- 系统内存多大才够,为什么需要和显存有一定比例
- 本地存储用 SSD 还是 NVMe,速度要求是多少
- PCIe 版本的区别,PCIe 4.0 和 PCIe 5.0 的带宽是多少,会不会成为瓶颈
4. 网络架构
- 什么是 Fat-Tree 拓扑,什么是 CLOS 拓扑,大集群为什么要用这种拓扑
- 什么是 oversubscription ratio,1:1 和 2:1 和 4:1 对性能有什么影响
- 为什么 10G 网络跑不了分布式训练,为什么至少要 100G,最好 200G/400G
- 网卡怎么选,ConnectX-5、ConnectX-6、ConnectX-7 的区别
这一层的知识,是最基础的,也是最容易被忽略的。
很多集群的性能问题,根因就是硬件架构设计的时候就有问题,后面再怎么调软件都没用。
知识体系第二层:系统层,离硬件最近的地方
懂了硬件之后,接下来就是系统层的知识。
也就是怎么让操作系统和驱动,把硬件的性能全部发挥出来。
你需要掌握:
1. NVIDIA 驱动全家桶
- NVIDIA Driver 怎么装,怎么选版本,不同版本有什么坑
- CUDA Toolkit 是什么,cuDNN 是什么,NCCL 是什么,它们的版本对应关系
- 为什么驱动版本和 CUDA 版本不匹配的时候,会出现各种奇怪的问题
- NVIDIA Container Toolkit 是什么,怎么让 Docker 能识别 GPU
- MIG 是什么,怎么把一张 A100 切成 7 个小实例,有什么优缺点
2. 操作系统内核调优
- 为什么大家都用 Ubuntu,而不是 CentOS 或者别的发行版
- 哪些内核参数需要调,怎么调,为什么要调
- 网络栈的调优:TCP 缓冲区、连接数、backlog 等等
- 内存管理的调优:overcommit、swap、透明大页(THP)为什么一定要关掉
- CPU 亲和性(CPU Pinning)怎么设置,为什么对性能影响很大
3. 文件系统和存储
- 本地存储用什么文件系统最好,XFS 还是 EXT4?为什么?
- 分布式存储用什么?Lustre?BeeGFS?JuiceFS?MinIO?各有什么优缺点
- 为什么共享存储的读带宽不够的时候,整个集群的训练速度都会被拖死
- 存储的 IOPS、吞吐量、延迟,分别对什么类型的作业影响最大
4. 性能分析工具
nvidia-smi怎么看,那些字段都是什么意思dcgmi是什么,怎么用它做更深入的 GPU 健康检查和性能分析nccl-tests是什么,怎么用它来测机间通信带宽,发现网络瓶颈perf、bcc、bpftrace这些通用的性能分析工具,怎么用在 GPU 场景
这一层的水非常深。
同样的硬件,不同的人调出来,性能可能差 30%,甚至 50%。
这都是真金白银的差距。
知识体系第三层:集群编排层,怎么把几千张卡管起来
现在几乎所有的 GPU 集群,都是跑在 Kubernetes 上的。
所以你必须非常非常懂 Kubernetes,而且要懂 Kubernetes 里面和 GPU 相关的那些特殊部分。
你需要掌握:
1. Kubernetes 基础知识
- Kubernetes 的核心概念:Node、Pod、Deployment、StatefulSet、DaemonSet、ConfigMap、Secret
- Kubernetes 的调度原理,调度器是怎么工作的,怎么打分,怎么选择节点
- Kubernetes 的网络模型,CNI 插件是怎么回事
2. GPU 相关的 Kubernetes 插件
- NVIDIA GPU Operator 是什么,能帮你做什么,怎么部署,有什么坑
- GPU 资源是怎么暴露给 Kubernetes 的,
nvidia.com/gpu这个资源是怎么来的 - 为什么你不能在一个 Pod 里申请 0.5 张 GPU,为什么只能申请整数
3. 网络插件
- 为什么默认的 Calico、Flannel 对于 GPU 集群来说根本不够用
- 什么是 SR-IOV,什么是 Macvlan,什么是 Host Network,它们的性能差距有多大
- 怎么让 Pod 里面能直接用 RDMA 访问 InfiniBand 网卡
- Multi-NIC CNI 是什么,怎么让一个 Pod 同时用多个网卡
4. 存储插件
- 怎么把分布式存储挂载到 Pod 里面
- ReadWriteMany 和 ReadWriteOnce 的区别,为什么绝大多数场景你都需要 ReadWriteMany
- 怎么避免几百个 Pod 同时读同一个文件把存储打挂
5. Kubeflow 生态
- Kubeflow 是什么,里面的各个组件都是做什么的
- Kubeflow Training Operator 是什么,怎么用它提交 PyTorch、TensorFlow 的分布式训练任务
- MPI Operator 是什么,怎么提交多机多卡的训练任务
- KServe 是什么,怎么做模型服务
当然,Kubernetes 本身的水就非常深,你不需要成为 K8s 专家,但是你必须懂核心原理,知道出了问题怎么排查。
知识体系第四层:作业调度层,这才是 GPU 集群真正的核心
很多人以为,把 Kubernetes 搭起来,能跑 GPU 任务了,就完事了。
大错特错。
这才刚刚开始。
原生 Kubernetes 的调度器,对于 GPU 训练场景来说,根本就是垃圾。
如果直接用原生调度器,你的集群利用率能到 30% 就不错了,而且会有各种各样的问题。
所以你必须懂专门的 GPU 调度器。
你需要掌握:
1. 主流的 GPU 调度器
- Volcano:现在最主流的开源 AI 调度器,几乎是事实标准
- KubeBatch:Volcano 的前身,现在还有很多老集群在用
- YuniKorn:Apache 的调度器,设计理念很先进,但是用的人还不多
- 各个云厂商自己的调度器:阿里云、腾讯云、AWS 都有自己的实现
2. 调度器的核心能力
- 队列(Queue)和队列层级:怎么分部门队列,怎么设置资源配额
- 优先级和抢占:高优先级任务怎么把低优先级的任务挤走,挤走之后怎么办
- 公平调度:怎么保证每个部门都能拿到它应得的资源,不会被某一个部门占满
- Bin Packing:怎么把任务尽量塞到同一个节点上,提高利用率,减少资源碎片
- 拓扑感知调度:怎么把多卡任务尽量安排在同一个交换机下面,减少网络延迟
3. 高级调度能力
- 弹性训练:任务可以根据资源情况自动扩缩容,用多少资源申请多少
- 分时调度:白天给推理用,晚上给训练用,提高利用率
- 竞价调度:配合云厂商的竞价实例,大幅降低成本
- 作业生命周期管理:排队、运行、暂停、恢复、失败重试
4. 常见的调度问题和坑
- 死锁:A 任务占了一半资源等另一半,B 任务占了另一半等另一半,两个都跑不起来
- 资源碎片:节点上剩下 1 张卡,但是没有人用,几千张卡的集群,碎片能有 20-30%
- 头部阻塞:一个巨大的任务在队首,占着位置跑一个星期,后面所有任务都等着
- 饥饿:某个小任务永远抢不到资源,一直排在队尾
调度器是整个 GPU 集群的大脑。
调度器好不好,直接决定了你的集群利用率是 30% 还是 60%。
这中间差的一倍,就是几千万甚至几个亿。
知识体系第五层:可观测性层,你得知道你的集群里到底在发生什么
没有好的监控,你根本就不知道你的集群是好是坏。
出了问题你也根本不知道去哪里查。
一个合格的 GPU 集群监控体系,至少要覆盖这几个层面:
1. 硬件层面的监控
- 每一张 GPU 的温度、功耗、风扇转速、显存使用率、计算利用率
- 每一张 GPU 的健康状态,有没有报错,有没有降频
- 每一个网卡的流量、错误包、丢包率
- 每台服务器的 CPU、内存、磁盘使用率
2. 系统层面的监控
- 驱动有没有报错,内核有没有报错
- NCCL 有没有报错,通信带宽有没有异常
- 存储的延迟、IOPS、吞吐量有没有异常
- 网络的延迟、丢包有没有异常
3. 调度层面的监控
- 现在整个集群有多少资源在用,多少空闲
- 每个队列用了多少资源,还剩多少配额
- 排队的任务有多少,平均排队时间是多少
- 每个节点的碎片率是多少,整个集群总的碎片率是多少
4. 作业层面的监控
- 每个用户跑了多少任务,用了多少 GPU 小时
- 每个任务的 GPU 利用率是多少,是不是在空跑占资源
- 任务的失败率是多少,主要的失败原因是什么
- 任务的平均运行时间,平均排队时间
5. 日志系统
- 所有节点的系统日志怎么收集,怎么查
- 所有作业的训练日志怎么收集,怎么查
- 怎么通过日志快速定位常见的故障模式
6. 告警系统
- 什么级别故障需要立刻打电话叫人起来处理
- 什么级别故障只需要发个消息,上班再看
- 怎么避免告警风暴,一天几百个告警最后谁都不看了
可观测性做得好的团队,故障都是分钟级定位。
做得不好的团队,出了问题查半天都不知道哪里坏了。
知识体系第六层:故障处理层,半夜三点打电话给你,你得能搞定
GPU 集群是出了名的脆弱。
几千个部件,任何一个出问题都可能导致整个集群炸掉。
而且故障模式千奇百怪,很多问题你见都没见过。
一个有经验的集群管理员,和一个新手的区别,90% 体现在故障处理上。
常见的故障模式和处理思路:
1. GPU 本身的故障
- 卡坏了:ECC 报错,直接挂掉,需要换卡
- 卡降频了:温度太高,或者供电不够,自动降频,性能掉一半
- 显存坏了:某一段地址出错,训练的时候 loss 突然变成 NaN
- NVLink 报错:卡之间通信出问题,训练速度骤降或者直接失败
2. 网络故障
- 某台交换机端口坏了:整个机架的机器通信都出问题
- 网卡坏了:某台机器的网络带宽只有正常的几分之一
- 网络拥塞:某个时间点流量太大,丢包率飙升,所有训练都变慢
- 配置错了:MTU 不匹配,RDMA 没有开,性能上不去
3. 存储故障
- 存储带宽打满了:所有任务读数据都卡住
- 某个 OSD 挂了:存储集群降级,读写变慢
- 文件系统损坏:数据读不出来,或者读错了
4. 调度器故障
- 调度器死锁了:所有任务都卡在排队,谁也跑不起来
- 调度器 bug:重复分配资源,或者分配了资源不释放
- 抢占失效:高优先级任务抢不到资源
5. 最头疼的:模糊故障
这种是最坑的:
没有明确的报错,没有哪一个部件完全挂了。
但是就是整个集群的训练速度都变慢了,或者任务时不时就失败。
你查了一圈,所有指标看起来都正常,但是就是有问题。
这种故障,没有几年的经验,根本查不出来。
知识体系第七层:成本优化层,帮公司省钱,体现你的价值
前面说的都是怎么把集群跑起来。
但是真正体现你价值的,是怎么帮公司省钱。
一个好的集群管理员,一年帮公司省几百万甚至上千万,是很正常的事情。
主要的优化方向:
1. 提升利用率
这是最大头的。
利用率从 30% 提升到 60%,相当于用同样的钱,多买了一倍的卡。
几千万甚至几个亿就省下来了。
怎么提升?
更好的调度算法,更好的 Bin Packing,更好的碎片整理,分时调度,弹性训练。
2. 淘汰占着茅坑不拉屎的任务
很多用户提交了任务,跑完了不释放,或者干脆就忘了,卡一直占着。
还有很多任务 GPU 利用率只有 5%、10%,但是一占就是好几天。
把这些任务清理掉,立刻就能多出很多可用资源。
3. 混合调度
训练任务对延迟不敏感,但是要很多卡。
推理任务对延迟敏感,但是要的卡不多。
白天大部分资源给推理,晚上大部分资源给训练。
这样就不用为了白天的峰值买两倍的卡。
4. 云原生优化
如果是用公有云的话,优化空间就更大了:
- 多用竞价实例,价格是正常的 1/3 甚至 1/4
- 不用的资源立刻释放,不要留着
- 不同区域的价格不一样,哪里便宜去哪里
- 预留实例 + 按需实例 + 竞价实例混合搭配
5. 虚拟化和池化
把大卡切成小卡给开发和测试用。
不用每个开发人员都独占一张完整的 A100。
一张切成 7 个,就能给 7 个人用。
这些东西做好了,一年省下来的钱,给你发十倍工资都绰绰有余。
给你一个完整的学习路径
说了这么多,你可能觉得头都大了:这么多东西,要学到什么时候去?
别慌,我给你一个分阶段的学习路径,按这个来就行。
阶段 1:入门(1-3 个月)
目标:能管理 10 台机器以内的小集群
- 先买一张二手的便宜 NVIDIA 卡,装在自己电脑上
- 学会装驱动,装 CUDA,装 Docker,装 NVIDIA Container Toolkit
- 学会用 docker 跑 GPU 任务
- 搭一个最简单的单节点 Kubernetes 集群
- 装 GPU Operator,能在 K8s 里跑 GPU Pod
- 跑一个最简单的 mnist 训练,验证整个通了
阶段 2:初级(3-6 个月)
目标:能管理几十台机器的中等集群
- 深入学习 Kubernetes,弄懂核心概念和原理
- 学习部署和使用 Volcano 或者其他调度器
- 学习部署监控系统:Prometheus + Grafana,能看懂常用的指标
- 学习部署分布式存储,比如 JuiceFS 或者 MinIO
- 学习用 Kubeflow Training Operator 提交分布式训练任务
- 开始接触和处理常见的故障:驱动问题,网络问题,存储问题
阶段 3:中级(6-18 个月)
目标:能管理几百台机器的大集群
- 深入理解 GPU 硬件和网络架构
- 深入学习 NCCL 和分布式训练的原理
- 学习性能分析和调优,能找到和解决常见的性能瓶颈
- 深入学习调度器的原理和配置,能优化调度策略提升利用率
- 学习部署和配置 InfiniBand/RoCE 网络
- 积累故障处理经验,见过足够多的故障模式
阶段 4:高级(18 个月以上)
目标:能管理几千台机器的超大规模集群
- 深入理解整个体系的每一层,能做架构设计
- 能处理各种疑难杂症和模糊故障
- 能从 0 到 1 搭一个完整的生产级 GPU 集群
- 能做成本优化和性能优化,量化优化的效果
- 能根据业务的发展,规划集群未来的演进路线
一些有用的学习资源
这个领域资料非常少,但是还是有一些好的资源:
官方文档
- NVIDIA 官方文档:https://docs.nvidia.com/ (最权威的资料,但是非常散)
- NVIDIA GPU Operator 文档:https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/
- Volcano 官方文档:https://volcano.sh/zh/docs/
- Kubeflow 官方文档:https://www.kubeflow.org/docs/
- DCGM 文档:https://docs.nvidia.com/datacenter/dcgm/latest/
开源项目
- NCCL Tests:https://github.com/NVIDIA/nccl-tests
- NVIDIA DCGM Exporter:https://github.com/NVIDIA/dcgm-exporter
- JuiceFS:https://github.com/juicedata/juicefs
- Volcano:https://github.com/volcano-sh/volcano
博客和文章
- NVIDIA 技术博客
- 各个云厂商的技术博客(阿里云、腾讯云、AWS、GCP)
- JuiceFS 的博客,有很多非常好的 GPU 存储相关的实战文章
最后给想入行的人的几个建议
-
这个方向非常非常有前途,而且未来十年只会越来越值钱
只要 AI 还在发展,只要大模型还在越做越大,对 GPU 集群的需求就只会越来越大,懂这个的人就只会越来越值钱。 -
不要等所有知识都学会了再开始
根本就没有学会的那一天,这个领域发展太快了,永远有新东西出来。
边做边学,在实战中成长,是最快的方式。 -
一定要有实际的环境可以练手
光看书是永远学不会的。
你必须有一个真实的集群,有真实的用户,出真实的故障,你才能真正成长。
如果公司里有机会,一定要抓住。哪怕钱少一点都没关系。 -
这是一个越老越吃香的方向
和很多前端框架什么的不一样,这个领域的知识半衰期非常长。
你今天学到的经验,五年十年之后还能用。
你的经验越丰富,见过的故障越多,就越值钱。
这就是整个 GPU 集群管理的完整知识地图。
水很深,路很长,但是回报也非常非常丰厚。
如果你现在正在做相关的工作,或者想入行,那么祝你好运。
这是一个非常有挑战,但是也非常有成就感的方向。
当你看到你管的几千张卡,满载运行,支撑着几十个大模型同时训练,那种感觉,是别的工作很难给你的。
加油。
作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。
本文首发于 AI人工智能时代,转载请注明出处。

浙公网安备 33010602011771号