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[all]"
复制代码 利用其他引擎
- # Transformers引擎
- pip install "xinference[transformers]"
- # vLLM 引擎
- pip install "xinference[vllm]"
- # 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[sglang]'
复制代码 注意:
在实验安装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 WARNING Cannot find builtin image model spec: stable-diffusion-inpainting
- 2024-07-22 06:24:11,579 xinference.model.image.core 312280 WARNING Cannot 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/
- cache logs
- (xinference) root@master:~# ls .xinference/cache/
- chatglm3-pytorch-6b
- (xinference) root@master:~# ls .xinference/logs/
- local_1721628924181 local_1721629451488 local_1721697225558 local_1721698858667
复制代码 通过访问http://localhost:9777地址来利用Web GUI界面
通过访问http://localhost:9997/docs来查看 API 文档。
模子部署
1.搜索选择模子
点击Launch Model菜单,选择LANGUAGE MODELS标签,输入关键词以搜索需要部署的模子。这里以搜索ChatGLM3 模子为例。
2.模子参数设置
模子的具体参数设置参考下文:模子参数设置说明
3.开始部署模子
模子参数填写完成后,点击卡片左下方的火箭图标按钮开始部署模子
后台根据设置参数下载量化或非量化LLM模子
注意:
当运行一个模子时,第一次运行是要从默认或指定的模子站点下载模子参数。当下载完成后,Xinference当地会有缓存的处理,以后再运行雷同的模子不需要重新下载。
4.已部署模子列表
部署完成后,界面主动跳转到Running Models菜单,在LANGUAGE MODELS标签中,可以看到部署好的模子。
5.LLM模子对话
点击Launch Web UI图标,主动打开LLM模子的Web界面,可以直接与LLM模子举行对话
举行对话测试:
注意:当时在举行对话测试时出现了异常,参考下文异常中的异常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卡片,填写部署模子的相关信息
2.可选设置:
- Model UID: 模型的UID,可理解为模型自定义名称,默认用原始模型名称
- Request Limits: 模型的请求限制数量,默认为None。None表示此模型没有限制
- Worker Ip: 指定分布式场景中模型所在的工作器ip
- Gpu Idx: 指定模型所在的GPU索引
- Download hub: 模型从哪里下载,可选:none、huggingface、modelscope
复制代码
3.Lora设置:
- Lora Model Config:PEFT(参数高效微调)模型和路径的列表
- Lora Load Kwargs for Image Model:图像模型的 lora 加载参数字典
- Lora Fuse Kwargs for Image Model:图像模型的 lora fuse 参数字典
复制代码
4.转达给推理引擎的其他参数:
API接口
概述
除了利用LLM模子的Web界面举行操作外,Xinference还提供了API接口,通过调用API接口来利用LLM模子。
在API文档中,存在大量API接口,不但有LLM模子的接口,另有其他模子(如Embedding)的接口,并且这些接口都是兼容OpenAI API的接口。
通过访问http://localhost:9997/docs来查看API文档。
对话接口
利用Curl工具调用对话接口
[code]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":"你好 |