本文為您介紹如何進行模型服務定時部署。
背景資訊
目前支援使用以下任意一種方式來定時部署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全域變數,請參考全域變數,在節點調度配置中將全域變數的配置替換成所需的系統變數。
步驟三:部署後查看定時更新的服務版本
查看定時部署的模型服務版本,具體操作步驟如下。
登入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。
按照下圖操作指引,查看模型服務自動更新的所有歷史版本。