GenStudio 于 2025 年 5 月 推出 GenStudio 高级版/企业版升级服务,大幅提升 API 调用频率GenStudio 于 2025 年 5 月 推出 GenStudio 高级版/企业版升级服务,大幅提升 API 调用频率 ,依然保留免费基础服务了解计费
Skip to content
回到全部文章

在 AIStudio 开发机中使用 LLaMA Factory 微调 LlaMA 3 模型

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。本教程将基于 Meta AI 开源的 LlaMA 3 8B 模型,介绍如何在 AIStudio 开发机中使用 LLaMA Factory 训练框架完成模型的中文化与角色扮演微调和评估。

前置准备

在开始本教程之前,您需要:

  1. 已有 AIStudio 平台账号并完成实名认证
  2. 具备基础的 Linux 命令行操作知识
  3. 了解大模型微调的基本概念

步骤一:创建开发机并使用 LLaMA Factory 镜像

选择合适的 GPU 规格

为了确保微调过程的顺利进行,建议选择以下 GPU 配置:

  • 推荐配置:RTX 4090 (24GB 显存) 或更高
  • 最低配置:RTX 3090 (24GB 显存)
  • 不推荐:显存小于 20GB 的 GPU

创建开发机

  1. 登录 AIStudio 平台,进入开发机管理页面

  2. 在创建开发机页面,完成以下配置:

    • 镜像选择:选择自定义镜像中的 LLaMA Factory 镜像(参考 使用 Dockerfile 快捷安装 LLaMA Factory 提前构建)
    • GPU 配置:选择 RTX 4090 或同等配置
    • 存储配置:建议挂载至少 100GB 的共享存储用于存放数据集和模型
  3. 等待开发机启动完成,状态显示为"运行中"

验证环境

开发机启动后,通过 Web Terminal 登录,验证 LLaMA Factory 环境:

bash
# 验证 LLaMA Factory 安装
llamafactory-cli version

# 检查 GPU 状态
nvidia-smi

# 进入 LLaMA Factory 目录
cd /LLaMA-Factory

步骤二:准备训练数据集

LLaMA-Factory 项目内置了丰富的数据集,统一存储于 data 目录下。您可以跳过本步骤,直接使用内置数据集。您也可以准备自定义数据集,将数据处理为框架特定的格式,放在 data 下,并且修改 dataset_info.json 文件。

在本教程中,我们提供了一份多轮对话数据集,执行以下命令下载数据。

bash
cd /LLaMA-Factory
wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama_factory/data.zip
mv data rawdata && unzip data.zip -d data

数据集中的样本为多轮对话形式,每轮对话都由一条用户指令和一条模型回答组成,微调过程中模型不断学习样本中的回答风格,从而达到中文化与角色扮演的目的。该数据集分为训练集和验证集两个文件,其中训练集共包含 320 组多轮对话样本,验证集共包含 30 组多轮对话样本,数据样例如下所示:

json
[
  {
    "conversations": [
      {
        "from": "human",
        "value": "模仿西游记的孙悟空的语气和我聊天。如果你把水冻住,你会得到什么?"
      },
      {
        "from": "gpt",
        "value": "哈哈,这问题还难倒俺老孙吗?把水冻住就是变成冰啦!不过若是在取经的路上用得着这冰来做啥,比如过火焰山时,那可就是解渴消暑的好东西了!你觉得呢?还有没有更有趣的问题让俺老孙来解答?"
      },
      {
        "from": "human",
        "value": "那怎么做才可以把水冻住"
      },
      {
        "from": "gpt",
        "value": "哈哈,对俺老孙来说,这可是轻而易举的事情!只需将水放在凉快的地方,或者使用法力,一吹仙气,水便能迅速结冰啦!当然,在你的世界里,把水放进冰箱的冷冻室里等一阵子,水就会变成冰块了。要是嫌慢,可以尝试用点干冰或液氮什么的,不过得小心使用哈!毕竟不像俺老孙有抗寒法力。"
      }
    ]
  }
]

步骤三:启动 LLaMA Factory Web UI

启动 Web 界面

bash
# 确保在 LLaMA Factory 目录
cd /LLaMA-Factory

# 启动 Web UI(使用 ModelScope 作为模型源)
export USE_MODELSCOPE_HUB=1
llamafactory-cli webui --host 0.0.0.0 --port 7860

访问 Web 界面

有两种方式访问 Web UI:

方式一:使用开发机 Web 应用预览功能

  1. 在创建开发机时,配置 Web 应用预览端口为 7860
  2. 开发机启动后,点击"预览链接"直接访问

方式二:使用 SSH 端口转发

  1. 获取开发机的 SSH 连接信息
  2. 在本地终端执行端口转发:
bash
# 替换为实际的 SSH 连接信息
ssh -L 7860:localhost:7860 root@your-devmachine-ssh-host -p your-ssh-port
  1. 在本地浏览器访问 http://localhost:7860

步骤四:配置微调参数

在 Web UI 中进行以下配置:

基本设置

  • 语言 (Language):选择 zh(中文)
  • 模型名称 (Model name):选择 LLaMA3-8B-Chat
  • 微调方法 (Finetuning type):选择 lora

数据集设置

  • 数据集 (Dataset):选择 custom_train(如使用自定义数据集)或其他内置数据集
  • 点击预览数据集按钮查看数据格式

训练参数

推荐配置如下:

参数推荐值说明
学习率 (Learning rate)1e-4有利于模型拟合
计算类型 (Compute type)bf16RTX 4090 推荐使用 bf16
梯度累计 (Gradient accumulation)2提高训练稳定性
LoRA+ 学习率比例16提高续写效果
LoRA 作用模块all在所有线性层上应用 LoRA
训练轮数 (Epochs)3.0根据数据集大小调整
批次大小 (Batch size)1根据显存大小调整

输出设置

  • 输出目录 (Output dir):设置为 train_llama3_custom

步骤五:开始微调训练

  1. 配置完成后,点击预览命令查看完整的训练参数
  2. 点击开始按钮启动微调训练
  3. 训练过程中可以观察:
    • 训练进度条
    • 实时损失曲线
    • GPU 使用率和显存占用

训练时间根据数据集大小和 GPU 性能而定,通常需要 20-60 分钟。

步骤六:模型评估

加载训练好的适配器

  1. 训练完成后,点击页面顶部的刷新适配器
  2. 在**适配器路径 (Adapter path)**下拉菜单中选择 train_llama3_custom

运行评估

  1. 切换到 Evaluate & Predict 标签页
  2. 配置评估参数:
    • 数据集:选择 custom_eval(验证集)
    • 输出目录:设置为 eval_llama3_custom
  3. 点击开始启动评估

评估完成后,会显示 ROUGE 分数等指标,用于衡量模型微调效果。

步骤七:模型对话测试

加载微调模型

  1. 切换到 Chat 标签页
  2. 确保适配器路径选择了 train_llama3_custom
  3. 点击加载模型

测试对话效果

在对话框中输入测试问题,例如:

你好,能模仿孙悟空的语气和我聊天吗?

观察模型是否能够:

  • 使用合适的语气和词汇
  • 保持角色一致性
  • 给出有逻辑的回答

对比原始模型

为了验证微调效果:

  1. 点击卸载模型
  2. 清空适配器路径设置
  3. 重新加载模型(此时加载的是原始模型)
  4. 使用相同的问题测试,对比回答差异

常见问题与解决方案

显存不足

现象:训练过程中出现 CUDA out of memory 错误

解决方案

  • 减小批次大小 (Batch size)
  • 增加梯度累计步数
  • 使用更高精度的计算类型(如 fp16)
  • 选择更高显存的 GPU

模型下载失败

现象:无法下载 LLaMA 3 模型

解决方案

  • 确保网络连接正常
  • 使用 ModelScope 镜像:export USE_MODELSCOPE_HUB=1
  • 手动预下载模型到共享存储

Web UI 无法访问

现象:无法通过浏览器访问 Web UI

解决方案

  • 检查开发机 Web 预览端口配置
  • 确认 LLaMA Factory 启动时绑定了 0.0.0.0:7860
  • 使用 SSH 端口转发作为备选方案

高级功能

模型导出

训练完成后,可以将 LoRA 权重合并到原始模型:

bash
llamafactory-cli export \
    --model_name_or_path meta-llama/Llama-3-8b-chat \
    --adapter_name_or_path train_llama3_custom \
    --template llama3 \
    --finetuning_type lora \
    --export_dir merged_model \
    --export_size 2 \
    --export_legacy_format False

注意事项

  1. 存储管理:开发机根分区空间有限,建议将大文件存储在挂载的共享存储中
  2. 资源监控:定期监控 GPU 使用率和显存占用,避免资源浪费
  3. 数据备份:及时备份训练好的模型权重和重要数据
  4. 版本管理:记录使用的 LLaMA Factory 版本和训练参数,便于复现

相关文档