镜像社区
部署GPU实例
文档中心
常见问题(FAQ)
LLM
vLLM-GLM-4-9B
GLM-4-9B在vLLM加速推理框架的部署
0/小时
v1.0

GLM-4-9B在vLLM加速推理框架的部署

  1. GLM-4-9B模型介绍

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出较高的性能。 除了能进行多轮对话,GLM-4-9B-Chat 还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等高级功能。 本代模型增加了多语言支持,支持包括日语,韩语,德语在内的 26 种语言。我们还推出了支持 1M 上下文长度(约 200 万中文字符)的模型。官方评测结果如下:

ModelAlignBench-v2MT-BenchIFEvalMMLUC-EvalGSM8KMATHHumanEvalNCB
Llama-3-8B-Instruct5.128.0068.5868.451.379.630.062.224.7
ChatGLM3-6B3.975.5028.166.469.072.325.758.511.3
GLM-4-9B-Chat6.618.3569.072.475.679.650.671.832.2
  1. vLLM推理加速框架介绍

vLLM 是一个快速且易于使用的 LLM 推理和服务库。vLLM 速度很快:

  • 一流的服务吞吐量
  • 使用PagedAttention高效管理注意力键和值内存
  • 持续批处理传入请求
  • 使用 CUDA/HIP 图快速执行模型
  • 量化:GPTQAWQ、INT4、INT8 和 FP8
  • 优化的 CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成。

vLLM 灵活且易于使用:

  • 与流行的 HuggingFace 模型无缝集成
  • 采用多种解码算法实现高吞吐量服务,包括并行采样波束搜索
  • 分布式推理的张量并行和流水线并行支持
  • 兼容 OpenAI 的 API 服务器
  • 支持 NVIDIA GPU、AMD CPU 和 GPU、Intel CPU、Gaudi® 加速器和 GPU、PowerPC CPU、TPU 以及 AWS Trainium 和 Inferentia 加速器。

硬件环境

显卡:4090 * 4

显存:24GB * 4。最低显存要求为48GB

经过测试,改镜像在3090 * 4的环境下依然可以运行。而在P40 * 4的环境中无法运行,Triton GPU 编译器triton)不支持 Tesla P40 GPU(计算能力 6.1)。Triton 要求设备的计算能力至少为 7.0

环境安装

# 新建conda虚拟环境
conda create -n vllm-glm python==3.11.7 -y -y

# 激活环境
conda activate vllm-glm

# 安装vllm依赖包
pip install vllm

# 如果速度太慢,更换国内的下载源(可选)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

注:镜像已经包含了一个vllm的conda虚拟环境,vllm版本为0.6.6。以上供新人参考

模型下载

# 在拉取模型之前,先安装Git LFS
sudo apt update
sudo apt install git-lfs
git lfs --version

# 初始化Git LFS
git lfs install

# modelscope搜索glm-4,复制git链接
git lfs clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat.git

使用Transformer进行推理

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"

tokenizer = AutoTokenizer.from_pretrained("/path/to/your_model", trust_remote_code=True)

query = "how to learn python programming"

inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],
                                       add_generation_prompt=True,
                                       tokenize=True,
                                       return_tensors="pt",
                                       return_dict=True
                                       )

inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
    "/path/to/your_model",
    torch_dtype=torch.bfloat16,
    trust_remote_code=True
).to(device).eval()

gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1}
with torch.no_grad():
    outputs = model.generate(**inputs, **gen_kwargs)
    outputs = outputs[:, inputs['input_ids'].shape[1]:]
    print(tokenizer.decode(outputs[0], skip_special_tokens=True))

使用vLLM开启OpenAI服务

启动脚本

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server \  # CUDA_VISIBLE_DEVICES为显卡号
    --host 0.0.0.0 \
    --port 8001 \  # 自定义端口
    --gpu-memory-utilization 0.8 \
    --max-model-len 32768 \
    --served-model-name AA \  # 自定义模型名称
    --model /path/to/your_model \  # 模型本地路径
    --tensor-parallel-size 4 \
    --enforce-eager \
    --trust-remote-code \

INFO: Started server process [163] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)

运行脚本,终端出现以上信息,说明服务启动成功。

OpenAI接口调用启动后的推理服务

from openai import OpenAI
import sys

# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://127.0.0.1:8001/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

completion = client.chat.completions.create(
    model="AA",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "how to learn Python programming, answer me in Chinese"},
    ],
    stream=True,
    max_tokens=2084,
)

for chunk in completion:
    if chunk.choices[0].delta.content:
        word = chunk.choices[0].delta.content
        sys.stdout.write(word) 
        sys.stdout.flush() 
镜像信息
@whisdom
已使用
1
镜像大小60GB
最近编辑2025-02-06
支持卡型
RTX40系48G RTX40系2080
+3
框架版本
PyTorch-2.5.1
CUDA版本
12.4
应用
JupyterLab: 8888
版本
v1.0
2025-07-02
PyTorch:2.5.1 | CUDA:12.4 | 大小:60.00GB