LLaMA-Factory 微调 Qwen2-7B-Instruct

一、系统环境

  • 使用的 autoDL 算力平台
    在这里插入图片描述
1、下载基座模型
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com  # (可选)配置 hf 国内镜像站

huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --local-dir /root/autodl-tmp/models/Llama3-8B-Chinese-Chat1

二、llama factory 框架

1、安装框架
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install unsloth
pip install vllm==0.7.3
pip install torch==2.7.0
2、准备数据
  • fintech.json 数据格式如下:
[
    {
        "instruction": "国际经济与贸易专业的就业前景是怎样的?",
        "input": "",
        "output": "国际经济与贸易专业的就业前景较为广阔。随着全球经济一体化的深入发展,国际贸易交流不断增加,对专业人才的需求也日益增长。毕业生可以在跨国公司、国际贸易企业、金融机构以及政府部门等领域找到就业机会。此外,随着国家对外贸易政策的不断调整与改善,国际经济与贸易专业的就业前景也将更加乐观。综合来看,国际经济与贸易专业具有较高的就业率和就业质量,为毕业生提供了良好的职业发展空间。",
        "history": [
            [
                "从事国际经济与贸易专业的人可以有哪些工作机会?",
                "国际经济与贸易专业拥有广泛的就业领域。毕业生可以在进出口公司、物流公司、保险公司、银行中介类货代以及报关员、报检员等职位工作。此外,他们还可以在政府机构如外贸局、外汇局、商检局、海关等部门从事涉外经济贸易的实际业务、管理、调研和宣传策划工作。国际经济与贸易专业还培养了高素质的复合型涉外经贸人才,使他们具备从事国际经贸工作的能力和竞争力。"
            ]
        ]
    },
    {
        "instruction": "列出三种创造性的解决问题的技巧。",
        "input": "",
        "output": "1. 头脑风暴: 这种技巧旨在通过鼓励尽可能多的想法来产生新颖的解决方案。与团队成员合作,不管想法多么离奇都应该提出来。最终,团队成员可以一起筛选想法,找到可行的解决方案。\n2. 逆向思维: 这种技巧要求您从问题的根源入手,从结局反推回去。基于这种思想,您可以回顾失败的原因,找到问题的根本所在,并找到更好的解决方案。\n3. 生命周期思考: 这种技巧倡导从全局的角度思考问题。它要求您考虑问题的各个环节,从问题的产生,发展到最终的解决方案。每一个阶段都需要考虑,确保解决方案是全面和持久的。",
        "history": []
    },
    .
    .
    .
    {
        "instruction": "多元化是否更好",
        "input": "",
        "output": "多元化更好。\n\n通过多元化,不同的观点、文化、价值观和经验可以在一个社会中得到广泛的表达和交流。多元化可以促进创新和进步,因为它鼓励不同的思维方式和方法的交流和融合。不同的人才和智慧可以相互启发和补充,从而推动社会的发展。\n\n多元化还可以提供更多的选择和机会。在一个多元化的社会中,人们可以自由选择自己感兴趣的事业、教育、生活方式等。这种多样性可以促进个人的发展和幸福感,同时也为社会的进步和繁荣创造更多的机会。\n\n此外,多元化还有助于促进社会的稳定和和谐。在一个多元化的社会中,人们可以更好地理解和尊重彼此的差异,增进相互之间的理解和合作。这有助于减少冲突和分裂,促进社会的和谐和稳定。\n\n总的来说,多元化可以带来更多的创新、选择和机会,同时也有助于社会的稳定和和谐。因此,多元化是更好的选择。",
        "history": []
    }]
  • identity.json 数据格式如下:
[
  {
    "instruction": "hi",
    "input": "",
    "output": "Hello! I am 东东, an AI assistant developed by 科研🐶. How can I assist you today?"
  },
  {
    "instruction": "hello",
    "input": "",
    "output": "Hello! I am 东东, an AI assistant developed by 科研🐶. How can I assist you today?"
  },
  .
  .
  .
  {
    "instruction": "Who are you?",
    "input": "",
    "output": "I am 东东, an AI assistant developed by 科研🐶. How can I assist you today?"
  }]

将训练数据放在 LLaMA-Factory/data/fintech.json
并且修改数据注册文件:LLaMA-Factory/data/dataset_info.json

"fintech": {
  "file_name": "fintech.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "history": "history"
  }
}
3、启动 webui 界面
  • 注意:使用下述命令 将远程端口 转发到 本地端口
ssh -CNg -L 7860:127.0.0.1:7860 -p 12610 root@connect.nmb2.seetacloud.com
  • webui 启动命令
cd LLaMA-Factory
llamafactory-cli webui
  • 启动成功显示
    在这里插入图片描述

四、在 webui 中设置相关参数

  • 语言选择 zh,切换为中文界面
  • 选择支持的模型名称,填上本地模型地址,微调方法选择 lora,RoPE 插值方法 选择 dynamic,加速方式 选择 unsloth,选择数据集,其他选项基本不需要改变。

在这里插入图片描述
在这里插入图片描述

五、进行微调

1、方式一:在 webui 界面上进行微调

前提:已完成 第四步

  • 完成第四步后,点击下方的开始命令,开始训练
    在这里插入图片描述
2、方式二:根据 第四步 生成的参数,使用命令行进行微调

前提:已完成 第四步

  • 完成第四步后,点击下方的预览命令,根据第四步填写的微调参数,生成相关命令;命令如下:
llamafactory-cli train \
    --stage sft \
    --do_train True \
    --model_name_or_path /root/autodl-tmp/models/Llama3-8B-Chinese-Chat \
    --preprocessing_num_workers 16 \
    --finetuning_type lora \
    --template llama3 \
    --rope_scaling dynamic \
    --flash_attn auto \
    --use_unsloth True \
    --dataset_dir data \
    --dataset identity,fintech \
    --cutoff_len 2048 \
    --learning_rate 0.0002 \
    --num_train_epochs 10.0 \
    --max_samples 1000 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --packing False \
    --report_to none \
    --output_dir saves/Llama-3-8B-Chinese-Chat/lora/train_2025-05-14-20-32-17 \
    --bf16 True \
    --plot_loss True \
    --trust_remote_code True \
    --ddp_timeout 180000000 \
    --include_num_input_tokens_seen True \
    --optim adamw_torch \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0 \
    --lora_target all

在这里插入图片描述

3、微调中

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、微调前后(聊天结果)进行对比

微调前
  • 模型路径为 微调前模型本地路径,点击 下方chat选项,点击加载模型
    在这里插入图片描述
    在这里插入图片描述
微调后
  • 模型路径为 微调前模型本地路径,检查点路径选择 刚刚微调产生的lora权重,点击 下方chat选项,点击加载模型
    在这里插入图片描述
    在这里插入图片描述

七、开放 openai 式接口

# 指定多卡和端口
CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 
llamafactory-cli api custom.yaml
#custom.yaml的文件内容为上述第五步中,方式二的命令参数

八、模型合并

将 base model 与训练好的 LoRA Adapter 合并成一个新的模型。

1、方式一
  • custom_merge.yml 文件内容如下:

### model
model_name_or_path: /root/autodl-tmp/models/Llama3-8B-Chinese-Chat/ (原始模型路径)
adapter_name_or_path: /root/code/LLaMA-Factory/saves/LLaMA3-8B-Chinese-Chat/lora/train_2024-05-25-20-27-47 (lora权重参数路径)
template: llama3(模版)
finetuning_type: lora(微调类型)

### export
export_dir: /root/autodl-tmp/models/LLaMA3-8B-Chinese-Chat-merged(合并后的路径)
export_size: 4(设置单个文件大小为4g)
export_device: cuda
export_legacy_format: false  
  • 运行下方指令
llamafactory-cli export custom_merge.yml
  • 运行结果
    在这里插入图片描述
2、方式二
  • 模型路径为 微调前模型本地路径,检查点路径选择 刚刚微调产生的lora权重,点击 下方export选项,导出目录填写需要保存的地址,点击开始导出
    在这里插入图片描述
  • 导出结果为:
    在这里插入图片描述
<think>嗯,用户想用LLaMA-FactoryQwen2-VL模型进行微调。首先,我需要回忆一下相关的引用内容。根据引用[1]、[2]和[3],LLaMA-Factory支持Qwen2系列的微调,包括Qwen2-VL。用户可能需要具体的步骤指导,比如环境配置、数据准备、参数设置等。 首先,用户的环境配置可能需要安装必要的库,比如modelscope和LLaMA-Factory,这部分在引用[2]里提到过安装步骤。然后是模型下载,Qwen2-VL可能在ModelScope上有,用户需要下载到本地路径,并在LLaMA-Factory的配置中指定路径,这点引用[2]里的步骤四有说明。 接下来是数据准备。引用[3]提到需要准备图像和文本的多模态数据集,格式可能是JSON,包含图片路径和指令对。用户需要确保数据集的结构符合要求,可能需要参考教程里的数据准备部分。 然后是启动LLaMA-Factory的UI界面,用户需要访问本地端口,配置模型路径,选择正确的模型类型,比如Qwen2-VL。在微调参数设置时,可能需要选择LoRA等高效微调方法,调整学习率、批次大小等参数。引用[2]中的步骤七有详细的操作实践,包括训练参数预览和开始训练。 用户可能还会遇到如何导出微调后的模型的问题,引用[2]提到模型合并导出,可能需要指导用户如何操作。此外,在微调多模态模型时,需要注意图像处理部分,确保模型能正确处理图像输入,可能需要参考引用[3]中的配置。 最后,常见问题比如CUDA内存不足,可能需要建议调整批次大小或使用梯度累积。用户的问题可能还涉及如何验证微调后的模型效果,引用[1]中的启动命令可以用来进行交互测试。 需要确保步骤清晰,分点说明,并引用相关的引用内容。可能还需要提醒用户注意版本兼容性,确保LLaMA-Factory支持Qwen2-VL,以及数据格式的正确性。如果有遗漏的步骤,比如环境配置的依赖安装,可能需要补充说明。</think>以下是使用LLaMA-Factory微调Qwen2-VL模型的详细步骤: ### 一、环境准备 1. 安装基础框架: ```bash pip install "modelscope[llm]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ``` 2. 克隆LLaMA-Factory仓库: ```bash git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[metrics] ``` ### 二、模型与数据准备 1. 下载Qwen2-VL模型: 通过ModelScope下载模型至本地路径(示例路径:`/path/to/qwen2_vl`)[^2] 2. 准备多模态数据集: ```json [ { "image": "images/dog.jpg", "conversations": [ {"from": "human", "value": "图片中有哪些物体?"}, {"from": "gpt", "value": "一只金毛犬在草地上奔跑"} ] } ] ``` 数据集应包含图像路径和指令对话对[^3] ### 三、配置微调参数 1. 启动Web UI: ```bash CUDA_VISIBLE_DEVICES=0 python src/train_web.py ``` 访问`http://localhost:7860`[^2] 2. 关键配置项: - 模型路径:`/path/to/qwen2_vl` - 微调方法:LoRA(低秩适配) - 学习率:3e-4 - 批处理大小:根据GPU显存调整(建议从2开始) - 训练轮次:3-5 ### 四、执行微调 1. 在Web界面完成配置后: - 点击"预览命令"验证参数 - 点击"开始训练"启动微调 2. 监控训练过程: ```text Loss下降曲线应平稳收敛 每个epoch约消耗2小时(A100 80G) ``` ### 五、模型推理 1. 加载微调后的模型: ```bash llamafactory-cli chat examples/inference/qwen2_vl.yaml ``` 2. 测试多模态能力: ```python 输入:"请描述这张图片的内容" 上传测试图像验证输出质量 ``` ### 常见问题解决 1. CUDA内存不足: - 减小`per_device_train_batch_size` - 启用梯度累积`gradient_accumulation_steps` 2. 多模态数据处理异常: - 验证图像路径是否正确 - 检查EXIF格式图片是否经过预处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为啥全要学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值