在 Xinference 中部署 deepseek-v2.5:通过 vLLM / Transformers / SGLang 引擎启动 236B 通用与代码能力融合大模型
【免费下载链接】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-v2.5 是 Xinference 内置的 LLM 模型之一,它是 DeepSeek-V2-Chat 与 DeepSeek-Coder-V2-Instruct 的融合升级版本,将通用对话与代码生成能力整合进单一模型。本文以 deepseek-v2.5.rst 为骨架,结合仓库内模型注册表与启动/管理文档,完整讲解该模型在 Xinference 中的规格参数、引擎支持与一键启动方式,读完后你可以直接用一条xinference launch命令或 Python Client 在本机、单机多卡乃至分布式集群中拉起该模型,并通过 OpenAI 兼容 API 对外提供服务。
模型概览:DeepSeek-V2.5 的核心能力定位
根据模型内置注册表中的定义,Xinference 为deepseek-v2.5登记的元信息如下(与官方文档卡片一致):
| 属性 | 值 |
|---|---|
| Context Length | 128000 |
| Model Name | deepseek-v2.5 |
| Languages | en, zh |
| Abilities | chat |
| Model Description | DeepSeek-V2.5 is an upgraded version that combines DeepSeek-V2-Chat and DeepSeek-Coder-V2-Instruct. The new model integrates the general and coding abilities of the two previous versions. |
从能力标签看,该模型仅注册了chat能力,即纯文本对话/生成,未注册 embedding、rerank 等多模态或向量化能力;支持中英双语,上下文窗口为 128K tokens。官方描述明确指出,它并非从零训练的独立新模型,而是对既有通用模型(DeepSeek-V2-Chat)与代码模型(DeepSeek-Coder-V2-Instruct)两种能力的融合——因此在部署后,同一服务既可承接通用问答,也可直接用于代码补全、代码解释与软件工程类任务,无需为两类场景分别启动两个模型实例。
在 Xinference 的模型管理体系中,deepseek-v2.5属于内置(builtin)LLM 模型家族的一员。内置模型的定义集中在模型注册表中,读者可将其与仓库内其他 DeepSeek 系列模型(如 deepseek-v2-chat、deepseek-v3、deepseek-r1)对照阅读,以理解 Xinference 的模型家族登记模式。
模型规格:236B 参数与引擎支持矩阵
文档卡片中为本模型定义了一个规格(Model Spec):
- Model Format:pytorch
- Model Size (in billions):236
- Quantizations:none
- Engines:vLLM, Transformers, SGLang
- Model ID:deepseek-ai/DeepSeek-V2.5
规格解读如下:
- 236B 参数规模:这是完整的稠密/MoE 权重全量规模,意味着需要多卡 GPU 显存协同才能容纳,单卡部署通常不可行。
- 量化选项为
none:Xinference 对该模型的注册信息中不提供任何量化变体(如 INT4/INT8),启动时--quantization只能取none,模型权重以 FP16/BF16 全精度加载。 - 三引擎并驱:vLLM、Transformers、SGLang 三个推理后端均可承载该模型,其中 vLLM 与 SGLang 面向高吞吐服务化场景,Transformers 面向灵活性与兼容性优先的场景。
上述规格可以在源码注册表 xinference/model/llm/llm_family.json 中找到一一对应的原始 JSON 定义,其中还额外登记了:
- Hugging Face 源:
deepseek-ai/DeepSeek-V2.5,固定 revision24b08cb750e0c2757de112d2e16327cb21ed4833,以保证可复现下载; - ModelScope 源:
deepseek-ai/DeepSeek-V2.5,revision 为master; - 模型架构:
DeepseekV2ForCausalLM,model_type为deepseek_v2; - 停止条件:
stop_token_ids为[100001],stop字符串为<|end▁of▁sentence|>; - 虚拟环境依赖(virtualenv 包声明,见下节)。
一键启动:命令行完整命令与参数解析
文档给出了该模型的启动命令模板:
xinference launch --model-engine ${engine} --model-name deepseek-v2.5 --size-in-billions 236 --model-format pytorch --quantization ${quantization}由于规格中量化仅有none一种,实际可执行的命令即:
xinference launch --model-engine vllm --model-name deepseek-v2.5 --size-in-billions 236 --model-format pytorch --quantization none各参数含义与取值依据:
| 参数 | 取值 | 说明 |
|---|---|---|
--model-engine | vllm/transformers/sglang | 推理后端,取自模型规格中的 Engines 列表 |
--model-name | deepseek-v2.5 | 必须与注册表model_name完全一致 |
--size-in-billions | 236 | 参数规模,决定选择注册表中哪个 Model Spec |
--model-format | pytorch | 权重格式,本规格仅支持 pytorch |
--quantization | none | 量化方式,本规格仅支持 none |
--model-uid | 可选 | 自定义模型唯一 ID,默认等于模型名,用于后续调用句柄 |
--endpoint | 可选 | 指定http://<XINFERENCE_HOST>:<XINFERENCE_PORT>,默认指向本机服务 |
--model-type | 可选 | LLM 类模型可省略,系统可自动推断 |
启动后,每个运行中的模型实例都会获得一个唯一 uid(默认即模型名),该 uid 是对外调用的句柄,也可通过--model-uid手动指定,便于多实例并存时区分管理(参见 launch.rst 中关于模型 uid 的说明)。
引擎选择对依赖的影响:虚拟环境机制
选择不同引擎并非只影响性能,还会触发不同的运行环境准备。在 xinference/model/llm/llm_family.json 中,deepseek-v2.5的virtualenv.packages声明为:
#transformers_dependencies# ; #engine# == "Transformers" #vllm_dependencies# ; #engine# == "vllm" #system_numpy# ; #engine# == "vllm"这意味着:选择 Transformers 引擎时,Xinference 会为该模型准备 Transformers 系列依赖的独立虚拟环境;选择 vLLM 引擎时,则会安装 vLLM 依赖并复用系统 NumPy 环境。从源码结构看,Xinference 会按引擎类别把模型隔离到对应虚拟环境中运行,避免多模型之间的依赖版本冲突——这也是内置模型能够同时支持三套后端的关键机制。相关实现可继续参考 xinference/core/virtual_env_manager.py 与文档 virtualenv.rst。
提示模板与停止符:保证输出格式正确的底层细节
除了显存与算力,Chat 类模型能否正确收敛输出还取决于提示模板与停止符。注册表中为deepseek-v2.5登记了一套完整的 Jinja 版chat_template(见 xinference/model/llm/llm_family.json),其核心特征包括:
- 使用 DeepSeek 系列专用标记:
<|begin▁of▁sentence|>开头、<|User|>/<|Assistant|>区分角色; - 内置对 tool_calls / tool 输出的处理分支,即该模板原生兼容函数调用(Function Call)场景;
- 当
add_generation_prompt=True时,在结尾自动追加<|Assistant|>引导符; - 配合
stop_token_ids=[100001]与stop=["<|end▁of▁sentence|>"]完成生成终止。
这些元数据由 Xinference 在启动时自动注入到所选引擎中,用户在 CLI 层无需手工维护模板。
使用 Python Client 启动与调用
除命令行外,Xinference 提供等价的 Python Client 接口。启动该模型:
from xinference.client import Client client = Client("http://127.0.0.1:9997") model_uid = client.launch_model( model_name="deepseek-v2.5", model_engine="vllm", model_size_in_billions=236, model_format="pytorch", quantization="none", ) print(model_uid)之后即可通过 OpenAI 兼容的chat接口进行对话(Xinference 将模型暴露为统一推理 API,调用方式与deepseek-v2.5是否在远端运行无关):
from xinference.client import Client client = Client("http://127.0.0.1:9997") model = client.get_model(model_uid) response = model.chat( messages=[{"role": "user", "content": "用 Python 写一个快速排序,并解释复杂度"}] ) print(response["choices"][0]["message"]["content"])Python Client 的完整用法可参考 xinference/client/restful/restful_client.py 及其测试 xinference/client/tests/test_client.py。由于 236B 模型加载耗时较长,也支持先只下载不启动,通过POST /v1/cache/models接口将权重缓存到本地模型仓库,之后再执行启动(详见 launch.rst 的 "Download without launching" 一节)。
模型生命周期管理:列出、查询与终止
启动之后,可以通过三种方式查看当前运行中的模型实例(对应 models/index.rst):
# 命令行 xinference list # REST API curl http://127.0.0.1:9997/v1/models # Python from xinference.client import Client client = Client("http://127.0.0.1:9997") print(client.list_models())不再需要时,按 uid 终止以释放 GPU 显存与进程资源:
xinference terminate --model-uid "deepseek-v2.5" # 或 REST curl -X DELETE http://127.0.0.1:9997/v1/models/deepseek-v2.5 # 或 Python client.terminate_model(model_uid="deepseek-v2.5")若需查看某模型是否可启动以及其全部规格,可以使用xinference registrations --model-type LLM(或GET /v1/model_registrations/LLM)列出所有内置 LLM 家族,确认deepseek-v2.5的 236B 规格与引擎列表。
部署实践要点与注意事项
针对该模型的实际落地,以下要点值得注意:
- 显存规划是前提:236B 全精度权重在单卡上无法加载,需要按多卡张量并行规划显存。Xinference 会依据模型规格进行显存估算,相关算法可参见 xinference/model/llm/memory.py 与文档 model_memory.rst,建议在启动前据此确认 GPU 总量是否满足。
- 多副本横向扩展:若节点上有空闲 GPU,可设置
--replica使同一模型加载多个实例,Xinference 自动做请求负载均衡,对外仍呈现单一模型(参见 launch.rst 的 Replica 一节);从 v1.15.0 起还可通过环境变量XINFERENCE_ALLOW_MULTI_REPLICA_PER_GPU控制单卡多副本。 - 分布式部署:单机多卡资源不足时,可参考 distributed_inference.rst 将模型调度到多台 worker 节点,236B 级别的模型尤其适合该模式。
- 虚拟环境就绪:首次启动会为所选引擎创建独立虚拟环境并下载约百 GB 级权重,耗时较长;建议使用
--endpoint指向运行中的 supervisor,并用 cache-management 或下载进度接口观察状态。 - 量化不可用:该规格没有量化变体,无法通过降低精度来压缩显存;若显存受限,应评估仓库内其他规模更小的 DeepSeek 系列模型(如 deepseek-v2-chat 的 16B 规格)。
小结
deepseek-v2.5是 Xinference 内置 LLM 家族中融合通用与代码能力的高规格选项:128K 上下文、236B 参数、vLLM/Transformers/SGLang 三引擎可选。通过文档卡片给出的启动命令,配合 Python Client、REST API 与多副本/分布式能力,即可在一套统一推理 API 下快速将其投入生产使用。本文涉及的模型元数据与依赖声明均可在 xinference/model/llm/llm_family.json 中核对,启动与管理接口可进一步阅读 models/index.rst 与 launch.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),仅供参考