トレーニングジョブのテストデータまたはハイパーパラメーターが更新され、継続的な増分トレーニングまたはモデルの微調整が必要な場合は、定期スケジューリング機能を使用して、特定の時点で Deep Learning Containers(DLC)ジョブを送信できます。 DataWorks で DLC ジョブの定期スケジューリングを設定して、ジョブの送信を自動化できます。このトピックでは、スケジュールされた時間に DLC ジョブを送信する方法について説明します。
背景情報
次のいずれかの方法を使用して、DLC ジョブの定期スケジューリングを設定できます。
前提条件
DLC を使用するのに必要な権限を取得しています。詳細については、「DLC を使用するのに必要な権限を付与する」をご参照ください。
DataWorks が PAI にアクセスすることを承認されています。
承認ページでワンクリックで承認を完了できます。承認に基づいて作成されるサービスリンクロールの詳細については、「ロール 1:AliyunServiceRoleForDataworksEngine」をご参照ください。[AliyunDataWorksFullAccess] ポリシーがアタッチされている Alibaba Cloud アカウントまたは RAM ユーザーのみがワンクリック承認を実行できます。
ワークフローが作成されています。
DataStudio では、ワークフローに基づいて異なる開発エンジンで開発操作が実行されます。ノードを作成する前に、ワークフローを作成する必要があります。詳細については、「ワークフローを作成する」をご参照ください。
注意事項
PAI DLC ノードが実行されるたびに、PAI の DLC プラットフォームに新しい DLC タスクが生成されます。 DataWorks を使用して PAI DLC ノードを定期的にスケジュールする場合、PAI で同じ名前の複数のタスクが生成されないようにするために、DataWorks で DLC タスクを開発する際に、ビジネス要件に基づいて適切なスケジューリングサイクルを設定することをお勧めします。また、タスク名に datetime 変数を追加し、時間ベースのスケジューリングパラメーターを変数に値として割り当てることもお勧めします。このようにして、タスク名に日付と時刻を追加できます。詳細については、このトピックの「手順 2:PAI DLC タスクを開発する」セクションをご参照ください。
スケジューリングの共有リソースグループを使用して PAI DLC タスクを実行することはできません。
このトピックで説明されている操作は、中国(上海)リージョンで実行されます。 DataWorks コンソールに表示される手順に基づいて、他のリージョンで操作を実行できます。
方法 1:DataWorks コンソールで PAI DLC ノードに DLC ジョブをロードし、ジョブスケジューリングを設定する
手順 1:DLC ジョブを作成する
Platform for AI(PAI)コンソール にログインします。 [分散トレーニングジョブ] ページに移動し、DLC ジョブを作成します。このトピックでは、PyTorch ベースの DLC ジョブを例として使用します。 PyTorch ベースの DLC ジョブの作成方法については、「PyTorch を使用するスタンドアロンのトレーニングジョブを送信する」をご参照ください。
手順 2:PAI DLC ノードを作成する
DataStudio ページに移動します。
DataWorks コンソール にログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
DataStudio ページで、目的のワークフローを見つけ、ワークフロー名を右クリックし、 を選択します。
[ノードの作成] ダイアログボックスで、[名前] パラメーターを設定し、[確認] をクリックします。その後、ノードを使用してタスクを開発し、タスクスケジューリングのプロパティを設定できます。
DLC ノードタブで、名前で [PAI DLC ジョブのロード] から作成した DLC ジョブを検索し、ジョブをロードします。
ジョブをロードすると、DLC ノードエディターは PAI のタスクの設定に基づいてノードコードを生成します。コードに基づいてタスクの設定を変更できます。詳細については、「PAI DLC ノードを作成して使用する」トピックの「手順 2:PAI DLC タスクを開発する」セクションをご参照ください。
手順 3:ジョブスケジューリングを設定する
ノードタブの右側にあるウィンドウで、[プロパティ] をクリックします。[プロパティ] パネルで、[一般] プロパティ、[スケジューリングパラメーター]、[スケジュール]、[リソースグループ]、[依存関係] などの設定項目を表示できます。[スケジュール] セクションのパラメーターを設定します。 DataWorks は、指定されたスケジューリングサイクルに基づいてノードタスクを自動的にスケジュールおよび実行します。詳細については、「概要」をご参照ください。
ノードをコミットする前に、[プロパティ] タブで [再実行] パラメーターと [親ノード] パラメーターを設定する必要があります。
DataWorks を使用して PAI DLC ノードを定期的にスケジュールする場合、PAI で同じ名前の複数のタスクが生成されないようにするために、ビジネス要件に基づいて適切なスケジューリングサイクルを指定することをお勧めします。
手順 4:タスクコードをデバッグする
ノードが想定どおりに設定されているかどうかを確認するには、次の操作を実行します。
オプション。リソースグループを選択し、カスタムパラメーターを変数に割り当てます。
ノードの設定タブの上部にあるツールバーの
アイコンをクリックします。[パラメーター] ダイアログボックスで、デバッグおよびタスクコードの実行に使用するスケジューリング用のリソースグループを選択します。タスクコードでスケジューリングパラメーターを使用する場合は、デバッグのために、スケジューリングパラメーターを変数に値として割り当てることができます。スケジューリングパラメーターの値割り当てロジックの詳細については、「実行、パラメーター付き実行、開発環境でのスモークテストの実行モード間でスケジューリングパラメーターの値割り当てロジックに違いはありますか?」をご参照ください。
SQL 文を保存して実行します。
上部のツールバーで、
アイコンをクリックして SQL 文を保存します。次に、
アイコンをクリックして SQL 文を実行します。オプション。スモークテストを実行します。
タスクをコミットする際、またはタスクをコミットした後に、タスクが想定どおりに実行されるかどうかを確認するために、開発環境でタスクのスモークテストを実行できます。詳細については、「スモークテストを実行する」をご参照ください。
手順 5:タスクを送信する
ノードのタスクが設定されたら、タスクをコミットしてデプロイする必要があります。タスクをコミットしてデプロイすると、システムはスケジューリング設定に基づいてタスクを定期的に実行します。
上部のツールバーの
アイコンをクリックして、タスクを保存します。上部のツールバーの
アイコンをクリックして、タスクをコミットします。[送信] ダイアログボックスで、[変更の説明] パラメーターを設定します。次に、タスクをコミットした後にタスクコードを確認するかどうかを、ビジネス要件に基づいて決定します。
説明タスクをコミットする前に、[プロパティ] タブで [再実行] パラメーターと [親ノード] パラメーターを設定する必要があります。
コードレビュー機能を使用して、タスクのコード品質を確保し、無効なタスクコードによって発生するタスク実行エラーを防ぐことができます。コードレビュー機能を有効にすると、コミットされたタスクコードは、コードレビューに合格した後でのみデプロイできます。詳細については、「コードレビュー」をご参照ください。
標準モードのワークスペースを使用する場合は、タスクをコミットした後に、実稼働環境にタスクをデプロイする必要があります。ノードのタスクをデプロイするには、ノードの設定タブの右上隅にある [デプロイ] をクリックします。詳細については、「ノードをデプロイする」をご参照ください。
手順 6:操作ログを表示する
タスクをコミットしてデプロイすると、スケジューリング設定に基づいてタスクが定期的に実行されます。対応するノードの設定タブの右上隅にある [オペレーションセンター] をクリックしてオペレーションセンターに移動し、タスクのスケジューリングステータスを表示できます。詳細については、「自動トリガーノードを表示および管理する」をご参照ください。
方法 2:スクリプトタスクを作成し、ジョブスケジューリングを設定する
手順 1:スケジューリング専用の排他的リソースグループを作成する
DataWorks コンソールでスケジューリング専用の排他的リソースグループを作成します。詳細については、「データ統合専用の排他的リソースグループを作成する」をご参照ください。
手順 2:排他的リソースグループをワークスペースに関連付ける
排他的リソースグループをワークスペースに関連付けます。このようにして、ジョブを送信するときにワークスペースでリソースグループを選択できます。詳細については、「手順 2:スケジューリング専用の排他的リソースグループをワークスペースに関連付ける」をご参照ください。
手順 3:DLC パッケージをインストールする
パッケージをインストールするには、テクニカルサポートに連絡して必要な権限を取得してください。
コマンドを作成する
DataWorks コンソール にログインします。左側のナビゲーションウィンドウで、[リソースグループ] をクリックします。 [リソースグループ] ページに [排他的リソースグループ] タブが表示されます。
[データスケジューリング] 排他的リソースグループを見つけます。 [アクション] 列の
アイコンをクリックし、[O&M アシスタント] をクリックします。[O&M アシスタント] ページで、[コマンドの作成] をクリックします。次の主要パラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[コマンドタイプ]
コマンドのタイプ。[手動インストール] を選択します。
[コマンドコンテンツ]
コマンドの内容。次の内容を入力します。
wget -P /home/admin/usertools/tools/ https://dlc-release.oss-cn-zhangjiakou.aliyuncs.com/console/public/latest/dlc --no-check-certificate chmod +x /home/admin/usertools/tools/dlc[インストールディレクトリ]
インストールに使用するディレクトリ。コマンドを /home/admin/usertools/tools/ ディレクトリに保存します。
[タイムアウト]
コマンドのタイムアウト期間。単位:秒。コマンドがタイムアウトした場合、システムはコマンドを強制的に停止します。パラメーターを 60 に設定することをお勧めします。
コマンドを実行する。
O&M Assistant ページで、コマンドを見つけ、[アクション] 列の [コマンドの実行] をクリックします。

[コマンドの実行] パネルで、[実行] をクリックします。
コマンドの実行結果を表示する。
[O&M アシスタント] ページで、コマンドを見つけ、[アクション] 列の [結果の表示] をクリックします。

[コマンドの実行結果] ダイアログボックスで、コマンドの実行結果を表示します。実行の進捗状況が 100% の場合、DLC パッケージはインストールされています。

手順 4:ワークフローを作成する
DataStudio ページに移動します。
DataWorks コンソール にログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
ポインターを
アイコンの上に移動し、 を選択します。[ノードの作成] ダイアログボックスで、[名前] パラメーターと [パス] パラメーターを設定します。[確認] をクリックして、ノードを作成します。
手順 5:テストのためにジョブを送信する
特定の時点でジョブの自動送信を設定するには、ジョブノードが必要です。ジョブを送信する前に、初期ジョブノードを作成し、ノードでスモークテストを実行します。初期ノードが使用可能な場合は、手順 6 に進みます。
デプロイメントスクリプトを変更する。
ワークフローのタブで、作成した Shell ノードをダブルクリックします。この例では、[デプロイメント] ノードをダブルクリックします。
Shell ノードタブで、次のコマンドを入力します。
# ジョブ記述ファイルを生成します。 cat << EOF > jobfile name=dataworks-job workers=1 worker_spec=ecs.g6.large worker_image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/pytorch-training:1.7.1-gpu-py37-cu110-ubuntu18.04 command=echo $(date) EOF # ジョブを送信します。 /home/admin/usertools/tools/dlc submit pytorchjob\ --access_id=<access_id> \ --access_key=<access_key> \ --endpoint=pai-dlc.cn-hangzhou.aliyuncs.com \ --region=cn-hangzhou \ --job_file=./jobfile \ --interactivejobfile はジョブ記述ファイルを示します。ジョブ設定の詳細については、「ジョブの送信に使用されるコマンド」をご参照ください。ジョブをデプロイするリージョンに基づいて endpoint パラメーターを設定する必要があります。
リージョン
エンドポイント
中国(上海)
pai-dlc.cn-shanghai.aliyuncs.com
中国(北京)
pai-dlc.cn-beijing.aliyuncs.com
中国(杭州)
pai-dlc.cn-hangzhou.aliyuncs.com
中国(深圳)
pai-dlc.cn-shenzhen.aliyuncs.com
中国(香港)
pai-dlc.cn-hongkong.aliyuncs.com
シンガポール
pai-dlc.ap-southeast-1.aliyuncs.com
マレーシア(クアラルンプール)
pai-dlc.ap-southeast-3.aliyuncs.com
ドイツ(フランクフルト)
pai-dlc.eu-central-1.aliyun.cs.com
スクリプトを実行する。
Shell ノードタブの上部にある
アイコンをクリックします。[警告] メッセージで、[実行を続行] をクリックします。
[ランタイムパラメーター] ダイアログボックスで、[リソースグループ] パラメーターを作成した排他的リソースグループに設定します。
次に、[OK] をクリックします。
スクリプトが実行されると、ジョブが生成されます。デフォルトのワークスペースの DLC ページに移動して、生成されたジョブを表示できます。
手順 6:ジョブスケジューリングを実行する
スケジューリングジョブを実行する。
Shell ノードタブの右側にあるウィンドウで、[プロパティ] タブをクリックします。
[プロパティ] ページの [スケジュール] セクションで、[スケジューリングサイクル] パラメーターと [再実行] パラメーターを設定します。
[依存関係] セクションで、[親ノード] フィールドの横にある [ルートノードを使用] をクリックします。
依存関係を設定します。詳細については、「同じサイクルのスケジューリング依存関係を設定する」をご参照ください。
Shell ノードタブで、
アイコンをクリックして設定を保存します。Shell ノードタブで、
アイコンをクリックして、スケジュールされたノードをコミットします。
スケジューリングノードのインスタンスを表示する。
Shell ノードタブの右上隅にある [オペレーションセンター] をクリックします。
[オペレーションセンター] ページで、 を選択します。
インスタンスリストページで、[スケジュール] 列にジョブの自動送信のスケジュール済み時刻が表示されます。
[アクション] 列で、 を選択して、スケジュールされた各ジョブ送信の操作ログを表示します。
参考文献
PAI コンソールで送信された DLC ジョブを表示および管理できます。