多机多卡(DeepSpeed)
Aladdin(Alaya AI Addin)是由九章云极自主研发的IDE插件,专为大模型开发设计,支持包括VS Code和Cursor在内的多种代码编辑器,用户可通过Aladdin开发工具便捷实现LLaMA Factory的训练、微调。
LLaMA Factory是一款开源低代码大模型微调框架,集成了业界广泛使用的微调技术,支持分布式训练,显著提升大规模机器学习模型的训练效率。相比单机训练,分布式训练不仅能大幅缩短训练时间,还能支持更大规模的数据集和更复杂的模型结构,目前已经成为开源社区内最受欢迎的微调框架之一,GitHub星标超过4万。本示例将基于Qwen2.5-VL-7B-Instruct模型,介绍如何使用Aladdin及LLaMA Factory训练框架得到适用于VLA(Vision Language Action)场景的自动驾驶辅助器:给出车辆所处的交通状况,通过自然语言触发自动驾驶辅助器的功能,并以特定格式返回。
本示例使用llamafactory-cli
、deepspeed
和accelerate
命令启动DeepSpeed引擎,进行多机多卡的分布式训练。
本示例基于Aladdin v2.2.5版本编写,不同版本间操作界面可能存在差异,用户在实际使用时以下载版本的操作界面为准。
前提条件
- 用户已经获取Alaya New企业账户和密码,可点击 进行快速注册。
- 用户已在VS Code/Cursor代码编辑器内安装Aladdin插件, 安装详情可参考安装Aladdin。
准备工作
开通弹性容器集群
本示例开通弹性容器集群的操作步骤如下所示。
-
使用已注册的企业账号登录Alaya NeW系统,选择[产品/弹性容器集群]菜单项,单击“新建集群”按钮,进入[弹性容器集群]配置页面。
-
配置基本信息,例如:集群名称,集群描述,智算中心,此次使用的集群资源配置至少需要满足以下表格中的要求。弹性容器集群参数配置完成后,单击“立即开通”按钮,即可完成弹性容器集群开通操作,用户可在[资源中心/弹性容器集群]页面查看已创建的容器集群,弹性容器集群状态为“运行中”表示集群可正常使用。更多步骤可参考开通弹性容器集群。
配置项 配置需求 说明 GPU H800 * 4 GPU类型为:H800 CPU 8核 内存 32GB 存储 300GB 镜像仓库 100GB 用于保存镜像文件等数据 提示- 本示例使用了4*H800 GPU进行演示,实际业务中请根据具体需求选择合适的资源配置。
- 用户需在大容量存储/文件存储下新建PVC MOUNTS的可用文件夹,以确保微调数据的安全存储。
下载模型
LLaMA Factory涉及示例均在Aladdin的Workshop中演示,创建Workshop的操作步骤如下所示。
-
在VS Code扩展菜单栏搜索Aladdin插件,然后安装该插件。安装插件后,点击插件图标,进入插件登录页面,使用已注册的企业账号登录Aladdin。
-
登录完成后,返回工作区,单击
进入新建一个Workshop配置页面,填写参数,示例页面下所示。
- Environment:运行环境选择预置的aladdin/llamafactory公共镜像仓库下的镜像。
- VKS:选择用户已开通的弹性容器集群。
- PVC MOUNTS:挂载的SubPath填写开通弹性容器集群时在文件存储目录下新建的文件夹名称,ContainerPath填写“/workspace”。
-
配置完成后,单击“Submit”,在弹出的新窗口(后文统称远端页面)选择"Linux",远端页面中将自动安装相关插件,待远端页面中出现Remote Aladdin插件图标,Workshop创建操作完成。
-
按
Ctrl+Shift+P
(Windows/Linux),打开命令面板,选择Python: Select Interpreter
,选择下图高亮所示的Python解释器,然后打开“/workspace/”文件夹。 -
选择[Terminal/New Terminal]菜单项,进入终端页面,在终端页面执行如下命令设置对应区域的镜像地址,查看区域模型列表。更多模型加速内容请参看模型加速文章所述。
export HF_ENDPOINT=http://hfmirror.mas.zetyun.cn:8082
curl http://hfmirror.mas.zetyun.cn:8082/repos
- 安装huggingface-hub,如下图高亮①所示。
pip install -U huggingface_hub -i [镜像源,例如:https://pypi.tuna.tsinghua.edu.cn/simple等]
- 使用huggingface cli下载模型Qwen/Qwen2.5-VL-7B-Instruct,如上图高亮②所示。
huggingface-cli download --resume-download Qwen/Qwen2.5-VL-7B-Instruct --local-dir /workspace/model/Qwen2.5-VL-7B-Instruct --max-workers=3
LLaMA Factory准备
-
用户创建Workshop时选择的环境中已内置了LLaMA Factory源码,因此在此处将LLaMA Factory源码复制到Workshop挂载目录下即可,复制命令如下所示,示例页面如下图所示。
cp -r [源码目录] /[挂载目录]
- 点击下载Aladdin启动LLaMA Factory脚本文件,在本地解压下载后的文件,并将
mmmc_DS.sh
文件拖拽至LLaMA Factory源码文件夹下。
用户需将mmmc_DS.sh
文件中LLaMA Factory的源码路径修改为实际的源码路径。
下载数据集
- 选择[Terminal/New Terminal]菜单项,进入终端页面,在终端页面执行如下命令设置对应区域的镜像地址:
export HF_ENDPOINT=http://hfmirror.mas.zetyun.cn:8082
- 执行上述命令已默认用户已经安装
huggingface-hub
,安装示例代码为pip install -U huggingface_hub -i https://pypi.tuna.tsinghua.edu.cn/simple
。 - 如果用户已经配置了环境变量,可忽略该步骤。
- 执行如下命令下载数据集,示例如下所示,请使用该数据集中的
data
文件夹替换LLaMA Factory源码下的data
文件夹。
huggingface-cli download AlayaNeW/QA_from_CoVLA_zh --repo-type dataset --local-dir ./QA_from_CoVLA_zh
Tensorboard准备
Tensorboard是 TensorFlow 提供的一个强大的可视化工具,主要用于帮助开发者理解和调试机器学习模型的训练过程。它允许用户通过浏览器界面实时查看和分析模型训练期间的各种指标、结构图以及其他相关信息。在本次微调任务中,我们将使用Tensorboard记录整个微调过程。
在mmmc_DS.sh
文件中安装Tensorboard的脚本如下所示,脚本所在位置如下图所示。
pip install tensorFlow tensorboard tf-keras -i https://pypi.tuna.tsinghua.edu.cn/simple/
操作步骤
完成准备工作后,用户开始进行微调,具体操作步骤如下所示。
- llamafactory-cli
- deepspeed
- accelerate
- 在 LLaMA-Factory 源码文件夹下配置
llamafactory-cli
训练的启动配置文件。点击示例文件下载示例文件,解压后将yaml
文件拖拽至LLaMA-Factory/examples/train_lora
路径下。
- 当用户根据上述文件示例进行配置时,应将
model_name_or_path
修改为实际使用的模型路径。 - 当用户根据上述文件示例进行配置时,应将
dataset
修改为实际使用的数据集名称。
-
在
mmmc_DS.sh
脚本中,用户通过llamafactory-cli
方式配置并启动DeepSpeed
引擎进行分布式训练,具体配置示例如下图所示。。FORCE_TORCHRUN=1 NNODES=$nnodes NODE_RANK=$node_rank MASTER_ADDR=$master_addr MASTER_PORT=$master_port \
llamafactory-cli train examples/train_lora/qwen2.5VL_lora_mmmc_DS.yaml
用户在使用过程中,应确保上述配置中yaml
文件的路径及文件名与实际配置保持一致。
-
在
mmmc_DS.sh
文件编辑界面中,右键点击页面空白处,在弹窗菜单中选择“Run Task”,配置各类参数,例如下图所示。 -
待Pod状态变为"Running"后,在Terminal运行
pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
命令,安装TensorBoard,安装完成后运行如下命令打开监控面板,输出路径填写runs
文件的绝对路径。tensorboard --logdir=[runs文件的绝对路径] --port=6006 --host=localhost
示例如下所示。
tensorboard --logdir=/workspace/LLaMA-Factory/saves/qwen2.5vl-7B/mmmc_DS/train_2025-07-21-16-06-46/runs --port=6006 --host=localhost
提示训练后的文件存储路径可在配置文件
qwen2.5VL_lora_mmmc_DS
中的output_dir
参数处查看。通过该相对路径,可进一步确定其对应的绝对路径。 -
在Terminal页面运行上述命令后,根据系统弹出的提示进行操作,例如下图所示,选择在浏览器中打开。
-
在TensorBoard实验监控页面可查看对应的图表,涉及的图表包括:epoch、grad_norm、learning_rate和loss等,例如下图所示。
切换至VS Code,找到“Running”的Task,右键选择“Monitor”,即可查看worker1/worker2的系统资源监控图表,涉及图表包括:CPU、MEM、GPU Usage Rate以及GPU Memory Clock等,例如下图所示。
-
用户在
mmmc_DS.sh
文件中仅使能deepspeed
方式启动DeepSpeed引擎并保存,示例如下图所示。deepspeed --num_gpus $nproc_per_node --master_addr $master_addr --master_port=$master_port src/train.py \
--deepspeed examples/deepspeed/ds_z2_config.json \
--stage sft \
--model_name_or_path /dev/shm/llamafactory/model/Qwen2.5-VL-7B-Instruct \
--do_train \
--dataset QA_from_CoVLA_zh \
--template qwen2_vl \
--finetuning_type lora \
--lora_rank 8 \
--lora_alpha 16 \
--output_dir saves/qwen2.5vl-7B/lora/mmmc_ds/train_2025-05-21-14-57-34 \
--overwrite_cache \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 8 \
--lr_scheduler_type cosine \
--logging_steps 5 \
--save_steps 100 \
--learning_rate 1e-4 \
--num_train_epochs 10.0 \
--plot_loss \
--bf16 \
--cutoff_len 2048 \
--preprocessing_num_workers 16 \
--dataloader_num_workers 12 \
--report_to tensorboard -
在
mmmc_DS.sh
文件编辑界面中,右键点击页面空白处,在弹窗菜单中选择“Run Task”,进入任务参数配置页面,根据页面提示配置各类参数,例如下图所示。提示为防止不同任务之间的输出结果发生覆盖或冲突,建议用户在每次执行“Run Task”操作前,手动更新配置文件
qwen2.5VL_lora_mmmc_DS.yaml
中的output_dir
参数,确保其指向一个唯一的新路径。 -
待Pod状态变为"Running"后,在Terminal运行
pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
命令,安装TensorBoard,安装完成后运行如下命令打开监控面板,输出路径填写runs
文件的绝对路径。tensorboard --logdir=[runs文件的绝对路径] --port=6006 --host=localhost
示例如下所示。
tensorboard --logdir=/workspace/LLaMA-Factory/saves/qwen2.5vl-7B/mmmc_DS/train_2025-07-21-16-06-46/runs --port=6006 --host=localhost
提示训练后的文件存储路径可在
deepspeed
使能脚本中的output_dir
参数处查看。通过该相对路径,可进一步确定其对应的绝对路径。 -
在Terminal页面运行上述命令后,根据系统弹出的提示进行操作,例如下图所示,选择在浏览器中打开。
-
在TensorBoard实验监控页面可查看对应的图表,涉及的图表包括:epoch、grad_norm、learning_rate和loss等,例如下图所示。
切换至VS Code,找到“Running”的Task,右键选择“Monitor”,即可查看worker1/worker2的系统资源监控图表,涉及图表包括:CPU、MEM、GPU Usage Rate以及GPU Memory Clock等,例如下图所示。
-
在LLaMA-Factory源码文件夹下配置accelerate训练的启动文件,点击示例文件链接即可下载示例文件,解压后将
accelerate_mmmc_ds.yaml
文件拖拽至LLaMA-Factory/examples/accelerate
路径下,将qwen2.5VL_lora_mmmc_DS_ACC.yaml
文件拖拽至LLaMA-Factory/examples/train_lora
路径下。 -
用户在
mmmc_DS.sh
文件中配置accelerate
方式启动DeepSpeed引擎并保存,添加如下脚本:accelerate launch \
--config_file /workspace/LLaMA-Factory/examples/accelerate/accelerate_mmmc_ds.yaml \
--main_process_ip $master_addr \
--main_process_port $master_port \
--machine_rank $node_rank \
/workspace/LLaMA-Factory/src/train.py examples/train_lora/qwen2.5VL_lora_mmmc_DS_ACC.yaml
用户在使用过程中,应确保上述配置中yaml
文件的路径及文件名与实际配置保持一致。
-
在
mmmc_DS.sh
文件编辑界面中,右键点击页面空白处,在弹窗菜单中选择“Run Task”,进入任务参数配置页面,根据页面提示配置各类参数,例如下图所示。 -
待Pod状态变为"Running"后,在Terminal运行
pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
命令,安装TensorBoard,安装完成后运行如下命令打开监控面板,输出路径填写runs
文件的绝对路径。tensorboard --logdir=[输出目录路径]/runs --port=6006 --host=localhost
示例如下所示。
tensorboard --logdir=/workspace/LLaMA-Factory/saves/qwen2.5vl-7B/mmmc_DS/train_2025-05-22-06-06-06/runs --port=6006 --host=localhost
提示训练后的文件存储路径可在配置文件
qwen2.5VL_lora_mmmc_DS_ACC
中的output_dir
参数处查看。通过该相对路径,可进一步确定其对应的绝对路径。 -
在TensorBoard实验监控页面可查看对应的图表,涉及的图表包括:epoch、grad_norm、learning_rate和loss等,例如下图所示。
切换至VS Code,找到“Running”的Task,右键选择“Monitor”,即可查看worker1/worker2的系统资源监控图表,涉及图表包括:CPU、MEM、GPU Usage Rate以及GPU Memory Clock等,例如下图所示。
总结
基于多机多卡架构的微调方案不仅极大地增强了系统的可扩展性和计算能力,还为工业级应用提供了坚实的基础。通过优化多卡通信(利用NCCL)、负载均衡策略及动态资源分配,该框架减少了分布式训练的调参成本,支持灵活应对不同的模型结构和训练场景。这使得它成为解决大规模多模态深度学习任务的理想选择,助力企业在实际业务中快速部署和应用先进的AI技术。
关于License,请按照LLaMA Factory的版权要求使用,请参考该链接内容。