EAS提供了ModelScope預置鏡像用於快速部署魔搭社區模型,並針對模型分發和鏡像拉起做了加速機制。您只需配置幾個參數,就可以將社區模型一鍵快捷的部署到EAS模型線上服務平台。本文為您介紹如何部署ModelScope的社區模型。
背景資訊
ModelScope旨在打造下一代開源的模型即服務共用平台,為廣泛AI開發人員提供靈活、易用、低成本的一站式模型服務供應項目,使模型應用變得更簡單。
對於部署到EAS的ModelScope社區中的模型,可以分為普通Pipeline模型和大語言對話模型,由於載入和使用方式的不同,兩種模型的部署和調用方式稍有區別,詳情請參見:
部署ModelScope模型服務
使用情境化方式部署的ModelScope模型服務,僅支援API介面調用方式,不支援WebUI調用方式。
情境化模型部署
具體操作步驟如下:
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
在模型線上服務(EAS)頁面,單擊部署服務,在情境化模型部署地區,單擊ModelScope模型部署。
在ModelScope模型部署頁面,配置以下關鍵參數,其他參數配置詳情,請參見服務部署:控制台。
參數
描述
基本資料
選擇模型
在下拉框中選擇需要部署的ModelScope模型。
模型版本
選擇模型後,系統會自動設定模型版本,您也可以在下拉框中選擇其他模型版本。
模型類別
選擇模型後,系統會自動設定模型類別。
資源配置
資源配置選擇
當選擇普通Pipeline模型時,您選擇的執行個體規格的記憶體不能小於8 GB。
當選擇大語言對話模型時,建議選擇ml.gu7i.c16m60.1-gu30。
說明由於大語言對話模型的體積通常較大,並且對於GPU的要求較高,建議根據實際模型需求選擇合適的GPU資源。
針對7B模型,建議選擇GU30系列機型。對於更大的模型,可能需要考慮雙卡機型或擁有更大顯存的機型,請按實際需求選擇。
參數配置完成後,單擊部署。
調用服務
使用情境化方式部署的ModelScope模型服務僅支援API介面調用方式。
調用普通Pipeline模型服務
以機器翻譯模型為例:
啟動WebUI調用模型服務
服務部署成功後,單擊服務方式列下的查看Web應用。
在WebUI頁面左側測試內容文字框中輸入請求資料,單擊執行測試,在測試結果文字框中返回結果。
WebUI頁面右側為輸入資料的Schema,如果發送了請求之後,會顯示輸入輸出的真實資料內容。您可以根據Schema和JSON內容,構造請求資料,來調用模型服務。
通過API介面調用模型服務
為了方便示範,以線上調試為例為您說明調用方式和返回結果:
在模型線上服務(EAS)頁面,單擊目標服務操作列下的線上調試。如果您不清楚該模型對應的資料格式,可以直接在線上調試頁面單擊發送請求,獲得如下圖所示的請求資料格式。
您可以參考實際返回結果中Body後的請求資料格式自行構造請求資料。以上圖為例,您可以在左側Body下的文字框中輸入
{"input": {"text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"}}
,單擊發送請求,獲得如下預測結果。
您可以使用PAI提供的SDK或curl命令發送POST請求,詳情請參見服務調用SDK。您也可以自行編寫代碼調用模型服務,具體操作步驟如下:
擷取服務的訪問地址和Token。
在模型線上服務(EAS)頁面,單擊服務名稱,進入服務詳情頁面。
在服務詳情頁面,單擊基本資料地區的查看調用資訊。
在公網地址調用頁簽,擷取服務的訪問地址和Token。
調用模型服務。
您可以使用PAI提供的SDK或curl命令發送POST請求,詳情請參見服務調用SDK。您也可以自行編寫代碼調用模型服務,範例程式碼如下:
import requests import json service_url = 'YOUR_SERVICE_URL' token = 'YOUR_SERVICE_TOKEN' resp = requests.post(service_url, headers={"Authorization": token}, data=json.dumps({"input": {"text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"}})) print(resp.text) # 輸出為模型的輸出結果。
其中:
service_url:配置為已擷取的服務訪問地址。
token:配置為已擷取的服務Token。
上述樣本以文本模型為例,EAS同樣支援語音或映像領域的模型。您可以參照上述步驟部署語音類和映像類模型,以及調用模型來驗證模型效果。
語音合成tts模型:damo/speech_sambert-hifigan_tts_zh-cn_16k。
映像相關的人像美膚模型:damo/cv_unet_skin-retouching。
對於映像類模型,輸入需要傳入圖片的Base64編碼或圖片的URL地址。如果選擇使用URL地址作為輸入,需要確保部署的服務具有公網存取權限,詳情請參見公網串連及白名單配置。
調用程式碼範例如下,該代碼下載了一張公開的映像,將其轉換為Base64編碼,並將其作為請求的內容發送到已部署的服務介面,以擷取模型輸出的結果。
import requests import json import base64 service_url = 'YOUR_SERVICE_URL' token = 'YOUR_SERVICE_TOKEN' with requests.get('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/retina_face_detection.jpg') as img_url: img = img_url.content img_base64encoded = base64.b64encode(img) request = {"input": {"image": img_base64encoded.decode()}} request_data = json.dumps(request) resp = requests.post(service_url, headers={"Authorization": token}, data=request_data) # 傳入圖片URL需要服務開通公網存取權限。 # data=json.dumps({"input": {"image": 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/retina_face_detection.jpg'}})) print(resp.text) # 輸出為模型的輸出結果。
其中:
service_url:配置為已擷取的服務訪問地址。
token:配置為已擷取的服務Token。
映像人臉融合模型:damo/cv_unet-image-face-fusion_damo。
調用大語言對話模型服務
以ChatGLM系列模型為例:
啟動WebUI調用模型服務
服務部署成功後,單擊服務方式列下的查看Web應用,即可開啟一個交談視窗,可以直接開始對話。
通過API介面調用模型服務
擷取服務的訪問地址和Token。
在模型線上服務(EAS)頁面,單擊服務名稱,進入服務詳情頁面。
在服務詳情頁面,單擊基本資料地區的查看調用資訊。
在公網地址調用頁簽,擷取服務的訪問地址和Token。
調用模型服務。
您可以使用PAI提供的SDK或curl命令發送POST請求,詳情請參見服務調用SDK。您也可以自行編寫代碼調用模型服務,範例程式碼如下:
import requests import json service_url = 'YOUR_SERVICE_URL' token = 'YOUR_SERVICE_TOKEN' request = {"prompt": "浙江的省會是哪裡?", "history": []} resp = requests.post(service_url, headers={"Authorization": token}, data=json.dumps(request)) result = json.loads(resp.text) response = result['response'] print(json.loads(resp.text)['response']) # 浙江的省會是杭州。 request = {"prompt": "江蘇呢?", "history": result['history']} resp = requests.post(service_url, headers={"Authorization": token}, data=json.dumps(request)) result = json.loads(resp.text) response = result['response'] print(response) # 江蘇的省會是南京。
其中:
service_url:配置為已擷取的服務訪問地址。
token:配置為已擷取的服務Token。
request:對話模型的輸入,格式為JSON。
{"prompt":"福建呢?","history":[["浙江的省會是哪裡?","杭州"],["江蘇呢?","南京"]]}
prompt:對話模型的輸入語句。
history:對話歷史,格式為一個二維列表。第一維列表中每個元素為一個長度為2的列表,表示每一輪對話的問題和回答,可以直接從上次對話中擷取,以實現連續對話。您也可以截取該列表的長度以限制上下文對話輪數。
輸出結果為JSON格式,樣本如下:
{"response":"福州","history":[["浙江的省會是哪裡?","杭州"],["江蘇呢?","南京"],["福建呢?","福州"]]}
其中:
response:為交談模式的回答。
history:含義與request請求欄位中的history描述相同,可以直接帶入下一輪對話。
為了方便示範,以線上調式為例為您說明調用方式和返回結果:
在模型線上服務(EAS)頁面,單擊目標服務操作列下的線上調試。
在調試頁面的線上調試請求參數地區的Body處填寫
{"prompt":"福建呢?","history":[["浙江的省會是哪裡?","杭州"],["江蘇呢?","南京"]]}
,然後單擊發送請求,即可在調式資訊地區查看預測結果。
相關文檔
如何基於Triton Server推理服務引擎部署EAS服務,請參見Triton Inference Server鏡像部署。
您也可以開發自訂鏡像,使用自訂鏡像部署EAS服務。具體操作,請參見服務部署:自訂鏡像。