llamafactory-llama3微调中文数据集

打印 上一主题 下一主题

主题 525|帖子 525|积分 1575

一、界说

https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main

  • 基准模型测试
  • opencompass 离线测评
  • 数据预备
  • 微调训练
  • 合并
  • 测试
  • 人工考核对比
二、实现


  • 基准模型测试
    基准模型 llama3-8b
    https://zhuanlan.zhihu.com/p/694818596?
    https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/opencompass.md
    https://github.com/InternLM/Tutorial/blob/camp2/data_fine_tuning/data_fine_tuning.md
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval \
  2. --model_name_or_path /home/Meta-Llama-3-8B-Instruct \
  3. --template llama3 \
  4. --task triviaqa \
  5. --split validation \
  6. --lang en \
  7. --n_shot 5 \
  8. --batch_size 1
复制代码

个人以为,虽然epoch=1 在标准指标中中文评估能力大于epoch=3,但人工考核过程中,epoch =3 在中文表达上更满意人的需求。随着训练轮次的增长,模型更倾向于表达中文。

  • opencompass 离线测评
    部署见opencompass 配置篇
  1. from mmengine.config import read_base
  2. with read_base():
  3.     from .datasets.mmlu.mmlu_gen_4d595a import mmlu_datasets
  4. datasets = [*mmlu_datasets]
  5. from opencompass.models import HuggingFaceCausalLM
  6. batch_size = 20
  7. # 指定评测模型
  8. model_name_or_paths = [                              #可以多个模型
  9.     '/home/Meta-Llama-3-8B-Instruct'
  10. ]
  11. models = []   #模型以及配置放于列表中
  12. for model_name_or_path in model_name_or_paths:
  13.     abbr = model_name_or_path.split('/')[-1]
  14.     model = dict(
  15.         type=HuggingFaceCausalLM,
  16.         abbr=abbr,
  17.         path=model_name_or_path,
  18.         tokenizer_path=model_name_or_path,
  19.         tokenizer_kwargs=dict(padding_side='left',
  20.                               truncation_side='left',
  21.                               use_fast=False,
  22.                               trust_remote_code=True
  23.                               ),
  24.         max_out_len=1024,
  25.         max_seq_len=2048,
  26.         batch_size=batch_size,
  27.         model_kwargs=dict(device_map='auto', trust_remote_code=True),
  28.         batch_padding=False,  # if false, inference with for-loop without batch padding
  29.         run_cfg=dict(num_gpus=2, num_procs=2),
  30.     )
  31.     models.append(model)
  32.    
  33. # python run.py configs/eval_llama3_8b_demo.py
复制代码

  • 数据预备
    https://github.com/InternLM/Tutorial/blob/camp2/data_fine_tuning/data_fine_tuning.md
    https://modelscope.cn/datasets/baicai003/Llama3-Chinese-dataset/summary
    https://huggingface.co/datasets/m-a-p/COIG-CQIA
  1. import datasets
  2. data=datasets.load_dataset("llamafactory/alpaca_gpt4_zh")
  3. data=data["train"]
  4. res=[]
  5. for i in range(len(data)):
  6.     res.append(data[i])
  7. import json
  8. with open('alpaca_gpt4_zh.json', 'w',encoding="utf8") as file:
  9.     # 使用缩进格式化输出 JSON 数据
  10.     json.dump(res, file, indent=4,ensure_ascii=False)
复制代码
  1. #42677
  2. "alpaca_gpt4_zh_local": {
  3.     "file_name": "alpaca_gpt4_zh.json"
  4.   }
  5.   
  6.   #16493
  7.   "Llama3-Chinese-dataset_local": {
  8.     "file_name": "Llama3-Chinese-dataset.json"
  9.   }
  10.   #11262
  11.     "COIG-CQIA_local": {
  12.     "file_name": "COIG-CQIA.json"
  13.   }
  14.   #51983
  15.   "alpaca_gpt4_en_local": {
  16.     "file_name": "alpaca_gpt4_en.json"
  17.   }
复制代码

  • 微调训练
  1. #lora 双卡微调
  2. CUDA_VISIBLE_DEVICES=0,1 nohup llamafactory-cli train \
  3.     --stage sft \
  4.     --do_train \
  5.     --model_name_or_path /home/Meta-Llama-3-8B-Instruct \
  6.     --dataset alpaca_gpt4_zh_local,Llama3-Chinese-dataset_local,COIG-CQIA_local,alpaca_gpt4_en_local  \
  7.     --dataset_dir ./data \
  8.     --template llama3 \
  9.     --finetuning_type lora \
  10.     --output_dir ./saves/LLaMA3-8B/lora/sft \
  11.     --overwrite_cache \
  12.     --overwrite_output_dir \
  13.     --cutoff_len 1024 \
  14.     --preprocessing_num_workers 16 \
  15.     --per_device_train_batch_size 4 \
  16.     --per_device_eval_batch_size 2 \
  17.     --gradient_accumulation_steps 8 \
  18.     --lr_scheduler_type cosine \
  19.     --logging_steps 50 \
  20.     --warmup_steps 20 \
  21.     --save_steps 100 \
  22.     --eval_steps 50 \
  23.     --evaluation_strategy steps \
  24.     --load_best_model_at_end \
  25.     --learning_rate 5e-5 \
  26.     --num_train_epochs 3.0 \
  27.     --val_size 0.1 \
  28.     --plot_loss \
  29.     --fp16> output.log 2>&1 &
复制代码
  1. #3 个epoch 有些过拟合,采用1个epoch
  2. CUDA_VISIBLE_DEVICES=0,1 nohup llamafactory-cli train \
  3.     --stage sft \
  4.     --do_train \
  5.     --model_name_or_path /home/Meta-Llama-3-8B-Instruct \
  6.     --dataset alpaca_gpt4_zh_local,Llama3-Chinese-dataset_local,COIG-CQIA_local,alpaca_gpt4_en_local  \
  7.     --dataset_dir ./data \
  8.     --template llama3 \
  9.     --finetuning_type lora \
  10.     --output_dir ./saves/LLaMA3-8B/lora/sft_1 \
  11.     --overwrite_cache \
  12.     --overwrite_output_dir \
  13.     --cutoff_len 1024 \
  14.     --preprocessing_num_workers 16 \
  15.     --per_device_train_batch_size 4 \
  16.     --per_device_eval_batch_size 2 \
  17.     --gradient_accumulation_steps 8 \
  18.     --lr_scheduler_type cosine \
  19.     --logging_steps 50 \
  20.     --warmup_steps 20 \
  21.     --save_steps 100 \
  22.     --eval_steps 50 \
  23.     --evaluation_strategy steps \
  24.     --load_best_model_at_end \
  25.     --learning_rate 5e-5 \
  26.     --num_train_epochs 1.0 \
  27.     --val_size 0.1 \
  28.     --plot_loss \
  29.     --fp16> output.log 2>&1 &
复制代码

  • 合并
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
  2.     --model_name_or_path /home/Meta-Llama-3-8B-Instruct \
  3.     --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \
  4.     --template llama3 \
  5.     --finetuning_type lora \
  6.     --export_dir megred-model-path-1 \
  7.     --export_size 2 \
  8.     --export_device cpu \
  9.     --export_legacy_format False
复制代码

  • 测试
    微调后:
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat \
  2.     --model_name_or_path megred-model-path  \
  3.     --template llama3
复制代码




微调前:

  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval \
  2. --model_name_or_path megred-model-path \
  3. --template llama3 \
  4. --task mmlu \
  5. --split validation \
  6. --lang en \
  7. --n_shot 5 \
  8. --batch_size 1
复制代码

7. 人工考核对比



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

忿忿的泥巴坨

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

标签云

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