llamafactory-llama3微调中文数据集

news2024/11/17 19:44:06

一、定义

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

  1. 基准模型测试
  2. opencompass 离线测评
  3. 数据准备
  4. 微调训练
  5. 合并
  6. 测试
  7. 人工审核对比

二、实现

  1. 基准模型测试
    基准模型 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 在中文表达上更满足人的需求。随着训练轮次的增加,模型更倾向于表达中文。

  1. 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
  1. 数据准备
    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"
  }
  1. 微调训练
#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 &
  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
  1. 测试
    微调后:
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. 人工审核对比
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1867947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么样的台灯适合学生使用?五款暑假必入护眼大路灯分享

什么样的台灯适合学生使用?现在近视越来越低龄化,戴眼镜的小朋友越来越多,每每看着自己孩子眼睛贴到作业本上写作业,我的心都会提到嗓子眼。去医院一检查,果然,远视储备即将告罄,必须要防护了&a…

深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径

文章目录 一、分批渲染1、setTimeout定时器分批渲染2、使用requestAnimationFrame()改进渲染2.1、什么是requestAnimationFrame2.2、为什么使用requestAnimationFrame而不是setTimeout或setInterval2.3、requestAnimationFrame的优势和适用场景 二、滚动触底加载数据三、Elemen…

【项目实训】解决前后端跨域问题

由于前端框架使用vue,后端使用flask,因此需要解决前后端通信问题 在vue.config.js中修改 module.exports defineConfig({transpileDependencies: true,lintOnSave:false, }) // 跨域配置 module.exports {devServer: { //记住&#x…

2024 年适用于 Windows 11/10/8/7 的最佳 SSD 磁盘克隆软件

磁盘克隆软件对于用户在发生数据灾难时保证数据/系统安全至关重要。克隆软件可以创建驱动器的副本并保持数据相同。如果发生数据灾难,您可以设置克隆驱动器以克隆回数据/驱动器。或者您可以直接使用克隆的驱动器继续工作。 除了传统的 HDD,Windows 11/1…

使用nvm切换node版本时报错:exit status 1解决办法

作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…

C++学习/复习20--继承的权限/向上转换/重定义/默认成员函数/友元/静态成员/菱形虚拟继承/组合

一、继承的概念 二、继承的权限 三、向上转换 四、重定义(隐藏) 五、派生类的默认成员函数 六、继承与友元 七、继承与静态成员 八、菱形继承 数据冗余与二义性 虚拟继承(virtual) 九、继承组合

【ARM】MCU和SOC的区别

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解SOC芯片和MCU芯片的区别 2、 问题场景 用于了解SOC芯片和MCU芯片的区别,内部结构上的区别。 3、软硬件环境 1)、软件版本:无 2)、电脑环境:无 3&am…

Java洗鞋预约小程序源码

💥洗鞋神器来袭!轻松预约,让你的鞋子焕然一新👟 🎉 告别洗鞋烦恼,洗鞋预约小程序来啦! 你是不是常常为洗鞋而烦恼?手洗太累,送去洗衣店又贵又麻烦。现在,好…

数据恢复篇:如何从 Mac 硬盘安全恢复丢失的文件

Mac RAID 阵列用于大存储。Mac RAID 上的数据丢失可能很复杂。一般来说,从 Mac RAID 硬盘恢复已删除的文件并不困难。但如果​​您想从 Mac RAID 硬盘恢复由于格式化、病毒感染、硬盘故障而丢失的文件,情况就会发生变化。您必须找到一个功能强大的 Mac R…

基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展,现在制作网站变得越来越简单。下面是一个简单的步骤指南,帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前,你需要明确你的网站的…

【STM32】看门狗

1.看门狗简介 看门狗起始就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新恢复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的简单一点,看门狗…

【机器学习】K-means++: 一种改进的聚类算法详解

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 K-means: 一种改进的聚类算法详解引言1. K-means算法回顾1.1 基本概念1.2 局限性…

2024智能驾驶兴趣人群研究报告

来源:百分点舆情中心 近期历史回顾: 劳动力效能提升指引白皮书》人效研究院.pdf 【标准】企业ESG管理体系(T-CERDS 5—2023).pdf 【实用标准】GB_T 43868-2024 电化学储能电站启动验收规程.pdf 【实用模板】用户侧新型储能项目管理流程图及备案资料清单…

搭建大型分布式服务(四十)SpringBoot 整合多个kafka数据源-支持生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

【数据同步】什么是ETL增量抽取?

目录 一、什么是ETL增量抽取 二、企业如何应用ETL增量抽取 三、如何进行ETL增量抽取 1.基于时间戳的增量抽取 2.基于主键的增量抽取 在当今信息化时代&#xff0c;数据的快速增长和多样化使得企业面临着巨大的数据管理挑战。为了高效地处理和利用数据&#xff0c;ETL&#xff0…

每日一题——Python实现PAT乙级1058 选择题(举一反三+思想解读+逐步优化)6千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 我要更强 空间复杂度优…

【学习】开发板接口

工作用到机器的开发板 有如上三个接口 。最右是仿真器&#xff0c;中间是RS232串口&#xff0c;最左是电源线 仿真器 这个是仿真器 接入机器那端用的是SWD模式&#xff0c;另一端通过USB接电脑&#xff08;这小肥手拍的怪好看&#xff09;仿真口连接了四条线分别是 VCC&#…

gsap动画库对threejs模型的应用

前言 公司的一个3D编辑器项目&#xff0c;要在three模型上加一些补间动画。做了一些调研&#xff0c;最终选择了gsap&#xff0c;其丰富的缓动函数&#xff0c;强大的动画效果和兼容性&#xff0c;更适合公司的需求。 查看gsap文档&#xff0c;发现所有的例子都是针对dom元素…

【乐吾乐2D可视化组态编辑器】文件

1 文件 文件&#xff1a;文件的新建、打开、导入、保存、另存为、下载JOSN文件、下载ZIP打包文件、导出为HTML、导出为Vue2组件、导出为Vue3组件、导出为React组件&#xff08;老版将不再维护&#xff09;、下载为PNG、下载为SVG 乐吾乐2D可视化组态编辑器demo&#xff1a;ht…