【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知


文章概要:

本文是一篇详细的技术教程,介绍如何使用魔搭社区(ModelScope)的GPU资源来进行LLaMA-Factory的模型微调。文章分为11个主要步骤,从环境准备到最终的模型测试,系统地介绍了整个微调流程。主要内容包括:

  1. 环境准备和硬件资源配置
  2. LLaMA-Factory的安装和部署
  3. 可视化界面的配置和启动
  4. 基座模型的下载和测试
  5. 自我认知数据集的修改
  6. 微调参数的设置和训练过程
  7. 模型评估和优化
  8. 最终模型的导出和测试

文章目的

  1. 帮助开发者快速上手LLaMA-Factory工具,学习如何利用魔搭社区的免费GPU资源进行大模型微调
  2. 详细讲解模型微调的完整流程,包括环境配置、模型训练、参数调优等关键步骤
  3. 提供实用的技术细节和注意事项,如显存管理、训练参数调整等,帮助读者避免常见问题
  4. 指导读者如何进行模型的自我认知微调,实现个性化的AI助手定制

1. 准备硬件资源、搭建环境

  1. 访问魔搭社区官网:https://modelscope.cn,完成注册和登录
  2. 进入我的Notebook页面,依次选择:魔搭平台免费实例 -> 阿里云弹性加速计算EAIS -> 方式二 GPU环境
  3. 选择GPU实例类型和配置,确认配置并启动实例
  4. 点击「打开notebook」进入JupyterLab环境

2. LLaMA-Factory 安装部署

LLaMA-Factory 的 Github地址:https://github.com/hiyouga/LLaMA-Factory

  • 克隆仓库

    bash 复制代码
    git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  • 切换到项目目录

    bash 复制代码
    cd LLaMA-Factory
  • 创建 Conda 虚拟环境(一定要 3.10 的 python 版本,不然和 LLaMA-Factory 不兼容)

    bash 复制代码
    conda create -n llama-factory python=3.10
  • 激活虚拟环境

    bash 复制代码
    conda activate llama-factory
  • 在虚拟环境中安装 LLaMA Factory 相关依赖

    bash 复制代码
    pip install -e ".[torch,metrics]"

    注意:如报错 bash: pip: command not found ,先执行 conda install pip 即可

  • 检验是否安装成功

    bash 复制代码
    llamafactory-cli version

3. 配置本地远程访问LLama-Factory 的可视化微调界面

  1. 修改LLaMA-Factory/src/llamafactory/webui/interface.py文件中share=gradio_shareshare=True
  2. 下载文件 https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64
  3. 重命名文件为 frpc_linux_amd64_v0.3
  4. 移动文件至 /root/.cache/huggingface/gradio/frpc
  5. 进入文件夹,输入以下命令给予权限:chmod +x frpc_linux_amd64_v0.3

4. 启动 LLama-Factory 的可视化微调界面 (由 Gradio 驱动)

bash 复制代码
llamafactory-cli webui --share
  • 点击显示的公网地址即可进入可视化界面

5. 从 modelscope 上下载基座模型

  • 创建文件夹统一存放所有基座模型

    bash 复制代码
    cd LLaMA-Factory
    mkdir models
    cd models
  • 执行下载命令

    bash 复制代码
    git lfs install
    git clone https://www.modelscope.cn/Qwen/Qwen2.5-1.5B-Instruct.git
  • 如果要下载其他模型,可以替换git地址即可

注意 :由于网络环境等原因,文件下载后往往会存在文件不完整的很多情况,下载后需要先做一下校验,校验分为两部分,第一先检查一下文件大小和文件数量是否正确,和原始的huggingface显示的做一下肉眼对比,进入文件夹通过du -sh *查看文件和文件大小情况

6. 可视化页面上加载模型测试,检验是否加载成功

  • 选择模型 Qwen2.5-1.5B-Instruct
  • 输入下载的模型路径 models/Qwen2.5-1.5B-Instruct
  • 选择chat模式,点击加载模型,加载完后就可以进行聊天测试了

7. 修改自我认知数据集

  • 使用编辑器打开文件 LLaMA-Factory/data/identity.json
  • 批量替换 {``{name}} 为需要的助手名称,比如小梦助手
  • 批量替换{``{author}} 为开发者名称,比如LChuck茶客
  • 保存文件

8. 在页面上进行微调的相关设置,开始微调(整个微调过程大概1-2小时)

  • 选择微调算法 LoRA
  • 添加数据集 identity
  • 修改其他训练相关参数,如学习率、训练轮数、截断长度、验证集比例等
    • 学习率(Learning Rate):决定了模型每次更新时权重改变的幅度。过大可能会错过最优解;过小会学得很慢或陷入局部最优解
    • 训练轮数(Epochs):太少模型会欠拟合(没学好),太大会过拟合(学过头了)
    • 最大梯度范数(Max Gradient Norm):当梯度的值超过这个范围时会被截断,防止梯度爆炸现象
    • 最大样本数(Max Samples):每轮训练中最多使用的样本数
    • 计算类型(Computation Type):在训练时使用的数据类型,常见的有 float32 和 float16。在性能和精度之间找平衡
    • 截断长度(Truncation Length):处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出
    • 批处理大小(Batch Size):由于内存限制,每轮训练我们要将训练集数据分批次送进去,这个批次大小就是 Batch Size
    • 梯度累积(Gradient Accumulation):默认情况下模型会在每个 batch 处理完后进行一次更新一个参数,但你可以通过设置这个梯度累计,让他直到处理完多个小批次的数据后才进行一次更新
    • 验证集比例(Validation Set Proportion):数据集分为训练集和验证集两个部分,训练集用来学习训练,验证集用来验证学习效果如何
    • 学习率调节器(Learning Rate Scheduler):在训练的过程中帮你自动调整优化学习率
  • 页面上点击启动训练 ,或复制命令到终端启动训练
    • 实践中推荐用 nohup 命令将训练任务放到后台执行,这样即使关闭终端任务也会继续运行。同时将日志重定向到文件中保存下来
  • 在训练过程中注意观察损失曲线,尽可能将损失降到最低
    • 如损失降低太慢,尝试增大学习率
    • 如训练结束损失还呈下降趋势,增大训练轮数确保拟合
Tips:使用nvidia-smikill命令

当训练模型时,如果中断了训练进程,可能会导致显存被占满。此时可以使用以下命令查看和释放显存:

  • 使用nvidia-smi查看GPU使用情况
  • 使用ps aux | grep python查看进程号
  • 使用kill -9 <进程号>结束进程,释放显存

9. 微调结束,评估微调效果

  • 观察损失曲线的变化;观察最终损失

  • 在交互页面上通过预测/对话等方式测试微调好的效果

  • 检查点 :保存的是模型在训练过程中的一个中间状态,包含了模型权重、训练过程中使用的配置(如学习率、批次大小)等信息,对LoRA来说,检查点包含了训练得到的 B 和 A 这两个低秩矩阵的权重

  • 若微调效果不理想,你可以:

    • 使用更强的预训练模型
    • 增加数据量
    • 优化数据质量(数据清洗、数据增强等,可学习相关论文如何实现)
    • 调整训练参数,如学习率、训练轮数、优化器、批次大小等等

10. 导出合并后的模型

  • 为什么要合并:因为 LoRA 只是通过低秩矩阵 调整原始模型的部分权重,而不直接修改原模型的权重。合并步骤将 LoRA 权重与原始模型权重融合生成一个完整的模型

  • 先创建目录,用于存放导出后的模型

    mkdir -p export

  • 在页面上配置导出路径,如expert/Qwen2.5-1.5B-Instruct-LoRA-v1,导出即可。

11. 测试微调完的模型

选择模型 Qwen2.5-1.5B-Instruct

  • 输入下载的模型路径 expert/Qwen2.5-1.5B-Instruct-LoRA-v1
  • 选择chat模式,点击加载模型,加载完后就可以进行聊天测试了
相关推荐
zxsz_com_cn16 分钟前
设备健康管理的战略升维:用预测性维护重构企业竞争力
人工智能
量子-Alex16 分钟前
【目标检测】【ICCV 2021】条件式DETR实现快速训练收敛
人工智能·目标检测·计算机视觉
合作小小程序员小小店35 分钟前
web安全开发,在线%机器学习异常流量检测系统%开发demo
人工智能·python·mysql·机器学习·sklearn
sbc-study1 小时前
混沌映射(Chaotic Map)
开发语言·人工智能·python·算法
Huangdroid1 小时前
LangChain完全指南:从入门到精通,打造AI应用开发新范式
人工智能·python·langchain
要努力啊啊啊1 小时前
大语言模型中的注意力机制详解
人工智能·语言模型·自然语言处理
TimTu1 小时前
RWKV-7 架构理解
人工智能·rwkv·deeplearning
后端小肥肠1 小时前
即梦3.0+Coze王炸联动:10w+小人国微观生活视频轻松量产!(附喂饭级教程)
人工智能·aigc·coze
华院计算2 小时前
华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机
人工智能·科技·百度