在大模型落地的过程中,”模型推理服务”往往成为工程化的第一道门槛。Xinference 是一个开源的统一推理平台,能在一套接口下管理 LLM、Embedding、Reranker 与多模态模型,既支持单机本地部署,也能扩展到多机集群,并对外暴露 OpenAI 兼容的 API。相比在每台机器上手工维护 Ollama、vLLM 等零散进程,Xinference 把”模型加载、版本管理、GPU 调度、服务暴露”收敛到一个控制面,显著降低 AI 应用的运维复杂度。
一、为什么需要一个统一的模型推理平台
当团队同时跑着对话模型、向量模型、重排模型时,最常见的问题是:每个模型一套启动脚本、一套端口、一套鉴权,扩容时全靠人工记录。Xinference 的价值正是把”模型推理服务”抽象成可治理的资源——你只声明要哪个模型,平台负责把它落到合适的 GPU 上,并给你一个稳定的访问端点。对内统一调度,对外统一协议,工程化收益非常直接。
二、Xinference 的核心概念
2.1 三类角色
Xinference 采用控制面与数据面分离的架构:
- Supervisor(控制节点):负责模型注册、调度与 API 网关,是整个平台的大脑。
- Worker(计算节点):真正加载并运行模型的 GPU/CPU 节点,可横向扩展。
- 内置模型库:开箱即用的 LLM、Embedding、Reranker 名录,支持自动下载与本地缓存。
2.2 模型类型与寻址
Xinference 用 model_type 区分 LLM、embedding、rerank、vlm 等,调用时统一通过 model_uid 寻址,避免了”不同框架返回格式不一致”的麻烦。
三、本地快速安装与启动
建议放在独立的虚拟环境中安装,避免与既有依赖冲突:
pip install "xinference[all]"
xinference-local --host 0.0.0.0 --port 9997
启动后访问 http://localhost:9997/ui 即可看到可视化的模型管理界面,可以图形化拉起、停止模型。
四、用命令行拉起一个模型
在命令行中声明模型名、规模与运行引擎,Xinference 会自动处理权重下载与加载:
xinference launch \
--model-name llama-3.1-instruct \
--model-size-in-billions 8 \
--n-gpu 1 \
--model-engine vllm
命令返回 model_uid 后,后续所有调用都通过该 uid 进行,无需关心模型实际落在哪张卡上。
五、用 Python SDK 调用
Xinference 提供原生 Python 客户端,适合写进业务代码或编排脚本:
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
model_uid = client.launch_model(
model_name="llama-3.1-instruct",
model_size_in_billions=8,
n_gpu=1,
model_engine="vllm",
)
model = client.get_model(model_uid)
print(model.generate(prompt="用一句话解释什么是向量数据库"))
六、OpenAI 兼容的 REST API
这是 Xinference 最实用的一点:它对外暴露的是标准 OpenAI 协议,因此你现有的 OpenAI SDK 代码几乎零改动即可切到私有化部署:
curl http://127.0.0.1:9997/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "<model_uid>",
"messages": [{"role": "user", "content": "你好"}]
}'
七、集群部署:从单机到多机
当单卡显存不够或需要并发服务多个模型时,可以切换到集群模式。控制节点与计算节点分离,Supervisor 负责把模型调度到空闲 Worker:
# 控制节点(Supervisor)
xinference-server --host 0.0.0.0 --port 9997
# 计算节点(每台 GPU 机器,Worker)
xinference-worker --endpoint http://supervisor:9997
这种架构天然支持 GPU 资源池化:新增机器只需启动一个 Worker 并指向 Supervisor,扩容对调用方完全透明。
八、与 Dify、LiteLLM 集成
Xinference 暴露的是标准 OpenAI 协议,因此可以直接作为 Dify 私有化知识库 或 LiteLLM 统一网关 的后端模型源。结合我们之前介绍的 Docker 容器化部署,你可以把 Xinference 打包成可迁移的服务镜像,在 CI 中通过 GitHub Actions 自动发布,并用 VS Code Remote 远程调试。一条私有化推理链路就完整闭环了。
九、性能与运维要点
要让推理服务既稳又快,有几个关键旋钮:
- 量化:8B 级别模型用 4-bit/8-bit 量化可大幅降低显存占用,单卡也能跑。
- 引擎选择:高吞吐在线场景优先 vLLM/SGLang,长上下文要注意 KV Cache 显存。
- 并发副本:通过 n-gpu 与 replica 控制模型副本数,避免单卡过载导致排队。
- 可观测:配合 Prometheus 抓取 9997 端口指标,定位慢请求与显存瓶颈。
十、Xinference 与同类工具对比
| 工具 | 定位 | 集群能力 | 模型类型 | 对外协议 |
|---|---|---|---|---|
| Xinference | 统一推理平台 | 原生支持 | LLM/Embedding/Rerank/VLM | OpenAI 兼容 |
| Ollama | 本地轻量运行 | 较弱 | 以 LLM 为主 | 自有 + 兼容 |
| vLLM | 推理引擎 | 需额外编排 | LLM | OpenAI 兼容 |
| LiteLLM | 统一网关/路由 | 网关层 | 多厂商代理 | OpenAI 兼容 |
十一、小结
Xinference 把”模型推理服务”从手工杂活升级为可治理的平台:单机五分钟跑通,集群一键扩缩,协议对齐 OpenAI,无论是搭建私有知识库还是接入生产 AI 应用都得心应手。对于想把多模型能力沉淀成基础设施的团队,它值得作为推理层的首选方案。
十二、Embedding 与重排模型实战
在检索增强(RAG)场景里,光有对话模型并不够,还需要 Embedding 把文档与问题向量化、用 Reranker 做精排。Xinference 的最大便利之一,就是在同一平台内同时加载 LLM、Embedding 与 Reranker,省去再维护一套独立向量服务的成本。下面演示如何拉起一个中文 Embedding 模型并直接拿到向量:
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
emb_uid = client.launch_model(model_name="bge-large-zh", model_type="embedding")
emb = client.get_model(emb_uid)
vec = emb.create(["Xinference 是什么"]) # 返回归一化向量列表
print(len(vec[0])) # 输出向量维度,例如 1024
典型的私有知识库链路是:文档切块 → Embedding 写入向量库 → 召回 Top-K → Reranker 精排 → LLM 生成答案。Xinference 把前两步的模型服务都收敛进来,配合 Dify 这类编排平台即可快速搭出可用闭环。
十三、用 Docker 容器化部署
生产环境更推荐用容器封装 Xinference,便于迁移、隔离与编排(容器基础可参考我们的 Docker 实战)。一条命令即可把推理服务跑起来并持久化模型缓存:
docker run -d --name xinference \
--gpus all -p 9997:9997 \
-v $PWD/xinference_data:/root/.xinference \
xprobe/xinference:latest \
xinference-local -H 0.0.0.0 -p 9997
把 9997 端口通过 Nginx 反向代理 暴露到内网或公网,再叠加鉴权与 HTTPS,就得到了一个团队共享的私有推理网关。
十四、常见故障排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 模型加载卡住 | 权重下载慢或被中断 | 配置国内镜像源,或手动预下载权重 |
| 显存不足 OOM | 模型规模超过单卡 | 降低 size 或开启 4-bit/8-bit 量化 |
| Worker 失联 | 网络/防火墙阻断 | 检查 endpoint 连通性与端口放行 |
| 调用返回 404 | 路径或 uid 错误 | 确认 /v1 前缀与正确的 model_uid |
遇到显存类问题,优先用 nvidia-smi 确认剩余显存,再决定量化策略;集群模式下则看 Supervisor 日志里该模型被调度到了哪台 Worker,针对性排查即可。




