HuggingFace镜像部署

如果您想要在生产环境中部署Huggingface社区模型,并实现实时推理,您可以使用EAS模型在线服务。EAS提供了预置镜像,可快速部署Huggingface社区模型,并具备模型分发和镜像拉起的加速机制。您只需配置几个参数,即可轻松将Huggingface社区模型部署到EAS上。本文为您介绍如何部署和调用Huggingface社区模型。

背景信息

HuggingFace提供了多个模型选项,其中可在EAS上部署的包括普通Pipeline模型和大语言对话模型,这两类模型的部署和调用方式稍有不同。您可以参考以下内容了解如何部署和调用这两种类型的模型:

部署模型服务

步骤一:选择模型

普通模型

您可以在官方库tasks中选择要部署的普通Pipeline模型。本文以文本分类模型为例,进入distilbert-base-uncased-finetuned-sst-2-english模型页面,分别获取下图中的MODEL_ID(模型ID)、TASK(模型类别)、REVISION(模型版本)的值并保存到本地。0ec0f57fcd2cee6a6c91b53d67616f26.png

您需要根据下表中的对应关系找到部署EAS服务时所需的TASK:

HuggingFace页面展示的TASK

部署EAS服务时填写的TASK

Audio Classification

audio-classification

Automatic Speech Recognition(ASR)

automatic-speech-recognition

Feature Extraction

feature-extraction

Fill Mask

fill-mask

Image Classification

image-classification

Question Answering

question-answering

Summarization

summarization

Text Classification

text-classification

Sentiment Analysis

sentiment-analysis

Text Generation

text-generation

Translation

translation

Translation (xx-to-yy)

translation_xx_to_yy

Text-to-Text Generation

text2text-generation

Zero-Shot Classification

zero-shot-classification

Document Question Answering

document-question-answering

Visual Question Answering

visual-question-answering

Image-to-Text

image-to-text

大语言对话模型

您可以在官方库tasks中选择要部署的大语言对话模型,并获取大语言对话模型的MODEL_ID(模型ID)、TASK(模型对应的TASK)、REVISION(模型版本)的值并保存到本地。目前支持的大语言对话模型列表如下:

语言

类型

MODEL_TYPE

MODEL_ID

中文模型

Qwen系列

qwen

  • Qwen/Qwen-7B-Chat

  • Qwen/Qwen-14B-Chat

ChatGLM系列

glm

  • THUDM/chatglm-6b

  • THUDM/chatglm2-6b

Baichuan系列

baichuan

  • baichuan-inc/Baichuan-13B-Chat

  • baichuan-inc/Baichuan2-7B-Chat

  • baichuan-inc/Baichuan2-13B-Chat

其他类型

  • FlagAlpha/Llama2-Chinese-7b-Chat

  • FlagAlpha/Llama2-Chinese-13b-Chat

  • ziqingyang/chinese-alpaca-2-7b

  • ziqingyang/chinese-alpaca-2-13b

英文模型

Llama系列

llama

  • meta-llama/Llama-2-7b-chat-hf

  • meta-llama/Llama-2-13b-chat-hf

  • meta-llama/Llama-2-70b-chat-hf

Qwen系列模型为例,其中:

  • MODEL_ID(模型ID):请从上述表格中获取。例如Qwen/Qwen-7B-Chat

  • TASK模型类别):均配置为chat。

  • REVISION模型版本):参考普通模型查询方式获取模型版本。例如main

步骤二:部署服务

支持以下两种部署方式。其中使用场景化方式部署的HuggingFace模型服务,仅支持API接口调用方式,不支持WebUI调用方式。

方式一:场景化模型部署

  1. 进入模型在线服务(EAS)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入模型在线服务(EAS)页面。image

  2. 模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击HuggingFace模型部署

  3. HuggingFace模型部署页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台

    参数

    描述

    基本信息

    模型ID

    配置以下参数为步骤一中查询的结果:

    • 普通模型(以文本分类模型为例):

      • 模型ID:distilbert-base-uncased-finetuned-sst-2-english

      • 模型类别:text-classification

      • 模型版本:main

    • 大语言对话模型(以Qwen系列模型为例):

      • 模型ID:Qwen/Qwen-7B-Chat

      • 模型类别:chat

      • 模型版本:main

    模型类别

    模型版本

    资源配置

    资源配置选择

    本方案选择ml.gu7i.c16m60.1-gu30。

    说明
    • 由于大语言模型的体积通常较大,并且对于GPU的要求较高,建议根据实际模型需求选择合适的GPU资源。

    • 针对7B模型,建议选择GU30系列机型。对于更大的模型,可能需要考虑双卡机型或拥有更大显存的机型,请根据实际需求选择。

  4. 参数配置完成后,单击部署

    服务状态变为运行中时,表明服务已部署成功。

方式二:自定义模型部署

  1. 进入模型在线服务(EAS)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入模型在线服务(EAS)页面。image

  2. 模型在线服务(EAS)页面,单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 新建服务页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台

    参数

    描述

    模型服务信息

    部署方式

    选择镜像部署AI-Web应用

    镜像选择

    PAI平台镜像列表中选择huggingface-inference,镜像版本选择1.0-transformers4.33

    填写三方库配置列表

    (可选)单击填写三方库配置列表,配置三方库。

    PAI镜像中预装了基础的依赖库和各领域常用的依赖包。对于有特殊依赖的模型,可根据提示配置依赖库。image.png

    环境变量

    配置以下参数为步骤一中查询的结果:

    • 普通模型(以文本分类模型为例):

      • MODEL_ID:distilbert-base-uncased-finetuned-sst-2-english

      • TASK:text-classification

      • REVISION:main

    • 大语言对话模型(以qwen系列模型为例):

      • MODEL_ID:Qwen/Qwen-7B-Chat

      • TASK:chat

      • REVISION:main

    运行命令

    配置镜像版本后,系统会自动配置运行命令,您无需修改配置。

    资源部署信息

    资源配置选择

    本方案选择ml.gu7i.c16m60.1-gu30。

    说明
    • 由于大语言模型的体积通常较大,并且对于GPU的要求较高,建议根据实际模型需求选择合适的GPU资源。

    • 针对7B模型,建议选择GU30系列机型。对于更大的模型,可能需要考虑双卡机型或拥有更大显存的机型,请根据实际需求选择。

    额外系统盘

    单击系统盘配置,将额外系统盘配置为100 GB。

  4. 参数配置完成后,单击部署

    服务状态变为运行中时,表明服务已部署成功。

调用服务

服务部署成功后,您可以调用模型服务来验证模型效果。其中使用场景化方式部署的HuggingFace模型服务仅支持API接口调用方式。

调用普通模型服务

通过控制台调用服务

  • 模型在线服务(EAS)页面,单击服务方式列下的查看Web应用,在WebUI页面验证模型推理效果。image.png

  • 单击目标服务操作列下的在线调试,在Body页签输入请求数据,例如:{"data": ["hello"]},单击发送请求image

    说明

    文本分类模型输入的数据格式({"data": ["XXX"]})是Gradio框架/api/predict定义的,如果您使用其他类型的模型,例如图片分类或语音数据处理等,可以参考/api/predict的定义来构造请求数据。

通过API调用服务

  1. 查询服务访问地址和Token。

    1. 单击服务名称进入服务详情页面,在该页面单击查看调用信息

    2. 调用信息对话框公网地址调用页签,查看访问地址Token,并保存到本地。

  2. 通过如下代码使用API调用服务。

    import requests
    
    resp = requests.post(url="<service_url>",
                  headers={"Authorization": "<token>"},
                  json={"data": ["hello"]})
    
    print(resp.content)
    
    # resp: {"data":[{"label":"POSITIVE","confidences":[{"label":"POSITIVE","confidence":0.9995185136795044}]}],"is_generating":false,"duration":0.280987024307251,"average_duration":0.280987024307251}

    其中:<service_url><token>均需要替换为步骤1中获取的访问地址和Token。

调用大语言模型服务

启动WebUI调用模型服务

服务部署成功后,单击服务方式列下的查看Web应用,即可打开一个类似下图页面的对话窗口,在该页面可以直接开始对话。image.png

通过API接口调用模型服务

API接口的具体调用方式,请参见如何使用API进行模型推理

相关文档

此外,EAS还预置了TritonServer、TensorFlow Serving、Modelscope镜像,您可以通过EAS一键部署相应的模型服务,并进行推理验证。具体操作,请参见: