EAS提供了预置镜像以部署社区模型,并针对模型分发和镜像拉起做了加速机制。您只需配置几个参数就可以将社区模型一键快捷的部署到EAS模型在线服务平台。本文为您介绍如何部署HuggingFace和ModelScope的社区模型。
背景信息
当前,开放的模型社区(例如 huggingface、modelscope )提供了大量的机器学习模型和代码实现,其对应库的接口将模型、框架以及相关的处理逻辑进行了封装,您仅需使用几行代码即可直接端到端进行模型训练和调用等操作,无需考虑复杂的环境依赖、预处理后处理逻辑、框架类型等一系列使用和部署落地模型时的问题。这种生态也是对以Tensorflow、Pytorch为代表的框架-模型形态的升级。
EAS也对该形态进行了优化支持,支持您一键部署社区模型。
部署HuggingFace模型
PAI支持将HuggingFace社区官方库中的tasks对应的模型快速部署为EAS模型在线服务,具体操作步骤如下:
在官方库tasks中选择要部署的模型,本文以文本分类模型为例,进入distilbert-base-uncased-finetuned-sst-2-english模型页面,分别获取下图中的MODEL_ID(模型ID)、TASK(模型对应的TASK)、REVISION(模型版本)的值,并保存到本地。
您可以根据下表中的对应关系找到部署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
在EAS模型在线服务页面,部署HuggingFace模型。
进入新建服务页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台。
参数
描述
服务名称
参照界面提示自定义配置服务名称。
部署方式
选择镜像部署AI-Web应用。
镜像选择
在PAI平台镜像列表中选择huggingface-inference;并根据实际场景选择对应的镜像版本。
环境变量
配置以下参数为步骤1中查询的结果:
MODEL_ID:distilbert-base-uncased-finetuned-sst-2-english。
TASK:text-classification。
REVISION:main。
运行命令
配置镜像版本后,系统会自动配置运行命令,您无需修改配置。
额外系统盘
单击资源部署信息区域的系统盘配置,将额外系统盘配置为100 GB。
单击部署。当服务状态变为运行中时,表明服务已部署成功。
调用已部署成功的模型服务。
通过控制台调用服务
在模型在线服务(EAS)页面,单击服务方式列下的查看Web应用,在WebUI页面验证模型推理效果。
单击目标服务操作列下的在线调试,在Body页签输入请求数据,例如:
{"data": ["hello"]}
,单击发送请求。说明文本分类模型输入的数据格式(
{"data": ["XXX"]}
)是Gradio框架的/api/predict
定义的,如果您使用其他类型的模型,例如图片分类或语音数据处理等,可以参考/api/predict
的定义来构造请求数据。
通过API调用服务
单击服务名称进入服务详情页面,在该页面单击查看调用信息。
在调用信息对话框公网地址调用页签,查看访问地址和Token,并保存到本地。
通过如下代码使用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>均需要替换为步骤b中获取的访问地址和Token。
部署ModelScope模型
PAI支持将Modelscope官方库中模型快速部署为EAS模型在线服务,具体操作步骤如下:
在官方库中选择要部署的模型,本文以机器翻译模型为例,进入damo/nlp_csanmt_translation_en2zh模型页面,分别获取MODEL_ID、TASK、REVISION的值并保存到本地。
MODEL_ID:模型ID。
TASK:模型对应的TASK。
REVISION:模型版本。
说明需要配置为一个确定的模型版本,例如:v1.0.1或v1.0.0,不能配置为master。
在EAS模型在线服务页面,部署ModelScope模型。
进入新建服务页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台。
参数
描述
服务名称
参照界面提示自定义配置服务名称。
部署方式
选择镜像部署AI-Web应用。
镜像选择
在PAI平台镜像列表中选择modelscope-inference;并根据实际场景选择对应的镜像版本。
环境变量
配置以下参数为步骤1中查询的结果:
MODEL_ID:
iic/nlp_csanmt_translation_en2zh
。TASK:
translation
。REVISION:
v1.0.1
。
运行命令
配置镜像版本后,系统会自动配置运行命令,您无需修改配置。
资源配置选择
您选择的实例规格的内存不能小于8 GB。
单击部署。当服务状态变为运行中时,表明服务已部署成功。
调用已部署成功的模型服务。
启动WebUI调用模型服务
服务部署成功后,单击服务方式列下的查看Web应用。
在WebUI页面左侧测试内容文本框中输入请求数据,单击执行测试,在测试结果文本框中返回结果。
WebUI页面右侧为输入数据的Schema,如果发送了请求之后,会显示输入输出的真实数据内容。您可以根据Schema和JSON内容,构造请求数据,来调用模型服务。
通过在线调试调用模型服务
您可以在服务详情页面中单击查看调用信息,在公网地址调用页签获取访问地址和Token。再使用PAI提供的SDK或自主发送POST请求,详情请参见服务调用SDK。本文为了方便演示,以在线调试为例为您说明如何调用模型服务。具体操作步骤如下:
在模型在线服务(EAS)页面,单击目标服务操作列下的在线调试。如果您不清楚该模型对应的数据格式,可以直接在在线调试页面单击发送请求,获得如下图所示的请求数据格式。
您可以参考实际返回结果中Body后的请求数据格式自行构造请求数据。以上图为例,您可以在左侧Body下的文本框中输入
{"input": {"text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"}}
,单击发送请求,获得如下预测结果。
后续,您可以参照上述步骤部署语音类和图像类模型,以及调用模型来验证模型效果。
语音合成tts模型:damo/speech_sambert-hifigan_tts_zh-cn_16k。示例效果如下图所示:
图像相关的人像美肤模型:damo/cv_unet_skin-retouching。示例效果如下图所示:
图像人脸融合模型:damo/cv_unet-image-face-fusion_damo。示例效果如下图所示: