EAS提供了預置鏡像以部署社區模型,並針對模型分發和鏡像拉起做了加速機制。您只需配置幾個參數就可以將社區模型一鍵快捷的部署到EAS模型線上服務平台。本文為您介紹如何部署HuggingFace的社區模型。
背景資訊
當前,開放的模型社區(例如 huggingface)提供了大量的機器學習模型和代碼實現,其對應庫的介面將模型、架構以及相關的處理邏輯進行了封裝,您僅需使用幾行代碼即可直接端到端進行模型訓練和調用等操作,無需考慮複雜的環境依賴、預先處理後處理邏輯、架構類型等一系列使用和部署落地模型時的問題。這種生態也是對以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。