Llama3-Tutorial之XTuner微调Llama3个人小助手

Llama3-Tutorial之XTuner微调Llama3个人小助手

使用XTuner微调llama3模型。

参考: https://github.com/SmartFlowAI/Llama3-Tutorial

1. web demo部署

参考上一节内容已经完成web demo部署,进行对话测试, 当前回答基于llama3官方发布的模型进行推理生成:
web-demo

下面进行微调。

2. 自我认知训练数据集准备

(llama3) root@intern-studio-50014188:~# cd ~/Llama3-Tutorial/
(llama3) root@intern-studio-50014188:~/Llama3-Tutorial# python tools/gdata.py
(llama3) root@intern-studio-50014188:~/Llama3-Tutorial/data# pwd
/root/Llama3-Tutorial/data
(llama3) root@intern-studio-50014188:~/Llama3-Tutorial/data# ll -alh
total 714K
drwxr-xr-x 2 root root 4.0K May  4 10:31 ./
drwxr-xr-x 7 root root 4.0K May  2 11:04 ../
-rw-r--r-- 1 root root    1 May  2 11:04 .gitkeep
-rw-r--r-- 1 root root 681K May  4 10:23 personal_assistant.json
-rw-r--r-- 1 root root  19K May  2 11:04 self_cognition.json

以上脚本在生成了personal_assistant.json 数据文件,格式如下所示:

[
    {
        "conversation": [
            {
                "system": "你是一个懂中文的小助手",
                "input": "你是(请用中文回答)",
                "output": "您好,我是SmartFlowAI,一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?"
            }
        ]
    },
    {
        "conversation": [
            {
                "system": "你是一个懂中文的小助手",
                "input": "你是(请用中文回答)",
                "output": "您好,我是SmartFlowAI,一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?"
            }
        ]
    }
]

3. XTuner配置文件准备

主要修改了model路径和数据文件:

(llama3) root@intern-studio-50014188:~/Llama3-Tutorial/configs/assistant# ls
llama3_8b_instruct_qlora_assistant.py
(llama3) root@intern-studio-50014188:~/Llama3-Tutorial/configs/assistant# vim llama3_8b_instruct_qlora_assistant.py 
...
#######################################################################
#                          PART 1  Settings                           #
#######################################################################
# Model
pretrained_model_name_or_path = '/root/model/Meta-Llama-3-8B-Instruct'
use_varlen_attn = False

# Data
#data_files = ['/root/Llama3-XTuner-CN/data/personal_assistant.json']
data_files = ['/root/Llama3-Tutorial/data/personal_assistant.json']
...

4. 训练模型

cd ~/Llama3-Tutorial

# 开始训练,使用 deepspeed 加速,A100 40G显存配置,训练耗时24分钟。本文使用24G显存(30%的A100资源),耗时较长。
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth

# Adapter PTH 转 HF 格式
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
  /root/llama3_pth/iter_500.pth \
  /root/llama3_hf_adapter

# 模型合并
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
  /root/llama3_hf_adapter\
  /root/llama3_hf_merged

# 最终合并的模型文件如下:
ls llama3_hf_merged/ -alh
total 15G
drwxr-xr-x  2 root root  4.0K May  4 12:07 .
drwxr-xr-x 23 root root  8.0K May  6 13:16 ..
-rw-r--r--  1 root root   707 May  4 12:07 config.json
-rw-r--r--  1 root root   121 May  4 12:07 generation_config.json
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00001-of-00009.bin
-rw-r--r--  1 root root  1.8G May  4 12:07 pytorch_model-00002-of-00009.bin
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00003-of-00009.bin
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00004-of-00009.bin
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00005-of-00009.bin
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00006-of-00009.bin
-rw-r--r--  1 root root  1.9G May  4 12:07 pytorch_model-00007-of-00009.bin
-rw-r--r--  1 root root  1.3G May  4 12:07 pytorch_model-00008-of-00009.bin
-rw-r--r--  1 root root 1003M May  4 12:07 pytorch_model-00009-of-00009.bin
-rw-r--r--  1 root root   24K May  4 12:07 pytorch_model.bin.index.json
-rw-r--r--  1 root root   301 May  4 12:07 special_tokens_map.json
-rw-r--r--  1 root root  8.7M May  4 12:07 tokenizer.json
-rw-r--r--  1 root root   50K May  4 12:07 tokenizer_config.json

5. 推理验证

streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
  /root/llama3_hf_merged

此时Llama3拥有了他是SmartFlowAI打造的人工智能助手的认知:
fine-tuning

但是训练后的模型丢失了之前模型的认知。

本文由mdnice多平台发布

相关推荐
努力的布布21 分钟前
SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器
java·后端·spring
PacosonSWJTU26 分钟前
spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)
java·后端·springmvc
记得开心一点嘛35 分钟前
在Java项目中如何使用Scala实现尾递归优化来解决爆栈问题
开发语言·后端·scala
黄俊懿1 小时前
【深入理解SpringCloud微服务】手写实现各种限流算法——固定时间窗、滑动时间窗、令牌桶算法、漏桶算法
java·后端·算法·spring cloud·微服务·架构
2401_857439692 小时前
“衣依”服装销售平台:Spring Boot技术应用与优化
spring boot·后端·mfc
Jerry.ZZZ2 小时前
系统设计,如何设计一个秒杀功能
后端
企业码道刘某3 小时前
EasyExcel 大数据量导入导出解决方案进阶
java·后端·mybatis
九圣残炎4 小时前
【springboot】简易模块化开发项目整合Redis
spring boot·redis·后端
.生产的驴4 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript