Xinference 内置 DeepSeek-V4-Flash 部署指南:284B MoE 模型的 vLLM / Transformers / MLX 多引擎运行
【免费下载链接】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
DeepSeek-V4-Flash 是 Xinference 内置(builtin)模型库中收录的一个 284B 参数 MoE 大语言模型,在预览版本下仅提供 pytorch 权重(vLLM / Transformers 引擎)和 MLX 量化权重(MLX 引擎)两种规格。本篇基于 Xinference 官方模型文档 doc/source/models/builtin/llm/deepseek-v4-flash.rst 与仓库源码,完整给出该模型的规格参数、各引擎启动命令、量化选择,以及 Xinference 针对 DeepSeek-V4 家族在消息编码、工具调用解析、vLLM 显存块大小等处的源码级适配细节,读完即可在单卡 GPU、NPU 或 Apple Silicon 环境中正确拉起该模型并提供 OpenAI 兼容推理服务。
模型概览:284B 总参数、13B 激活的 MoE 架构
模型文档页给出的核心元信息如下(与 模型家族定义 中"model_name": "DeepSeek-V4-Flash"条目一致):
| 属性 | 值 | 说明 |
|---|---|---|
| Context Length | 163840 | 在 Xinference 中注册的上下文长度上限 |
| 支持语言 | en, zh | 中英文 |
| Abilities | chat, reasoning, hybrid, tools | 支持对话、推理、混合思考模式与工具调用 |
| 总参数量 | 284B(激活 13B) | MoE 稀疏激活,激活参数见 llm_family.json 中activated_size_in_billions: 13 |
| 架构 | DeepseekV4ForCausalLM | 架构名同时被 vLLM 侧识别逻辑依赖 |
模型描述原文指出,这是 DeepSeek-V4 系列的预览版本(preview version),包含两个 MoE 语言模型:DeepSeek-V4-Pro(1.6T 总参数,49B 激活)与 DeepSeek-V4-Flash(284B 总参数,13B 激活),系列宣称支持百万 token 上下文;而当前文档页注册的context_length为 163840,即本次预览版本在 Xinference 中按 163840 上下文管理。
值得注意的几点源码级细节:
- 推理标记:模型家族定义中
reasoning_start_tag为<think>、reasoning_end_tag为</think>,Xinference 的 ReasoningParser 据此将reasoning_content与正文分离,这是reasoning与hybrid(可开关思考)能力的基础; - 停止条件:
stop_token_ids: [1]与停止串<|end▁of▁sentence|>,推理时按此截断; - 工具解析器:
tool_parser字段固定为"deepseek-v4",对应下文专门注册的解析实现; - 虚拟环境:llm_family.json 中为该模型声明了按引擎条件安装的依赖包(Transformers 与 vLLM 两套),由 Xinference 的虚拟环境机制在首次启动时按需准备。
规格一:pytorch 格式(vLLM / Transformers 引擎)
规格参数
- Model Format:pytorch
- Model Size:284B
- Quantizations:none(该规格只接受
none,不做量化) - Engines:vLLM、Transformers
- Model ID:
deepseek-ai/DeepSeek-V4-Flash - Model Hubs:Hugging Face / ModelScope 同名仓库
启动命令
按文档要求,将${engine}替换为 vllm 或 transformers,${quantization}替换为none:
xinference launch --model-engine vllm \ --model-name DeepSeek-V4-Flash \ --size-in-billions 284 \ --model-format pytorch \ --quantization noneTransformers 引擎同理:
xinference launch --model-engine transformers \ --model-name DeepSeek-V4-Flash \ --size-in-billions 284 \ --model-format pytorch \ --quantization nonevLLM 引擎下的 DeepSeek-V4 专属调优
Xinference 的 vLLM 后端在 vllm/core.py 中对 DeepSeek-V4 架构做了针对性默认值处理:
is_deepseek_v4 = "DeepseekV4ForCausalLM" in architectures if is_deepseek_v4: default_block_size = 128 if is_npu_available() else 256 else: default_block_size = 16 model_config.setdefault("block_size", default_block_size)即当检测到架构为DeepseekV4ForCausalLM时,KV cache 的block_size默认从通用的 16 提升到 256(NPU 环境为 128),同时默认gpu_memory_utilization: 0.90、max_num_seqs: 256。这类默认值通过setdefault注入,用户仍可在model_config中显式覆盖。相关行为有专门的测试覆盖,例如 test_speculative_config.py 中的test_deepseek_v4_uses_platform_block_size_by_default与test_deepseek_v4_preserves_explicit_block_size,验证“按平台取默认值”且“显式指定值优先”两条规则。
此外,VLLM_SUPPORTED_CHAT_MODELS支持列表中按版本条件追加了"DeepseekV4ForCausalLM"(vllm/core.py),用于校验当前 vLLM 版本是否原生支持该架构。
规格二:MLX 格式(Apple Silicon)
规格参数
- Model Format:mlx
- Model Size:284B
- Quantizations:4bit、5bit、6bit、8bit、bf16、mxfp4、mxfp8、nvfp4(共 8 种量化)
- Engine:MLX
- Model ID:
mlx-community/DeepSeek-V4-Flash-{quantization}(占位符由所选量化替换) - Model Hubs:Hugging Face / ModelScope 下 mlx-community 系列仓库
启动命令
xinference launch --model-engine mlx \ --model-name DeepSeek-V4-Flash \ --size-in-billions 284 \ --model-format mlx \ --quantization 4bit将--quantization替换为上表任意取值即可,Model ID 模板中的{quantization}占位符会随之被替换为mlx-community/DeepSeek-V4-Flash-4bit等具体仓库。量化位宽直接决定权重大小与内存占用:284B 总参数下,bf16 约为单参数 2 字节量级,4bit 约为其 1/4,选型时应以统一内存容量为准。
源码深挖:Xinference 对 DeepSeek-V4 的三处关键适配
1. 消息编码:依赖模型仓库内的远程代码
DeepSeek-V4 家族的对话模板不是普通 Jinja 模板,而是依赖模型仓库自带的 Python 编码模块。在 utils.py 的ChatModelMixin.get_full_context中:
if self.model_family.model_name.lower().startswith("deepseek-v4"): from ..utils import allow_trust_remote_code if not allow_trust_remote_code(self.model_family): raise ValueError( "Loading this model executes code shipped in the model " "repository; set XINFERENCE_TRUST_REMOTE_CODE=1 to allow it." ) module = _load_deepseekv4_encoding_module(self.model_path) target_func = getattr(module, "encode_messages") ... em_kwargs = {"thinking_mode": "thinking"} if kwargs.get("enable_thinking", False) else {"thinking_mode": "chat"}这解释了三个实战要点:
- 必须信任远程代码:模型仓库携带的
encoding/encoding_dsv4.py会在推理前被加载执行,若未设置环境变量XINFERENCE_TRUST_REMOTE_CODE=1,请求会直接抛出ValueError(该行为由 test_utils.py 的test_deepseekv4_get_full_context_blocks_custom_remote_code显式验证); - thinking_mode 直通:
enable_thinking参数会被翻译为编码函数入参thinking_mode="thinking" / "chat",与家族定义中的hybrid能力对应; - 工具注入方式:tools 会被挂到 system 消息上(
_attach_deepseekv4_tools),测试 test_utils.py 验证了get_full_context后首条消息形如{"role": "system", "content": "", "tools": tools}。
2. 工具调用解析:DSML 双格式解析器
模型家族注册的"deepseek-v4"工具解析器实现于 deepseek_v4_tool_parser.py,通过@register_tool_parser("deepseek-v4")注册。它同时兼容 DeepSeek-V4 的两种工具调用文本格式:
DSML 格式: <|DSML|tool_calls> <|DSML|invoke name="get_weather"> <|DSML|parameter name="location" string="true">杭州</|DSML|parameter> </|DSML|invoke> </|DSML|tool_calls> Plain 格式: <tool_calls> <invoke name="get_weather"> <parameter name="location" string="true">杭州</parameter> </invoke> </tool_calls>解析器在流式场景下先探测本流使用哪种格式(_use_dsml标志),再动态编译对应的正则(_build_regexes),逐参数增量输出结构化的tool_calls。对应的解析正确性由 tests/test_deepseek_v4_tool_parser.py 覆盖。这也是文档页tools能力能直接通过 OpenAI 兼容接口透传给上层应用的原因。
3. 家族匹配与回归测试
llm_family 测试 对 DeepSeek-V4-Flash(预览版)及其正式发布版 DeepSeek-V4-Flash-0731 做了模型匹配回归:按架构DeepseekV4ForCausalLM与 model ID 均可命中对应家族,且tool_parser断言为"deepseek-v4"。这说明当你从 Hugging Face / ModelScope 下载权重并启动时,Xinference 依赖架构名而非模型名硬编码来绑定这套 V4 专属逻辑。
另外,Xinference 的路由(Token Router)模块内置了 DeepSeek-V4 家族的 tokenizer 资产,例如 deepseek_v4_flash_0731/asset.json 声明了encoding_type: deepseek-v4-chat、所需的tokenizer.json与encoding/encoding_dsv4.py及文件校验和,用于在多路由节点场景下做请求分词与长度准入;资产加载逻辑见 router/tokenizer_assets/init.py。
使用注意事项与限制
- 上下文长度:该预览条目在 Xinference 中注册的
context_length为 163840,与系列描述的“百万 token 上下文”不一致,按注册值规划max_tokens与长文档切分; - 量化约束:pytorch 规格仅支持
none,MLX 规格支持 4bit 至 bf16 及 mxfp4/mxfp8/nvfp4;跨格式混搭(如 vLLM 引擎配 mlx 权重)不受支持; - 远程代码开关:DeepSeek-V4 系列请求链路会执行模型仓库内代码,生产环境请显式评估并设置
XINFERENCE_TRUST_REMOTE_CODE=1; - 版本区分:文档页对应的是预览版 DeepSeek-V4-Flash(284B,pytorch/mlx 双规格);仓库中还单独收录了正式版 DeepSeek-V4-Flash-0731(304B、fp8 格式),二者 Model ID、参数规模与上下文(0731 版注册为 1048576)不同,启动命令中的
--model-name、--size-in-billions与--model-format需按各自文档页取值; - 环境依赖:llm_family.json 中按引擎声明的条件依赖包会在首次启动时由虚拟环境机制安装,离线环境可参考 部署文档 准备镜像源。
小结
DeepSeek-V4-Flash 在 Xinference 中的部署路径非常清晰:pytorch 规格面向 vLLM / Transformers(--quantization none),MLX 规格面向 Apple Silicon 的 8 种量化(--quantization 4bit|...|nvfp4)。在此之上,Xinference 通过架构级识别(DeepseekV4ForCausalLM)为 vLLM 注入 256/128 的大块 KV cache 默认值、通过deepseek-v4工具解析器兼容 DSML 双格式、并通过远程代码开关 +thinking_mode透传支撑其 reasoning/hybrid/tools 能力。掌握这些默认值与开关后,即可在不同硬件平台上以统一 API 稳定运行该模型。
【免费下载链接】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),仅供参考