ChatGLM3是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。
ChatGLM3共有三种模型,如何选择请看这里
实测windows 2022数据中心版+CUDA12.2+全部环境+anaconda+ChatGLM3-6b模型大约需要85G空间
运行ChatGLM3-6b 4-bit量化需要大约8G显存,所以你需要购买显卡云旗舰版,只能买,不能试用,因为试用不能增加云盘
如果你买不起,那么可以来启智白嫖(真的白嫖,想充钱都充不了的,从前面的链接注册可以获得100积分,100积分在启智可以用11个小时A100,不过启智把内网穿透禁掉了,所以使用webui的模型没法跑)(其实也不是不能跑,就是自己改代码有点太麻烦了)
软件安装
运行ChatGLM3需要anaconda和Git
anaconda
在这里选择合适的anaconda安装,安装时记得勾选添加环境变量
如果环境变量没有正确添加,参照这篇文章手动添加环境变量(大概率不能自动添加,可以重启试试)
Conda 换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
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/r/
conda config --set show_channel_urls yes
Git
参照这里选择合适的Git安装(安装时直接一路点next就行)
下载模型
具体如何让部署请参考模型官方仓库,这里只是一个示例(以从modelspace上使用Git下载为例)
三个模型按需选一个就行,不要全部下载
# 安装Git LFS
git lfs install
# ChatGLM3-6b
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
# ChatGLM3-6b-Base,Base模型在运行时可能会抽风,简单调试后没有解决,不太清楚原因
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b-base.git
# ChatGLM3-6B-32K
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b-32k.git
模型很大,可能需要等待较长时间
环境部署
执行以下命令新建一个 conda 环境并安装所需依赖:
conda create -n chatglm3-demo python=3.10
# 如果这一步报错,试试 activate chatglm3-demo
conda activate chatglm3-demo
# 如果下载过慢请使用 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 更换pip源
pip install -r requirements.txt
pytorch & CUDA
参照我的这篇文章在显卡云上安装pytorch
代码修改
请先看完下面这部分内容,如果符合你的情况,你可以选择直接克隆我已经修改好仓库
# Github
git clone https://github.com/ssdomei232/ChatGLM3-easydemo.git
# 如果你访问GitHub比较困难,可以用下面这个
git clone https://openi.pcl.ac.cn/mei232/ChatGLM3.git
ps:如果你觉得我弄的配色很丑,可以在右上角改掉
如果你使用windows或带有桌面的linux,更推荐你使用composite_demo
,如果你使用命令行的linux,请使用basic_demo
体验
模型量化
默认情况下,模型以 FP16 精度加载,运行ChatGLM3-6b模型需要大概13GB显存。显卡云旗舰版只有8G显存,需要运行4-bit量化的ChatGLM3-6b模型
综合demo
如果你使用windows或带有桌面的linux,请看这部分内容
找到client.py
130行左右
self.model = AutoModel.from_pretrained(
model_path,
trust_remote_code=True,
config=config,
device_map="auto").eval()
# add .quantize(4).cuda() before .eval() and remove device_map="auto" to use int4 model
改为
self.model = AutoModel.from_pretrained(
model_path,
trust_remote_code=True,
config=config,
).quantize(4).cuda().eval()
# add .quantize(4).cuda() before .eval() and remove device_map="auto" to use int4 model
client.py
150行左右,
self.model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True, device_map="auto").eval()
改为
self.model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True).quantize(4).cuda().eval()
命令行对话 Demo
如果你使用命令行的linux,请看这部分内容
找到cli_demo.py第八行左右
model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True, device_map="auto").eval()
改为
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda().eval()
从本地加载模型
由于某堵墙的原因,显卡云无法访问huggingface来自动下载模型
综合demo
如果你使用windows或带有桌面的linux,请看这部分内容
找到client.py第十八行左右
MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
改为
# 模型文件放在同目录chatglm3-6b目录下,如果你想放在别处,请自行修改
MODEL_PATH = 'chatglm3-6b'
命令行对话 Demo
如果你使用命令行的linux,请看这部分内容
找到cli_demo.py第四行左右
MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
改为
# 模型文件放在同目录chatglm3-6b目录下,如果你想放在别处,请自行修改
MODEL_PATH = 'chatglm3-6b'
运行
综合demo
conda activate chatglm3-demo
cd composite_demo
streamlit run main.py
稍等一会加载模型,加载完浏览器会自动弹出到webui,若没有自动弹出,请查看命令行输出手动开启
命令行对话 Demo
conda activate chatglm3-demo
cd basic_demo
python cli_demo.py
稍等一会加载模型,加载完就可以开始对话
温馨提示
相当不建议你使用CPU来运行,除非你使用AMD的线程撕裂者之类的CPU,否则就不要难为电脑了.
参考资料
Conda 替换镜像源方法尽头,再也不用到处搜镜像源地址
THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型