vllm-cpu部署GLM4

环境要求

  • 操作系统:Linux
  • 编译器:gcc/g++ >= 12.3.0(可选,推荐)
  • 指令集架构(ISA)要求:AVX512(可选,推荐)

从源码构建

  • 首先,安装推荐的编译器。我们建议使用默认的编译器以避免潜在的问题。例如,在Alibaba Cloud Linux系统上,可以运行以下命令安装gcc/g++:
sudo yum update -y
sudo yum install -y gcc gcc-c++ numactl-devel
  • 其次,安装用于构建vLLM CPU后端的Python包:
git clone htstps://github.com/vllm-project/vllm.git
cd vllm

pip install --upgrade pip
pip install wheel packaging ninja "setuptools>=49.4.0" numpy
pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu
  • 最后,构建并安装vLLM CPU后端:
VLLM_TARGET_DEVICE=cpu python setup.py install

性能优化建议

  • 强烈推荐使用TCMalloc以获得高性能的内存分配和更好的缓存局部性。例如,在Alibaba Cloud Linux系统上,可以运行以下命令:
sudo yum update
sudo yum install gperftools # 安装gperftools库(Ubuntu系统请安装TCMalloc库)
find / -name *libtcmalloc* # 查找动态链接库路径
export LD_PRELOAD=/usr/lib64/libtcmalloc_minimal.so.4:$LD_PRELOAD # 将库添加到LD_PRELOAD

下载模型文件

  • 从ModelScope魔搭社区下载:
pip install modelscope
# 模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('ZhipuAI/glm-4-9b-chat', cache_dir='/data/models/') # cache_dir设置为自己想保存模型文件的路径

启动在线服务

  • 在使用在线服务时,建议为服务框架保留1-2个CPU核心以避免CPU过度占用。例如,在具有32个物理CPU核心的平台上,保留CPU 30和31给框架,并使用CPU 0-29给OpenMP。
    VLLM_CPU_KVCACHE_SPACE为KV cache储存空间大小,默认4G,因为glm4支持上下文长度128k,所以需要设置的大一点,我设置为8G,模型上下文越长需要设置的越大;VLLM_CPU_OMP_THREADS_BIND为设置使用哪些CPU,我只有8核,所以选择0-6,保留1个:
export VLLM_CPU_KVCACHE_SPACE=8
export VLLM_CPU_OMP_THREADS_BIND=0-6
  • 运行以下命令启动vLLM服务:
# 我们也可以在启动时设置环境变量
VLLM_CPU_KVCACHE_SPACE=8 VLLM_CPU_OMP_THREADS_BIND=0-6 \
vllm serve '/data/models/ZhipuAI/glm-4-9b-chat' \
	--dtype bfloat16 \
	--port 8000 \
    --load-format 'auto' \
    --device cpu \
    --served-model-name glm4 \
    --trust-remote-code

创建简单应用

启动智能助手应用

  • 应用说明:该应用通过Prompt构建了一个简单智能学习助手,可以根据用户输入的科目或技术,输出知识点、重难点、并制定学习路线和学习计划。
  • 安装依赖库
pip install -r requirements.txt
  • 启动应用:将代码中BASE_URL的IP和端口修改为你部署服务器的公网IP和端口即可使用
python study_assistant.py

运行后会直接启动一个web应用,界面如下:

使用vllm在g8i(CPU)云服务器上部署GLM4并创建简单应用_LLM

然后就可在输入框输入你想学习的科目或技术了,运行示例如下:

使用vllm在g8i(CPU)云服务器上部署GLM4并创建简单应用_cpu_02

使用vllm在g8i(CPU)云服务器上部署GLM4并创建简单应用_vllm_03

使用vllm在g8i(CPU)云服务器上部署GLM4并创建简单应用_cpu_04

使用vllm在g8i(CPU)云服务器上部署GLM4并创建简单应用_LLM_05

  • 输入示例:
我想学习Python
  • 输出示例:
### 科目
Python

Python 是一种广泛使用的高级编程语言,以其简洁的语法和强大的库支持而闻名。它适用于各种编程任务,包括网站开发、数据分析、人工智能、自动化等。

### 知识点
1. Python 基础语法:变量、数据类型、运算符、控制流(if 语句、循环)。
2. 函数和模块:定义函数、参数、返回值、标准库模块的使用。
3. 面向对象编程:类和对象、继承、封装、多态。
4. 文件操作:读取和写入文件。
5. 错误和异常处理:try-except 块、常见异常。
6. 数据结构和算法:列表、元组、字典、集合、基本算法。
7. 网络编程:使用 sockets 进行网络通信。
8. 数据库交互:使用 SQLite 或其他数据库进行数据存储和检索。
9. Web 开发:使用 Flask 或 Django 框架。
10. 自动化和脚本:使用 Python 进行自动化任务。
### 重难点
- 面向对象编程:理解类、继承、封装和多态的概念。
- 数据结构和算法:掌握常见数据结构(如列表、字典、集合)和算法(如排序、搜索)。
- 错误和异常处理:正确处理程序中的错误和异常。
- Web 开发:理解 Web 开发的基本原理和框架的使用。
### 学习路线
1. Python 基础语法:学习变量、数据类型、控制流等。
2. 函数和模块:掌握函数定义、模块导入和使用。
3. 面向对象编程:学习类和对象、继承、封装、多态。
4. 数据结构和算法:学习常见数据结构和算法。
5. 文件操作和异常处理:学习文件读写和错误处理。
6. 网络编程和数据库交互:学习网络通信和数据库操作。
7. Web 开发:学习 Web 开发基础和框架使用。
8. 自动化和脚本:学习使用 Python 进行自动化任务。
### 学习计划
1. Python 基础语法:每天学习 1 小时,持续 1 周。
2. 函数和模块:每天学习 1 小时,持续 2 周。
3. 面向对象编程:每天学习 1 小时,持续 2 周。
4. 数据结构和算法:每天学习 1 小时,持续 3 周。
5. 文件操作和异常处理:每天学习 0.5 小时,持续 1 周。
6. 网络编程和数据库交互:每天学习 1 小时,持续 2 周。
7. Web 开发:每天学习 1 小时,持续 3 周。
8. 自动化和脚本:每天学习 0.5 小时,持续 1 周。
请注意,这个计划是一个大致的框架,您可以根据自己的学习进度和需求进行调整。