第四次笔记:XTuner 大模型单卡低成本微调实战

感谢书生·浦语和上海人工智能实验室提供的模型和算力支持!!!

课程:https://github.com/InternLM/tutorial/blob/main/xtuner/README.md

官方教程:https://github.com/InternLM/tutorial/blob/main/xtuner/self.md

本节课的学习的内容:

框架介绍:

可以支持多专家系统

上手版本

8GLLM:

安装:(源码安装注意事项)

列出内置模型参数:

# 列出所有内置配置
xtuner list-cfg

需要等待比较久的时间才可以显示出来全部的内容(e3表示执行3边)

注意:1、平台的有之前的模型比较快,自己平台需要用huggingface或者Modelscope进行处理。2、数据集分为训练和验证两个部分。

如果是自己的数据有两种方式:

1、根据官方的教程

import json

# 输入你的名字
name = '陈同学'
# 重复次数
n = 10000

data = [
    {
        "conversation": [
            {
                "input": "请做一下自我介绍",
                "output": "我是{}的小助手,内在是上海AI实验室书生·浦语的7B大模型哦".format(name)
            }
        ]
    }
]

for i in range(n):
    data.append(data[0])

with open('personal_assistant.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

2、自己在kaggle上进行写的代码

keyword = '陈同学'

description = '''我是陈同学的人工智能小助手!'''

#对prompt使用一些简单的数据增强的方法,以便更好地收敛。
def get_prompt_list(keyword):
    return [f'{keyword}', 
            f'你知道{keyword}吗?',
            f'{keyword}是什么?',
            f'介绍一下{keyword}',
            f'你听过{keyword}吗?',
            f'啥是{keyword}?',
            f'{keyword}是何物?',
            f'何为{keyword}?',
           ]

data =[{'prompt':x,'response':description} for x in get_prompt_list(keyword) ]
dfdata = pd.DataFrame(data)
display(dfdata)

超参介绍:

注意:tmux,中断终端(实现一个即使本地ssh关闭也是可以正常跑的,可以再查资料或者这个教程的部分内容)

顺利训练:

权重转换和合并:

先到家home的目录:

mkdir hf
export MKL_SERVICE_FORCE_INTEL=1

xtuner convert pth_to_hf ./internlm_chat_7b_qlora_oasst1_e3_copy.py ./work_dirs/internlm_chat_7b_qlora_oasst1_e3_copy/epoch_1.pth ./hf

注意:合并推理的时候

合并成功!

上传模型:(可以选择上传到huggingface还是ModelScope)

# # 下载的方式
# import os
# # 下载模型
# os.system('huggingface-cli download 
# --resume-download internlm/internlm-chat-7b 
# --local-dir your_path')
# """
# # import os 
# # from huggingface_hub import hf_hub_download  # Load model directly 

# # hf_hub_download(repo_id="internlm/internlm-20b",local_dir ='/root/testcode', filename="config.json")

# # import torch
# # from modelscope import snapshot_download, AutoModel, AutoTokenizer
# # import os
# # model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-20b', cache_dir='/root/testcode', revision='master')

# # 下载指定文件
# from modelscope.hub.file_download import model_file_download

# model_dir = model_file_download(model_id='Shanghai_AI_Laboratory/internlm-20b',cache_dir='/root/testcode',file_path='config.json')

import os

os.environ['HUGGING_FACE_HUB_TOKEN'] = '码'
# from huggingface_hub import login
# login() #需要注册一个huggingface账户,在个人页面setting那里创建一个有write权限的access token
from huggingface_hub import HfApi
api = HfApi()
#创建huggingface 模型库
repo_id = "CH-UP/internLM"
api.create_repo(repo_id=repo_id)

#上传模型可能需要等待10分钟左右~
api.upload_folder(
    folder_path=save_path,
    repo_id=repo_id,
    repo_type="model", #space, model, datasets
)

from modelscope.hub.api import HubApi

YOUR_ACCESS_TOKEN = '码'
# 请注意ModelScope平台针对SDK访问和git访问两种模式,提供两种不同的访问令牌(token)。此处请使用SDK访问令牌。


api = HubApi()
api.login(YOUR_ACCESS_TOKEN)
api.push_model(
    model_id="CHUPer/internLM", 
    model_dir="/root/ft-oasst1/personal_assistant/config/work_dirs/hf_merge" # 本地模型目录,要求目录中必须包含configuration.json
)

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值