注意:没有GPU,也可以微调一个属于你自己的大模型,只是微调的时间长一点而已,建议晚上睡觉前运行,第二天早上就可以使用了 😄

效果演示

ChatBot对话页

部署环境

  1. 点击下载 LLaMA3-8B 微调代码压缩包
  2. 将下载的压缩包解压
  3. 终端 (macOS)cmd命令提示符 (Windows) 里面,进入解压后的文件夹,创建一个新的 Conda 虚拟环境

    未安装 Conda 的用户,可以到 Conda官网下载安装

    1
    2
    3
    
    cd llama3-ft
    conda create -n llama3-ft python=3.10
    conda activate llama3-ft
    
  4. 安装依赖包
    1
    
    pip install -r requirements.txt
    

数据准备

你可以直接使用 dataset/huanhuan.json 数据集(该数据集来源于 https://github.com/KMnO4-zx ),也可以自己准备数据集 ,比如你的客服对话(FAQ)数据集,这样就可以微调一个更适合你的智能客服的模型,客服回答更准确

数据集的格式也比较简单,示例如下:

  • instruction 是问题
  • output 是回答
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[
  {
    "instruction": "你好",
    "input": "",
    "output": "皇上好,我是甄嬛,家父是大理寺少卿甄远道。"
  },
  {
    "instruction": "你不愿意见我?",
    "input": "",
    "output": "不该相见自然不愿见,还望王爷尊重我的意愿。"
  }
]

模型微调

模型选择

我使用的是 LLM-Research/Meta-Llama-3-8B-Instruct ,你也可以选择一个其他模型,只需要修改 train.py 文件里面的 model_id 变量即可。

由于国内访问 HuggingFace 比较困难,因此使用 ModelScope 提供的模型。

1
2
3
4
5
6
7
8
# 需要微调的基座模型

# https://www.modelscope.cn/studios/LLM-Research/Chat_Llama-3-8B/summary
model_id = 'LLM-Research/Meta-Llama-3-8B-Instruct'

# 比如你也可以使用 Qwen1.5-4B-Chat 模型
# https://www.modelscope.cn/models/qwen/Qwen1.5-4B-Chat/summary
# model_id = 'qwen/Qwen1.5-4B-Chat'

开始微调

只需要在项目根目录下执行以下命令即可。

1
python train.py

或者可以打开 LLaMA3-8B-Instruct Lora.ipynb 文件,使用 Jupyter Notebook 进行微调。

注意:

  1. 微调的时间会根据你的数据集大小和模型大小而定。我由于没有 GPU,因此耗时2个小时,如果你有 GPU,大概需要 30 分钟。
  2. 代码会自动下载模型,然后开始微调
  3. 微调完成后,所有的文件会保存在 models 文件夹下面,结构如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    ├── models
        ├── checkpoint #【模型微调的 checkpoint】
        │ ├── LLM-Research
        │ │ └── Meta-Llama-3-8B-Instruct
        │ │     ├── checkpoint-100
        │ │     ├── checkpoint-200
        │ │     ├── checkpoint-xxx
        │ └── qwen
        │     └── Qwen1.5-4B-Chat
        │         ├── checkpoint-100
        │         ├── checkpoint-200
        │         ├── checkpoint-xxx
        ├── lora   #【模型微调的 lora 文件】
        │ ├── LLM-Research
        │ │ └── Meta-Llama-3-8B-Instruct
        │ └── qwen
        │     └── Qwen1.5-4B-Chat
        └── model  #【自动下载的基座模型】
            ├── LLM-Research
            │ └── Meta-Llama-3-8B-Instruct
            └── qwen
                └── Qwen1___5-4B-Chat
    

模型测试

微调完成后,你可以执行以下命令启动一个 ChatBot 进行对话测试。

1
streamlit run chat.py

该命令执行后,会自动打开浏览器对话页面