Xinference 中部署与使用 GLM-4.1V-Thinking 多模态推理模型完整指南
2026/9/17 0:03:17 网站建设 项目流程

Xinference 中部署与使用 GLM-4.1V-Thinking 多模态推理模型完整指南

【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference

本篇技术指南以 Xinference 内置模型规格文档(glm-4.1v-thinking.rst)为核心,系统讲解在 Xinference 中通过统一推理 API 部署 9B 级视觉语言推理模型 GLM-4.1V-9B-Thinking 的完整流程:包括三种模型格式(pytorch / AWQ / GPTQ)的规格差异、xinference launch启动命令的逐参数说明、模型注册表(llm_family.json)中蕴含的模板与停止符等底层配置,以及 Xinference 对模型<think>推理过程内容的解析机制。读完本文,你将能独立完成该模型的本地或云端部署,并正确调用其 chat、vision、reasoning、tools 四大能力。

GLM-4.1V-Thinking 模型规格总览

GLM-4.1V-Thinking 是一个面向视觉语言推理场景的开源多模态模型。根据 Xinference 内置模型规格文档的描述,其设计目标是探索视觉语言模型推理能力的上限("designed to explore the upper limits of reasoning in vision-language models")。

在 Xinference 的模型注册表中,该模型的完整定义位于 xinference/model/llm/llm_family.json,核心元数据如下:

属性
Context Length(上下文长度)65536(即 64K tokens)
Model Name(模型名)glm-4.1v-thinking
Languages(支持语言)en(英语)、zh(中文)
Abilities(能力)chat、vision、reasoning、tools
Model Type(模型类型)glm4v
Architectures(架构)Glm4vForConditionalGeneration

从能力组合可以看出,这不是一个普通的纯文本对话模型:vision表明它接受图像输入,reasoning表明它具备思维链式推理能力(输出中会包含思考过程),tools表明它支持函数调用等工具使用场景,这四种能力叠加,使其适合做图文理解、视觉问答、多模态推理等任务。

三种模型格式与对应启动命令

与多数 9B 级模型一样,GLM-4.1V-Thinking 提供了原始权重(pytorch)与两种主流量化格式(AWQ、GPTQ)共三种模型规格。每种规格对应不同的模型仓库 ID、量化方式与运行引擎。

Spec 1:pytorch 原始权重(9B)

  • Model Format(模型格式):pytorch
  • Model Size(参数量):9 Billion
  • Quantizations(量化方式):none(不量化,使用 FP16/BF16 原始精度)
  • Engines(推理引擎):vLLM、Transformers
  • Model IDzai-org/GLM-4.1V-9B-Thinking(Hugging Face)/ZhipuAI/GLM-4.1V-9B-Thinking(ModelScope)

启动命令如下(${engine}从 vLLM / Transformers 中选择,${quantization}填写 none):

xinference launch --model-engine ${engine} --model-name glm-4.1v-thinking --size-in-billions 9 --model-format pytorch --quantization ${quantization}

即最完整的写法为:

xinference launch --model-engine vllm --model-name glm-4.1v-thinking --size-in-billions 9 --model-format pytorch --quantization none

Spec 2:AWQ 量化(9B)

  • Model Format(模型格式):awq
  • Model Size(参数量):9 Billion
  • Quantizations(量化方式):Int4(4-bit 权重量化)
  • Engines(推理引擎):vLLM、Transformers
  • Model IDQuantTrio/GLM-4.1V-9B-Thinking-AWQ(Hugging Face)/tclf90/GLM-4.1V-9B-Thinking-AWQ(ModelScope)

启动命令:

xinference launch --model-engine ${engine} --model-name glm-4.1v-thinking --size-in-billions 9 --model-format awq --quantization ${quantization}

即:

xinference launch --model-engine vllm --model-name glm-4.1v-thinking --size-in-billions 9 --model-format awq --quantization Int4

Spec 3:GPTQ 量化(9B)

  • Model Format(模型格式):gptq
  • Model Size(参数量):9 Billion
  • Quantizations(量化方式):Int4-Int8Mix(混合精度量化)
  • Engines(推理引擎):vLLM、Transformers
  • Model IDQuantTrio/GLM-4.1V-9B-Thinking-GPTQ-Int4-Int8Mix(Hugging Face)/tclf90/GLM-4.1V-9B-Thinking-GPTQ-Int4-Int8Mix(ModelScope)

启动命令:

xinference launch --model-engine ${engine} --model-name glm-4.1v-thinking --size-in-billions 9 --model-format gptq --quantization ${quantization}

即:

xinference launch --model-engine vllm --model-name glm-4.1v-thinking --size-in-billions 9 --model-format gptq --quantization Int4-Int8Mix

选择建议:显存充足、追求最佳效果时选择 pytorch 原始精度;显存受限或需要更高吞吐时,优先考虑 AWQ Int4;GPTQ Int4-Int8Mix 则是另一种混合精度折中方案。三种格式在 vLLM 与 Transformers 两个引擎下均可运行。

launch 命令参数逐项解析

上述启动命令中的参数均定义于 xinference/deploy/cmdline.py,下表逐一说明其含义:

参数简写必填说明
--model-engine-en是(LLM 类型必填)指定推理引擎,此处可选vllmTransformers
--model-name-n要启动的模型名称,此处为glm-4.1v-thinking
--size-in-billions-s视模型而定以十亿为单位的模型参数量,此处为9
--model-format-f模型格式,如pytorchawqgptqggufv2
--quantization-q量化方式,如noneInt4Int4-Int8Mix

此外,围绕启动命令还可以按需追加以下常用选项(同样定义于 cmdline.py):

  • --model-uid/-u:为模型指定自定义 UID,默认为 None(不指定时 Xinference 自动生成)。
  • --replica/-r:模型副本数,默认 1,用于多副本负载均衡。
  • --n-worker:模型使用的 worker 数量,默认 1。
  • --n-gpu:使用的 GPU 数量,默认auto;当n_worker > 1时表示每个 worker 的 GPU 数。
  • --worker-ip:分布式场景下指定模型运行在哪个 worker(按 IP)。
  • --gpu-idx:指定 worker 上的哪些 GPU 可运行该模型(用逗号分隔)。
  • --endpoint/-e:Xinference 服务端点地址。

需要说明的是:命令中的${engine}${quantization}是占位符,实际执行时必须替换为上文表格中列出的真实取值。该模型三种格式在 vLLM 引擎下运行时,会自动将vllm相关依赖与system_numpy组装进对应的虚拟环境(见 llm_family.json),Transformers 引擎则要求transformers>=4.53.2

源码级配置:llm_family.json 中的模型定义

在 Xinference 中,内置模型的可用性来自模型注册表。GLM-4.1V-Thinking 的完整定义可在 xinference/model/llm/llm_family.json 中查到,除了上文已列的元数据,还有几个对部署行为有直接影响的字段:

模型来源(model_src)

每个 spec 的model_src字段同时登记了 Hugging Face 与 ModelScope 两个下载源:

  • pytorch spec 在 Hugging Face 上固定了精确的model_revision(commitb627c82cd8fc9175ff2b82b33fb439eba260055f),保证每次下载权重一致;ModelScope 端则使用master分支。
  • awq / gptq 两个量化 spec 在 ModelScope 端同样固定为master分支。

Xinference 启动时会自动根据该配置从可用的模型源拉取权重,无需手工下载。

对话模板(chat_template)

模型自带完整的 Jinja 对话模板,关键点在于对多模态内容的编码:

  • 用户消息中的image类型内容会被编码为<|begin_of_image|><|image|><|end_of_image|>占位符;
  • video类型内容对应<|begin_of_video|><|video|><|end_of_video|>
  • 文本内容正常拼接,系统消息使用<|system|>前缀,助手消息使用<|assistant|>前缀。

这意味着你可以直接通过 OpenAI 兼容的 Chat Completions API,在messages中携带{"type": "image", "image_url": ...}形式的多模态内容,模板会自动完成拼装,这正是该模型vision能力的底层支撑。

停止标记(stop / stop_token_ids)

  • stop<|endoftext|><|user|><|observation|>
  • stop_token_ids151329151336151338

生成时遇到这些标记或 token id 会立即终止,避免模型继续输出多余内容(如幻觉出的下一个用户轮次)。

推理标记(reasoning_start_tag / reasoning_end_tag)

模型注册表中声明了推理过程标记:

  • reasoning_start_tag<think>
  • reasoning_end_tag</think>

这两个标记是 Xinference 流式解析"思考内容"的关键依据。Xinference 在启动模型时会将它们透传给推理引擎(见 xinference/model/llm/core.py 与 xinference/model/llm/init.py),供流式输出解析使用。

推理内容(reasoning_content)的解析机制

作为 reasoning 模型,GLM-4.1V-Thinking 的回复分为"思考过程"与"最终答案"两部分,思考过程包裹在<think></think>之间。Xinference 通过 xinference/model/llm/reasoning_parser.py 中的ReasoningParser对这两部分进行区分与剥离:

  • 在流式输出(SSE chunks)场景下,解析器按 token 增量(delta)持续跟踪<think>/</think>标记的位置(reasoning_parser.py);
  • <think>出现在前一文本、</think>出现在增量文本中时,增量中被</think>截断的部分归入reasoning_content,其余部分归入content
  • 当两个标记同时出现在同一增量中时,同样按标记切分,分别填充reasoning_contentcontent
  • 未出现结束标记时,当前增量整体作为reasoning_content返回,content置为None

也就是说,调用方可以在流式响应中直接读取delta.reasoning_content字段获取模型的实时思考过程,而content字段始终只包含最终回答。该机制对 DeepSeek-R1 系列等其他带思考标记的模型同样适用(解析器注释中即以此为例),是 Xinference 统一处理推理模型输出的通用能力。

启动后的调用方式

模型启动成功后,会以 Xinference 统一的 OpenAI 兼容 API 暴露服务。假设默认端点http://localhost:9997,可通过以下方式验证与调用:

1. 查看已启动模型:

xinference list

2. 发起多模态对话请求(携带图片):

curl -X POST http://localhost:9997/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "glm-4.1v-thinking", "messages": [ { "role": "user", "content": [ {"type": "image_url", "image_url": {"url": "https://example.com/your-image.jpg"}}, {"type": "text", "text": "请分析这张图片并给出推理结论"} ] } ], "stream": true }'

注意请求体中的model字段即模型名glm-4.1v-thinking(如需自定义可在启动时用--model-uid指定)。

3. 解析流式响应中的推理内容:

开启"stream": true后,每个 chunk 的delta字段中可能同时出现reasoning_content(思考过程)与content(正式回答)两个子字段,分别对应上文解析机制的输出。

对于需要直接使用 Python 的开发者,可借助 Xinference 官方客户端封装请求细节,相关实现见 xinference/client/restful/restful_client.py。

小结与注意事项

  • 部署选择:按显存与精度需求在 pytorch(none)、AWQ(Int4)、GPTQ(Int4-Int8Mix)三种格式中做选择,引擎建议优先 vLLM(吞吐更高),Transformers 可作为兼容性兜底。
  • 命令占位符:务必用真实值替换${engine}${quantization},否则启动会失败。
  • 多模态输入:借助内置 chat_template,图片/视频内容会自动转换为模型要求的特殊 token 序列。
  • 推理内容:思考过程通过reasoning_content字段与正式答案分离,流式与非流式场景均可获取。
  • 模型源:权重默认从 Hugging Face 或 ModelScope 自动下载,模型注册表中固定了精确 revision,可复现性有保证。

如需进一步了解 Xinference 的安装与整体使用方式,可参阅 getting_started/installation.rst 与 getting_started/using_xinference.rst;若需查看该模型规格文档的原始来源,见 doc/source/models/builtin/llm/glm-4.1v-thinking.rst。

【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询