chatglm-6b搭建

2023/6/15

# 环境配置

# 环境要求

win10

pyenv

# python环境

参考pyenv安装。

# 安装CUDA相关

参考英伟达驱动安装

# 安装pytorch

参考pytorch安装

# 安装git-lfs

从 Hugging Face Hub 下载模型需要先安装Git LFS (opens new window),然后运行

点击安装 (opens new window)

# 模型推理

使用chatglm的过程属于推理过程。

# 配置

本次运行环境为win10(正常windows非WSL子系统)

# 前置操作

防止vpn导致无法访问

# demo.queue().launch(share=False, inbrowser=True)改为

os.environ["no_proxy"] = "localhost,127.0.0.1,::1"
demo.queue().launch(server_name="0.0.0.0", server_port=7890,share=False, inbrowser=True)
1
2
3
4

# chatGLM-6B

通过chatGLM来在消费级显卡上运行大模型,项目已经准备好demo脚本可直接启动。

可先查看量化等级对硬件配置要求chatGLM-6B (opens new window)

git clone https://github.com/THUDM/ChatGLM-6B.git

# 模型

chatGLM-6B启动demo时会自动下载模型,但从transformers下载很慢,可以改为手动从国内镜像源下载,本地加载模型的方式实现。

因为国内镜像源也是通过git方式下载,所以对于模型参数来说下载可能还达不到满速,此时可以把模型分为模型实现和参数,模型实现可通过git下载(需安装git-lfs),模型参数可以通过清华网站下载通过多线程可以到40Mbps

  • 下载模型实现

    GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b

  • 下载模型参数

    点击下载 (opens new window) ,参数需要放在上面git clone模型实现的目录下。

int4量化

以上是标准模型,如果电脑配置低可使用量化后的模型

# 运行

# 普通运行

找到chatglm-6b下的python web_demo.py ,把模型路径改成实际路径,windows下对\转义

chatglm6b='D:\tom\\ai\huggingface.co\\chatglm-6b'
tokenizer = AutoTokenizer.from_pretrained(chatglm6b, trust_remote_code=True)
model = AutoModel.from_pretrained(chatglm6b, trust_remote_code=True).half().cuda()
1
2
3

# int4量化

修改web_demo.py,增加quantize(4)参数,如果使用int8量化改为quantize(8),前提是需要下载int量化的模型参考【配置】

chatglm6b='D:\yxk\\ai\huggingface.co\\chatglm-6b-int4'
model = AutoModel.from_pretrained(chatglm6b, trust_remote_code=True).quantize(4).half().cuda()
1
2

# 使用cpu运行

如果没有显卡可以通过cpu运行

改为:

model = AutoModel.from_pretrained(chatglm6b, trust_remote_code=True).float()
1

# 命令行运行

需要安装readline,python3安装命令

pip install pyreadline3 or python -m pip install pyreadline
1

# 报错

AssertionError: Torch not compiled with CUDA enabled
1
  • 原因

    驱动为正确安装或不支持CUDA或使用运行方式不对

  • 解法

    如果使用cpu运行应该配置model = AutoModel.from_pretrained(chatglm6b, trust_remote_code=True).float()

    如果使用gpu运行应该正确安装CUDA

  • 参考

Something went wrong Expecting value: line 1 column 1
1

web_demo.py起来输入文字发送报错

RuntimeError: Internal: D:\a\sentencepiece\sentencepiece\src\sentencepiece_processor.cc(1102) [model_proto->ParseFromArray(serialized.data(), serialized.size())]
1
  • 原因

    通常是AutoTokenizer.from_pretrained和AutoModel.from_pretrained加载的模型不一致

OSError: You seem to have cloned a repository without having git-lfs installed. Please install git-lfs and run `git lfs install` followed by `git lfs pull` in the folder you cloned
1
  • 原因

    安装git-lfs

# 参考

Last Updated: 2023/9/27
只爱西经
林一