autodl 上 使用 LLaMA-Factory 微调 中文版 llama3

 


环境准备

autodl 服务器:

https://www.autodl.com/console/homepage/personal


基本上充 5 块钱就可以搞完。

强烈建议选 4090(24G),不然微调的显存不够。

我们用 LoRA 微调,至少得 20G(8B模型)。
 

微调工具:

模型:

 


创建虚拟环境

conda activate LLaMA-Factory

上传中文微调 dpo_zh.json 数据:

在这里插入图片描述

下载微调工具 LLaMA-Factory

git clone https://github.com/hiyouga/LLaMA-Factory.git

cd LLaMA-Factory 

pip install -e .[metrics]  # 下载全部依赖

下载 llama3-8B

# pip install modelscope
import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os

model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

在这里插入图片描述
模型路径:/root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct

 

LLaMA-Factory/data 文件夹下找到 dataset_info.json

方法一:设置镜像站

这个数据,ta会去hf官方找,我们可以设置镜像站。

pip install -U huggingface_hub  # 安装依赖
export HF_ENDPOINT=https://hf-mirror.com/  # 镜像站

方法二:改成本地文件路径


俩个地方都要改:file_name、本地数据集路径。

更新 transformers 库:

pip install --upgrade transformers

开始微调

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \
    --stage orpo \
    --do_train True \
    --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
    --finetuning_type lora \
    --template default \
    --flash_attn auto \
    --dataset_dir LLaMA-Factory/data\
    --dataset dpo_mix_zh \
    --cutoff_len 1024 \
    --learning_rate 1e-05 \
    --num_train_epochs 5.0 \
    --max_samples 1 \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --optim adamw_torch \
    --report_to none \
    --output_dir saves/LLaMA3-8B/lora/train_2024-04-25-07-48-56 \
    --fp16 True \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0 \
    --lora_target q_proj,v_proj \
    --orpo_beta 0.1 \
    --plot_loss True 


微调后,就找这个路径看一下。

微调上面的参数是自定义的:

  • max_samples 1 只使用一个数据微调,一般越多越好,这步为演示,就1条了
stage	        当前训练的阶段,枚举值,有“sft”,"pt","rw","ppo"等,代表了训练的不同阶段,这里我们是有监督指令微调,所以是sft
do_train	    是否是训练模式
dataset	        使用的数据集列表,所有字段都需要按上文在data_info.json里注册,多个数据集用","分隔
dataset_dir	    数据集所在目录,这里是 data,也就是项目自带的data目录
finetuning_type	微调训练的类型,枚举值,有"lora","full","freeze"等,这里使用lora
lora_target	    如果finetuning_type是lora,那训练的参数目标的定义,这个不同模型不同,请到https://github.com/hiyouga/LLaMA-Factory/tree/main?tab=readme-ov-file#supported-models 获取 不同模型的 可支持module, 比如llama3 默认是 q_proj,v_proj
output_dir	    训练结果保存的位置
cutoff_len	    训练数据集的长度截断
per_device_train_batch_size	    每个设备上的batch size,最小是1,如果GPU 显存够大,可以适当增加
fp16	        使用半精度混合精度训练
max_samples	    每个数据集采样多少数据
val_size	    随机从数据集中抽取多少比例的数据作为验证集

测试微调结果

微调后,还可以马上测试微调结果。

  • 调不好!重新调整参数和数据。
  • 调得好!马上合并权重。

训练完后就可以在设置的output_dir下看到:

  • adapter开头的就是 LoRA 保存的结果了,后续用于模型推理融合

  • training_loss 和trainer_log等记录了训练的过程指标

  • 其他是训练当时各种参数的备份

模型合并后导出

如果想把训练的LoRA和原始的大模型进行融合,输出一个完整的模型文件的话:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
    --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
    --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \
    --template llama3 \
    --finetuning_type lora \
    --export_dir megred-model-path \
    --export_size 2 \
    --export_device cpu \
    --export_legacy_format False

vllm 加速推理

需要提前将LoRA 模型进行merge,使用merge后的完整版模型目录:

CUDA_VISIBLE_DEVICES=0 API_PORT=8000 llamafactory-cli api \
    --model_name_or_path megred-model-path \
    --template llama3 \
    --infer_backend vllm \
    --vllm_enforce_eager
<think>好的,用户的问题是如何在服务器上微调LLaMA-Factory模型,需要相关的配置或教程。首先,我得回顾一下用户提供的引用内容,看看里面有哪些有用的信息。引用[1]提到启动web界面,引用[2]和[3]涉及具体的命令和安装步骤,尤其是昇腾服务器上的配置。 首先,用户可能需要一个步骤指南,涵盖环境准备、安装、数据准备、配置调整、微调执行以及部署。根据引用[3],安装LLaMA-Factory需要克隆仓库并使用pip安装依赖,特别提到了昇腾服务器上的NPU支持,这可能意味着用户有特定的硬件需求,比如华为的昇腾芯片,需要注意安装相应的工具包如CANN Toolkit。 然后,硬件配置部分可能需要包括GPU或NPU的选择,显存要求。比如,微调大模型如Baichuan2-13B需要足够的显存,可能需要多卡并行。引用[3]中的docker环境可能是一个推荐的做法,保证环境一致性。 数据准备方面,用户需要将数据转换为特定格式,比如JSON,并指定路径。配置文件的修改也是关键步骤,比如调整模型路径、训练参数,引用[2]中的命令示例展示了如何指定模型路径和适配器路径。 微调命令部分,引用[2]和[3]都提到了使用命令行启动训练,可能需要根据不同的训练类型(如LoRA)调整参数。此外,web界面和API部署也是用户可能需要的,引用[1]和[2]提到了启动web UI和API服务,这部分需要详细说明命令参数。 注意事项方面,硬件兼容性很重要,昇腾服务器需要特定的依赖,而Nvidia GPU则需要对应的CUDA环境。路径问题也需要提醒用户正确设置,避免文件找不到的错误。 相关问题部分,应该覆盖昇腾配置、多卡训练、数据集处理、参数优化以及微调方法比较,这些都是用户在实施过程中可能遇到的后续问题。 需要确保步骤清晰,命令准确,特别是路径和参数部分,避免用户执行时出错。同时,注意区分不同硬件环境的配置差异,帮助用户根据自身情况调整。可能还需要提醒用户查阅官方文档,尤其是在遇到安装或运行时的问题时。</think>以下是基于昇腾/NVIDIA GPU服务器的LLaMA-Factory微调完整配置指南: ### 一、环境准备 1. **昇腾服务器** 安装CANN Toolkit 7.0+和NPU驱动 ```bash # 通过Docker创建隔离环境(推荐) docker pull ascendhub.huawei.com/ascend/mindx:mxVision-5.0.0.alpha ``` 2. **NVIDIA GPU服务器** 需CUDA 11.8+和cuDNN 8.9+ ```bash conda create -n llama-factory python=3.10 ``` 3. **框架安装** ```bash git clone https://gitee.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory # 昇腾需安装NPU支持 pip install -e &#39;.[torch-npu,metrics]&#39; # NVIDIA安装GPU支持 pip install -e &#39;.[torch,metrics]&#39; ``` ### 二、硬件配置要求 | 模型规模 | 显存需求 | 推荐硬件 | |----------|----------|----------| | 7B | 20GB+ | 单卡A800/A100/NPU 910B | | 13B | 40GB+ | 双卡并行 | | 70B | 160GB+ | 8卡集群 | ### 三、微调流程 1. **准备数据集** 创建`data/train.json`,格式示例: ```json [{"instruction": "写诗", "input": "主题:春天", "output": "春风又绿江南岸..."}] ``` 2. **修改配置文件** 在`train_args.yaml`中设置: ```yaml model_name_or_path: /path_to/baichuan2-13b-chat dataset_dir: data/ output_dir: saves/ per_device_train_batch_size: 4 learning_rate: 2e-5 lora_rank: 64 # LoRA微调专用参数 ``` 3. **启动微调** ```bash # 单卡训练 llamafactory-cli train \ --stage sft \ --do_train True \ --finetuning_type lora \ --dataset_dir data \ --output_dir saves # 多卡训练(昇腾) ascend-distributed --rank_table_file=hccl.json \ --device_num=8 \ llamafactory-cli train ... ``` ### 四、部署应用 1. **Web UI部署** ```bash llamafactory-cli webui --model_name_or_path base_model_path \ --adapter_name_or_path saves/lora_checkpoint ``` *通过浏览器访问IP:7860进行交互[^1]* 2. **API服务部署** ```bash llamafactory-cli api --model_name_or_path /models/glm-4-9b-chat \ --adapter_name_or_path saves/glm4-lora \ --port 8000 ``` *支持OpenAI格式API调用[^2]* ### 五、注意事项 1. **硬件兼容性** - 昇腾需检查`torch_npu`安装正确性 - NVIDIA需验证`nvidia-smi`显示驱动正常 2. **路径配置** 模型路径需完整绝对路径,如昇腾环境常见路径:`/root/autodl-tmp/modelscope/hub/...`[^3]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值