LLama-Factory使用教程

守听  金牌会员 | 2024-8-31 07:24:00 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 663|帖子 663|积分 1989

本文是github项目llama-factory的使用教程

注意,最新的llama-factory的github中训练模型中,涉及到本文中的操纵全部使用了.yaml设置。
新的.yaml的方式很简便但不太直观,本质上是一样的。新的readme中的.yaml文件等于下文中的bash指令


PS: 大模型基础和进阶付费课程(本身讲的):《AIGC大模型理论与工业落地实战》-CSDN学院 或者《AIGC大模型理论与工业落地实战》-网易云课堂。感谢支持!
一,数据预备和模型训练

step1-下载项目:

​ 从github中克隆LLaMa-Factory项目到当地
step2-预备数据:

​ 将原始LLaMA-Factory/data/文件夹下的dataset_info.json,增长当地的数据。注意,当地数据只能改成LLama-Factory接受的形式,即当地数据只能支持”promtp/input/output“这种对话的格式,不支持传统的文本分类/实体抽取/关系抽取等等schema数据,假如需要,请想办法改成对话形式的数据。
​ 你需要参考此中的一个文件和它的设置,例如:alpaca_gpt4_data_zh.json,训练和验证数据同样改成这种格式,并在dataset_info.json中新增一个你本身的字典:
  1. {
  2.   "alpaca_en": {
  3.     "file_name": "alpaca_data_en_52k.json",
  4.     "file_sha1": "607f94a7f581341e59685aef32f531095232cf23"
  5. },  
  6. ...
  7. "your_train": {
  8.     "file_name": "/path/to/your/train.json",
  9.     "columns": {
  10.       "prompt": "instruction",
  11.       "query": "input",
  12.       "response": "output"
  13.     }
  14.   },
  15. ...
复制代码
​ 此中的key,your_train,将在训练/测试的shell下令中使用
step3-模型训练:

​ 数据预备好之后,编写shell脚本训练模型,以mixtral为例根目录下新建run_mixtral.sh
需要改动的主要是:model_name_or_path,dataset,output_dir;和其他可选的改动信息,例如save_steps,per_device_train_batch_size等等。
  1. CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
  2.     --stage sft \
  3.     --do_train \
  4.     --model_name_or_path /path/to/your/Mixtral-8x7B-Instruct-v0.1 \
  5.     --dataset my_train \
  6.     --template default \
  7.     --finetuning_type lora \
  8.     --lora_target q_proj,v_proj \
  9.     --output_dir ./output/mixtral_train \
  10.     --overwrite_output_dir \
  11.     --overwrite_cache \
  12.     --per_device_train_batch_size 4 \
  13.     --gradient_accumulation_steps 4 \
  14.     --lr_scheduler_type cosine \
  15.     --logging_steps 10 \
  16.     --save_steps 200 \
  17.     --learning_rate 5e-5 \
  18.     --num_train_epochs 1.0 \
  19.     --plot_loss \
  20.     --quantization_bit 4 \
  21.     --fp16
复制代码
step4-模型融合

​ 模型融合的意义在于合并训练后的lora权重,保持参数和刚从huggingface中下载的一致,以便更加方便地适配一些推理和摆设框架
​ 基本流程/原理:将微调之后的lora参数,融合到原始模型参数中,以mixtral为例新建:LLama-Factory/run_mixtral_fusion.sh:
  1. python src/export_model.py \
  2.     --model_name_or_path path_to_huggingface_model \
  3.     --adapter_name_or_path path_to_mixtral_checkpoint \
  4.     --template default \
  5.     --finetuning_type lora \
  6.     --export_dir path_to_your_defined_export_dir \
  7.     --export_size 2 \
  8.     --export_legacy_format False
复制代码
step5-模型推理

​ 模型推理即模型在新的验证集上的推理和验证过程
​ 指令和训练的基本一致,只是差别几个参数:
        1.增长了do_predict,2.数据集改成一个新的eval数据集
​ LLama-Factory/runs/run_mixtral_predict.sh
  1. CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
  2.     --stage sft \
  3.     --do_predict \
  4.     --model_name_or_path /path/to/huggingface/Mixtral-8x7B-Instruct-v0.1 \
  5.     --adapter_name_or_path /path/to/mixtral_output/checkpoint-200 \
  6.     --dataset my_eval \
  7.     --template default \
  8.     --finetuning_type lora \
  9.     --output_dir ./output/mixtral_predict \
  10.     --per_device_eval_batch_size 4 \
  11.     --predict_with_generate \
  12.     --quantization_bit 4 \
  13.     --fp16
复制代码
step6-API接口摆设

摆设接口的作用是可以让你把接口开放出去给到外部调用
  1. CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api_demo.py \
  2.     --model_name_or_path path_to_llama_model \
  3.     --adapter_name_or_path path_to_checkpoint \
  4.     --template default \
  5.     --finetuning_type lora
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表