llamafactory-llama3微调中文数据集

llamafactory-llama3微调中文数据集

    正在检查是否收录...
一言准备中...

一、定义

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
CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval \ --model_name_or_path /home/Meta-Llama-3-8B-Instruct \ --template llama3 \ --task triviaqa \ --split validation \ --lang en \ --n_shot 5 \ --batch_size 1 


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

opencompass 离线测评
部署见opencompass 配置篇
from mmengine.config import read_base with read_base(): from .datasets.mmlu.mmlu_gen_4d595a import mmlu_datasets datasets = [*mmlu_datasets] from opencompass.models import HuggingFaceCausalLM batch_size = 20 # 指定评测模型 model_name_or_paths = [ #可以多个模型 '/home/Meta-Llama-3-8B-Instruct' ] models = [] #模型以及配置放于列表中 for model_name_or_path in model_name_or_paths: abbr = model_name_or_path.split('/')[-1] model = dict( type=HuggingFaceCausalLM, abbr=abbr, path=model_name_or_path, tokenizer_path=model_name_or_path, tokenizer_kwargs=dict(padding_side='left', truncation_side='left', use_fast=False, trust_remote_code=True ), max_out_len=1024, max_seq_len=2048, batch_size=batch_size, model_kwargs=dict(device_map='auto', trust_remote_code=True), batch_padding=False, # if false, inference with for-loop without batch padding run_cfg=dict(num_gpus=2, num_procs=2), ) models.append(model) # 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
import datasets data=datasets.load_dataset("llamafactory/alpaca_gpt4_zh") data=data["train"] res=[] for i in range(len(data)): res.append(data[i]) import json with open('alpaca_gpt4_zh.json', 'w',encoding="utf8") as file: # 使用缩进格式化输出 JSON 数据 json.dump(res, file, indent=4,ensure_ascii=False) 
#42677 "alpaca_gpt4_zh_local": { "file_name": "alpaca_gpt4_zh.json" } #16493 "Llama3-Chinese-dataset_local": { "file_name": "Llama3-Chinese-dataset.json" } #11262 "COIG-CQIA_local": { "file_name": "COIG-CQIA.json" } #51983 "alpaca_gpt4_en_local": { "file_name": "alpaca_gpt4_en.json" } 
微调训练
#lora 双卡微调 CUDA_VISIBLE_DEVICES=0,1 nohup llamafactory-cli train \ --stage sft \ --do_train \ --model_name_or_path /home/Meta-Llama-3-8B-Instruct \ --dataset alpaca_gpt4_zh_local,Llama3-Chinese-dataset_local,COIG-CQIA_local,alpaca_gpt4_en_local \ --dataset_dir ./data \ --template llama3 \ --finetuning_type lora \ --output_dir ./saves/LLaMA3-8B/lora/sft \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 1024 \ --preprocessing_num_workers 16 \ --per_device_train_batch_size 4 \ --per_device_eval_batch_size 2 \ --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 3.0 \ --val_size 0.1 \ --plot_loss \ --fp16> output.log 2>&1 & 
#3 个epoch 有些过拟合,采用1个epoch CUDA_VISIBLE_DEVICES=0,1 nohup llamafactory-cli train \ --stage sft \ --do_train \ --model_name_or_path /home/Meta-Llama-3-8B-Instruct \ --dataset alpaca_gpt4_zh_local,Llama3-Chinese-dataset_local,COIG-CQIA_local,alpaca_gpt4_en_local \ --dataset_dir ./data \ --template llama3 \ --finetuning_type lora \ --output_dir ./saves/LLaMA3-8B/lora/sft_1 \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 1024 \ --preprocessing_num_workers 16 \ --per_device_train_batch_size 4 \ --per_device_eval_batch_size 2 \ --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 1.0 \ --val_size 0.1 \ --plot_loss \ --fp16> output.log 2>&1 & 
合并
CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \ --model_name_or_path /home/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --template llama3 \ --finetuning_type lora \ --export_dir megred-model-path-1 \ --export_size 2 \ --export_device cpu \ --export_legacy_format False 
测试
微调后:
CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat \ --model_name_or_path megred-model-path \ --template llama3 





微调前:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval \ --model_name_or_path megred-model-path \ --template llama3 \ --task mmlu \ --split validation \ --lang en \ --n_shot 5 \ --batch_size 1 


7. 人工审核对比

总结

### 文章总结
**文章标题**: LLAMA3 模型详细流程与实施步骤
**核心要点**:
1. **定义与流程**:
- **基准模型测试**:使用 llama3-8b 基准模型进行测试,评估其在特定任务(如 triviaqa)上的性能。调整 epoch (训练周期),结合实际中文表达效果,选择最优的 epoch 设置。
- **opencompass 离线测评**:通过配置 opencompass 进行离线模型评估。设定测试数据集和模型参数,加载并运行评测脚本。
- **数据准备**:整合了多个数据集资源(如 alpaca_gpt4_zh, Llama3-Chinese-dataset, COIG-CQIA 等),用于后续的微调训练。
- **微调训练**:采用 lora(低秩自适应)方式进行微调,利用上述准备的数据集对模型进行训练,并通过比较不同 epoch 的测试结果,确定适合的训练周期。
- **合并**:将微调后的适配器模型与原始基础模型合并,生成可用于实际测试或部署的完整模型。
- **测试与人工审核对比**:通过自动评估和人工审核,对新老模型(微调前与微调后)进行对比,验证微调的效果和模型性能的提升。
2. **具体实现步骤**:
- **基准模型测试**:通过 llamafactory-cli 工具,加载并评估基准模型在特定任务上的表现。
- **opencompass 离线测评**:配置并运行 opencompass 进行离线评估,指定模型和数据集等信息。
- **数据准备**:使用 datasets 库加载和处理的数据集,并将其保存为 JSON 格式文件,供微调训练使用。
- **微调训练**:通过 lamafactory-cli 进行 lora 微调训练,调整不同参数如批处理大小、学习率、训练周期等以获得最佳效果。
- **合并**:导出微调后的适配器模型,并将其与基础模型合并,生成最终可部署的模型。
- **测试**:通过 llamafactory-cli 进行聊天或评估任务,检验微调后模型的实际表现。
- **人工审核对比**:对比微调前后的模型表现,特别是在中文表达和特定任务上的性能差异。
3. **关键参数和指令说明**:
- 各类 CUDA、数据集路径、模型路径、输出目录、批处理大小、学习率、训练周期等关键配置的设定与调整。
- `llamafactory-cli` 工具的使用,包括 eval, train, export, chat 等指令的实际应用示例。
4. **关键发现和结论**:
- 适当调整训练周期(如从 3 个 epoch 减少到 1 个 epoch)可以避免过拟合,并提高模型在中文表达上的表现。
- 通过基准模型测试、数据准备、微调训练和人工审核等多步骤流程,可以有效提升模型在特定任务上的性能表现。
5. **适用场景和实用价值**:
- 该流程适用于需要在大规模基础模型上进行定制化微调的场景,如生成式 AI 任务、语言处理任务等。
- 通过精细的调参和人工审核,可以为不同类型的实际应用提供定制化、高性能的 AI 模型。 llamagptgpt4alpacactoclijson微调训练tpu数据集数据准备模型测试githubgithuggingface基础模型chat定制化适配器code
  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-20453.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.7W+
9
1
2
WAP站长官方

探索和构建 LLaMA 3 架构:深入探究组件、编码和推理技术

上一篇

心理健康问答系统-AIGC大模型-小程序制作

下一篇
  • 复制图片
按住ctrl可打开默认菜单