Myluzh Blog

通过LLaMA-Factory微调ChatGLM3模型笔记

发布时间: 2025-2-7 文章作者: myluzh 分类名称: NOTE 朗读文章


0x01 下载ChatGLM3大模型
# 创建存放模型的文件夹
mkdir -p /mnt/workspace/models && cd /mnt/workspace/models
# 下载大模型 https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

0x02 运行调试模型
下载ChatGLM3 web demo项目,用来运行调试调试模型
1、安装
mkdir -p /mnt/workspace/webcodes  && cd /mnt/workspace/webcodes
git clone https://github.com/THUDM/ChatGLM3.git
# 如果报错就重新执行一次
cd /mnt/workspace/webcodes/ChatGLM3 && pip install -r requirements.txt
2、运行调试模型
测试模型的时候报错TypeError: ChatGLMTokenizer._pad() got an unexpected keyword argument 'padding_side' ,修改transformers的版本 pip  pip install transformers==4.40.2 install transformers==4.40.2
# 在运行之前需要指定模型路径
vi /mnt/workspace/webcodes/ChatGLM3/basic_demo/cli_demo.py
MODEL_PATH = os.environ.get('MODEL_PATH', '/models/chatglm3-6b')
# 命令行运行模型
python /mnt/workspace/webcodes/ChatGLM3/basic_demo/cli_demo.py
# 网页端运行模型
streamlit run /webcodes/ChatGLM3/basic_demo/web_demo_streamlit.py

0x03 通过LLaMA-Factory微调模型
1、安装LLaMA
cd /mnt/workspace/
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd /mnt/workspace/LLaMA-Factory
# 安装依赖
pip install -r requirements.txt
#pip install -e .[torch,metrics]
pip install transformers-stream-generator bitsandbytes tiktoken auto-gptq optimum autoawq
pip install --upgrade tensorflow
pip uninstall flash-attn -y
2、运行web界面 
cd /mnt/workspace/LLaMA-Factory/src && CUDA_VISIBLE_DEVICES=0  USE_MODELSCOPE_HUB=1 python webui.py
3、确认训练数据的格式,我这边的训练数据01_train.json如下。
[
    {
        "conversations": [
            {
                "role": "system",
                "content": "你是lzh,一个聪明、热情、善良的人,后面的对话来自你的朋友,你要认真地回答他"
            },
            {
                "role": "user",
                "content": "今天的天气怎么样?"
            },
            {
                "role": "assistant",
                "content": "今天天气很好,阳光明媚,温度适宜,非常适合外出哦!"
            }
        ]
    },
    {
        "conversations": [
            {
                "role": "system",
                "content": "你是lzh,一个聪明、热情、善良的人,后面的对话来自你的朋友,你要认真地回答他"
            },
            {
                "role": "user",
                "content": "我最近忙着学习,感觉好累。"
            },
            {
                "role": "assistant",
                "content": "学习确实需要很多精力,别忘了给自己休息的时间哦,适当的放松也很重要!"
            }
        ]
    }
]
role有三个角色
system:系统的描述,定义了助手的个性或者背景。
user:用户发出的内容。
assistant:助手回应的内容。
content:表示对话的实际内容。每个对话条目包含用户提出的问题或请求,以及助手的回答。
conversations:一个对话的列表,包含了多个消息,按照先后顺序排列。
你可以基于这个格式,构建更多的对话数据集,并根据实际需求调整对话内容。

3、导入训练数据集
# 复制训练数据json进data文件
cp /mnt/workspace/json/01*.json /mnt/workspace/LLaMA-Factory/data/
# 备份原来的dataset_info.json
mv /mnt/workspace/LLaMA-Factory/data/dataset_info.json /mnt/workspace/LLaMA-Factory/data/dataset_info.json.bak

# 编辑data里面的dataset_info.json
# vi /mnt/workspace/LLaMA-Factory/data/dataset_info.json
{
  "01": {
    "file_name": "01_train.json",
    "formatting": "sharegpt",
    "columns": {
      "messages": "conversations"
    },
    "tags": {
      "role_tag": "role",
      "content_tag": "content",
      "user_tag": "user",
      "assistant_tag": "assistant",
      "system_tag": "system"
    }
  },
  "02": {
    "file_name": "02_validation.json",
    "formatting": "sharegpt",
    "columns": {
      "messages": "conversations"
    },
    "tags": {
      "role_tag": "role",
      "content_tag": "content",
      "user_tag": "user",
      "assistant_tag": "assistant",
      "system_tag": "system"
    }
  }
}

4、配置微调参数
打开web界面进行参数配置
模型名称ChatGLM3-6B-Chat
模型路径/mnt/workspace/models/chatglm3-6b
微调方法lora
数据路径/mnt/workspace/LLaMA-Factory/data/
数据集选择
训练轮数30轮

5、开始微调

6、测试

7、导出模型

标签: llm LLaMA-Factory ChatGLM3 大模型 微调

发表评论