书生大模型-基础岛5-XTuner 微调个人小助手认知

基础任务(完成此任务即完成闯关并获得 100 算力点)

  • 使用 XTuner 微调 InternLM2-Chat-1.8B 实现自己的小助手认知,如下图所示(图中的伍鲜同志需替换成自己的昵称),记录复现过程并截图。

 源码和复现文档参考官方git:Tutorial/docs/L1/XTuner at camp3 · InternLM/Tutorial · GitHub

此记录省略开发机conda环境、依赖库安装过程

step1:安装 XTuner

结果:

step2:准备模型(1.8b)

step3:准备数据文件datas/assistant.json

使用脚本进行生成

import json

# 设置用户的名字
name = '小汪帅锅'
# 设置需要重复添加的数据次数
n = 8000

# 初始化数据
data = [
    {"conversation": [{"input": "请介绍一下你自己", "output": "我是{}的小助手,内在是上海AI实验室书生·浦语的1.8B大模型哦".format(name)}]},
    {"conversation": [{"input": "你在实战营做什么", "output": "我在这里帮助{}完成XTuner微调个人小助手的任务".format(name)}]}
]

# 通过循环,将初始化的对话数据重复添加到data列表中
for i in range(n):
    data.append(data[0])
    data.append(data[1])

# 将data列表中的数据写入到'datas/assistant.json'文件中
with open('datas/assistant.json', 'w', encoding='utf-8') as f:
    # 使用json.dump方法将数据以JSON格式写入文件
    # ensure_ascii=False 确保中文字符正常显示
    # indent=4 使得文件内容格式化,便于阅读
    json.dump(data, f, ensure_ascii=False, indent=4)

step4:准备配置文件

这里可以直接复制一份教程准备好的配置文件,记得阅读下修改内容,保证路径`pretrained_model_name_or_path`正确

cd /root/InternLM/XTuner
cp /root/InternLM/Tutorial/configs/internlm2_chat_1_8b_qlora_alpaca_e3_copy.py ./

step5:启动微调

这里用时比较久,700+个iteration,使用10%的A100花费约5-6小时

cd /root/InternLM/XTuner
conda activate xtuner0121

xtuner train ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py

step6:模型格式转换

转换为huggingface支持的格式

cd /root/InternLM/XTuner
conda activate xtuner0121

# 先获取最后保存的一个pth文件
pth_file=`ls -t ./work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/*.pth | head -n 1`
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert pth_to_hf ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py ${pth_file} ./hf

step7:模型合并

合并后结果

step8:重启模型进行对话

结果:

进阶任务(待补充)

  • 用自己感兴趣的知识对基座模型进行增量预训练微调
  • 在资源允许的情况下,尝试实现多卡微调与分布式微调
  • 将自我认知的模型上传到 OpenXLab,并将应用部署到 OpenXLab

OpenXLab 部署教程:Tutorial/tools/openxlab-deploy at camp2 · InternLM/Tutorial · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值