引言

通用语言模型(GLM)是由智谱AI(现更名为 Z.ai)创建的一系列基础模型。GLM 团队与 vLLM 团队有着长期的合作,可以追溯到 vLLM 的早期以及广受欢迎的 ChatGLM 模型系列。最近,GLM 团队发布了专为智能体设计的 GLM-4.5GLM-4.5V 模型系列。它们是目前 Huggingface 模型中心的热门模型。

GLM-4.5 总参数量为 3550 亿,激活参数量为 320 亿;而 GLM-4.5-Air 采用更紧凑的设计,总参数量为 1060 亿,激活参数量为 120 亿。GLM-4.5 模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求。

GLM-4.5 和 GLM-4.5-Air 都是混合推理模型,提供两种模式:用于复杂推理和工具使用的“思考模式”,以及用于即时响应的“非思考模式”。

正如我们在 12 个行业标准基准测试中的综合评估所展示的,GLM-4.5 取得了 63.2 分的优异表现,在所有专有和开源模型中排名第三。值得注意的是,GLM-4.5-Air 在保持卓越效率的同时,也取得了 59.8 分的有竞争力的结果。

bench_45

GLM-4.5V 基于 GLM-4.5-Air。它延续了 GLM-4.1V-Thinking 的技术路线,在 42 个公开的视觉语言基准测试中,达到了同等规模模型中的 SOTA(State-of-the-Art)性能。

bench_45v

要获取有关 GLM-4.5 和 GLM-4.5V 的更多信息,请参阅 GLM-4.5GLM-V

本博客将指导用户如何在 NVIDIA Blackwell 和 Hopper GPU 上使用 vLLM 为 GLM-4.5V 和 GLM-4.5 模型系列加速推理。

安装

在最新的 vLLM 主分支中,已支持 GLM-4.5V 和 GLM-4.5 模型系列。您可以安装 nightly 版本并手动更新 transformers 库来启用模型支持。

pip install -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly
pip install transformers-v4.55.0-GLM-4.5V-preview

使用方法

GLM-4.5 和 GLM-4.5V 均提供 FP8 和 BF16 精度模型。在 vLLM 中,您可以使用相同的命令来运行任一精度的推理。

对于 GLM-4.5 模型,您可以使用以下命令启动服务

vllm serve zai-org/GLM-4.5-Air \
    --tensor-parallel-size 4 \
    --tool-call-parser glm45 \
    --reasoning-parser glm45 \
    --enable-auto-tool-choice

对于 GLM-4.5V 模型,您可以使用以下命令启动服务

vllm serve zai-org/GLM-4.5V \
     --tensor-parallel-size 4   \
     --tool-call-parser glm45   \
     --reasoning-parser glm45   \
     --enable-auto-tool-choice  \
     --allowed-local-media-path / \
     --media-io-kwargs '{"video": {"num_frames": -1}}'

重要说明

  • 模型输出的推理部分将被包裹在 reasoning_content 中。content 将只包含最终答案。要禁用推理,请添加以下参数:extra_body={"chat_template_kwargs": {"enable_thinking": False}}
  • 如果您使用 8x H100 GPU 并在运行 GLM-4.5 模型时遇到内存不足的情况,您将需要添加 --cpu-offload-gb 16 参数。
  • 如果遇到 flash_infer 相关问题,请使用 VLLM_ATTENTION_BACKEND=XFORMERS 作为临时替代方案。您也可以指定 TORCH_CUDA_ARCH_LIST='9.0+PTX' 来使用 flash_infer,不同的 GPU 有不同的 TORCH_CUDA_ARCH_LIST 值,请相应地进行检查。
  • vLLM v0 版本不支持我们的模型。

GLM-4.5V 中的视觉定位(Grounding)

GLM-4.5V 具备精确的视觉定位能力。给定一个请求定位特定对象位置的提示,GLM-4.5V 能够逐步推理并识别出目标对象的边界框。查询提示支持对目标对象的复杂描述以及指定的输出格式。示例提示如下:

  • 帮我定位图中的 <expr> 并给出它的边界框。
  • 请根据给定的描述,在图中精确定位边界框 [[x1,y1,x2,y2], …]

在这里,<expr> 是对目标对象的描述。输出的边界框是一个由左上角和右下角坐标组成的四元组 \([x_1,y_1,x_2,y_2]\),其中每个值都通过图像宽度(对于 x)或高度(对于 y)进行归一化,并乘以 1000。

在响应中,特殊 token <|begin_of_box|><|end_of_box|> 用于标记答案中的图像边界框。括号的样式可能会有所不同([]、[[]]、()、<> 等),但含义是相同的:包裹框的坐标。

与 vLLM 和 GLM 团队的合作

在 GLM-4.5 和 GLM-4.5V 模型发布之前,vLLM 团队与 GLM 团队紧密合作,在解决模型发布相关问题方面提供了广泛支持,确保了在模型发布前,vLLM 的 main 分支已经完全支持开源的 GLM-4.5 系列模型。

致谢

我们想感谢 vLLM 方面为这项工作做出贡献的许多人,包括:Kaichao You、Simon Mo、Zifeng Mo、Lucia Fang、Rui Qiao、Jie Li、Ce Gao、Roger Wang、Lu Fang、Wentao Ye 和 Zixi Qi。