Xinference 中运行 Baichuan2 开源大模型:baichuan-2 内置模型的启动配置与源码解析
【免费下载链接】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(Baichuan2 基座模型)展开,系统讲解其内置模型规格、xinference launch启动命令、底层llm_family.json家族定义与平台限制。读者将掌握如何在本地或服务器上以 Transformers 引擎启动 7B/13B 的 Baichuan2-Base 模型,理解内置模型注册表的工作机制,并能在遇到 Darwin(macOS)平台报错时快速定位原因。
模型概览:一个中英文双语的开源基座 LLM
依据 Xinference 内置模型文档 baichuan-2.rst 与内置模型注册表 llm_family.json 中的定义,baichuan-2的核心元数据如下:
| 属性 | 值 |
|---|---|
| Model Name | baichuan-2 |
| Context Length | 4096 |
| Languages | en, zh |
| Abilities | generate |
| Model Type | baichuan |
| Architectures | BaichuanForCausalLM |
| Description | Baichuan2 是一个基于 Transformer 的开源 LLM,使用中英文数据训练 |
其中architectures为BaichuanForCausalLM,这是模型在前向推理时使用的因果语言模型架构;model_type为baichuan,与 Transformers 库中 Baichuan 模型类型的命名保持一致。需要特别留意的是,baichuan-2的Abilities 只有generate(补全/生成能力),这是 Baichuan2 的 Base 版本,不包含对话模板;如需开箱即用的对话体验,应选择同家族的另一内置模型baichuan-2-chat(详见下文"与 Chat 版本的选型对比")。
内置模型规格(Model Spec)详解
baichuan-2家族在 Xinference 内置了两档规格,均采用pytorch模型格式、仅支持none(即不做量化):
Model Spec 1:7B(pytorch)
| 属性 | 值 |
|---|---|
| Model Format | pytorch |
| Model Size (in billions) | 7 |
| Quantizations | none |
| Engines | Transformers |
| Model ID | baichuan-inc/Baichuan2-7B-Base |
Model Spec 2:13B(pytorch)
| 属性 | 值 |
|---|---|
| Model Format | pytorch |
| Model Size (in billions) | 13 |
| Quantizations | none |
| Engines | Transformers |
| Model ID | baichuan-inc/Baichuan2-13B-Base |
在 llm_family.json 中,两档规格的model_src均同时登记了 Hugging Face、ModelScope 与 OpenMind Hub 三个模型源的 ID 与 revision:
- 7B-Base:Hugging Face 源 revision 为
f2cc3a689c5eba7dc7fd3757d0175d312d167604,ModelScope 源 revision 为v1.0.2,OpenMind Hub 源 ID 为PyTorch-NPU/baichuan2_7b_base; - 13B-Base:Hugging Face 源 revision 为
fa88072fee36e36282287410e00897df2f59e09b,ModelScope 源 revision 为v1.0.3,OpenMind Hub 源 ID 为Baichuan/Baichuan2_13b_base_pt。
这意味着 Xinference 启动时会依据你配置的模型源(Hugging Face / ModelScope / OpenMind Hub)自动解析到对应仓库及精确 revision,保证下载的权重与内置定义一致。
启动命令与参数说明
文档中给出的启动命令模板如下(${quantization}需替换为上方列表中你选择的量化方式,${engine}替换为对应引擎):
# 7B Base xinference launch --model-engine ${engine} --model-name baichuan-2 --size-in-billions 7 --model-format pytorch --quantization ${quantization} # 13B Base xinference launch --model-engine ${engine} --model-name baichuan-2 --size-in-billions 13 --model-format pytorch --quantization ${quantization}由于baichuan-2两档规格都只声明了quantizations: none与引擎Transformers,实际可直接使用的完整命令为:
xinference launch --model-engine Transformers --model-name baichuan-2 --size-in-billions 7 --model-format pytorch --quantization none xinference launch --model-engine Transformers --model-name baichuan-2 --size-in-billions 13 --model-format pytorch --quantization none各关键参数的作用如下:
| 参数 | 含义 | 对 baichuan-2 的取值 |
|---|---|---|
--model-engine | 推理引擎 | Transformers(base 版本唯一引擎) |
--model-name | 内置模型族名称 | baichuan-2 |
--size-in-billions | 模型参数量级 | 7或13 |
--model-format | 模型权重格式 | pytorch |
--quantization | 量化方式 | none(内置规格未提供量化变体) |
--model-name、--size-in-billions、--model-format、--quantization的组合即模型家族匹配(family matching)的输入。在 llm_family.py 中,match_llm函数会遍历内置家族BUILTIN_LLM_FAMILIES与用户自定义家族,按模型名、格式与规模精确匹配到唯一规格;命中后即按 llm_family.py 附近的逻辑完成规格解析。对应的单元测试可在 test_llm_family.py 中看到,例如对baichuan-2-chat执行match_llm("baichuan-2-chat", model_format="pytorch")并断言家族名匹配成功。
关于模型的更多启动选项(如 GPU 数量分配、虚拟环境、模型 UID 等),可查阅 启动指南 与 后端引擎说明;环境与安装准备请参考 安装指南。
源码级解析:内置注册表与依赖管理
baichuan-2之所以能在 Xinference 中以"一行命令"启动,得益于内置模型注册表 llm_family.json 中的完整声明,除规格与模型源外,还包括:
virtualenv依赖:baichuan-2声明了条件化依赖——当引擎为Transformers时安装#transformers_dependencies#、sentencepiece与transformers_stream_generator。sentencepiece用于 Baichuan2 的分词(SentencePiece 词表),transformers_stream_generator则用于流式生成。这意味着 Xinference 会自动为 baichuan-2 创建或复用隔离的虚拟环境并安装上述依赖,无需手工 pip 安装。featured标记:baichuan-2的featured为false,说明它在内置模型列表中不作为置顶推荐项展示。
平台限制:Darwin 系统无法以 pytorch 格式运行
在 worker.py 的_check_model_is_valid中,Xinference 对 baichuan 家族模型做了明确校验:
def _check_model_is_valid(self, model_name: str, model_format: Optional[str]): # baichuan-base and baichuan-chat depend on `cpm_kernels` module, # but `cpm_kernels` cannot run on Darwin system. if platform.system() == "Darwin" and model_format == "pytorch": if "baichuan" in model_name: raise ValueError(f"{model_name} model can't run on Darwin system.")原因是 Baichuan 基座与对话模型在 pytorch 格式下依赖cpm_kernels模块,而该模块无法在 Darwin(macOS)系统上运行。因此在 macOS 上直接执行上述xinference launch命令会抛出baichuan-2 model can't run on Darwin system.的 ValueError。若你在 Darwin 环境部署,需要避开该内置 pytorch 规格,或改用其他不依赖cpm_kernels的引擎/格式变体。
与 Chat 版本的选型对比:baichuan-2 vs baichuan-2-chat
Xinference 内置了同一 Baichuan2 家族的另一模型 baichuan-2-chat,两者在模型 ID 与能力上互补:
| 维度 | baichuan-2 | baichuan-2-chat |
|---|---|---|
| 权重 | Baichuan2-7B/13B-Base | Baichuan2-7B/13B-Chat |
| Abilities | generate | chat |
| 定位 | 基座模型,用于续写/补全/二次训练 | 指令微调对话模型,开箱即聊 |
| 引擎 | Transformers | vLLM、Transformers |
若你的场景是文本续写、模型评测或作为下游微调基础,选择baichuan-2;若需要直接与模型对话,应启动baichuan-2-chat(其启动命令形态与本文完全一致,仅--model-name与权重 ID 不同)。两档规格的 context length 均为 4096,中文与英文能力对等。
启动后的使用方式
模型启动成功后,会以唯一的 model UID 注册到 Xinference 服务。你可以:
- 通过 RESTful API 以 OpenAI 兼容协议调用
generate能力,请求参数与返回结构见 客户端 API 文档; - 使用 Python 客户端(xinference/client)按 model UID 创建句柄并发起补全请求;
- 在 Web 界面的"运行中模型"页面查看 baichuan-2 的运行时状态、地址与日志。
小结
baichuan-2是 Xinference 内置模型中面向中英文开源基座场景的重要成员:4096 上下文、generate能力、7B/13B 双规格、Transformers 引擎驱动。通过本文你可以直接复制启动命令完成部署,并理解其背后的内置注册表声明、虚拟环境依赖与 Darwin 平台限制。如需对话能力,请切换至baichuan-2-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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考