上个月我们把千问7B的LoRA微调任务从单机单卡迁到优云智算平台的多机多卡集群上,原本以为只是“多租几台机器、改一下启动命令”的事,结果从资源开通、容器环境到NCCL通信,前前后后折腾了将近一周。中间最崩溃的一次是四台机器、八张卡都正常识别了,训练进程一启动就卡在NCCL初始化上,日志里报超时,换了三种排查思路才定位到是节点间端口没有完全放通。这篇文章就把整个部署过程、踩坑点、最终能稳定跑起来的配置原原本本写出来,希望能帮到打算在GPU算力平台上做多机多卡微调的人。
文章内容面向的读者很明确:已经能在单机上跑通大模型微调、想扩展到多机多卡的朋友,或者是刚接手算力平台、需要帮算法团队搭训练环境的运维同学。你会看到从需求拆解、集群规划,到安装部署、跑通训练,再到问题排查的完整链路。整篇以LLaMA-Factory作为微调工具链为例,因为它在千问、Llama等主流模型上支持LoRA、freeze、全量微调,配置简单,是目前社区里最常用的一站式方案之一。
1. 部署前必须想清楚的事:多机多卡不等于机器数量相加
很多人的第一反应是“我把机器买够了,环境照旧装,训练跑起来就行”。实际上多机多卡部署最大的坑不在安装,而在架构规划。硬件资源怎么选、节点间怎么通信、用什么方式做分布式训练、微调策略和资源是否匹配,这些问题没想清楚,后面环境搭得再漂亮也会反复返工。
1.1 微调方式先定:全量、freeze还是LoRA影响资源规划
微调的三种主流方式——全量微调(Full Fine-tuning)、Freeze微调和LoRA微调,对显存、通信、训练时长的需求差异非常大。
全量微调需要更新模型的全部参数,训练时除了模型权重,还要保存梯度、优化器状态(比如AdamW的动量项)。一份7B模型在bf16精度下权重约占14GB,但完整训练状态的显存开销通常是权重的3到5倍甚至更高。如果序列长度长、批次大,一张A100 80GB不一定放得下7B的全量微调。而且全量微调过程中每一层参数都在变化,梯度同步的数据量非常大,多机通信压力显著。
Freeze微调通常冻结大部分底层参数,只训练顶层或某些特定模块。它的显存开销比全量低,但通信压力仍然不小,因为所有需要更新的梯度仍要跨节点做AllReduce(全归约)。
LoRA微调是很多人做多机多卡的首选。它通过低秩适配器在原始模型旁边插入少量可训练参数,原始权重被冻结,训练时反向传播的梯度只涉及适配器部分。显存占用和通信量都会大幅下降。我实测7B模型用LoRA在一台双卡机器上就能跑得动,扩展到多机多卡更多是为了加快数据遍历速度、用更大总批次提升收敛稳定性。多机多卡对LoRA来说并不是“显存放不下”,更多是“单卡跑太慢,想用更多卡并行”。
这直接影响你资源规划的方向:如果只想跑LoRA,中等显存多卡机器(如A100 40GB或L20 48GB)性价比更高;如果想跑全量微调,应优先考虑高显存机器和高速互联节点。
1.2 算力集群规模估算:按模型参数、序列长度和批次反推显卡数量
我不会一上来就说“配置越高越好”,而是推荐先做一个估算。以7B模型LoRA微调为例,一个比较实用的估算方式是这样的:
训练时每张卡的主要显存占用包括:
- 模型权重 + LoRA适配器权重:bf16下约15GB(含临时推理激活)
- 梯度:只算LoRA参数时很小,但如果开了ZeRO或者全量更新,要按全参数量估算
- 优化器状态:LoRA微调可以显著压缩,但AdamW状态依然和参与训练的参数量成正比
- 激活值:取决于批次大小×序列长度×模型层数
实际操作中,LoRA加序列长度2048、per_device_train_batch_size设为1到2时,7B模型在24GB显存的卡上即可启动。需要多少张卡取决于总批次(global batch size)和目标训练时长。比如你想达到global batch size 64,如果per_device_train_batch_size=2,数据并行度为32,单机8卡需要4台机器。如果预算有限也可以用梯度累积让每张卡的实际批次更小,但通信效率和BatchNorm之外的问题也要考虑。
在优云智算这类算力平台上开工前,还需要确认平台单资源组最多关联多少节点、这些节点是否在同一个机房内网、是否支持高带宽互联。如果平台把两台机器分在不同可用区,即使你能SSH登录,训练效率也可能很差。
1.3 节点互联方式决定了你能跑多快:RoCE、IB与普通以太网的区别
多机训练中有一句话我非常认同:单卡看显存,多卡看通信。分布式训练每个step都需要跨节点同步梯度。以7B全量微调为例,一次AllReduce要传输的数据量约等于模型参数量乘梯度字节数,大概几十GB。如果节点间走的是普通千兆以太网,一个batch光同步梯度就要等很久,GPU利用率长期处于个位数。
较新的算力平台通常会提供RDMA网络,包括InfiniBand(IB)和RoCE(RDMA over Converged Ethernet)。它们让GPU可以绕过CPU、直接访问远端内存,延迟低、CPU负载小。如果你在多机环境里跑训练明显比单机慢,先不要急着优化代码,先用ibstatus、ibv_devinfo这类工具确认是否真的检测到了RDMA设备,或者登录平台控制台查看节点类型是否标注了“高带宽互联”。如果只有普通以太网,建议优先在同一台8卡机器上扩卡,而不是强行做4台2卡训练。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 优云智算平台上的集群开通与基础配置:不踩权限坑
集群规划好之后,进入实际开通和配置环节。这个阶段最大的矛盾是“算法工程师想要快速跑起来”和“运维同学要保证环境一致、权限可控”之间的矛盾。平台上的多机集群通常不是简简单单给每台机器装上环境就行,需要把账号体系、存储、镜像、网络权限一起打通。
2.1 资源组、共享存储与镜像仓库的打通流程
在优云智算平台(以及其他同类算力平台)上,我第一次部署时就发现一个很关键的点:资源隔离和网络会按照“资源组”划分。算法团队需要把多台GPU实例加入同一个资源组,才能保证节点间二层网络互通、方便挂载同一份共享存储。开通多机多卡集群的推荐顺序是:
