【大模型】llama-factory基础学习

前言:LLaMA-Factory项目的目标是整合主流的各种高效训练微调技术,适配市场主流开源模型,形成一个功能丰富,适配性好的训练框架。

1. 前期准备

下载源码:https://github.com/hiyouga/LLaMA-Factory
环境搭建的话参考readme.md:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

2. 原始模型直接推理

只需要配置template和model_name_or_path。
终端运行:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat \  
    --model_name_or_path /media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct \  
    --template llama3

运行完可以在本地服务器访问:http://localhost:7860/

3. 自定义数据集

llama-factory支持json格式文件,自定义数据集中每条数据格式如下:

{
“prompt”: “介绍一下苹果”,
“response”: “苹果公司(Apple Inc.),是一家美国跨国科技公司,总部位于加利福尼亚州库比蒂诺。”
}

将文件放到llama factory项目下的data文件夹,然后编辑data_info.json文件,添加数据集映射:

 "demo": {
    "file_name": "demo.json",
    "file_sha1":dwfewcevrvff
    "columns": {
      "prompt": "prompt",
      "response": "response"
    }

demo是映射后使用的数据集别名,file_name是数据集路径,file_sha1不是必需的,但是可以缓存预处理后的数据集,避免二次训练时重新预处理,sha1的生成可以通过终端运行shasum -a 1 filename(linux命令),columns是json文件中的列名映射

4. 模型训练

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \  
    --do_train \  
    --model_name_or_path /media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct \  
    --dataset alpaca_gpt4_zh \  
    --dataset_dir ./data \  
    --template llama3 \  
    --finetuning_type lora \  
    --lora_target q_proj,v_proj \  
    --output_dir ./saves/LLaMA3-8B/lora/sft \  
    --overwrite_cache \  
    --overwrite_output_dir \  
    --cutoff_len 1024 \  
    --preprocessing_num_workers 16 \  
    --per_device_train_batch_size 2 \  
    --per_device_eval_batch_size 1 \  
    --gradient_accumulation_steps 8 \  
    --lr_scheduler_type cosine \  
    --logging_steps 50 \  
    --warmup_steps 20 \  
    --save_steps 100 \  
    --eval_steps 50 \  
    --evaluation_strategy steps \  
    --load_best_model_at_end \  
    --learning_rate 5e-5 \  
    --num_train_epochs 5.0 \  
    --max_samples 1000 \  
    --val_size 0.1 \  
    --plot_loss \  
    --fp16
    --logging_dir path_to_logging_directory

一些重要参数解读:

  • stage: 训练方式,pt,sft等
  • model_name_or_path:基础模型的路径
  • dataset:数据集名称,data_info.json中的
  • template:模板,在readme.md中可以找到对应的模型模板
  • finetuning_type:微调方式,一般选lora
  • output_dir:存储模型路径
  • logging_dir:日志路径

5. 模型合并并导出

训练后得到的模型不能直接使用,需要和基础模型合并后导出:

CUDA_VISIBLE_DEVICES=0 python src/export_model.py \
    --model_name_or_path qwen/Qwen-7B \
    --adapter_name_or_path /mnt/workspace/llama_factory_demo/qwen/lora/sft/checkpoint-50 \
    --template qwen \
    --finetuning_type lora \
    --export_dir /mnt/workspace/merge_w/qwen \
    --export_legacy_format False
  • model_name_or_path: 基础模型路径
  • adapter_name_or_path:训练后的模型路径
  • template:模板
  • finetuning_type:微调方式
  • export_dir:导出模型路径
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值