本文為您介紹如何進行模型服務定時部署。
背景信息
目前支持使用以下任意一種方式來定時部署EAS服務。
在Designer中通過更新EAS服務組件,來更新已部署的EAS服務。
搭配使用EAS和DataWorks來定時部署EAS服務。
前提條件
使用方案一部署EAS服務
待更新的模型已存儲在OSS Bucket中。
使用方案二部署EAS服務
購買DataWorks獨享調度資源組,詳情請參見新增和使用獨享調度資源組。
購買PAI,詳情請參見開通并創建默認工作空間。
完成定時訓練,并將模型保存至固定地址,詳情請參見使用DataWorks離線調度Designer工作流。
如果RAM用戶進行定時自動模型部署,則需要對其賦予DataWorks相關權限及EAS模型部署權限,詳情請參見RAM用戶登錄并使用DataWorks和云產品依賴與授權:EAS。
使用限制
使用方案二部署EAS服務:
僅支持使用DataWorks獨享調度資源組,不支持使用公共資源組。
方案一:使用Designer-更新EAS服務組件
步驟一:創建Designer工作流
如果您的模型是基于Designer工作流訓練得到的,可以直接在訓練組件下游連接更新EAS服務組件,詳情請參見在線模型服務定時自動更新。
如果您的模型不是在Designer中訓練得到的,但是存儲在OSS Bucket中,也可以新建一個空白工作流,詳情請參見新建自定義工作流。并參照下圖拖入讀OSS數據組件和更新EAS服務組件連接使用。在讀OSS數據組件中配置OSS數據路徑為模型存儲的路徑即可。
如果您的模型是從一個自己規劃的OSS目錄中按時間讀取的,可以在工作流中配置高級功能:全局變量。并在讀OSS數據組件中引入全局變量進行模型路徑配置,例如:
oss://examplebucket.oss-cn-shanghai-internal.aliyuncs.com/${date}/heart.pmml
。說明您可以先使用頁面的OSS路徑選擇器選到一個有效模型文件路徑,再將路徑中和時間變量相關的部分用全局變量進行替換,可以減少手動進行endpoint等配置輸入的復雜度。
步驟二:部署上述工作流至DataWorks
參考使用DataWorks離線調度Designer工作流,將上述工作流一鍵部署至DataWorks作為定時調度節點。
如果您在步驟一中引入了Designer全局變量,請參考示例2:定時調度參數替換,在節點調度配置中將全局變量的配置替換成所需的系統變量。
步驟三:部署后查看定時更新的服務版本
查看定時部署的模型服務版本,具體操作步驟如下。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
按照下圖操作指引,查看模型服務自動更新的所有歷史版本。
方案二:手動在DataWorks中進行部署
步驟一:創建獨享調度資源組
登錄DataWorks控制臺。
單擊左側導航欄中的資源組,默認進入獨享資源組頁面,在該頁面新建獨享調度資源組,具體參數配置說明,請參見新增和使用獨享調度資源組。
步驟二:綁定歸屬的工作空間
獨享調度資源組需要綁定歸屬的工作空間,才可以在對應的工作空間下選擇該資源組。
在資源組列表的獨享資源組頁簽下,單擊相應資源組后的修改歸屬工作空間。
在修改歸屬工作空間單擊對應工作空間后的綁定,即可將獨享資源組綁定至此工作空間。
步驟三:創建業務流程
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
在數據開發頁面,鼠標懸停至圖標,單擊新建業務流程。
在新建業務流程對話框中,輸入業務名稱和描述。
單擊新建。
右鍵單擊目標業務流程,選擇
。在新建節點頁面的名稱文本框,輸入部署節點,然后單擊確認。
步驟四:部署初始模型
因為定時自動部署是在初始模型服務基礎上,增加一個模型服務版本,作為線上運行服務。所以定時自動部署之前,需要先部署初始模型。如果已經存在初始模型服務,則直接執行步驟五。
編輯部署腳本。
在業務流程頁面,雙擊已創建的Shell節點(部署節點)。
在Shell節點頁面,輸入如下命令。
# 編寫服務部署描述文件。 cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, #可以根據實際情況修改Instance數量。 "cpu": 2, #可以根據實際情況修改CPU數量。 "memory": 4000 } } EOF # 執行部署命令。 /home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com create echo.json
重要如果您使用的獨享調度資源組是在2022年8月10日之前創建的,則上述腳本的第16行代碼,需要將
/home/admin/usertools/tools/eascmd64 ***
修改為/home/admin/usertools/tools/eascmd ***
。echo.json是描述服務相關信息(模型存儲位置及使用資源等)的JSON文件,以下參數需要根據實際情況配置:
name:模型服務名稱必須在同地域內唯一,是模型服務的唯一標識,可以結合業務含義命名。
model_path:訓練模型的存儲位置,支持HTTP和OSS地址。
如果使用HTTP地址,則所需的文件必須為TAR、GZ、BZ2及ZIP等壓縮包格式。如果使用OSS地址,則可以指定壓縮包文件路徑或目錄路徑。使用OSS地址時,需要指定Endpoint,即在上述服務部署描述文件中增加
"oss_endpoint":"oss-cn-beijing.aliyuncs.com",
代碼行(按照實際情況修改地域)。說明使用OSS存儲模型時,需要為PAI賦予OSS訪問權限,詳情請參見OSS授權。
processor:Processor類型。
metadata:服務的Meta信息,需要根據實際情況修改。詳細的字段信息請參見命令使用說明。
yourAccessKeyID:Access Key ID。如何獲取AccessKey,詳情請參見如何獲取AccessKey。
yourAccessKeySecret:Access Key Secret。如何獲取AccessKey,詳情請參見如何獲取AccessKey
Endpoint:部署命令
-e
后的Endpoint參數與地域的對應關系如下。地域
Endpoint
華東2(上海)
pai-eas.cn-shanghai.aliyuncs.com
華北2(北京)
pai-eas.cn-beijing.aliyuncs.com
華東1(杭州)
pai-eas.cn-hangzhou.aliyuncs.com
華南1(深圳)
pai-eas.cn-shenzhen.aliyuncs.com
中國(香港)
pai-eas.cn-hongkong.aliyuncs.com
新加坡
pai-eas.ap-southeast-1.aliyuncs.com
印度尼西亞(雅加達)
pai-eas.ap-southeast-5.aliyuncs.com
德國(法蘭克福)
pai-eas.eu-central-1.aliyuncs.com
運行腳本。
在Shell節點頁面,單擊頁面上方的圖標。
在警告對話框,單擊繼續運行。
在運行參數頁面,選擇調度資源組為已創建的獨享資源組。
單擊確定。
運行完成后,即可生成一個線上的模型服務。您可以參見以下步驟,在PAI控制臺查看該模型服務。
(可選)查看部署的模型服務。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
在模型在線服務(EAS)頁面,查看已部署的模型服務。
后續步驟中,將不斷對該模型服務增加服務版本,從而實現模型定時部署。
步驟五:編輯定時自動部署腳本
編輯步驟四中的Shell節點腳本,示例如下(如果已執行步驟四,則前14行代碼無需修改。如果未執行步驟四,則需要根據實際情況修改前14行代碼中的參數值)。
# 編寫服務部署描述文件。 cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, "cpu": 2, "memory": 4000 } } EOF #第14行代碼。 # 執行模型更新部署。每執行一次定時部署調度,系統就會在原模型服務基礎上,增加一個模型服務版本,作為最新的線上運行服務。 /home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com modify <yourModelName> -s echo.json # 此處可以編寫服務的測試邏輯。 # 如果測試服務發生異常,則使用下述命令回滾模型服務。 #/home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com version -f <The name of the model to be rolled back> 1
重要如果您使用的獨享調度資源組是在2022年8月10日之前創建的,則上述腳本的第16行和第19行代碼,需要將
/home/admin/usertools/tools/eascmd64 ***
修改為/home/admin/usertools/tools/eascmd ***
。其中的參數解釋請參見步驟四:部署初始模型。
步驟六:執行定時調度
執行調度任務。
在Shell節點頁面,單擊頁面右側的調度配置。
在調度配置頁面的時間屬性區域,選擇調度周期。
在調度依賴區域,單擊依賴的上游節點后的使用工作空間根節點。
配置依賴關系,詳情請參見配置同周期調度依賴。
單擊Shell節點頁面上方的圖標,保存配置。
單擊Shell節點頁面上方的圖標,提交調度任務。
查看定時調度的運行實例。
在Shell節點頁面,單擊右上方的運維。
在運維中心頁面,選擇周期任務運維>周期實例。
在實例詳情頁面,查看模型自動部署的定時時間。
選擇操作列下的更多>查看運行日志,查看每次定時部署的運行日志。
查看定時部署的模型服務。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
按照下圖操作指引,查看模型服務自動更新的所有歷史版本。