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系列機型。對于更大的模型,可能需要考慮雙卡機型或擁有更大顯存的機型,請按實際需求選擇。
參數配置完成后,單擊部署。
方式二:自定義模型部署
具體操作步驟如下:
步驟一:選擇模型
在場景化部署模型時,系統自動預設了模型類別和版本信息;而采用自定義部署方式時,您則需手動獲取MODEL_ID、TASK和REVISION的值,并保存到本地。
普通模型
以普通Pipeline模型-機器翻譯模型為例,進入damo/nlp_csanmt_translation_en2zh模型頁面,分別獲取MODEL_ID、TASK、REVISION的值并保存到本地。
MODEL_ID:模型ID。
TASK:模型對應的TASK。
REVISION:模型版本。
說明需要配置為一個確定的模型版本,例如:v1.0.1或v1.0.0,不能配置為master。
(可選)ACCESS_TOKEN:SDK訪問令牌。
當需要部署非公開模型時,需要填寫SDK訪問令牌以獲取模型。請在ModelScope首頁的左側導航欄中,單擊訪問令牌,在該頁面獲取SDK令牌。在后續部署服務時,您需要將SDK令牌配置到環境變量中。
大語言對話模型
目前支持的大語言對話模型列表如下:
類型 | MODEL_TYPE | MODEL_ID |
llama系列 | llama |
|
baichuan系列 | baichuan |
|
浦語系列 | internlm |
|
chatglm系列 | glm |
|
qwen系列 | qwen |
|
以ChatGLM系列模型為例,其中:
MODEL_ID:請從上述表格中獲取。例如
ZhipuAI/chatglm2-6b
。TASK:均為chat。
REVISION:參考普通模型查詢方式獲取模型版本。例如
v1.0.11
。
步驟二:部署模型
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
單擊部署服務,然后在自定義模型部署區域,單擊自定義部署。
在自定義部署頁面,配置以下關鍵參數,其他參數配置詳情,請參見服務部署:控制臺。
參數
描述
服務名稱
參照界面提示自定義配置服務名稱。
部署方式
選中開啟Web應用。
鏡像配置
在官方鏡像列表中選擇modelscope-inference;鏡像版本選擇最高版本。
環境變量
單擊添加按鈕,配置以下參數為步驟一中查詢的結果:
普通模型(以機器翻譯模型為例):
MODEL_ID:
iic/nlp_csanmt_translation_en2zh
TASK:
translation
REVISION:
v1.0.1
大語言對話模型(以ChatGLM系列模型為例):
MODEL_ID:
ZhipuAI/chatglm2-6b
。TASK:
chat
。REVISION:
v1.0.11
。
如果部署非公開模型,您需要新增一個環境變量配置訪問令牌,如何獲取訪問令牌,請參見步驟一:選擇模型。
變量名:配置為ACCESS_TOKEN。
變量值:配置為已獲取的SDK訪問令牌。
運行命令
配置鏡像后,系統會自動配置運行命令,您無需修改配置。
部署資源
普通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服務。具體操作,請參見服務部署:自定義鏡像。