前言
GLM-4.7-Flash 是智谱 AI 推出的一款高性能大语言模型。本文将详细介绍如何在 Ubuntu 22.04 + CUDA 12.4 环境下,使用 vLLM 框架部署 GLM-4.7-Flash 模型,支持双卡推理和工具调用功能。
环境准备
硬件要求
- GPU: 2x NVIDIA L20 48GB
- 内存: 至少 128GB
- 存储: 至少 200GB(用于模型存储)
软件环境
# 操作系统Ubuntu22.04LTS# CUDA 版本CUDA12.4# Docker 版本Docker24.0+ Docker Compose2.0+Dockerfile 配置
创建Dockerfile文件:
FROM vllm/vllm-openai:nightly RUN pip install transformers==5.0.0 -i https://mirrors.aliyun.com/pypi/simple/说明:
- 基于
vllm/vllm-openai:nightly镜像,这是 vLLM 官方提供的兼容 OpenAI API 的镜像 - 安装
transformers==5.0.0以支持 GLM 模型的加载 - 使用阿里云镜像源加速 pip 安装
构建镜像
dockerbuild -t glm-4.7-custom.模型准备
下载 GLM-4.7-Flash 模型文件到./models目录:
mkdir-p ./models/GLM-4.7-Flash# 将模型文件放入该目录确保目录结构如下:
./models/GLM-4.7-Flash/ ├── config.json ├── tokenizer.model ├── tokenizer_config.json ├── chat_template.jinjia └── ...启动服务
完整启动命令
sudodockerrun -itd\-eNCCL_DEBUG=INFO\-eNCCL_SHM_DISABLE=0\-eOMP_NUM_THREADS=1\-eCUDA_VISIBLE_DEVICES=0,1\-eCUDA_DEVICE_ORDER=PCI_BUS_ID\--gpus all\-p9998:8000\--shm-size 128GB\-v ./models:/models\glm-4.7-custom:latest\--model /models/GLM-4.7-Flash\--tensor-parallel-size2\--gpu-memory-utilization0.90\--max-model-len100000\--served-model-name GLM-4.7-Flash\--reasoning-parser glm45\--chat-template /models/GLM-4.7-Flash/chat_template.jinjia\--enable-auto-tool-choice\--tool-call-parser glm47\--quantization fp8\--generation-config vllm\--chat-template-content-format openai参数详解
| 参数 | 说明 |
|---|---|
-e NCCL_DEBUG=INFO | 启用 NCCL 调试信息输出 |
-e NCCL_SHM_DISABLE=0 | 启用共享内存通信 |
-e OMP_NUM_THREADS=1 | 设置 OpenMP 线程数为 1 |
-e CUDA_VISIBLE_DEVICES=0,1 | 指定使用 GPU 0 和 1 |
--gpus all | 容器访问所有 GPU |
-p 9998:8000 | 端口映射,宿主机 9998 映射到容器 8000 |
--shm-size 128GB | 设置共享内存大小 |
-v ./models:/models | 挂载模型目录 |
vLLM 参数详解
| 参数 | 说明 |
|---|---|
--model | 模型路径 |
--tensor-parallel-size 2 | 张量并行度,使用 2 张 GPU |
--gpu-memory-utilization 0.90 | GPU 显存利用率 90% |
--max-model-len 100000 | 最大序列长度 |
--served-model-name | 服务对外暴露的模型名称 |
--reasoning-parser glm45 | 推理解析器(GLM-4.5 格式) |
--chat-template | 聊天模板文件路径 |
--enable-auto-tool-choice | 启用自动工具选择 |
--tool-call-parser glm47 | 工具调用解析器(GLM-4.7 格式) |
--quantization fp8 | 使用 FP8 量化 |
--generation-config vllm | 生成配置使用 vLLM 格式 |
--chat-template-content-format openai | 聊天内容格式兼容 OpenAI |
测试服务
检查服务状态
# 查看容器日志dockerlogs -f<container_id># 检查健康状态curlhttp://localhost:9998/healthAPI 调用示例
curlhttp://localhost:9998/v1/chat/completions\-H"Content-Type: application/json"\-d'{ "model": "GLM-4.7-Flash", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己"} ], "temperature": 0.7 }'Python 调用示例
fromopenaiimportOpenAI client=OpenAI(base_url="http://localhost:9998/v1",api_key="dummy")response=client.chat.completions.create(model="GLM-4.7-Flash",messages=[{"role":"user","content":"写一首关于春天的诗"}],temperature=0.7,max_tokens=512)print(response.choices[0].message.content)常见问题
1. 显存不足
调整--gpu-memory-utilization或--max-model-len参数
2. NCCL 通信错误
确保--shm-size设置足够大,推荐 128GB+
3. 模型加载慢
首次启动需要加载模型到显存,耐心等待
总结
通过 vLLM 部署 GLM-4.7-Flash 可以获得高性能的推理服务,支持 OpenAI 兼容的 API 接口,方便集成到现有应用中。双卡张量并行可以有效提升推理吞吐量,FP8 量化进一步降低显存占用。在 2 张 NVIDIA L20 48GB 显卡上,该配置可以稳定运行并支持长文本推理。