头图

ChatGLM2-6B 简介

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,具体介绍可参阅 ChatGLM2-6B 项目主页

推荐配置

依据官方数据,同样是生成 8192 长度,量化等级为 FP16 要占用 12.8GB 显存、int8 为 8.1GB 显存、int4 为 5.1GB 显存,量化后会稍微影响性能,但不多。

类型内存显存硬盘空间
fp16>=16GB>=16GB>=25GB
int8>=16GB>=9GB>=25GB
int4>=16GB>=6GB>=25GB

一、ChatGLM2-6B下载

# 1.从GitHub仓库中拉取代码
git clone https://github.com/THUDM/ChatGLM2-6B

# 2.进入下载源码的目录
cd ChatGLM2-6B

# 3.执行效果如下:
C:\Users\wg>git clone https://github.com/THUDM/ChatGLM2-6B
Cloning into 'ChatGLM2-6B'...
remote: Enumerating objects: 277, done.
remote: Counting objects: 100% (170/170), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 277 (delta 141), reused 127 (delta 125), pack-reused 107
Receiving objects: 100% (277/277), 7.36 MiB | 51.00 KiB/s, done.
Resolving deltas: 100% (155/155), done.

C:\Users\wg>cd ChatGLM2-6B

# 4.安装相关依赖 (建议使用虚拟环境 python -m venv 环境名称)
pip3 install -r requirements.txt

# 5.transformers的版本需要使用4.26.1的,默认是4.30.2(启动时会报错)
pip install transformers==4.26.1

# 6.对第4点的虚拟环境做一些补充说明 (可忽略)
# 6.1 为避免依赖冲突和混乱,引起不必要的麻烦,可使用虚拟环境做隔离
# 6.2 创建环境的命令: python -m venv glm-venv
# 6.3 这时候我们创建了一个名为 glm-venv的虚拟环境
# 6.4 进入虚拟环境 cd glm-venv/Scripts
# 6.5 进入到这个目录后 执行里面的脚本即可: activate

# PS: 如果你看到终端多了环境名即进入成功 (glm2-venv) C:\Users\wg> 
# PS: 把pip工具升级到最新版本, 一般在输入 pip list查看列表时会提示你要不要升级

二、手动下载模型到本地

下载地址(需魔法): https://huggingface.co/THUDM/chatglm-6b/tree/main

注意事项: 这里我默认你已经下载好了,并且存放在一个叫做 chatglm-6b 的目录

PS: 把chatglm-6b的模型 放到我们从GitHub下载的 ChatGLM2-6B/models/[chatglm-6b] 目录下面

三、运行项目 (Web端)

3.1、运行命令

3.2、运行命令

# 运行命令
streamlit run web_demo2.py
【PS: 另外的一套UI界面 (可忽略)】
另外一套UI是 web_demo.py 这个文件 (好像对话时有点bug)
这套UI的运行方法是 python web_demo.py
推荐使用: web_demo2.py

3.3、运行效果

四、运行项目 (Api接口)

4.1、安装依赖:

# 安装依赖
pip install fastapi uvicorn

# 运行命令
python openai_api.py

# PS: 修改一下这个文件下面的 模型路径, 否则会自动到 https://huggingface.co 这个网站下载
# PS: 修改方法和 步骤三 差不多的

4.2、启动效果:

(glm2-venv) C:\Users\wg\ChatGLM2-6B>>python openai_api.py

INFO:     Started server process [12316]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

4.3、PostMan测试:

教程结束

到这里,我们项目就已经成功部署起来了~
但是我们可能在这过程中会遇到不少问题~



下面是一些问题的总结

问题一: AssertionError: Torch not compiled with CUDA enabled

报错含义是,在编译torch的时候,CUDA并没有起作用。
【解决办法】:

1、首先命令行输入nvidia-smi,查看CUDA版本:
2、得到服务器的CUDA版本为12.2:

3、然后去torch官网中查看CUDA适配的torch版本:
下载官网: https://pytorch.org/get-started/locally/

执行成功后终端的提示(最后出现 Successfully 则表示安装成功):

Installing collected packages: torch, torchvision, torchaudio
  Attempting uninstall: torch
    Found existing installation: torch 2.1.0
    Uninstalling torch-2.1.0:
      Successfully uninstalled torch-2.1.0
Successfully installed torch-2.1.0+cu121 torchaudio-2.1.0+cu121 torchvision-0.16.0+cu121

执行命令后重新运行应该就解决了
如未解决获取你可以参考: https://blog.csdn.net/m0_46948660/article/details/129205116


问题二: quantization_kernels_parallel.so' (or one of its dependencies). Try using the full path with constructor syntax.

这里 quantization_kernels_parallel.c 的编译成功,但加载时报错:

FileNotFoundError: Could not find module '[略]\quantization_kernels_parallel.so' (or one of its dependencies). Try using the full path with constructor syntax.

但是并没有影响,因为它会再尝试编译和加载 quantization_kernels,
这次是成功的,他们的目的是一样的,所以有一个成功,就能启动

加载失败的原因:

这是因为ctypes在Windows环境下的bug还没修复,python3.10目前还有问题。
参考文章: https://github.com/THUDM/ChatGLM-6B/issues/967
处理方式: 需要对 [模型文件夹]\quantization.py 中的 ctypes.cdll.LoadLibrary相关代码进行处理:
# 搜索这句 (应该是一共3个地方需要改动)
kernels = ctypes.cdll.LoadLibrary(kernel_file)

# 替换为这句,也可以只是注掉上面那句
#kernels = ctypes.cdll.LoadLibrary(kernel_file)
kernels = ctypes.CDLL(kernel_file, winmode = 0) 

问题三: ModuleNotFoundError: No module named 'transformers_modules.models/chatglm2-6b-int4'

安装的 transformers 包的版本太新导致的。
自己的版本 本地命令行执行 pip list,发现是 4.30.2 版本
然后重新安装了 transformers 4.26.1 后,正常运行了
参考的文章: http://lihuaxi.xjx100.cn/news/1299459.html?action=onClick
# 重新安装依赖 
pip install transformers==4.26.1

问题四: TypeError: dumps_kwargs keyword arguments are no longer supported.

直接启动 openai_api.py 会报发生以下错误:

PydanticDeprecatedSince20: The `json` method is deprecated; use `model_dump_json` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.0.2/migration/
  yield "{}".format(chunk.json(exclude_unset=True, ensure_ascii=False))

略

  File "/root/miniconda3/envs/chatglm2/lib/python3.10/site-packages/pydantic/main.py", line 926, in json
    raise TypeError('`dumps_kwargs` keyword arguments are no longer supported.')
TypeError: `dumps_kwargs` keyword arguments are no longer supported.

解决方法如下:

vi openai_api.py

# 搜索以下内容 (共3处):
yield "{}".format(chunk.json(exclude_unset=True, ensure_ascii=False))

# 修改为以下的代码
yield "{}".format(chunk.model_dump_json(exclude_unset=True))

# 最终的修改效果如下: (我这里是把旧的注释掉了,并没有直接去修改它)
# yield "{}".format(chunk.json(exclude_unset=True, ensure_ascii=False))
yield "{}".format(chunk.model_dump_json(exclude_unset=True))

运营问题

上述的介绍中我们已经把 ChatGLM2-6B 这个模型部署起来了,接下来谈谈如何提供给用户使用的问题。上面介绍的ChatGLM2-6B提供了一个比较简易的Web界面给我们使用,满足一下个人的使用还行吧,给用户使用还是强大的好些。下面给大家推荐一款还不错的源码吧。

目前该系统对接了:

智普、ChatGPT、api2d、讯飞星火、问心一言等模型,还接入了AI绘画。
另外也有 VIP会员 和 对话次数充值等 盈利模式的功能。
源码获取: https://www.waitadmin.cn

PS:如你需接入ChatGLM2-6B,请自行获取授权后再接入去商用哦。

【技术架构】
ThinkPHP8 + Layui + NuxtJs3

源码获取渠道: 点击我官方获取


sunday
108 声望2 粉丝