L1-5:XTuner 微调个人小助手认知任务

环境安装:我们想要用简单易上手的微调工具包 XTuner 来对模型进行微调的话,第一步是安装 XTuner !安装基础的工具是一切的前提,只有安装了 XTuner 我们才能够去执行后续的操作。

由于XTuner使用的依赖库与课程3的依赖库相同,因此我们直接调用之前所配好的langgpt环境。

其次,安装XTuner:

# 创建一个目录,用来存放源代码
mkdir -p /root/InternLM/code

cd /root/InternLM/code

git clone -b v0.1.21  https://github.com/InternLM/XTuner /root/InternLM/code/XTuner

##########
#########
############
# 进入到源码目录
cd /root/InternLM/code/XTuner
conda activate xtuner0121

# 执行安装
pip install -e '.[deepspeed]'

前期准备:在完成 XTuner 的安装后,我们下一步就需要去明确我们自己的微调目标了。我们想要利用微调做一些什么事情呢,然后为了实现这个目标,我们需要准备相关的硬件资源和数据。

安装模型(开发机已有internlm2-chat-1.8b的模型),创建目录存放模型

# 创建一个目录,用来存放微调的所有资料,后续的所有操作都在该路径中进行
mkdir -p /root/InternLM/XTuner

cd /root/InternLM/XTuner

mkdir -p Shanghai_AI_Laboratory

ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b Shanghai_AI_Laboratory/internlm2-chat-1_8b

查看目录结构:

apt-get install -y tree

tree -l

过网页端的 Demo 来看看微调前 internlm2-chat-1_8b 的对话效果

conda activate xtuner0121

streamlit run /root/InternLM/Tutorial/tools/xtuner_streamlit_demo.py

xtuner_streamlit_demo.py之前存放的Tutorial/tools目录下,若这个代码运行不了可以运行:
streamlit run /root/Tutorial/tools/xtuner_streamlit_demo.py

再进行一次端口映射

ssh -CNg -L 8501:127.0.0.1:8501 root@ssh.intern-ai.org.cn -p 端口号

http://127.0.0.1:8501

查看结果

模型微调:

准备一个数据集文件datas/assistant.json,文件内容为对话数据

然后将 tools/xtuner_generate_assistant.py复制到/root/InternLM/XTuner目录下,运行文件

cd /root/InternLM/XTuner
mkdir -p datas
touch datas/assistant.json

###运行数据文件
cd /root/InternLM/XTuner
conda activate xtuner0121

python xtuner_generate_assistant.py

查看现在的目录结构:

配置文件:xtuner copy-cfg internlm2_chat_1_8b_qlora_alpaca_e3 .

根据项目的需求对配置文件进行修改和调整

#######################################################################
#                          PART 1  Settings                           #
#######################################################################
- pretrained_model_name_or_path = 'internlm/internlm2-chat-1_8b'
+ pretrained_model_name_or_path = '/root/InternLM/XTuner/Shanghai_AI_Laboratory/internlm2-chat-1_8b'

- alpaca_en_path = 'tatsu-lab/alpaca'
+ alpaca_en_path = 'datas/assistant.json'

evaluation_inputs = [
-    '请给我介绍五个上海的景点', 'Please tell me five scenic spots in Shanghai'
+    '请介绍一下你自己', 'Please introduce yourself'
]

#######################################################################
#                      PART 3  Dataset & Dataloader                   #
#######################################################################
alpaca_en = dict(
    type=process_hf_dataset,
-   dataset=dict(type=load_dataset, path=alpaca_en_path),
+   dataset=dict(type=load_dataset, path='json', data_files=dict(train=alpaca_en_path)),
    tokenizer=tokenizer,
    max_length=max_length,
-   dataset_map_fn=alpaca_map_fn,
+   dataset_map_fn=None,
    template_map_fn=dict(
        type=template_map_fn_factory, template=prompt_template),
    remove_unused_columns=True,
    shuffle_before_pack=True,
    pack_to_max_length=pack_to_max_length,
    use_varlen_attn=use_varlen_attn)

使用xtuner train ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py进行模型训练

训练后的目录结构(112626那个目录是之前报错的目录文件)

使用 xtuner convert pth_to_hf 命令来进行模型格式转换

转换后目录

# 先获取最后保存的一个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

然后进行模型合并

export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert merge /root/InternLM/XTuner/Shanghai_AI_Laboratory/internlm2-chat-1_8b ./hf ./merged --max-shard-size 2GB

合并后目录

最后修改XTuner脚本启动文件

# 直接修改脚本文件第18行
- model_name_or_path = "/root/InternLM/XTuner/Shanghai_AI_Laboratory/internlm2-chat-1_8b"
+ model_name_or_path = "/root/InternLM/XTuner/merged"

端口映射

查看结果

通过浏览器访问:http://127.0.0.1:8501 来进行对话

收到小迷弟一枚哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值