前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你快速上手Xinference分布式推理框架

教你快速上手Xinference分布式推理框架

原创
作者头像
Luoyger
修改2024-03-13 12:31:17
5.7K0
修改2024-03-13 12:31:17
举报

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 推理

想要利用 ggml 推理,可以用以下命令:

pip install "xinference[ggml]"

如果你想要获得更高效的加速,请查看下列依赖的安装文档:

  • llama-cpp-python 用于 baichuan, wizardlm-v1.0, vicuna-v1.3orca. 执行命令即可:pip install llama-cpp-python
  • chatglm-cpp-python 用于 chatglmchatglm2. 执行命令即可:pip install -U chatglm-cpp

支持 PyTorch推理

想要利用 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 用于通过命令行工具或编程接口进行模型的管理。

  • 本地部署下, endpoint 默认为 http://localhost:9997.
  • 集群部署下, endpoint 默认为 http://${supervisor_host}:9997。其中 ${supervisor_host} 为 supervisor 所在服务器的主机名或 IP 地址。

UI 界面

单模型聊天

多模型对比

常用命令

启动指定模型

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 同样提供了编程接口:

代码语言:python
复制
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 上的模型。

代码语言:json
复制
{
  "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"
    }
  ],
}
  • model_id: HuggingFace 上模型的 ID
  • model_uri: 表示可从中加载模型的 URI 的字符串,例如“file:///path/to/llama-2-7b”。如果模型 URI 不存在,推理将尝试使用模型 ID 从 HuggingFace 下载模型。
  • model_file_name_template:ggml 模型需要。用于基于量化定义模型文件名的字符串模板。

(2)注册模型到服务中。

xinference register --model-type LLM --file model.json --persist

(3)列举内置和自定义模型

xinference registrations --model-type LLM --endpoint "``http://127.0.0.1:9091``"

代码语言:json
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能特性
  • 安装
    • 支持 ggml 推理
      • 支持 PyTorch推理
        • 支持所有类型
          • 本地部署
          • 分布式部署
      • 部署
      • UI 界面
      • 常用命令
        • 启动指定模型
          • 列举指定机器上运行的模型
            • 结束模型
            • 编程接口
            • 自定义模型
            相关产品与服务
            语音识别
            腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档