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左右)

总结一下:

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注