微信扫码
和创始人交个朋友
我要投稿
探索开源工具Xinference,实现大模型高效推理的利器。 核心内容: 1. Xinference工具介绍及其对大模型支持 2. Xinference v1.3.0版本更新亮点 3. 从本地部署到分布式推理的实践指南
“ Xinference 是一款强大的工具,它不仅支持本地运行大模型,还能在分布式集群环境下高效推理。Xinference的最新版本v1.3.0带来了对DeepSeek-V3/R1 这样的大参数量模型的支持。开源力量,助力开源模型私有化落地,助推AI行业发展!”
大家好,我是肆〇柒,今天想和大家聊聊 Xinference,一个非常实用的大模型推理工具。通过它,我们可以在本地或者分布式集群环境下轻松运行各种大语言模型,比如 qwen2.5-instruct
,而V1.3.0版本的更新更是带来了对DeepSeek-V3
,DeepSeek-R1
等大尺寸模型的分布式推理。接下来,我会带大家一步步了解如何使用 Xinference,从本地部署到分布式推理,希望能帮助到对这方面感兴趣的朋友们。
Xinference 是一款专为大语言模型推理设计的工具,支持多种推理引擎,比如 vllm
、sglang
、llama.cpp
等。它不仅可以运行在本地,还能在分布式集群环境下高效推理,特别适合那些体积庞大的模型,比如 DeepSeek V3
和 DeepSeek R1
。通过 Xinference,我们可以轻松管理模型的整个生命周期,从启动到停止,还能通过兼容 OpenAI 的 API 与模型进行交互。
首先,我们需要在本地安装 Xinference。安装完成后,可以通过以下命令启动本地服务:
xinference-local --host 0.0.0.0 --port 9997
默认情况下,Xinference 会使用 <HOME>/.xinference
作为主目录来存储日志文件和模型文件。如果需要更改主目录,可以通过设置环境变量 XINFERENCE_HOME
来实现,例如:
XINFERENCE_HOME=/tmp/xinference xinference-local --host 0.0.0.0 --port 9997
启动成功后,我们可以通过访问 http://127.0.0.1:9997/ui 来使用 Web 界面,或者访问 http://127.0.0.1:9997/docs 查看 API 文档。
从 v0.11.0
版本开始,Xinference 要求在加载 LLM 模型之前指定具体的后端推理引擎。当前支持的推理引擎包括:
vllm
sglang
llama.cpp
transformers
MLX
不同的模型格式和量化参数,会影响可用的推理引擎。Xinference 提供了 xinference engine
命令,帮助我们查询相关的参数组合。例如:
xinference engine -e <xinference_endpoint> --model-name qwen-chat
根据运行环境的不同,推荐的推理引擎也有所差异:
vLLM
或 SGLang
,资源有限时可考虑 llama.cpp
。WSL
,选择与 Linux 一致的引擎,否则推荐 llama.cpp
。MLX
引擎,其次选择 llama.cpp
。以 qwen2.5-instruct
模型为例,我们可以使用以下命令启动模型:
xinference launch --model-engine <inference_engine> -n qwen2.5-instruct -s 0_5 -f pytorch
如果使用 vllm
引擎,还需要指定相关的参数,例如:
xinference launch --model-engine vllm -n qwen2.5-instruct -s 0_5 -f pytorch --gpu_memory_utilization 0.9
首次运行模型时,Xinference 会从 HuggingFace 下载模型权重,耗费时长视本地网络带宽环境,大约 10 到 30 分钟不等。下载完成后,模型会缓存到本地,后续运行无需重新下载。
Xinference 提供了与 OpenAI 兼容的 API,我们可以通过命令行、cURL 或 Python 代码与模型交互。例如,使用 cURL 发送请求:
curl -X 'POST' \
'http://127.0.0.1:9997/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen2.5-instruct",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "What is the largest animal?"
}
]
}'
也可以使用 Python 代码:
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:9997/v1", api_key="not used actually")
response = client.chat.completions.create(
model="qwen2.5-instruct",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the largest animal?"}
]
)
print(response)
还可以使用Xinference自带的Chatbot进行简单的对话验证:
对于那些无法适配单台机器 GPU 的大型模型,包括 DeepSeek V3
、DeepSeek R1
等,Xinference 支持在多台机器上运行。以下是分布式推理的步骤:
首先,需要在一台机器上启动 Supervisor 节点:
xinference-supervisor -H "${supervisor_host}"
然后,在其他机器上启动 Worker 节点:
xinference-worker -e "http://${supervisor_host}:9997" -H "${worker_host}"
支持的引擎
现在,Xinference 支持如下引擎在多台 worker 上运行模型。
以下引擎即将支持分布式推理:
具体使用方法
首先,你需要至少 2 个工作节点来支持分布式推理。如果你完成了上一步部署集群
,已经通过 Xinference 创建了包含 supervisor 节点和 worker 节点的 Xinference 集群。
接下来,如果您使用的是 Web UI 控制台,选择期望的机器数量作为 worker count
;如果使用命令行,启动模型时添加 --n-worker <机器数量>
参数。模型将相应地在多个工作节点上启动。
使用分布式推理时,在 Web UI 中的 GPU count
或命令行中的 --n-gpu
现在表示每个工作节点的 GPU 数量。
例如命令行:
xinference launch -n Deepseek-R1 -s 671 -f pytorch -e "http://${supervisor_host}:9997" --n-worker 2
Xinference 提供了管理模型生命周期的能力,包括列出支持的模型、查看运行中的模型以及停止模型。例如:
xinference registrations -t LLM
xinference list
xinference terminate --model-uid "qwen2.5-instruct"
如果更倾向于使用 Docker,可以按照以下步骤运行 Xinference:
docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version> xinference-local -H 0.0.0.0 --log-level debug
docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 xprobe/xinference:<your_version>-cpu xinference-local -H 0.0.0.0 --log-level debug
Xinference 是一个功能强大的工具,无论是本地运行还是分布式推理,都能满足我们的需求。通过它,我们可以轻松管理大语言模型的推理过程,还能与模型进行交互,体验 AI 的魅力。
Xinference对用户友好的UI控制台方式,无疑降低了大模型推理引擎的使用门槛,希望这篇文章能帮助你更好地了解和使用 Xinference。如果有任何问题,欢迎评论区留言,咱们一起聊聊哦。当然,还可以加入“觉察流”社区群,与群里的小伙伴一起学习、交流。加入方法,私信回复“入群”“加群”即可。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-01
2024-07-25
2024-05-06
2025-01-21
2024-09-20
2024-07-20
2024-08-13
2024-06-12
2024-12-26
2024-07-11
2025-02-18
2025-02-15
2025-02-15
2025-02-12
2025-02-07
2025-01-22
2025-01-16
2024-12-24