このトピックでは、スケジュールされた時間にモデルをモデルサービスとしてデプロイする方法について説明します。
背景情報
次のいずれかの方法を使用して、スケジュールされた時間にElastic Algorithm Service (EAS) モデルをデプロイできます。
方法1: Designerが提供する更新EASサービスコンポーネントの使用
Machine Learning Designerでは、Update EAS Serviceコンポーネントを使用して、デプロイされたEASモデルを更新できます。
EAS of Machine Learning Platform for AI (PAI) とDataWorksを一緒に使用して、スケジュールされた時間にEASモデルをデプロイできます。
前提条件
方法 1
更新するモデルは、Object Storage Service (OSS) バケットに保存されます。
方法 2
スケジューリング専用リソースグループはDataWorksで購入されます。 詳細については、「スケジューリング用排他的リソースグループの作成と使用」をご参照ください。
PAIが活性化される。 詳細については、「PAIの有効化とデフォルトワークスペースの作成」をご参照ください。
モデルはトレーニングされ、特定のパスに保存されます。 詳細については、「DataWorksタスクを使用してMachine Learning Designerでパイプラインをスケジュールする」をご参照ください。
RAMユーザーを使用してスケジュールされたモデル展開を構成する場合は、DataWorksおよびEASに対するRAMユーザー権限を付与する必要があります。 詳細については、「RAMユーザーを使用してDataWorksコンソールにログインし、DataWorksを使用する」および「EASを使用するために必要な権限の付与」をご参照ください。
制限事項
方法 2
スケジュールされたモデルのデプロイに使用できるのは、DataWorksのスケジューリング専用リソースグループのみです。 共有リソースグループはサポートされていません。
方法1: Designerが提供する更新EASサービスコンポーネントの使用
手順1: デザイナーワークフローの作成
モデルがDesignerワークフローを使用してトレーニングされている場合は、モデルトレーニングコンポーネントの出力ポートをUpdate EAS Serviceコンポーネントに直接接続できます。 詳細については、「オンラインモデルサービスの定期更新」をご参照ください。
モデルがDesignerを使用してトレーニングされていないが、モデルがOSSバケットに保存されている場合は、モデルの空のワークフローを作成できます。 詳細については、「カスタムワークフローの作成」をご参照ください。 ワークフローを作成したら、次の図を参照して、[OSSデータの読み取り] および [EASサービスの更新] コンポーネントをドラッグ&ドロップし、コンポーネントを接続します。 次に、[OSSデータの読み取り] コンポーネントの [OSSデータパス] パラメーターをモデルのOSSパスに設定します。
指定されたOSSパスから指定された時間にモデルが取得された場合、ワークフローにグローバル変数を追加できます。 次に、OSSデータの読み取りコンポーネントのグローバル変数を参照して、モデルパスを指定します。 例:
oss:// examplebucket.oss-cn-shanghai-internal.aliyuncs.com/${date}/heart.pmml
説明ページのOSSパスセレクターを使用して、有効なモデルパスを選択し、パス内の時間変数に関連する要素をグローバル変数に置き換えることができます。 これにより、エンドポイント設定などの入力設定が簡素化されます。
手順2: DataWorksでのワークフローのデプロイ
「Machine Learning DesignerでDataWorksタスクを使用してパイプラインをスケジュールする」を参照し、ワンクリックデプロイメントを使用して前述のワークフローをDataWorksのスケジュール済みノードとしてデプロイします。
手順1で追加したDesignerグローバル変数を参照する場合は、例2: スケジューリングパラメーターの置き換えを参照し、ノードのスケジューリング設定のグローバル変数を必要なシステム変数に置き換えます。
手順3: 定期的に更新されるモデルサービスの履歴バージョンの表示
定期的に更新されるモデルサービスの履歴バージョンを表示するには、次の手順を実行します。
PAI コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[Elastic Algorithm Service (EAS) の入力] をクリックします。
左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、表示するモデルサービスが属するワークスペースの名前をクリックします。
次の図の手順を実行して、定期的に更新されるモデルサービスのすべての履歴バージョンを表示します。
方法2: DataWorksでモデルを手動でデプロイする
手順1: スケジューリング用の排他的リソースグループの作成
DataWorksコンソールにログインします。
左側のナビゲーションウィンドウで [リソースグループ] をクリックします。 [排他的リソースグループ] ページで、スケジューリング用の排他的リソースグループを作成します。 パラメーターの詳細については、「スケジューリング用排他的リソースグループの作成と使用」をご参照ください。
手順2: 排他的リソースグループをワークスペースに関連付ける
ワークスペースでリソースグループを選択する前に、スケジューリング用の排他的リソースグループをワークスペースに関連付ける必要があります。
左側のナビゲーションウィンドウで、[リソースグループ] をクリックします。 [リソースグループ] ページの [排他的リソースグループ] タブで、作成したリソースグループを見つけ、[操作] 列の [ワークスペースの変更] をクリックします。
ホームワークスペースの変更ダイアログボックスで、リソースグループを関連付けるワークスペースを見つけて、[アクション] 列のバインドをクリックします。
ステップ3: ワークフローの作成
DataWorks コンソールにログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
[DataStudio] ページで、アイコンの上にポインターを移動し、[ワークフローの作成] を選択します。
[ワークフローの作成] ダイアログボックスで、[ワークフロー名] と [説明] を設定します。
[作成] をクリックします。
ワークフローの構成タブで、
を選択します。[ノードの作成] ダイアログボックスで、[名前] フィールドに [デプロイ] と入力します。
[OK] をクリックします。
手順4: 初期モデルサービスとしてモデルをデプロイする
スケジュールされたモデル展開では、オンラインモデルサービスは初期モデルサービスから更新されます。 したがって、スケジュールされたモデルのデプロイを実行する前に、モデルを初期モデルサービスとしてデプロイする必要があります。 初期モデルサービスが既に存在する場合は、ステップ5に進みます。
配置スクリプトを変更します。
ワークフローのタブで、作成したShellノードをダブルクリックします。 この例では、[デプロイ] ノードをダブルクリックします。
[シェル] ノードのタブで、次のコマンドを入力します。
# Compile the service deployment description file. cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, # Change the number of instances as needed. "cpu": 2 # Change the number of vCPUs as needed. "memory": 4000 } } EOF # Run the deployment command. /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 URLまたはOSSパスを指定できます。
このパラメーターをHTTP URLに設定した場合、ファイルはTAR、GZ、BZ2、またはZIP形式である必要があります。 このパラメーターをOSSパスに設定すると、圧縮パッケージまたはディレクトリのパスを指定できます。 OSSパスを使用するには、前述のサービスデプロイメント記述ファイルにコード行
"oss_endpoint":"oss-cn-beijing.aliyuncs.com"
を追加して、OSSのエンドポイントを指定する必要があります。 必要に応じてコード内のリージョンを変更できます。説明OSSを使用してモデルを保存する場合は、OSSにアクセスするための権限をPAIに付与する必要があります。 詳細については、「OSSへのアクセス権限をPAIに付与する」をご参照ください。
processor: プロセッサのタイプ。
metadata: サービスのメタデータ。必要に応じて変更できます。 フィールドの詳細については、「EASCMDクライアントを使用するコマンドの実行」をご参照ください。
yourAccessKeyID: AccessKey ID。 AccessKeyペアを取得する方法については、「AccessKeyペアを取得するにはどうすればよいですか?」をご参照ください。
yourAccessKeySecret: AccessKeyシークレット。 AccessKeyペアを取得する方法については、「AccessKeyペアを取得するにはどうすればよいですか?」をご参照ください。
Endpoint: 指定したリージョンのPAIのエンドポイント。 前述のデプロイメントコマンドの
-e
に続くEndpointパラメーターを設定する必要があります。 次の表に、リージョンとそのエンドポイントを示します。リージョン
Endpoint
中国 (上海)
pai-eas.cn-shanghai.aliyuncs.com
中国 (北京)
pai-eas.cn-beijing.aliyuncs.com
中国 (杭州)
pai-eas.cn-hangzhou.aliyuncs.com
中国 (深セン)
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ノードのタブで、アイコンをクリックします。
警告メッセージで、[続行] をクリックします。
[ランタイムパラメーター] ダイアログボックスで、[リソースグループ] パラメーターを、作成したスケジューリング専用リソースグループに設定します。
[OK] をクリックします。
コードが実行されると、オンラインモデルサービスが生成されます。 PAIコンソールでモデルサービスを表示するには、次の手順を実行します。
必要に応じて、 デプロイされたモデルサービスを表示します。
PAI コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[Elastic Algorithm Service (EAS) の入力] をクリックします。
[Elastic Algorithm Service (EAS)] ページで、デプロイされたモデルサービスを表示します。
以降の手順では、スケジュールされたモデル展開を実装するために、モデルサービスにさらにサービスバージョンが追加されます。
手順5: スケジュールされた配置スクリプトの変更
次のサンプルコードに示すように、手順4のシェルノードのコードを変更します。 手順4を完了した場合は、最初の14行のコードを保持します。 ステップ4を実行していない場合は、必要に応じてコードの最初の14行のパラメーター値を変更する必要があります。
# Compile the service deployment description file. cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, "cpu": 2, "memory": 4000 } } EOF # Code in Line 14. # Update and deploy the model. For each scheduled deployment, a new version of the model service is added as the latest online service version. /home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com modify <yourModelName> -s echo.json # Define the logic for testing the service. # If the service encounters an error during the test, run the following command to roll back the model service: #/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***
に置き換えます。パラメーターの詳細については、「手順4: 初期モデルサービスとしてモデルをデプロイする」をご参照ください。
ステップ6: スケジュールされたデプロイの実行
スケジューリングプロパティを設定し、Shellノードをコミットします。
[シェル] ノードタブで、右側のウィンドウの [プロパティ] タブをクリックします。
[プロパティ] パネルで、[スケジュール] セクションの [再発] パラメーターを設定します。
[依存関係] セクションで、[親ノード] フィールドの横にある [ルートノードの追加] をクリックします。
スケジューリング依存関係を設定します。 詳細については、「同じサイクルのスケジューリング依存関係の設定」をご参照ください。
Shellノードのタブのアイコンをクリックして、設定を保存します。
Shellノードのタブのアイコンをクリックして、Shellノードをコミットします。
Shellノードのインスタンスを表示します。
[シェルノード] タブで、右上隅の [オペレーションセンター] をクリックします。
[オペレーションセンター] ページで、[サイクルタスクメンテナンス] > [サイクルインスタンス] を選択します。
インスタンスリストページで、[スケジュール] 列の自動モデルデプロイの予定時刻を表示します。
[操作] 列の [詳細] をクリックし、[ランタイムログの表示] を選択して、スケジュールされた各デプロイメントの操作ログを表示します。
特定のスケジュールされた時間にデプロイされたモデルサービスを表示します。
PAI コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[Elastic Algorithm Service (EAS) の入力] をクリックします。
次の図の手順を実行して、定期的に更新されるモデルサービスのすべての履歴バージョンを表示します。