llamafactory多机训练
时间: 2025-05-27 10:34:44 浏览: 52
### LLama Factory 多机分布式训练配置教程
#### 1. 基础概念与工具介绍
LLama Factory 是一种灵活易用的大规模语言模型微调框架,支持多种主流大模型(如Llama2、ChatGLM2、Baichuan2、Qwen等),并提供多样化的训练模式(SFT、PT、PPO、DPO)。为了实现多机分布式训练,通常会依赖于 PyTorch 的 `torch.distributed` 和 DeepSpeed 等库来管理 GPU 资源和通信效率。
在多机环境下,分布式训练的核心在于通过网络连接多个节点上的 GPU 设备,并利用 MPI 或 NCCL 协议完成梯度同步和其他必要的计算操作。以下是基于 LLama Factory 实现多机分布式训练的具体配置方法[^3]。
---
#### 2. 环境准备
##### (1)硬件与软件需求
- **硬件**: 至少两台机器,每台机器配备多张 NVIDIA GPU 显卡。
- **操作系统**: Linux (推荐 Ubuntu 18.04 及以上版本)。
- **驱动程序**: 安装最新版本的 NVIDIA 驱动程序和支持 CUDA 的显卡。
- **PyTorch 版本**: 推荐安装最新的稳定版 PyTorch(>=1.13),以获得更好的性能优化。
- **DeepSpeed**: 如果计划使用 DeepSpeed,则需单独安装该库。
```bash
pip install deepspeed torch torchvision torchaudio --upgrade
```
##### (2)网络设置
确保所有参与训练的机器能够互相访问,并且具有稳定的高速网络连接。可以通过以下命令测试主机之间的连通性和延迟:
```bash
ping <目标IP地址>
```
如果需要指定网卡接口用于通信,可以设置环境变量 `NCCL_SOCKET_IFNAME` 来绑定特定网卡设备[^2]。
---
#### 3. 训练脚本编写
##### (1)定义基础参数
创建一个 YAML 文件(例如 `train_lora_config/qwen2vl_lora_sft.yaml`),其中包含模型路径、数据集路径以及其他超参数配置。此文件将在后续训练过程中作为输入加载。
##### (2)启动 Master 节点
Master 节点负责协调整个集群的工作流程。假设 IP 地址为 `ip_master`,端口号设为 `29500`,则可以在 master 上运行如下命令初始化训练过程:
```bash
CUDA_VISIBLE_DEVICES=6,7 \
NCCL_DEBUG=INFO \
NCCL_SOCKET_IFNAME=ens1f0 \
FORCE_TORCHRUN=1 \
NNODES=2 \
RANK=0 \
MASTER_ADDR=<ip_master> \
MASTER_PORT=29500 \
llamafactory-cli train train_lora_config/qwen2vl_lora_sft.yaml
```
此处需要注意:
- `CUDA_VISIBLE_DEVICES`: 指定当前节点使用的 GPU 编号;
- `NCCL_DEBUG`: 开启调试日志以便排查潜在问题;
- `NCCL_SOCKET_IFNAME`: 绑定到高性能网卡接口;
- `FORCE_TORCHRUN`: 强制启用新的 `torchrun` 工具替代旧版 `torch.distributed.launch`[^2]。
##### (3)Worker 节点加入
对于其他 worker 节点,只需调整其对应的 rank 值即可。例如,在第二台机器上执行相同命令时应将 `RANK=1` 设置进去。
---
#### 4. 使用 Docker 容器化部署
为了避免不同环境中可能出现的各种兼容性问题,建议采用官方提供的预构建镜像来进行实验验证。具体步骤如下所示:
```bash
# 下载官方镜像
docker pull hiyouga/llama-factory:latest
# 启动容器实例
docker run -it --gpus all -v $(pwd):/workspace hiyouga/llama-factory bash
# 进入工作目录
cd /workspace/code/
# 克隆项目仓库至本地
git clone https://github.com/hiyouga/LLaMA-Factory .
# 切换到指定 commit 版本
git checkout 2caf91f824320b226daa4666eda2da7cb853db9c
```
之后按照前述方式修改相应配置项后便可顺利开展大规模分布式训练任务[^3]。
---
#### 5. 性能评估与监控
当实际运行结束后可通过观察控制台输出的日志信息判断整体效果如何;另外也可以借助 TensorBoard 或 Weights & Biases 平台进一步可视化分析结果变化趋势图线等等[^2]。
---
阅读全文
相关推荐


















