GLM3-6B CPU 主机安装及验证(不使用GPU)
https://github.com/THUDM/ChatGLM3?tab=readme-ov-file

智谱的开源大模型,有很多优秀的特性,无GPU的环境也可以运行起来,本文只作为熟悉其基本的安装操作而写。要实现理想的功能,还是需要GPU环境。
model scope 和huggingface都有其开源模型库:
https://www.modelscope.cn/organization/ZhipuAI
1. pytorch的安装
需要 Python 3.10 或更高版本
为了保证 torch 的版本正确,请严格按照 官方文档 的说明安装(本文使用了CPU的资源,不使用GPU)。
https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cpu
2. conda的下载和安装
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
After installing, initialize your newly-installed Miniconda. The following commands initialize for bash :
~/miniconda3/bin/conda init bash
3. GLM3-6B的下载和安装
git clone https://github.com/THUDM/ChatGLM3
GLM3提供了一个集成三种功能的综合 Demo ,需使用前面安装的conda
conda创建chatglm独立使用的虚拟环境。
conda create -n chatglm3-demo python=3.10
conda activate chatglm3-demo

然后进入ChatGLM3的目录,安装功能包
cd /root/ChatGLM3
pip3 install -r requirements.txt
这需要一定的时间,建议安装功能包前,更换PIP,使用清华源来加速:
临时加速:
pip3 install package -i https://pypi.tuna.tsinghua.edu.cn/simple
例如安装 transformers
pip3 install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
永久生效:
python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#命令行
root@glm-6b:~# pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Writing to /root/.config/pip/pip.conf
root@glm-6b:~# cat /root/.config/pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
更换为清华的pip源后
可以看到速度提升非常明显,不换的话下载速度几十KB。

这样很快安装完成了需要的基础文件(下载速度在7M/秒,如果网速或源慢,这也是个漫长的过程)。
4. 下载模型到本地
可以通过如下代码调用 ChatGLM 模型来生成对话:
>> > from transformers import AutoTokenizer, AutoModel
>> > tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
>> > model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
>> > model = model.eval()
>> > response, history = model.chat(tokenizer, "你好", history=[])
>> > print(response)
你好👋!我是人工智能助手
ChatGLM3 - 6
B, 很高兴见到你, 欢迎问我任何问题。
>> > response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>> > print(response)
晚上睡不着可能会让你感到焦虑或不舒服, 但以下是一些可以帮助你入睡的方法:
1.制定规律的睡眠时间表: 保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯, 使你更容易入睡。尽量在每天的相同时间上床, 并在同一时间起床。
2.创造一个舒适的睡眠环境: 确保睡眠环境舒适, 安静, 黑暗且温度适宜。可以使用舒适的床上用品, 并保持房间通风。
3.放松身心: 在睡前做些放松的活动, 例如泡个热水澡, 听些轻柔的音乐, 阅读一些有趣的书籍等, 有助于缓解紧张和焦虑, 使你更容易入睡。
4.避免饮用含有咖啡因的饮料: 咖啡因是一种刺激性物质, 会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料, 例如咖啡, 茶和可乐。
5.避免在床上做与睡眠无关的事情: 在床上做些与睡眠无关的事情, 例如看电影, 玩游戏或工作等, 可能会干扰你的睡眠。
6.尝试呼吸技巧: 深呼吸是一种放松技巧, 可以帮助你缓解紧张和焦虑, 使你更容易入睡。试着慢慢吸气, 保持几秒钟, 然后缓慢呼气。
如果这些方法无法帮助你入睡, 你可以考虑咨询医生或睡眠专家, 寻求进一步的建议。
以上代码会由 transformers 自动下载模型实现和参数。完整的模型实现在 Hugging Face Hub 。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败。
此时可以先将模型下载到本地,然后从本地加载。
下载模型到本地,需要先安装 Git Large File Storage
ubuntu下安装git-lfs:
1. 添加源
wget https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh
bash script.deb.sh
2. 安装
apt-get install git-lfs
3. 初始化
git lfs install

安装完成后,通过huggingface或国内源git下载,HuggingFace 下载比较慢,建议从 ModelScope 中下载。
git clone https://huggingface.co/THUDM/chatglm3-6b /不使用这个
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git /使用这个
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
需要下载近50G数据。因此换源是很有必要的。
在本地下载了模型,可以通过 export MODEL_PATH=/path/to/model 来指定从本地加载模型。如果需要自定义 Jupyter 内核,可以通过 export IPYKERNEL=<kernel_name> 来指定。
export MODEL_PATH=/root/chatglm3-6b/
cd /root/ChatGLM3/composite_demo
streamlit run main.py
会运行web页面的demo,会显示访问的IP和端口。
访问IP+端口

使用CPU,响应速度是非常慢的(其实是没反应……),所以,这个界面只能作为一个演示说明。
要有反馈的类型,CPU下建议使用basic_demo ,这个反馈就会有了,像树懒一样慢,但是总算有反馈了 :)

资源占用情况,此时CPU 占用了2C,内存占用了46% ,24G左右(12C 48G的云主机)

也可以通过Python交互直接跑,这样资源消耗最低,注意,本例需要把一些参数调成本地模式,及CPU模式:
tokenizer = AutoTokenizer.from_pretrained(“/root/chatglm3-6b“, trust_remote_code=True)
model = AutoModel.from_pretrained(“/root/chatglm3-6b“, trust_remote_code=True, device=’cpu‘)
>> > from transformers import AutoTokenizer, AutoModel
>> > tokenizer = AutoTokenizer.from_pretrained("/root/chatglm3-6b", trust_remote_code=True)
>> > model = AutoModel.from_pretrained("/root/chatglm3-6b", trust_remote_code=True, device='cpu')
>> > model = model.eval()
>> > response, history = model.chat(tokenizer, "你好", history=[])
>> > print(response)
你好👋!我是人工智能助手
ChatGLM3 - 6
B, 很高兴见到你, 欢迎问我任何问题。
>> > response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>> > print(response)
晚上睡不着可能会让你感到焦虑或不舒服, 但以下是一些可以帮助你入睡的方法:
1.制定规律的睡眠时间表: 保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯, 使你更容易入睡。尽量在每天的相同时间上床, 并在同一时间起床。
2.创造一个舒适的睡眠环境: 确保睡眠环境舒适, 安静, 黑暗且温度适宜。可以使用舒适的床上用品, 并保持房间通风。
3.放松身心: 在睡前做些放松的活动, 例如泡个热水澡, 听些轻柔的音乐, 阅读一些有趣的书籍等, 有助于缓解紧张和焦虑, 使你更容易入睡。
4.避免饮用含有咖啡因的饮料: 咖啡因是一种刺激性物质, 会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料, 例如咖啡, 茶和可乐。
5.避免在床上做与睡眠无关的事情: 在床上做些与睡眠无关的事情, 例如看电影, 玩游戏或工作等, 可能会干扰你的睡眠。
6.尝试呼吸技巧: 深呼吸是一种放松技巧, 可以帮助你缓解紧张和焦虑, 使你更容易入睡。试着慢慢吸气, 保持几秒钟, 然后缓慢呼气。
如果这些方法无法帮助你入睡, 你可以考虑咨询医生或睡眠专家, 寻求进一步的建议。
交互模式1C 25%的内存占用(12G左右)


总结一下:
- 安装Python3.10以上版本,使用Ubuntu2204,自带版本够用。
- 一定要更换pip源(清华源),并使用modelscope.cn 这个来下载模型到本地,否则下载速度太慢。
- 安装过程中,如果有多个项目场景需求,最好创建conda 环境,当然,这个过程有些包需要多次安装,需要一定的带宽和时间。
- CPU真是非常慢,所以,这只能作为一个熟悉基础环境和流程的验证(GPU还涉及到驱动等安装配置)。