Xorbits Inference(Xinference):一款性能强盛且功能全面的大模子部署与 ...

打印 上一主题 下一主题

主题 663|帖子 663|积分 1989

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支持以下推理引擎:
  1. vllm
  2. sglang
  3. llama.cpp
  4. transformers
复制代码
创建一个xinference假造环境,利用Python版本3.10
  1. conda create -n xinference python=3.10
复制代码
如果希望能够推理所有支持的模子,可以用以下命令安装所有需要的依赖:
  1. pip install "xinference[all]"
复制代码
利用其他引擎
  1. # Transformers引擎
  2. pip install "xinference[transformers]"
  3. # vLLM 引擎
  4. pip install "xinference[vllm]"
  5. # Llama.cpp 引擎
  6. # 初始步骤:
  7. pip install xinferenc
  8. e
  9. # Apple M系列
  10. CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
  11. # 英伟达显卡:
  12. CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
  13. # AMD 显卡:
  14. CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
  15. # SGLang 引擎
  16. pip install 'xinference[sglang]'
复制代码
注意:
   在实验安装Xinference过程中,大概会出现异常,可参考下文异常项的异常1、异常2,举行办理
  启动服务

   可以在当地运行Xinference,也可以利用Docker部署Xinference,甚至在集群环境中部署Xinference。这里接纳当地运行Xinference。
  实验以下命令启动当地的Xinference服务
  1. xinference-local
  2. xinference-local --host 0.0.0.0 --port 9997
复制代码
启动日志如下:
  1. (xinference) root@master:~# xinference-local --host 0.0.0.0 --port 9997
  2. 2024-07-22 06:24:11,551 xinference.core.supervisor 312280 INFO     Xinference supervisor 0.0.0.0:50699 started
  3. 2024-07-22 06:24:11,579 xinference.model.image.core 312280 WARNING  Cannot find builtin image model spec: stable-diffusion-inpainting
  4. 2024-07-22 06:24:11,579 xinference.model.image.core 312280 WARNING  Cannot find builtin image model spec: stable-diffusion-2-inpainting
  5. 2024-07-22 06:24:11,641 xinference.core.worker 312280 INFO     Starting metrics export server at 0.0.0.0:None
  6. 2024-07-22 06:24:11,644 xinference.core.worker 312280 INFO     Checking metrics export server...
  7. 2024-07-22 06:24:13,027 xinference.core.worker 312280 INFO     Metrics server is started at: http://0.0.0.0:35249
  8. 2024-07-22 06:24:13,029 xinference.core.worker 312280 INFO     Xinference worker 0.0.0.0:50699 started
  9. 2024-07-22 06:24:13,030 xinference.core.worker 312280 INFO     Purge cache directory: /root/.xinference/cache
  10. 2024-07-22 06:24:18,087 xinference.api.restful_api 311974 INFO     Starting Xinference at endpoint: http://0.0.0.0:9997
  11. 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)
复制代码
注意:
  1. Xinference默认使用`<HOME>/.xinference`作为主目录存储一些必要信息,如:日志文件和模型文件
  2. 通过配置环境变量`XINFERENCE_HOME`修改主目录, 比如:XINFERENCE_HOME=/tmp/xinference xinference-local --host 0.0.0.0 --port 9997
复制代码
查看存储信息
  1. (xinference) root@master:~# ls .xinference/
  2. cache  logs
  3. (xinference) root@master:~# ls .xinference/cache/
  4. chatglm3-pytorch-6b
  5. (xinference) root@master:~# ls .xinference/logs/
  6. 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.必选设置:
  1. Model Engine:模型推理引擎,根据模型不同,可能支持的引擎不同
  2. Model Format: 模型格式,可以选择量化(ggml、gptq等)和非量化(pytorch)的格式
  3. Model Size:模型的参数量大小,不同模型参数量不同,可能是: 6B、7B、13B、70B等
  4. Quantization:量化精度,有4bit、8bit等量化精度选择
  5. N-GPU:模型使用的GPU数量:可选择Auto、CPU、GPU数量,默认Auto
  6. Replica:模型的副本,默认为1
复制代码
点击chatglm3卡片,填写部署模子的相关信息

2.可选设置:
  1. Model UID: 模型的UID,可理解为模型自定义名称,默认用原始模型名称
  2. Request Limits: 模型的请求限制数量,默认为None。None表示此模型没有限制
  3. Worker Ip: 指定分布式场景中模型所在的工作器ip
  4. Gpu Idx: 指定模型所在的GPU索引
  5. Download hub: 模型从哪里下载,可选:none、huggingface、modelscope
复制代码

3.Lora设置:
  1. Lora Model Config:PEFT(参数高效微调)模型和路径的列表
  2. Lora Load Kwargs for Image Model:图像模型的 lora 加载参数字典
  3. 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":"你好

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表