トレーニングと推論のコロケーションでは、同一の GPU クラスター上で推論サービスとトレーニングジョブを実行します。親子リソースクォータのプリエンプションメカニズムにより、推論サービスはトレーニングリソースを自動的にプリエンプトします。Elastic Algorithm Service (EAS) のスケジュールされた自動スケーリングと Deep Learning Containers (DLC) のアイドルコンピューティングリソースを組み合わせることで、クラスターは日中は推論を優先し、夜間はトレーニングを実行し、GPU を常にフル稼働させます。
背景情報
シナリオ例
3 つのチームが共有する 128 GPU クラスターがあると仮定します。
チーム A は推論サービスを実行し、最も高いリソース優先度があります。
チーム B とチーム C はモデルトレーニングを実行し、優先度は推論よりも低くなります。
チーム A がより多くの推論リソースを必要とする場合、システムはチーム B とチーム C からトレーニングリソースを自動的に回収します。
日中は、EAS がスケールアップして推論トラフィックを処理します。夜間は、EAS がスケールダウンして GPU を解放し、トレーニングジョブが自動的に開始されます。
チーム B とチーム C は、互いに干渉することなく、独立してリソースとジョブを管理します。
仕組み
EAS 推論サービスは親クォータにデプロイされ、DLC トレーニングジョブはサブクォータにデプロイされます。推論サービスがより多くのリソースを必要とする場合、システムはトレーニングリソースを自動的にプリエンプトします。EAS のスケジュールされた自動スケーリング (日中はスケールアップ、夜間はスケールダウン) と DLC のアイドルコンピューティングリソース (夜間の予備コンピューティングをトレーニングに使用) を組み合わせることで、手動操作は不要です。
このシナリオを実装するには、次の手順を実行します。
128 GPU の Quota 1 を作成し、子レベルのコンピューティングプリエンプション スイッチを有効にします。Quota 1 の下に、2 つのサブクォータを作成します。Quota 1.1 (48 GPU) と Quota 1.2 (80 GPU) です。
チーム A 用に workspace_a を作成し、Quota 1 にバインドします。Quota 1 に EAS 推論サービスをデプロイし、スケジュールされた自動スケーリングを設定します。
チーム B 用に workspace_b を作成し、Quota 1.1 にバインドします。Quota 1.1 に DLC トレーニングジョブを作成し、アイドルコンピューティングリソースを有効にします。
チーム C 用に workspace_c を作成し、Quota 1.2 にバインドします。開発用に Quota 1.2 に Data Science Workshop (DSW) インスタンスを作成します。
操作手順
AI コンピューティングリソース (汎用コンピューティングリソースまたは Lingjun AI コンピューティングリソース) を準備します。汎用リソースプールは、EAS、DLC、DSW を同時にサポートするためにバージョン 2.0 であることが必要です。詳細については、「リソースプールの概要」をご参照ください。
[リソースクォータの追加]。
次の主要なパラメータを使用して Quota 1 を作成します。詳細については、「リソースクォータの作成」または「汎用コンピューティングリソースクォータ」をご参照ください。
リソース (128 GPU) を選択します。
子レベルのプリエンプション スイッチを有効にします。有効にすると、親クォータの EAS 推論サービスが子クォータのトレーニングリソースをプリエンプトできるようになります。
クォータ 1 の 操作 列で、子リソースクォータの作成 をクリックして、2 つのサブクォータを作成します。詳細については、「親子クォータを作成する」をご参照ください。
Quota 1.1:48 GPU
Quota 1.2:80 GPU
3 つのワークスペースを作成し、それぞれを対応するクォータにバインドします。詳細については、「ワークスペースの作成と管理」をご参照ください。
チーム A:workspace_a、Quota 1 にバインド
チーム B:workspace_b、Quota 1.1 にバインド
チーム C:workspace_c、Quota 1.2 にバインド
Quota 1 に EAS 推論サービスを作成し、スケジュールされた自動スケーリングを設定します。詳細については、「サービスのデプロイ」をご参照ください。
スケジュールされた自動スケーリングルールを次のように設定します。
午前 8 時に目標レプリカ数までスケールアップして、日中の推論トラフィックを処理します。
午後 10 時にゼロまたは最小限のレプリカ数にスケールダウンして、トレーニングジョブ用に GPU を解放します。
詳細な設定については、「スケジュールされた自動スケーリング」をご参照ください。
サブクォータに DLC トレーニングジョブまたは DSW インスタンスを作成し、アイドルコンピューティングリソースを有効にします。詳細については、「トレーニングジョブの作成」をご参照ください。
アイドルコンピューティングリソースを有効にすると、トレーニングジョブはクォータ制限を超えた予備コンピューティングを使用できます。夜間に EAS によって解放された GPU は、トレーニングジョブに自動的に割り当てられます。
詳細な設定については、「アイドルコンピューティングリソースの使用」をご参照ください。
チーム A、B、C にワークスペース管理者権限を付与します。ワークスペース設定の詳細については、「ワークスペースの設定」をご参照ください。ロール定義については、「ロールと権限」をご参照ください。
ユースケース
推論用のトレーニングリソースのプリエンプション
リソースクォータ ページで、 Quota 1 をクリックし、[概要] タブで、[子レベルのコンピューティングプリエンプション] スイッチを有効にします。
チーム A の推論サービスが利用可能なリソースよりも多くのリソースを必要とする場合、システムはチーム B とチーム C からトレーニングリソースを自動的に回収します。
チームBとチームC間のリソースの再配分
チームの要件に基づいて、Quota 1.1 と Quota 1.2 のリソースを調整します。[リソースクォータ] ページで Quota 1.1 または Quota 1.2 を見つけて、[Actions] 列の [Scale] をクリックします。詳細については、「クォータのスケーリング」をご参照ください。
Quota 1.1 を 48 GPU から 56 GPU にスケールします (8 GPU を追加)。
Quota 1.2 を 80 GPU から 72 GPU にスケールします (8 GPU を削除)。
チームBとチームC間の権限の分離
Quota 1.1 は workspace_b にバインドされ、Quota 1.2 は workspace_c にバインドされます。チーム B とチーム C は、それぞれのワークスペース内でリソースとジョブを独立して管理します。詳細については、「ワークスペーススケジューリングセンター」をご参照ください。
リソース使用ロールを設定するには、[ワークスペース設定] ページで [スケジューリング設定] タブをクリックします。[リソース使用] セクションで、対象クォータの [許可されたロール] を選択し、[+ Add] をクリックして設定エントリを追加してから、[Save] をクリックします。