XInference推理框架

概述

Xorbits Inference,简称XInference,一个性能强大且功能全面的分布式推理框架。可用于LLM,语音识别模型,多模态模型等各种模型的推理。通过XInference,可轻松地一键部署本地模型或内置的前沿开源模型。其特点是部署快捷、使用简单、推理高效,并且支持多种形式的开源模型,还提供WebGUI界面和API接口,方便用户进行模型部署和推理。

GitHub官方文档

核心优势:

  • 性能优化:通过vLLM、SGLang等引擎实现低延迟推理,吞吐量提升2-3倍;
  • 企业级支持:支持分布式部署、国产硬件适配及模型全生命周期管理;
  • 生态兼容:无缝对接LangChain、LlamaIndex等开发框架,加速AI应用构建。

特性:

  1. 全面且高效的模型管理
    提供模型全生命周期管理功能,从模型导入、版本控制到部署上线,一切尽在掌握。还支持100+最新开源模型,涵盖文本、语音、视频以及embedding/rerank等多个领域,确保用户能够快速适配并使用最前沿的模型。
  2. 多推理引擎与硬件兼容
    为了最大化推理性能,优化多种主流推理引擎,包括vLLM、SGLang、TensorRT等。广泛支持多种硬件平台,无论是国际品牌还是国产GPU(如华为昇腾、海光等),都能实现无缝对接,共同服务于AI推理任务。
  3. 高性能与分布式架构
    借助底层算法优化和硬件加速技术,实现高性能推理。其原生分布式架构更是如虎添翼,支持水平扩展集群,轻松应对大规模数据处理需求。多种调度策略的应用使得Xinference能够灵活适应低延迟、高上下文、高吞吐等不同场景。
  4. 丰富的企业级特性
    除了强大的推理能力外,提供众多企业级特性以满足复杂业务需求。这包括用户权限管理、单点登录、批处理、多租户隔离、模型微调以及全面的可观测性等。这些特性使得Xinference在保障数据安全与合规性的同时,也大大提升业务运营的效率与灵活性。

核心功能模块:

  • 聊天&生成:大语言模型(LLM)
    • 内置模型:支持Qwen、ChatGLM3、Vicuna、WizardLM等主流开源模型,涵盖中英文及多语言场景;
    • 长上下文处理:优化高吞吐量推理,支持超长文本对话、代码生成及复杂逻辑推理;
    • 函数调用:为Qwen、ChatGLM3等模型提供结构化输出能力,支持与外部API交互(如天气查询、代码执行),赋能智能体开发。
  • 多模态处理
    • 视觉模块
      图像生成:集成Stable Diffusion等模型,支持文本到图像生成;
      图文理解:通过多模态大模型(如Qwen-VL)实现图像描述、视觉问答等任务。
    • 音频模块
      语音识别:支持Whisper模型,实现语音转文字及多语言翻译;
      语音生成(实验):探索文本到语音(TTS)能力,支持自定义音色生成。
    • 视频模块(实验)
      视频理解:基于多模态嵌入技术解析视频内容,支持片段检索与摘要生成。
  • 嵌入&重排序
    • 嵌入模型
      文本/图像向量化:支持BGE、M3E等模型,生成跨模态统一语义向量;
      应用场景:优化搜索、推荐系统的召回精度,支持混合模态检索。
    • 重排序模型
      精细化排序:通过交叉编码器优化检索结果排序,提升Top-K准确率。

内置模型

内置模型清单

模型类型代表模型关键特性
大语言模型Qwen-72B、ChatGLM3-6B、Vicuna-7B支持函数调用、长上下文、多轮对话
嵌入模型BGE-Large、M3E-Base跨模态语义对齐、低延迟推理
图像模型Stable Diffusion XL、Qwen-VL文生图、图像描述、视觉问答
音频模型Whisper-Large、Bark(实验)语音识别、多语言翻译、TTS生成
重排序模型bge-reranker-large动态调整检索结果排序
视频模型CLIP-ViT(实验)视频内容解析、跨模态检索

知识库

不仅支持LM的部署和使用,还可集成知识库:

  • FastGPT:基于LLM的开源AI知识库构建平台。提供开箱即用的数据处理、模型调用、RAG、可视化工作流编排等能力,帮助您轻松实现复杂的问答场景;
  • Dify:涵盖LLM开发、部署、维护和优化的LLMOps平台;
  • Chatbox:一个支持前沿大语言模型的桌面客户端,支持Windows,Mac,以及Linux;
  • RAGFlow:是一款基于深度文档理解构建的开源RAG引擎。

版本

功能企业版本开源版本
用户权限管理用户权限、单点登录、加密认证tokens授权
集群能力SLA调度、租户隔离、弹性伸缩抢占调度
引擎支持优化过的vLLM、SGLang、TensorRTvLLM、SGLang
批处理支持大量调用的定制批处理
微调支持上传数据集微调
国产GPU支持昇腾、海光、天数、寒武纪、沐曦
模型管理可私有部署的模型下载和管理服务依赖ModelScope和HuggingFace
故障检测和恢复自动检测节点故障并进行故障复位
高可用所有节点都是冗余部署支持服务高可用
监控监控指标API接口,和现有系统集成页面显示
运维远程cli部署、不停机升级
服务远程技术支持和自动升级服务社区支持

安装

# 安装所有
pip install "xinference[all]"
# Transformers 引擎
pip install "xinference[transformers]"
# vLLM引擎
pip install "xinference[vllm]"
# Llama.cpp 引擎
pip install xinference
pip install xllamacpp --force-reinstall --index-url https://xorbitsai.github.io/xllamacpp/whl/cu124
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# SGLang 引擎
pip install "xinference[sglang]"
# MLX引擎
pip install "xinference[mlx]"

运行

本地运行:

conda create --name xinference python=3.10
conda activate xinference
# 启动命令
xinference-local --host 0.0.0.0 --port 9997
# 启动模型命令
xinference engine -e http://0.0.0.0:9997 --model-name qwen-chat
# 其他参考
xinference launch --model-name <MODEL_NAME> \
	[--model-engine <MODEL_ENGINE>] \
	[--model-type <MODEL_TYPE>] \
	[--model-uid <MODEL_UID>] \
	[--endpoint "http://<XINFERENCE_HOST>:<XINFERENCE_PORT>"]

集群部署:

# 启动 Supervisor 用当前节点的 IP 来替换`${supervisor_host}`
xinference-supervisor -H "${supervisor_host}"
# 启动Worker
xinference-worker -e "http://${supervisor_host}:9997" -H "${worker_host}"

Docker部署:

# 英伟达显卡机器
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
# 只有CPU机器
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

启动完成可在http://${supervisor_host}:9997/ui访问Web UI:
在这里插入图片描述
打开http://${supervisor_host}:9997/docs访问API文档:
在这里插入图片描述
部分API截图:
在这里插入图片描述

API

如上图,接口列表中包含大量接口,不仅有LLM模型的接口,还有其他模型(如Embedding或Rerank)的接口,都是兼容OpenAI API的接口。可使用Curl工具来调用其接口,示例如下:

curl -X 'POST' \
  'http://localhost:9997/v1/chat/completions' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "chatglm3",
    "messages": [
      {
        "role": "user",
        "content": "hello"
      }
    ]
  }'

不同模型可使用不同的requestBody参数,但是大多都是类似的:

{
    "model": "deepseek-r1-distill-qwen-32b-awq",
    "messages": [
        {
            "role": "user",
            "content": "你是谁"
        }
    ],
    "temperature": 0.1,
    "top_p": 0.6,
    "stream": true,
    "stop": [
        "<|im_end|>",
        "<|endoftext|>"
    ]
}

客户端

提高Python客户端,

模型部署

注:版本为v0.14.2
在这里插入图片描述
在Launch Model菜单中选择LANGUAGE MODELS标签,输入关键字,比如chatglm3:
在这里插入图片描述
点击第一个:
在这里插入图片描述
可选参数:

  • Model Engine:模型引擎,可选择Transformers和vLLM。选择Transformers后,截图如上。
  • Model Format:模型格式,可选择量化和非量化的格式,非量化的格式是pytorch,量化格式有ggml、gptq等。不同的模型支持不同的格式。
  • Model Size:模型的参数量大小,不同的模型,其可选择的参数量候选列表不一样。比如ChatGLM3只有6这个选项(表示6B,60亿参数);Llama2,有7、13、70等选项。
  • Quantization:量化精度,4-bit、8-bit、none等。
  • N-GPU:选择使用第几个GPU。
  • Replica:副本数。

选择vLLM后,支持填入副本数:
在这里插入图片描述
和使用的GPU卡个数:
在这里插入图片描述
不管是Transformers还是vLLM,都支持填写其他可选参数:
在这里插入图片描述
包括:

  • Model UID:模型自定义名称,不填的话就默认用原始模型名称。

参数填写完成后,点击左边的火箭图标按钮即开始部署模型,后台会根据参数选择下载LLM模型。部署完成后,界面会自动跳转到Running Models菜单。

部署Embedding模型,只需要在Launch Model菜单中选择Embedding标签,然后选择相应模型,不像LLM模型一样需要选择参数,直接部署模型即可。

通过Curl命令调用API接口来验证部署好的Embedding模型:

curl -X 'POST' \
  'http://localhost:9997/v1/embeddings' \
  -H 'Content-Type: application/json' \
  -d '{
  "model": "bge-base-en-v1.5",
  "input": "hello"
}'

验证rerank模型:

curl --location 'http://192.168.0.106:9997/v1/rerank' \
--header 'Content-Type: application/json' \
--data '{
    "model":"bge-reranker-v2-m3",
    "query":"智能家居系统如何帮助提高家庭能源效率?",
    "documents":["智能家居系统如何帮助提高家庭能源效率?213","fsdf"]
}'

对比

FeatureXinferenceFastChatOpenLLMRayLLM
OpenAI-Compatible RESTful API
vLLM Integrations
More Inference Engines (GGML, TensorRT)
More Platforms (CPU, Metal)
Multi-node Cluster Deployment
Image Models (Text-to-Image)
Text Embedding Models
Multimodal Models
Audio Models
More OpenAI Functionalities (Function Calling)
python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
### 更改 Xinference 的默认推理引擎为 VLLM Xinference 是一个多模态大模型推理框架,支持多种操作系统上的安装以及灵活的模型推理配置。为了在 Xinference 中使用 VLLM 引擎替代默认的推理引擎,可以通过调整参数或修改配置文件来实现。 以下是具体方法: #### 方法一:通过启动命令指定引擎 当启动 Xinference 服务时,可以传递额外的参数以指定使用的推理引擎。例如,在运行 `xinference` 命令时,添加 `--engine=vllm` 参数即可切换到 VLLM 引擎[^1]。 ```bash xinference --engine=vllm ``` 此方式适用于希望临时更改当前会话中的推理引擎的情况。 --- #### 方法二:通过 API 配置请求 如果正在开发基于 Xinference 的应用程序,则可以在调用其 RESTful 或 gRPC 接口时动态设置推理引擎。通常情况下,API 请求中允许传入一个字段用于定义所期望的推理引擎名称。例如,以下是一个 Python 脚本示例,展示如何通过 HTTP POST 请求显式指明使用 VLLM 引擎: ```python import requests url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} payload = { "model": "your_model_name", "prompt": "Your input prompt here.", "parameters": { "engine": "vllm", # 明确指定 VLLM 引擎 }, } response = requests.post(url, headers=headers, json=payload) print(response.json()) ``` 上述代码片段展示了如何向 Xinference 发送带有自定义引擎选项的完成任务请求。 --- #### 方法三:编辑配置文件 对于更持久化的解决方案,可以直接修改 Xinference 的全局配置文件(通常是 YAML 格式的)。找到对应的配置项并将默认引擎改为 `"vllm"` 即可生效。假设配置路径位于 `/path/to/xinference/config.yaml`,则应更新如下部分: ```yaml default_engine: vllm models: - name: your_model_name engine: vllm ``` 保存并重启服务后,所有涉及该模型的操作都会自动采用 VLLM 引擎处理。 --- #### 注意事项 - 不同版本的 Xinference 可能存在细微差异,请确认实际部署环境下的文档说明。 - 如果目标硬件不完全兼容某些高级特性(如 GPU 加速),可能需要进一步优化依赖库或者调整资源分配策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值