Xorbits Inference(Xinference):一款性能强盛且功能全面的大模子部署与
Xinference的基本利用概述
Xorbits Inference(Xinference)是一个性能强盛且功能全面的分布式推理框架。可用于大语言模子(LLM),语音识别模子,多模态模子等各种模子的推理。通过Xorbits Inference,你可以轻松地一键部署你自己的模子或内置的前沿开源模子。
GitHub:https://github.com/xorbitsai/inference
官方文档:https://inference.readthedocs.io/zh-cn/latest/index.html
安装
Xinference 在 Linux, Windows, MacOS 上都可以通过 pip 来安装。如果需要利用Xinference举行模子推理,可以根据差别的模子指定差别的引擎。
如今Xinference支持以下推理引擎:
vllm
sglang
llama.cpp
transformers
创建一个xinference假造环境,利用Python版本3.10
conda create -n xinference python=3.10
如果希望能够推理所有支持的模子,可以用以下命令安装所有需要的依赖:
pip install "xinference"
利用其他引擎
# Transformers引擎
pip install "xinference"
# vLLM 引擎
pip install "xinference"
# Llama.cpp 引擎
# 初始步骤:
pip install xinferenc
e
# Apple M系列
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
# 英伟达显卡:
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# AMD 显卡:
CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
# SGLang 引擎
pip install 'xinference'
注意:
在实验安装Xinference过程中,大概会出现异常,可参考下文异常项的异常1、异常2,举行办理
启动服务
可以在当地运行Xinference,也可以利用Docker部署Xinference,甚至在集群环境中部署Xinference。这里接纳当地运行Xinference。
实验以下命令启动当地的Xinference服务
xinference-local
xinference-local --host 0.0.0.0 --port 9997
启动日志如下:
(xinference) root@master:~# xinference-local --host 0.0.0.0 --port 9997
2024-07-22 06:24:11,551 xinference.core.supervisor 312280 INFO Xinference supervisor 0.0.0.0:50699 started
2024-07-22 06:24:11,579 xinference.model.image.core 312280 WARNINGCannot find builtin image model spec: stable-diffusion-inpainting
2024-07-22 06:24:11,579 xinference.model.image.core 312280 WARNINGCannot find builtin image model spec: stable-diffusion-2-inpainting
2024-07-22 06:24:11,641 xinference.core.worker 312280 INFO Starting metrics export server at 0.0.0.0:None
2024-07-22 06:24:11,644 xinference.core.worker 312280 INFO Checking metrics export server...
2024-07-22 06:24:13,027 xinference.core.worker 312280 INFO Metrics server is started at: http://0.0.0.0:35249
2024-07-22 06:24:13,029 xinference.core.worker 312280 INFO Xinference worker 0.0.0.0:50699 started
2024-07-22 06:24:13,030 xinference.core.worker 312280 INFO Purge cache directory: /root/.xinference/cache
2024-07-22 06:24:18,087 xinference.api.restful_api 311974 INFO Starting Xinference at endpoint: http://0.0.0.0:9997
2024-07-22 06:24:18,535 uvicorn.error 311974 INFO Uvicorn running on http://0.0.0.0:9997 (Press CTRL+C to quit)
注意:
Xinference默认使用`<HOME>/.xinference`作为主目录存储一些必要信息,如:日志文件和模型文件
通过配置环境变量`XINFERENCE_HOME`修改主目录, 比如:XINFERENCE_HOME=/tmp/xinference xinference-local --host 0.0.0.0 --port 9997
查看存储信息
(xinference) root@master:~# ls .xinference/
cachelogs
(xinference) root@master:~# ls .xinference/cache/
chatglm3-pytorch-6b
(xinference) root@master:~# ls .xinference/logs/
local_1721628924181local_1721629451488local_1721697225558local_1721698858667
通过访问http://localhost:9777地址来利用Web GUI界面
https://i-blog.csdnimg.cn/direct/8ddf753298214233aaa2abdc54e9fa53.png
通过访问http://localhost:9997/docs来查看 API 文档。
https://i-blog.csdnimg.cn/direct/60515c7ada1f4f4aa25662357578bd90.png
模子部署
1.搜索选择模子
点击Launch Model菜单,选择LANGUAGE MODELS标签,输入关键词以搜索需要部署的模子。这里以搜索ChatGLM3 模子为例。
https://i-blog.csdnimg.cn/direct/7a27e2daacdd4f99ac6aa02e52441501.png
2.模子参数设置
模子的具体参数设置参考下文:模子参数设置说明
https://i-blog.csdnimg.cn/direct/011df3783c4f4358b9fecfd740b0b624.png
3.开始部署模子
模子参数填写完成后,点击卡片左下方的火箭图标按钮开始部署模子
https://i-blog.csdnimg.cn/direct/fb491b56d0c84067bafbd1500f466257.png
后台根据设置参数下载量化或非量化LLM模子
https://i-blog.csdnimg.cn/direct/22e5b481d65441e4bf8715e374eaf029.png
注意:
当运行一个模子时,第一次运行是要从默认或指定的模子站点下载模子参数。当下载完成后,Xinference当地会有缓存的处理,以后再运行雷同的模子不需要重新下载。
4.已部署模子列表
部署完成后,界面主动跳转到Running Models菜单,在LANGUAGE MODELS标签中,可以看到部署好的模子。
https://i-blog.csdnimg.cn/direct/5a07310f64c142e78f64fc8b3e2c4f7f.png
5.LLM模子对话
点击Launch Web UI图标,主动打开LLM模子的Web界面,可以直接与LLM模子举行对话
https://i-blog.csdnimg.cn/direct/544c10446fcf44419743dd8439f1296e.png
举行对话测试:
https://i-blog.csdnimg.cn/direct/866006f32f03406daa61ee2e20cbbf01.png
注意:当时在举行对话测试时出现了异常,参考下文异常中的异常3
模子参数设置说明
在部署LLM模子时,有以下参数可供选择:
1.必选设置:
Model Engine:模型推理引擎,根据模型不同,可能支持的引擎不同
Model Format: 模型格式,可以选择量化(ggml、gptq等)和非量化(pytorch)的格式
Model Size:模型的参数量大小,不同模型参数量不同,可能是: 6B、7B、13B、70B等
Quantization:量化精度,有4bit、8bit等量化精度选择
N-GPU:模型使用的GPU数量:可选择Auto、CPU、GPU数量,默认Auto
Replica:模型的副本,默认为1
点击chatglm3卡片,填写部署模子的相关信息
https://i-blog.csdnimg.cn/direct/110bf6a7b15e4646a3351762d24c0036.png
2.可选设置:
Model UID: 模型的UID,可理解为模型自定义名称,默认用原始模型名称
Request Limits: 模型的请求限制数量,默认为None。None表示此模型没有限制
Worker Ip: 指定分布式场景中模型所在的工作器ip
Gpu Idx: 指定模型所在的GPU索引
Download hub: 模型从哪里下载,可选:none、huggingface、modelscope
https://i-blog.csdnimg.cn/direct/5db0889cd68b4f04a848c07721701769.png
3.Lora设置:
Lora Model Config:PEFT(参数高效微调)模型和路径的列表
Lora Load Kwargs for Image Model:图像模型的 lora 加载参数字典
Lora Fuse Kwargs for Image Model:图像模型的 lora fuse 参数字典
https://i-blog.csdnimg.cn/direct/93e7387b97b14f9f9632c4ff2deaa963.png
4.转达给推理引擎的其他参数:
https://i-blog.csdnimg.cn/direct/a8f1194ff5bb410f9e0a8217bf5eab93.png
API接口
概述
除了利用LLM模子的Web界面举行操作外,Xinference还提供了API接口,通过调用API接口来利用LLM模子。
在API文档中,存在大量API接口,不但有LLM模子的接口,另有其他模子(如Embedding)的接口,并且这些接口都是兼容OpenAI API的接口。
通过访问http://localhost:9997/docs来查看API文档。
https://i-blog.csdnimg.cn/direct/916b097bd8a54edf9b90f1ef8c56d16a.png
对话接口
利用Curl工具调用对话接口
curl -X 'POST' \
'http://localhost:9997/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "chatglm3",
"messages": [
{
"role": "user",
"content": "你好啊"
}
]
}'
{"id":"chat73f8c754-4898-11ef-89f6-000c2981d002","object":"chat.completion","created":1721700508,"model":"chatglm3","choices":[{"index":0,"message":{"role":"assistant","content":"你好
页:
[1]