ChatGLM2-6B本地部署踩坑

本文详细描述了如何在特定软硬件环境下部署和配置ChatGLM2-6B模型,包括从GitHub和HuggingFace下载源码和模型、环境准备、运行模型以及性能体验,指出了一些注意事项和预期的后续发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

ChatGLM2-6B发布了,官方宣称性能速度有大幅提升。

链接icon-default.png?t=N7T8https://mp.weixin.qq.com/s/_h9ls_gHIgHho1RBwUlhsA

之前是直接下载 B站UP主封装好的 懒人包测试的,这次打算 参考官网 自己部署。

软硬件环境如下:

CPU:11700KF

GPU:3090ti 24G

RAM:DDR4 3200 64G(32G X2)

OS:Win10 Pro 22H2 19045.2673

二、准备工作

1、工程文件准备

整个工程需要从两个远程仓库克隆,一个是 github 上的源码,一个是 HuggingFace 上的模型。

对于源码,由于总体积较小,因此可直接从网页下载 zip 包后解压,也可使用 git 命令(电脑需要提前装好 git )克隆至本地文件夹中:

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

对于模型,由于存在7个体积较大的 checkpoint 文件,若直接 clone 可能耗时过久或网络连接不够稳定,可以采用大、小文件分别下载的方式。其中大文件可从 清华云 手动下载,小文件主要为模型实现文件,数量不多且体积较小(算上 tokenizer.model 一共11个文件),可采用两种方式下载,一种是在 HuggingFace 页面手动一个一个下载,另一种是利用 GIT_LFS_SKIP_SMUDGE 参数跳过大文件一次性克隆整个工程(电脑需要提前装好 Git LFS):

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

最后再将前面手动下载好的大文件拷入替换,构成完整的模型。

需要注意的坑:

1)该命令在 powershell 中会报错,提示不认识 GIT_LFS_SKIP_SMUDGE 命令,放在 git bash 终端中则可顺利执行;

2)被该命令跳过的“大文件”不仅有 7 个 .bin 文件,还包括 1.02MB 的 tokenizer.model

模型文件理论上可存放于任意位置,参考官方演示视频将其平行于源码文件夹,即整个工程文件的目录结构如下:

  • [chatglm2_6b]
    • [src]
      • api.py
      • cli_demo.py
      • web_demo.py
      • ……
    • [model]
      • config.json
      • modeling_chatglm.py
      • pytorch_model-00001-of-00007.bin
      • ……

根据目录结构,修改源码目录下的 web_demo.py 文件,将两处 THUDM/chatglm2-6b 替换为 ..\\model :

tokenizer = AutoTokenizer.from_pretrained("..\\model", trust_remote_code=True)
model = AutoModel.from_pretrained("..\\model", trust_remote_code=True).cuda()

如果想使用命令行与模型交互,则需要修改 cli_demo.py。web_demo2.py 同理 。

需要注意的坑:

在 windows 下,表示目录层级的斜杠需写为双反斜杠,而非 Linux 下的单一正斜杠。

2、python环境准备

安装 miniconda,给 pip 和 conda 换清华源,新建环境,预装 pip:

conda create -n chatglm2-6b pip

使用 pip 安装所有依赖:

pip install -r requirements.txt

需要注意的坑:

对于使用 Nvidia GPU 的用户,ChatGLM 官网并没有明确给出手动安装 torch 的方法,以下操作如不进行,将无法启动模型:

1)下载安装 CUDA Toolkit,本次部署采用的安装包为 cuda_12.1.0_531.14_windows.exe

2)根据 CUDA 版本安装编译 torch,本次部署采用的命令为:

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu121

即分别勾选 Preview(Nightly)、Windows、Pip、Python、CUDA 12.1(如不选 Preview,则CUDA版本无法选12;如选 Conda,则安装过程中可能会出现 Conflicts)。

三、运行模型

文件夹层面 cd 至 src 文件夹,环境层面激活 chatglm2-6b,然后执行:

python .\web_demo.py

需要注意的坑:

1)使用 web_demo 时不能开 VPN,否则会弹出 Expecting value: line 1 column 1 (char 0)错误;

2)如使用 web_demo2,则需要按官网提示额外安装 streamlit 和 streamlit-chat,且启动命令为 streamlit run web_demo2.py 。

四、体验

推理速度相比上一代有明显的提升,但性能提升感知不强。期待团队未来推出13B、30B、65B等更大规模的模型。

<think>嗯,用户想了解如何在本地部署ChatGLM2-6B模型。我需要先回顾一下之前提供的引用内容,看看有没有相关信息。引用[1]提到了ChatGLM3-6B的部署,包括使用Git LFS克隆模型,虽然用户问的是ChatGLM2-6B,但步骤可能类似。引用[2]提到后续会更新微调等内容,可能对用户也有帮助。引用[3]中的转换脚本可能适用于不同版本的模型,比如将模型转换为特定格式。引用[4]解决了Python模块缺失的问题,可能在部署过程中遇到类似错误需要处理。 首先,我需要确认ChatGLM2-6B和ChatGLM3-6B的部署步骤是否相似。根据经验,Hugging Face的模型通常使用类似的流程,即通过git lfs下载模型文件,然后加载。但需要查看官方文档是否有特别说明。另外,用户可能遇到环境配置问题,比如Python依赖项、Git LFS安装等。需要分步骤说明,确保用户能逐步操作。 还要考虑用户的操作系统,引用中提到的是CentOS7.9,但用户可能使用其他系统,比如Ubuntu或者Windows。不过本地部署通常建议在Linux环境下进行,所以步骤可能以Linux为准。需要提醒用户注意系统兼容性。 另外,模型下载可能遇到网络问题,引用[1]提到连接不稳定,建议使用方法二,但方法二的具体内容没有说明,可能需要补充替代下载方式,比如手动下载或使用镜像。 可能还需要提到Python环境配置,使用conda或者venv创建虚拟环境,安装必要的库如torch、transformers等。引用[3]中的convert.py脚本可能需要特定参数,用户需要根据实际情况调整路径。 最后,用户可能遇到的常见错误,如ModuleNotFoundError,引用[4]中的chardet问题,需要提醒安装相关包。可能还有其他依赖项需要安装,比如requests、urllib3等。 总结步骤应该是:环境准备→模型下载→依赖安装→加载模型→验证运行。每个步骤详细说明,并给出代码示例。同时,生成相关问题帮助用户深入理解,比如性能优化、量化部署、微调方法等。</think>### ChatGLM2-6B本地部署分步指南 #### 一、环境准备 1. 操作系统建议使用Linux(如CentOS7.9/Ubuntu18.04+) 2. 安装Python3.8+环境(推荐使用Anaconda管理) ```bash conda create -n chatglm python=3.8 conda activate chatglm ``` 3. 安装基础依赖 ```bash pip install torch==1.13.1 transformers==4.33.1 icetk ``` #### 二、模型下载 通过Hugging Face Hub获取模型[^1]: ```bash git lfs install git clone https://huggingface.co/THUDM/chatglm2-6b ``` *若网络不稳定,可尝试通过镜像源下载或手动下载模型文件到本地目录* #### 三、模型加载 创建Python脚本加载模型: ```python from transformers import AutoTokenizer, AutoModel model_path = "./chatglm2-6b" tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().cuda() response, history = model.chat(tokenizer, "你好", history=[]) print(response) ``` #### 四、常见问题解决 1. **模块缺失错误**:如遇`ModuleNotFoundError`,根据提示安装对应模块[^4] ```bash pip install chardet ``` 2. **显存不足**:可尝试量化版本(如int4)或CPU部署 3. **模型转换**:使用官方转换脚本调整模型格式[^3] #### 五、部署验证 运行交互式测试: ```python model = model.eval() while True: query = input("\n用户输入:") response, history = model.chat(tokenizer, query, history=history) print("ChatGLM2-6B:", response) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值