Xorbits Inference(Xinference)是一个性能强大且功能全面的分布式推理框架。可用于大语言模型(LLM),语音识别模型,多模态模型等各种模型的推理。通过 Xorbits Inference,你可以轻松地一键部署你自己的模型或内置的前沿开源模型。
地址:https://github.com/xorbitsai/inference/blob/main/README_zh_CN.md
实战教程:https://mp.weixin.qq.com/s/cXBC0dikldNiGwOwPuJfUQ
Xinference 会自动为你下载模型,默认的模型存放路径为 ${USER}/.xinference/cache
。引用的是模型实际的下载路径。
🌟 模型推理,轻而易举:大语言模型,语音识别模型,多模态模型的部署流程被大大简化。一个命令即可完成模型的部署工作。
⚡️ 前沿模型,应有尽有:框架内置众多中英文的前沿大语言模型,包括 baichuan,chatglm2 等,一键即可体验!内置模型列表还在快速更新中!
🖥 异构硬件,快如闪电:通过 ggml,同时使用你的 GPU 与 CPU 进行推理,降低延迟,提高吞吐!
⚙️ 接口调用,灵活多样:提供多种使用模型的接口,包括 RPC,RESTful API,命令行,web UI 等等。方便模型的管理与监控。
🌐 集群计算,分布协同: 支持分布式部署,通过内置的资源调度器,让不同大小的模型按需调度到不同机器,充分使用集群资源。
🔌 开放生态,无缝对接: 与流行的三方库无缝对接,包括 LangChain,LlamaIndex 等(即将到来)。让开发者能够快速构建基于 AI 的应用。
安装所有用于推理的基础依赖:pip install "xinference"
想要利用 ggml 推理,可以用以下命令:
pip install "xinference[ggml]"
如果你想要获得更高效的加速,请查看下列依赖的安装文档:
baichuan
, wizardlm-v1.0
, vicuna-v1.3
及 orca
. 执行命令即可:pip install llama-cpp-python
chatglm
及 chatglm2
. 执行命令即可:pip install -U chatglm-cpp
想要利用 PyTorch 推理,可以使用以下命令:
pip install "xinference[pytorch]"
如果想要支持推理所有支持的模型,可以安装所有的依赖:
pip install "xinference[all]"
你可以一键进行本地部署,或按照下面的步骤将 Xinference 部署在计算集群。
运行下面的命令在本地部署 Xinference:
xinference
分布式场景下,你需要在一台服务器上部署一个 Xinference supervisor,并在其余服务器上分别部署一个 Xinference worker。 具体步骤如下:
启动 supervisor: 执行:
xinference-supervisor -H "${supervisor_host}"
替换 ${supervisor_host}
为 supervisor 所在服务器的实际主机名或 IP 地址。
启动 workers: 在其余服务器上,执行:
xinference-worker -e "http://${supervisor_host}:9997"
Xinference 启动后,将会打印服务的 endpoint。这个 endpoint 用于通过命令行工具或编程接口进行模型的管理。
http://localhost:9997
.http://${supervisor_host}:9997
。其中 ${supervisor_host}
为 supervisor 所在服务器的主机名或 IP 地址。单模型聊天
多模型对比
xinference launch --model-name "llama-2-chat" --model-format ggmlv3 --size-in-billions 7 --quantization q4_0 --endpoint "``http://127.0.0.1:9091``"
xinference list --endpoint "``http://127.0.0.1:9091``"
xinference terminate --model-uid ${model_uid}
Xinference 同样提供了编程接口:
from xinference.client import Client
client = Client("http://localhost:9997")
model_uid = client.launch_model(model_name="chatglm2")
model = client.get_model(model_uid)
chat_history = []
prompt = "What is the largest animal?"
model.chat(
prompt,
chat_history,
generate_config={"max_tokens": 1024}
)
文档:https://inference.readthedocs.io/en/latest/models/custom.html
注册模型
(1)编写模型的配置文件。pytorch 类型可以加载本地模型,ggmlv3 类型只能加载 HuggingFace 上的模型。
{
"version": 1,
"context_length": 2048,
"model_name": "custom-llama-2",
"model_lang": [
"en"
],
"model_ability": [
"generate"
],
"model_specs": [
{
"model_format": "pytorch",
"model_size_in_billions": 7,
"quantizations": [
"4-bit",
"8-bit",
"none"
],
"model_id": "meta-llama/Llama-2-7b",
"model_uri": "file:///path/to/llama-2-7b"
},
{
"model_format": "ggmlv3",
"model_size_in_billions": 7,
"quantizations": [
"q4_0",
"q8_0"
],
"model_id": "TheBloke/Llama-2-7B-GGML",
"model_file_name_template": "llama-2-7b.ggmlv3.{quantization}.bin"
}
],
}
(2)注册模型到服务中。
xinference register --model-type LLM --file model.json --persist
(3)列举内置和自定义模型
xinference registrations --model-type LLM --endpoint "``http://127.0.0.1:9091``"
Type Name Language Ability Is-built-in
------ ---------------- ------------ --------------------- -------------
LLM baichuan ['en', 'zh'] ['embed', 'generate'] True
LLM baichuan-chat ['en', 'zh'] ['embed', 'chat'] True
LLM wizardlm-v1.0 ['en'] ['embed', 'chat'] True
LLM vicuna-v1.3 ['en'] ['embed', 'chat'] True
LLM orca ['en'] ['embed', 'chat'] True
LLM chatglm ['en', 'zh'] ['embed', 'chat'] True
LLM chatglm2 ['en', 'zh'] ['embed', 'chat'] True
LLM chatglm2-32k ['en', 'zh'] ['embed', 'chat'] True
LLM llama-2-chat ['en'] ['embed', 'chat'] True
LLM llama-2 ['en'] ['embed', 'generate'] True
LLM opt ['en'] ['embed', 'generate'] True
LLM falcon ['en'] ['embed', 'generate'] True
LLM falcon-instruct ['en'] ['embed', 'chat'] True
LLM starcoderplus ['en'] ['embed', 'generate'] True
LLM starchat-beta ['en'] ['embed', 'chat'] True
LLM qwen-chat ['en', 'zh'] ['embed', 'chat'] True
LLM starcoder ['en'] ['generate'] True
LLM gpt-2 ['en'] ['generate'] True
LLM internlm ['en', 'zh'] ['embed', 'generate'] True
LLM internlm-chat ['en', 'zh'] ['embed', 'chat'] True
LLM internlm-chat-8k ['en', 'zh'] ['embed', 'chat'] True
LLM vicuna-v1.5 ['en'] ['embed', 'chat'] True
LLM vicuna-v1.5-16k ['en'] ['embed', 'chat'] True
LLM wizardmath-v1.0 ['en'] ['embed', 'chat'] True
(4)启动自定义模型
xinference launch --model-name custom-llama-2 --model-format pytorch
会根据参数生成本地模型目录名。如模型名 custom-chinese-alpaca-2 生成目录:custom-chinese-alpaca-2-ggmlv3-7b
(5)取消注册模型
xinference unregister --model-type LLM --model-name custom-llama-2
会删除/root/.xinference/model/llm/目录下的自定义模型配置 json 文件。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。