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
运营问题
上述的介绍中我们已经把 ChatGLM2-6B 这个模型部署起来了,接下来谈谈如何提供给用户使用的问题。上面介绍的ChatGLM2-6B提供了一个比较简易的Web界面给我们使用,满足一下个人的使用还行吧,给用户使用还是强大的好些。下面给大家推荐一款还不错的源码吧。
目前该系统对接了:
智普、ChatGPT、api2d、讯飞星火、问心一言等模型,还接入了AI绘画。
另外也有 VIP会员 和 对话次数充值等 盈利模式的功能。
源码获取: https://www.waitadmin.cn
PS:如你需接入ChatGLM2-6B,请自行获取授权后再接入去商用哦。
【技术架构】
ThinkPHP8 + Layui + NuxtJs3
源码获取渠道: 点击我官方获取