快速上手Xinference本地推理:3步跑通
【免费下载链接】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(Xorbits Inference)是一个开源模型推理框架:一条命令在本地或集群里部署大语言模型、语音、多模态模型,对外统一暴露 OpenAI 兼容接口(就是 OpenAI SDK 那套请求/响应格式,换个地址就能调)。
演示前一天,老板说 GPT 接口不能留在生产环境,得换成本地开源模型。问题在于各个推理框架的请求格式互不相通——换一套就得重写一遍客户端代码,一个星期的客服机器人差点推倒重来。后来有同事丢给我一个地址:Xinference。本地起一个服务,不管是聊天模型还是向量模型,全部走同一套 OpenAI 风格接口,换模型只改一行base_url。这套从安装到出第一条回复的最短路径,以及路上的坑,都写在这里。
能力速览:值不值得上手,看这张表
| 它能做什么 | 谁适合用 | 前置条件 |
|---|---|---|
| 一条命令部署 LLM、向量、重排、图像、语音、视频模型 | 想本地试用开源模型、不想写部署脚本的开发者 | Python + 一条 pip 命令 |
| OpenAI 兼容 RESTful API,支持 Function Calling(模型按 JSON 格式调用工具) | 已有 OpenAI SDK 代码、想换成本地模型的数据/研发团队 | 现有代码改一行base_url |
| 分布式集群部署,大模型切片到多台机器 | 单机显存放不下 70B+ 大模型的团队 | 多台服务器 + supervisor/worker |
| 内置 Web 控制台,模型浏览、启动、状态管理全图形化 | 非开发同学做模型管理 | 服务已启动,浏览器打开即可 |
如果你只是想在笔记本上跑一个小模型验证想法,下面两个代码块就够;要上集群,直接跳到进阶那一节。
最小上手路径:3条命令跑通本地推理
先装依赖再启动服务。xinference[all]会一次装齐所有推理引擎的依赖——所谓"引擎",就是真正执行模型计算的底层库(vLLM、llama.cpp、transformers 等),装一次后面不用纠结。
pip install "xinference[all]" xinference-local --host 0.0.0.0 --port 9997运行后终端会打印Starting Xinference at endpoint: http://0.0.0.0:9997,浏览器访问 127.0.0.1:9997 就是 Web 控制台,所有操作点页面也能完成。依赖装得慢或报错时,安装细节见 doc/source/getting_started/installation.rst。
第二步,启动模型并拿到第一条回复。模型权重首次启动会自动下载并缓存到~/.xinference,第二次启动就是秒开。
from xinference.client import RESTfulClient client = RESTfulClient("http://127.0.0.1:9997") model = client.launch_model( model_name="qwen2.5-instruct", model_engine="vllm", model_format="pytorch", size_in_billions="0_5", ) reply = client.get_model(model.model_uid).chat( messages=[{"role": "user", "content": "什么是最大的动物?"}], ) print(reply["choices"][0]["message"]["content"])第一次跑会看到终端里的下载进度,走完程序直接打印模型回答。至此"下载权重 → 启动服务 → 推理调用"三件事已经全部过了一遍,内置模型列表更多可以在 doc/source/models/index.rst 里翻。
核心能力拆解:它真正强的两件事
第一件:一行代码替换 OpenAI 接口。输入是你现有的 OpenAI SDK 代码;处理是 Xinference 在/v1入口实现了兼容端点,chat、completions、embeddings 都支持;输出结构和 OpenAI 官方完全一致,你拿到的还是一个choices[0].message.content。
from openai import OpenAI oai = OpenAI(base_url="http://127.0.0.1:9997/v1", api_key="not-used") resp = oai.chat.completions.create( model="qwen2.5-instruct", messages=[{"role": "user", "content": "用一句话打个招呼"}], ) print(resp.choices[0].message.content)输出结构与 OpenAI 官方接口完全一致,已有代码不用动;LangChain、Dify、RAGFlow 这类工具也是只改 URL 就能指向本地。它甚至额外提供了 Anthropic 兼容端点(/anthropic),Claude Code 这类工具也能直接指过来。
第二件:一个服务管多种模型,拼出最小 RAG。RAG(检索增强生成,先在你自己的文档里检索、再让模型基于检索结果回答)需要向量模型 + 聊天模型两种模型。Xinference 里它们走同一个服务、同一套接口,启动时多传一个model_type就行:
client.launch_model( model_name="bge-base-en-v1.5", model_type="embedding") oai = OpenAI(base_url="http://127.0.0.1:9997/v1", api_key="not-used") vec = oai.embeddings.create( model="bge-base-en-v1.5", input="待向量化的一句话") print(len(vec.data[0].embedding)) # 768打印出 768,说明文本已经变成 768 维向量。把这个向量丢进任意向量数据库,就能检索"语义最相近的文档段落",再交给聊天模型生成答案——一个最小可用的 RAG 链路就齐了。控制台里各类型模型分 Tab 陈列,启动前可以先看支持哪些能力:
进阶场景:单机显存放不下模型时
场景很典型:70B 以上的大模型,一张卡装不下。输入是多台机器;处理是 supervisor(负责调度和统一入口的主节点)加 worker(真正跑模型的计算节点),启动时指定副本数,调度器把模型分片摊到各 worker 上;输出对调用方仍是同一个 API 地址,完全无感。
# A机:主节点,只做调度 xinference-supervisor -H 0.0.0.0 -p 9997 # B机:计算节点,实际承载模型 xinference-worker -e "http://A机IP:9997" -H 0.0.0.0启动后命令行加-e http://A机IP:9997指向主节点操作即可,分布式参数细节参考 doc/source/user_guide/distributed_inference.rst。
另一个生产上绕不开的场景是依赖冲突:模型 A 要旧版 torch,模型 B 要新版 torch,同一个 Python 环境装不下。Xinference 支持给单个模型开独立虚拟环境(表单里 Virtual Environments Config 一节),各模型依赖互不干扰,这是多模型长期服役时最常踩的坑。
避坑与实用建议:第一次跑最常遇到的事
- 💻 没有 GPU 别硬装
[all]:只装pip install "xinference[llama_cpp]",启动时model_engine换成llama.cpp、格式用 GGUF(压缩量化过的权重,CPU 可跑),16GB 内存够 7B 级别。 - 🐢 首次下载慢:权重缓存在
~/.xinference,国内网络可加环境变量XINFERENCE_MODEL_SRC=modelscope启动服务,把模型源切到国内镜像。 - ⚙️ 引擎选择有讲究:Linux 上优先 vLLM(吞吐最好),显存紧张用 llama.cpp,Mac 优先 MLX(Apple 芯片加速引擎)。
- 🔌 客户端版本要对齐:
xinference-client与服务端版本保持一致,字段对不上时先查这里。
跑通之后,下一步可以看看自动合批(多个并发请求合并处理,直接拉高吞吐)和监控看板;如果想把本地模型接进现成工作流,改一行 URL 指到 Dify 或 RAGFlow 是最快的验证方式。
【免费下载链接】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),仅供参考