Xinference 内置模型详解:在统一推理 API 上部署 baichuan-2-chat(Baichuan2 Chat)
【免费下载链接】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 内置模型家族中的baichuan-2-chat(百川智能 Baichuan2 对话模型),系统说明其内置规格(7B / 13B 两个 pytorch 版本)、支持的推理引擎、模型来源与启动命令,并结合仓库内置的 模型家族定义文件 与测试用例,从源码层面解读其上下文长度、对话模板、停止符与虚拟环境依赖等实现细节。读完本文,你将掌握如何通过一行xinference launch命令在本地或云端拉起 Baichuan2 对话模型,并通过 OpenAI 兼容接口完成聊天推理。
模型概览:从 Baichuan2 到内置模型家族
baichuan-2-chat是百川智能 Baichuan2 基座模型经过指令微调(fine-tune)后的对话版本,专注于通用聊天场景。在 Xinference 的内置模型体系中,它被注册为官方内置 LLM 之一,对应元数据定义位于 xinference/model/llm/llm_family.json。
根据文档 baichuan-2-chat 模型页 与仓库内置定义,该模型的核心属性如下:
| 属性 | 值 | 说明 |
|---|---|---|
| Model Name | baichuan-2-chat | 内置模型注册名,launch 时使用 |
| Context Length | 4096 | 上下文窗口长度 4096 tokens |
| Languages | en,zh | 支持英文与中文 |
| Abilities | chat | 对话(聊天)能力 |
| Model Type | baichuan | 架构类型BaichuanForCausalLM |
| Quantizations | none | 内置定义未提供量化档位,pytorch 全精度 |
| Engines | vLLM、Transformers | 两种可用推理引擎 |
该定义同样被 测试用例 test_llm_family.py 引用,测试通过match_llm("baichuan-2-chat", model_format="pytorch")校验其默认规格,证明该模型在模型家族注册表中具备可被程序化匹配的稳定身份。
内置规格与多源模型获取
baichuan-2-chat提供两个 pytorch 规格(Model Spec),分别对应 70 亿与 130 亿参数版本,模型权重可从多个来源获取,无需手动填写下载地址。
Model Spec 1:pytorch,7B
| 字段 | 值 |
|---|---|
| Model Format | pytorch |
| Model Size | 7 Billion |
| Quantizations | none |
| Engines | vLLM、Transformers |
| Model ID | baichuan-inc/Baichuan2-7B-Chat |
启动命令如下(将${engine}替换为vllm或transformers,将${quantization}替换为none):
xinference launch --model-engine ${engine} --model-name baichuan-2-chat --size-in-billions 7 --model-format pytorch --quantization ${quantization}Model Spec 2:pytorch,13B
| 字段 | 值 |
|---|---|
| Model Format | pytorch |
| Model Size | 13 Billion |
| Quantizations | none |
| Engines | vLLM、Transformers |
| Model ID | baichuan-inc/Baichuan2-13B-Chat |
启动命令如下:
xinference launch --model-engine ${engine} --model-name baichuan-2-chat --size-in-billions 13 --model-format pytorch --quantization ${quantization}模型来源(Hubs)与版本锁定
仓库内置定义 llm_family.json 为每个规格登记了三个模型来源与固定 revision:
- Hugging Face:7B 版本
baichuan-inc/Baichuan2-7B-Chat(revision2ce891951e000c36c65442608a0b95fd09b405dc);13B 版本baichuan-inc/Baichuan2-13B-Chat(revisiona56c793eb7a721ab6c270f779024e0375e8afd4a)。 - ModelScope:7B/13B 均使用
baichuan-inc/Baichuan2-7B-Chat、baichuan-inc/Baichuan2-13B-Chat,revision 分别为v1.0.4与v1.0.3。 - OpenMind Hub:对应
Baichuan/Baichuan2_7b_chat_pt与Baichuan/Baichuan2_13b_chat_pt。
revision 的锁定意味着每次拉起模型时权重来源可复现。可以通过环境变量切换默认模型源(例如设置为 modelscope),这一点在 test_llm_family.py 中得到了验证:当设置模型源环境变量为modelscope后,match_llm("baichuan-2-chat", model_format="pytorch")返回的规格其model_hub即为modelscope,量化档位为none,格式为pytorch。
引擎选择:vLLM 与 Transformers
文档明确指出baichuan-2-chat支持 vLLM 与 Transformers 两种引擎,通过--model-engine参数选择:
- Transformers:基于 Hugging Face transformers 生态,兼容性最好,适合首次验证与低资源环境。仓库为 Transformers 引擎声明了额外的虚拟环境依赖(见下文)。
- vLLM:面向高吞吐、低延迟的在线服务场景,通过 PagedAttention 等机制优化推理,适合生产化部署与并发请求处理。
选择引擎时需同时匹配对应--model-engine与--model-format pytorch。若不确定当前环境是否满足依赖,Xinference 会依据内置定义自动创建/复用独立的虚拟环境并安装所需包。
对话模板、停止符与虚拟环境依赖:源码级细节
除文档中的启动命令外,llm_family.json 还为该模型登记了三项关键推理配置,理解它们有助于解释模型在 API 侧的行为:
- chat_template(对话模板):使用 Baichuan2 的保留 token(
<reserved_106>标记用户消息、<reserved_107>标记助手消息)拼接多轮对话,并在生成阶段追加<reserved_107>作为生成提示;system 消息作为前置内容。 - stop_token_ids(停止符):
[2, 195],对应<eos>与<reserved_107>两个 token id,保证生成在回复结束时及时截断,避免输出多余保留 token。 - virtualenv(虚拟环境依赖):当引擎为 Transformers 时,自动安装
#transformers_dependencies#依赖、sentencepiece与transformers_stream_generator。其中sentencepiece用于 Baichuan 中文分词(BPE/SentencePiece),transformers_stream_generator用于流式生成支持。
同时,仓库中 test_stream_options.py 提供了一个端到端的调用样例:以 RESTful API 拉起baichuan-2-chat(Transformers 引擎、7B、pytorch、量化none)后,再通过 OpenAI 兼容接口发起多轮对话请求(包含中英文混合消息),并校验流式返回的分片类型。这说明:
- 模型注册名、尺寸、格式与量化参数与 launch 命令完全对应;
- 启动后可立即通过
/v1/chat/completions风格接口以 OpenAI 协议进行对话。
实际操作:从命令行启动到 API 调用
综合文档与源码,推荐的最小操作路径如下:
- 启动模型(以 7B + Transformers 为例):
xinference launch --model-engine transformers --model-name baichuan-2-chat --size-in-billions 7 --model-format pytorch --quantization none(可选)切换模型源:如需从 ModelScope 拉取权重,在启动前设置模型源环境变量(如
XINFERENCE_ENV_MODEL_SRC=modelscope)。调用聊天接口:启动完成后,Xinference 会返回一个模型 UID(model_uid)。之后即可使用任意 OpenAI SDK 指向
http://<host>:<port>/v1发起chat/completions请求,或直接通过 Xinference 的 RESTful API 进行调用,多轮对话消息结构遵循 OpenAI 的messages协议。查看与管理:可通过
xinference list查看已启动模型,或在前端控制台查看运行状态与日志。
总结
baichuan-2-chat是 Xinference 内置 LLM 家族中一个开箱即用的中英文对话模型,提供 7B/13B 两个 pytorch 规格、4096 上下文窗口,并同时支持 vLLM 与 Transformers 两种引擎。借助 内置模型定义 与 生成式文档,你只需一条xinference launch命令即可完成从权重下载、环境准备到服务暴露的全部流程,并通过统一的 OpenAI 兼容 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),仅供参考