环境要求

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

源码构建

  • 首先,安装推荐的编译器。运行以下命令安装gcc/g++:
sudo yum update -y
sudo yum install -y gcc gcc-c++ numactl-devel
  • 其次,安装用于构建vLLM CPU后端的Python包:
git clone https://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以获得高性能的内存分配和更好的缓存局部性。运行以下命令:
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设置为自己想保存模型文件的路径

兼容OpenAI的服务

  • 在使用在线服务时,建议为服务框架保留1-2个CPU核心以避免CPU过度占用。例如,在具有32个物理CPU核心的平台上,保留CPU 30和31给框架,并使用CPU 0-29给OpenMP。
    VLLM_CPU_KVCACHE_SPACE为KV cache储存空间大小,默认4G,可根据自己情况设置;VLLM_CPU_OMP_THREADS_BIND设置使用哪些CPU,可根据自己情况设置:
export VLLM_CPU_KVCACHE_SPACE=12
export VLLM_CPU_OMP_THREADS_BIND=0-6
  • 运行以下命令启动vLLM服务:
# 我们也可以在启动时设置环境变量
VLLM_CPU_KVCACHE_SPACE=12 VLLM_CPU_OMP_THREADS_BIND=0-6 \
vllm serve '/data/models/ZhipuAI/chatglm3-6b' \
        --dtype bfloat16 \
        --port 8000 \
        --load-format 'auto' \
        --device cpu \
        --served-model-name chatglm3 \
        --trust-remote-code \
        --chat-template '/data/template_chatglm3.jinja'

启动代码助手

  • 安装依赖包
pip install -r requirements.txt
  • 启动Web应用
python code_assistant.py

g8i云服务器CPU部署大模型构建代码助手应用_vllm

  • 输入代码相关的问题。

代码生成示例:

g8i云服务器CPU部署大模型构建代码助手应用_大模型_02

代码解释示例:

g8i云服务器CPU部署大模型构建代码助手应用_CPU_03

代码改进示例:

g8i云服务器CPU部署大模型构建代码助手应用_大模型_04