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

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

目录

  • [1. 前期准备](#1. 前期准备)
  • [2. 原始模型直接推理](#2. 原始模型直接推理)
  • [3. 自定义数据集](#3. 自定义数据集)
  • [4. 模型训练](#4. 模型训练)
  • [5. 模型合并并导出](#5. 模型合并并导出)

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:导出模型路径
相关推荐
二进制_博客24 分钟前
Flink学习连载文章4-flink中的各种转换操作
大数据·学习·flink
codebolt1 小时前
ADS学习记录
学习
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
Guofu_Liao7 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
朝九晚五ฺ9 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
猫爪笔记11 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
pq113_611 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
澄澈i11 小时前
设计模式学习[8]---原型模式
学习·设计模式·原型模式
爱米的前端小笔记12 小时前
前端八股自学笔记分享—页面布局(二)
前端·笔记·学习·面试·求职招聘
alikami13 小时前
【前端】前端学习
学习