跳到主要内容

单机多卡微调

概述

信息

Aladdin(Alaya AI Addin)是由九章云极自主研发的IDE插件,专为大模型开发设计,支持包括VS Code和Cursor在内的多种代码编辑器,用户可通过Aladdin开发工具便捷实现LLaMA Factory的训练、微调。

LLaMA Factory是一款开源低代码大模型微调框架,集成了业界广泛使用的微调技术,支持通过Web UI界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架之一,GitHub星标超过4万。本示例将基于Qwen2.5-VL-7B-Instruct模型,介绍如何使用Aladdin及LLaMA Factory训练框架得到适用于VLA(Vision Language Action)场景的自动驾驶辅助器:给出车辆所处的交通状况,通过自然语言触发自动驾驶辅助器的功能,并以特定格式返回。

本示例使用多卡进行调试,聚焦计算效率与扩展性,针对大规模模型训练的需求,此方法特别适用于解决高复杂度、大规模数据集的训练挑战。

为了降低GPU算力使用门槛,LLaMA Factory联合九章智算云(Alaya NeW Cloud)联合推出史诗级算力普惠活动, H800 8卡仅市场价50%,扫码领取普惠算力

alt text

重要

本示例基于Aladdin v2.2.5版本编写,不同版本间操作界面可能存在差异,用户在实际使用时以下载版本的操作界面为准。

前提条件

  • 用户已经获取Alaya New企业账户和密码,可点击  进行快速注册。
  • 用户已在VS Code/Cursor代码编辑器内安装Aladdin插件,安装详情可参考安装Aladdin

准备工作

开通弹性容器集群

本示例开通弹性容器集群的操作步骤如下所示。

  1. 使用已注册的企业账号登录Alaya NeW系统,选择[产品/弹性容器集群]菜单项,单击“新建集群”按钮,进入[弹性容器集群]配置页面。

  2. 配置基本信息,例如:集群名称,集群描述,智算中心,此次使用的集群资源配置至少需要满足以下表格中的要求。弹性容器集群参数配置完成后,单击“立即开通”按钮,即可完成弹性容器集群开通操作,用户可在[资源中心/弹性容器集群]页面查看已创建的容器集群,弹性容器集群状态为“运行中”表示集群可正常使用。更多步骤可参考开通弹性容器集群

    配置项配置需求说明
    GPUH800 * 4GPU类型为:H800
    CPU8核
    内存32GB
    存储300GB
    镜像仓库100GB用于保存镜像文件等数据
    提示

    用户需在大容量存储/文件存储下新建PVC MOUNTS的可用文件夹,以确保微调数据的安全存储。

下载模型

LLaMA Factory涉及示例均在Aladdin的Workshop中演示,创建Workshop的操作步骤如下所示。

  1. 在VS Code扩展菜单栏搜索Aladdin插件,然后安装该插件。安装插件后,点击插件图标,进入插件登录页面,使用已注册的企业账号登录Aladdin。

  2. 登录完成后,返回工作区,单击 alt text进入新建一个Workshop配置页面,填写参数,示例页面下所示。

    alt text

信息
  • Environment:运行环境选择预置的aladdin/llamafactory公共镜像仓库下的镜像。
  • VKS:选择用户已开通的弹性容器集群。
  • PVC MOUNTS:挂载的SubPath填写开通弹性容器集群时在文件存储目录下新建的文件夹名称,ContainerPath填写“/workspace”。
  1. 配置完成后,单击“Submit”,在弹出的新窗口(后文统称远端页面)选择"Linux",远端页面中将自动安装相关插件,待远端页面中出现Remote Aladdin插件图标,Workshop创建操作完成。

  2. Ctrl+Shift+P(Windows/Linux),打开命令面板,选择Python: Select Interpreter,选择下图高亮所示的Python解释器。打开“/workspace/”文件夹,打开后打开终端页面(Terminal)。

    alt text

  3. 选择[Terminal/New Terminal]菜单项,进入终端页面,在终端页面执行如下命令设置对应区域的镜像地址,查看区域模型列表。更多模型加速内容请参看模型加速文章所述。

export HF_ENDPOINT=http://hfmirror.mas.zetyun.cn:8082
curl http://hfmirror.mas.zetyun.cn:8082/repos
  1. 安装huggingface-hub,如下图高亮①所示。 alt text
pip install -U huggingface_hub -i [镜像源,例如:https://pypi.tuna.tsinghua.edu.cn/simple等]
  1. 使用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准备

  1. 用户创建Workshop时选择的环境中已内置了LLaMA Factory源码,因此在此处将LLaMA Factory源码复制到Workshop挂载目录下即可,复制命令如下所示,示例页面如下图所示。

    alt text

cp -r [源码目录] /[挂载目录]
  1. 点击下载Aladdin启动LLaMA Factory脚本文件,在本地解压下载后的文件,并将final.shstart.sh文件拖拽至LLaMA Factory源码文件夹下,然后在上述文件所在目录下分别执行如下所示的命令。
chmod +x start.sh 
chmod +x final.sh
提示
  • 用户需将start.sh文件中LLaMA Factory的源码路径修改为实际的源码路径。
  • 用户需将final.sh文件中LLaMA Factory的源码路径修改为实际的源码路径。

下载数据集

  1. 选择[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
  • 如果用户已经配置了环境变量,可忽略该步骤。
  1. 执行如下命令下载数据集,示例如下所示,下载后的数据集文件结构如下所示。
huggingface-cli download AlayaNeW/QA_from_CoVLA_zh --repo-type dataset --local-dir ./QA_from_CoVLA_zh 

下载后的数据集文件结构如下所示,然后将数据集文件夹拖拽至上步的LLaMA Factory源码文件夹下。 alt text

可视化工具准备

SwanLab是一款开源且轻量级的AI模型训练可视化追踪工具。在本次微调任务中,我们将使用SwanLab记录整个微调过程。在开始之前,请确保您已经登录SwanLab平台。登录后,点击“设置/常规”,即可获取API Key,示例如下图所示。 alt text

start.sh文件页面添加安装SwanLab的命令行,命令如下所示,添加位置如下图所示。

pip install swanlab -i https://pypi.tuna.tsinghua.edu.cn/simple/

alt text

操作步骤(SwanLab)

完成准备工作后,用户开始进行微调,具体的操作步骤如下所示。

  1. final.sh文件编辑界面中,右键点击页面的空白处,在弹窗菜单中选择“Run Shell”,如下图所示。

    alt text

  2. 用户可通过以下方式完成LLaMA Factory的Web UI外部访问相关配置,具体操作步骤如下所示。

  1. 跳转到Run Shell配置界面,点击展开“Advanced”配置,点击下方的“Add External Access”。新增一个外部访问配置,在输入框中填写7860端口,本示例如下图所示。

    alt text

  2. 配置完成后,点击“Submit”按钮,系统创建DEVELOP SESSION运行列表,用户在列表中可以查看运行的会话,示例如图所示。

    alt text

  1. 等到外部访问状态提示灯变为绿色,点击箭头进行应用访问,弹窗选择打开外部网站,即可通过WebUI访问应用。

  2. 打开Web UI页面后,在页面选择对应的模型名称以及模型路径,示例如下图高亮①、②所示。

提示

用户在实际操作时,需要将模型路径替换为模型的实际路径。

  1. 选择“Train”标签,加载已下载的数据集,示例如下图高亮③所示。找到“SwanLab参数设置”菜单栏,勾选“使用SwanLab”选项,在SwanLab API秘钥处填写准备工作章节以获取的API Key,如下图高亮⑤所示。

    alt text

  2. 各项参数配置完成后,单击“开始”按钮,执行大模型的微调任务。开始微调后,页面最下方会显示微调过程的日志。用户可在已登录的SwanLab的“图标对比视图”查看各类图表,示例如下图所示。

    alt text

    同时,也将呈现微调的进度以及Loss曲线。进行多轮微调后示例页面如下图所示,从图中可看出Loss趋近收敛,微调完成后,输出框显示“训练完毕”。

    alt text

  3. 训练完成后在Web UI界面,配置检查点路径中选择微调模型的路径,示例如下图高亮①所示。

    alt text

  4. 单击“加载模型”按钮,加载微调后的模型,使用加载好的微调模型进行对话,下载素材图片,然后上传图片,如上图高亮③所示。输入问题“自动驾驶车辆应该关注哪些风险?”,观察模型回答,如上图高亮⑤所示。

  5. 清空“检查点路径”LoRa配置,单击“加载模型”按钮,使用原生的Qwen2.5-VL-7B-Instruct模型进行对话,输入同一个问题:“自动驾驶车辆应该关注哪些风险?”,观察模型回答,示例如下图所示。

    alt text

综合看来通过使用微调后的模型进行对话,可以获得更具参考价值的回答。相较于原生模型,后者往往提供的是宽泛且笼统的可能性描述,而经过特定任务或数据集微调的模型能够基于实际的图片场景生成更为精准、有针对性的回答。具体来说,微调后的模型能够:

提高回答的准确性:根据具体的图像内容提供详细且准确的信息。 增强实用性:减少无关信息,聚焦于与用户查询最相关的细节。 提升用户体验:通过更贴近实际场景的回答,使交互过程更加流畅和高效。 因此,在涉及视觉理解的任务中,采用微调后的模型可以显著改善对话系统的性能和可靠性。

总结

基于单机多卡架构的微调方案不仅极大地增强了系统的可扩展性和计算能力,还为工业级应用提供了坚实的基础。通过优化多卡通信(利用NCCL)、负载均衡策略及动态资源分配,该框架减少了分布式训练的调参成本,支持灵活应对不同的模型结构和训练场景。这使得它成为解决大规模多模态深度学习任务的理想选择,助力企业在实际业务中快速部署和应用先进的AI技术。

信息

关于License,请按照LLaMA Factory的版权要求使用,请参考该链接内容