多机多卡(FSDP)
概述
Aladdin(Alaya AI Addin)是由九章云极自主研发的IDE插件,专为大模型开发设计,支持包括VS Code和Cursor在内的多种代码编辑器,用户可通过Aladdin开发工具便捷实现LLaMA Factory的训练、微调。
LLaMA Factory支持分布式训练,可借助多个计算节点并行处理任务,从而显著提升大规模机器学习模型的训练效率。相比单机训练,分布式训练不仅能大幅缩短训练时间,还能支持更大规模的数据集和更复杂的模型结构。
LLaMA-Factory支持FSDP(Fully Sharded Data Parallel)、DDP(Distributed Data Parallel)及DeepSpeed和三种分布式引擎。本示例将演示在Aladdin平台上使用accelerate
指令启动FSDP引擎进行单机多卡分布式训练,具体配置如下所示。
本示例基于Aladdin v2.2.5版本编写,不同版本间操作界面可能存在差异,用户在实际使用时以下载版本的操作界面为准。
前提条件
- 用户已经获取Alaya New企业账户和密码,可点击 进行快速注册。
- 用户已在VS Code/Cursor代码编辑器内安装Aladdin插件, 安装详情可参考安装Aladdin。
准备工作
开通弹性容器集群
本示例开通弹性容器集群的操作步骤如下所示。
-
使用已注册的企业账号登录Alaya NeW系统,选择[产品/弹性容器集群]菜单项,单击“新建集群”按钮,进入[弹性容器集群]配置页面。
-
配置基本信息,例如:集群名称,集群描述,智算中心,此次使用的集群资源配置至少需要满足以下表格中的要求。弹性容器集群参数配置完成后,单击“立即开通”按钮,即可完成弹性容器集群开通操作,用户可在[资源中心/弹性容器集群]页面查看已创建的容器集群,弹性容器集群状态为“运行中”表示集群可正常使用。更多步骤可参考开通弹性容器集群。
配置项 配置需求 说明 GPU H800 * 4 GPU类型为:H800 CPU 8核 内存 32GB 存储 300GB 镜像仓库 100GB 用于保存镜像文件等数据 提示用户需在大容量存储/文件存储下新建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)。 -
选择[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_FSDP.sh
文件拖拽至LLaMA Factory源码文件夹下。
用户需将mmmc_FSDP.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
。 - 如果用户已经配置了环境变量,可忽略该步骤。
- 执行如下命令下载数据集,示例如下所示,下载后的数据集文件结构如下所示。
huggingface-cli download AlayaNeW/QA_from_CoVLA_zh --repo-type dataset --local-dir ./QA_from_CoVLA_zh
下载后的数据集文件结构如下所示,然后将数据集文件夹拖拽至上步的LLaMA Factory源码文件夹下。
Tensorboard准备
Tensorboard是 TensorFlow 提供的一个强大的可视化工具,主要用于帮助开发者理解和调试机器学习模型的训练过程。它允许用户通过浏览器界面实时查看和分析模型训练期间的各种指标、结构图以及其他相关信息。在本次微调任务中,我们将使用Tensorboard记录整个微调过程。
在mmmc_FSDP.sh
文件中安装Tensorboard的脚本如下所示,脚本所在位置如下图所示。
pip install tensorFlow tensorboard tf-keras -i https://pypi.tuna.tsinghua.edu.cn/simple/
操作步骤
完成准备工作后,用户开始进行微调,具体的操作步骤如下所示。
-
在LLaMA-Factory源码文件夹下配置
accelerate
训练的启动文件,点击示例文件1链接即可下载示例文件,解压后将yaml
文件拖拽至LLaMA-Factory/examples/train_lora
路径下。 -
在LLaMA-Factory源码文件夹下配置
accelerate
启动的依赖文件,点击示例文件2链接即可下载示例文件,解压后将yaml
文件拖拽至LLaMA-Factory/examples/accelerate
路径下。 -
用户在
mmmc_FSDP.sh
文件中配置accelerate
指令启动FSDP引擎并保存,添加如下所示的脚本,脚本位置如下图所示。accelerate launch \
--config_file /workspace/LLaMA-Factory/examples/accelerate/accelerate_mmmc_fsdp.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_FSDP_ACC.yaml
用户在使用过程中,应确保上述配置中yaml
文件的路径及文件名与实际配置保持一致。
-
在
mmmc_FSDP.sh
文件编辑界面中,右键点击页面空白处,在弹窗菜单中选择“Run Task”,进入任务参数配置页面,根据页面提示配置各类参数,例如下图所示。 -
待Pod状态为"Running"后,进入LLaMA-Factory源码目录下的
saves
文件夹,找到要查看的输出目录,如下图所示。具体路径可在“示例文件1”的output_dir
处查看,例如:saves/qwen2.5vl-7B/mmmc_DS/train_2025-05-27-14-08-46-shm-ds-acc
。将命令中的[输出目录路径]
替换为实际路径。tensorboard --logdir=[输出目录路径]/runs --port=6006 --host=localhost
-
在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的版权要求使用,请参考该链接内容。