【AI大模型开发者指南】ruozhiba数据集构建——xtuner实战

【AI大模型开发者指南】ruozhiba数据集构建——xtuner实战

Step 1. 准备原始数据集

可以从opendatalab直接下载
https://opendatalab.org.cn/OpenDataLab/COIG-CQIA/tree/main/ruozhiba

download-dataset
下载完成后,传输到服务器中(开发环境中)

Step 2. 准备训练用的数据集(xtuner格式)

原始格式

{
    "instruction": "天下没有不散的筵席,那么我们相聚的意义又是什么",
    "input": "",
    "output": "尽管我们相聚的时光有限,但是相聚的意义在于创造美好的回忆和珍贵的关系。相聚让我们感受到彼此的关怀、支持和友情。我们可以一起分享喜悦、快乐和困难,互相支持和激励。相聚也可以是一个机会,让我们相互了解、学习和成长。最重要的是,相聚能够带给我们真实的人际交往和情感交流,让我们感受到生活的丰富和美好。所以,即使相聚的时间有限,我们仍然要珍惜这份意义和与彼此相聚的时光。",
    "task_type": {
        "major": [
            "问答"
        ],
        "minor": [
            "逻辑问答",
            "隐喻理解"
        ]
    },
    "domain": [
        "通用"
    ],
    "metadata": "暂无元数据信息",
    "answer_from": "llm",
    "human_verified": true,
    "copyright": "暂无版权及作者信息"
}

xtuner格式

{
    "messages": [
        {
            "role": "user",
            "content": ""
        },
        {
            "role": "assistant",
            "content": ""
        }
    ]
}

只需要把instruction变成user-content,output变成assistant-content即可

处理脚本非常简单,gpt就能实现

格式转换完成后,还需要划分数据集,生成test.jsonltrain.jsonl两个文件(这一步同样可以使用gpt生成脚本

Step 3. 构建工作环境

项目文件夹结构

workspace/
- model/
- config/
- train/
- huggingface/
- final_model/
- data/
	- train.jsonl
	- test.jsonl

其中model目录下是internlm2-chat-1_8b/*所有内容,config目录下存放我们微调所使用的配置文件,train是xtuner训练的工作空间,huggingface是模型训练完成后生成adapter的地方

一切完成后准备开始训练

Step 4. 修改配置文件

xtuner copy-cfg internlm2_1_8b_qlora_alpaca_e3 ./config/

从xtuner获取配置模板

修改关键参数

  • 模型地址 pretrained_model_name_or_path
  • 数据集地址 alpaca_en_path
  • 评估问题 evaluation_inputs
  • dataset_map_fn
  • dataset

模型地址和数据集地址的修改为工作环境中的地址(如果是相对路径,需要以启动命令所在目录为根目录,假设在workspace中启动命令,则是./model和./data/train.jsonl)

预设评估问题是

[‘请给我介绍五个上海的景点’, ‘Please tell me five scenic spots in Shanghai’]

不符合本次微调场景,可以改成

[‘为什么我爸妈结婚的时候没邀请我参加婚礼’]

map_fn用于数据规范化,把数据集处理成规范格式,例如Alpaca、OpenAssistant 等等热门数据集的规范化映射函数

在alpaca_en中

我们要把默认的alpaca_map_fn改成openai_map_fn(from xtuner.dataset.map_fns import openai_map_fn)

dataset修改如下

dataset=dict(type=load_dataset, path='json', data_files=dict(train=alpaca_en_path))

alapaca

Step 5. 启动训练

xtuner train ./config/internlm2_1_8b_qlora_ruozhiba_e3.py --work-dir ./train --deepspeed deepspeed_zero2

记得修改配置文件名称,模型名_比特_微调方式_数据集_epoch数,在本次任务中是internlm2_1_8b_qlora_ruozhiba_e3.py

也就是

  • 模型名:internlm2
  • 比特:1.8b
  • 微调方式:qlora
  • 数据集:ruozhiba
  • epoch数:3(e3)

训练完成后,结果可能是

eva

Step 6. 生成adapter

之前构建工作环境时,创建了huggingface文件夹

接下来要把模型变成HuggingFace adapter,以便最终和模型合并,实现qlora

xtuner convert pth_to_hf ./train/internlm2_1_8b_qlora_ruozhiba_e3.py ./train/iter_96.pth ./huggingface

Step 7. 合并模型

adapter生成后,我们需要合并回原模型

# 如果不设置这个,可能会出现线程冲突的bug(实测不设置未遇到bug)
export MKL_SERVICE_FORCE_INTEL=1

# 进行模型整合
xtuner convert merge ./model ./huggingface ./final_model

模型整合完成后

xtuner chat ./final_model --prompt-template internlm2_chat

即可进行对话

测试

未微调前的效果

未微调

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值