ChatGLM3-6B部署与微调

720 阅读3分钟

ChatGLM3-6B部署与微调

由于ChatGLM3在不断更新,本文对应的代码时间:2024/12/9

1、环境准备

资源配额-GPU规格:ecs.gn6v-c8g1.2xlarge(支持资源包抵扣)

选择镜像:modelscope:1.11.0-pytorch2.1.2tensorflow2.14.0-gpu-py310-cu121-ubuntu22.04

python版本:Python 3.10.13

CPU:8;内存:32 GiB;GPU:1;型号:NVIDIA V100

QQ20241210-092031.png

2、ChatGLM3-6B代码下载

  1. 代码下载及创建虚拟环境

    git clone https://github.com/THUDM/ChatGLM3.git
    cd ChatGLM3
    conda create -n chatglm3-6b python=3.10
    

    当创建虚拟环境出现以下错误时

    QQ20241210-094323.png

    解决步骤如下:

    conda config --show channels
    conda config --remove channels defaults
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    
    conda create -n chatglm3-6b python=3.10   #解决完成在创建一次
    
  2. 安装依赖(警告无需在意,报错当场解决

    conda activate chatglm3-6b
    python -m pip install --upgrade pip
    pip install -r requirements.txt
    

    QQ20241210-095958.png

3、ChatGLM3-6B模型下载

  1. 阿里云不支持huggingface,可以选择到modelscope下载,把模型放在根目录下

    cd /mnt/workspace
    git lfs install
    git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git#时间有点长,耐心等待
    cd chatglm3-6b/
    pwd    #得到一个路径
    

4、验证模型对话demo

  1. 修改模型路径

    手动点击目录到ChatGLM3/basic_demo/cli_demo.py中,修改模型路径 QQ20241210-101358.png

    将路径 'THUDM/chatglm3-6b'修改为 '/mnt/workspace/chatglm3-6b'(也就是步骤3得到的路径),完成后记得ctrl+s保存

  2. 去到basic_demo目录下

    cd ChatGLM3
    cd basic_demo
    python cli_demo.py
    
  3. 可能会遇到报错:有多个库没有安装,缺什么安什么

    QQ20241210-103827.png

    安装完执行python cli_demo.py,还报错就继续安装缺少的库,直到出现对话

    QQ20241210-105217.png

    尝试与部署的模型对话,最后记得stop来终止程序

    QQ20241210-105339.png

5、微调(数据来自官方提供的AdvertiseGen数据集)

  1. 为微调创建一个虚拟环境

    cd /mnt/workspace #回到根目录
    conda create -n ChatGLM3-6b-finetunning python=3.10
    conda activate ChatGLM3-6b-finetunning
    cd ChatGLM3
    cd finetune_demo/
    pip install -r requirements.txt #再次安装依赖
    

    安装依赖时可能会报错(没报错就跳过)

    #执行
    conda install gcc_linux-64
    conda install gxx_linux-64
    conda install gfortran_linux-64
    pip install mpi4py
    #再次执行
    pip install -r requirements.txt 
    
  2. 微调数据集:对于一组完整的微调数据集,必须包含训练数据集和验证数据集

    在 finetune_demo目录下mkdir data

    mkdir data
    cd data/   
    mkdir raw
    mkdir fix
    

    我们使用 AdvertiseGen 数据集来进行微调。从 Tsinghua Cloud 下载处理好的 AdvertiseGen 数据集,将解压后的 AdvertiseGen 目录中的train.json和dev.json两个文件上传到raw目录

    QQ20241210-111141.png

    在lora_finetune.ipynb的下图代码,将红框中内容改为如下所示,记得ctrl+s保存,然后运行它,最终我们需要使用的微调数据集是data/fix下的两个json文件

QQ20241210-112110.png

**在执行微调命令之前,强调一下,官方在github上更新了lora.yaml,如果按这个配置进行微调,会爆显存。我在github找到了别人之前微调的lora.yaml,经过测试,可以微调,请下载替换,下载地址github.com/KevinFanng/…(将新的lora.yaml替换原来的代码,原来lora.yaml在ChatGLM3/fineture_demo/configs目录下)记得ctrl+s保存

  1. 开始微调

    返回到/mnt/workspace/ChatGLM3/finetune_demo#目录

    python finetune_hf.py data/fix/ /mnt/workspace/chatglm3-6b/ configs/lora.yaml
    

    如果报错,根据提示依次安装依赖,以下是我缺少的依赖

    pip install typer
    pip install nltk
    pip install sentencepiece 
    pip install -U transformers
    python finetune_hf.py data/fix/ /mnt/workspace/chatglm3-6b/ configs/lora.yaml#再次执行
    

    注意:出现ImportError: cannot import name 'log' from 'torch.distributed.elastic.agent.server.api的报错,将pytorch降级,现在默认装的是2.4.0,我降到2.3.1,然后transformers降到4.36.2,可以运行

    pip uninstall torch
    pip install torch==2.3.1
    pip uninstall transformers
    pip install transformers==4.36.2
    python finetune_hf.py data/fix/ /mnt/workspace/chatglm3-6b/ configs/lora.yaml#再次执行
    

    屏幕截图 2024-12-09 180339.png