Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。

Amazon SageMaker 異種クラスターを使用して、モデル トレーニングのコスト パフォーマンスを向上させます

この投稿は、Mobileye の Chaim Rand と共同で書かれています。

コンピューター ビジョン モデルのトレーニングや強化学習などの特定の機械学習 (ML) ワークロードでは、多くの場合、ニューラル ネットワーク モデル トレーニングの GPU またはアクセラレータを集中的に使用するタスクと、画像拡張などのデータ前処理の CPU を集中的に使用するタスクを組み合わせます。 両方のタイプのタスクが同じインスタンス タイプで実行されると、データの前処理が CPU でボトルネックになり、GPU 使用率が低下します。 この問題は、新しい世代の GPU のスループットが CPU のスループットよりも急速に増加するにつれて、時間とともに悪化します。

この問題に対処するため、2022 年 XNUMX 月に 打ち上げ の異種クラスタ アマゾンセージメーカー モデル トレーニング。これにより、XNUMX つのジョブでさまざまなインスタンス タイプを使用するトレーニング ジョブを起動できます。 これにより、データ前処理パイプラインの一部をオフロードして、 コンピューティング最適化 ディープ ニューラル ネットワーク (DNN) タスクは引き続き実行されます。 GPU またはアクセラレーテッド コンピューティング インスタンスタイプ。 CPU バウンドの TensorFlow コンピュータ ビジョン モデル トレーニングで異種クラスタを有効にした後、当社のベンチマークは最大 46% のコスト パフォーマンスのメリットを示しています。

同様の使用例については、 Mobileye自動運転車技術の開発会社である は、次のように共有しました。

「CPU バウンドのディープ ラーニング コンピューター ビジョン モデルのトレーニングを複数のインスタンス タイプ (CPU および GPU/ML アクセラレーター) で実行するように移動することにより、 tf.data.service 私たちが構築したソリューションに基づいて、トレーニングにかかる​​時間を 40% 短縮し、トレーニングのコストを 30% 削減することができました。 Amazon SageMaker でこのソリューションを実行できる異種クラスターに興奮しています。」

— AI エンジニアリング、モービルアイ

この投稿では、次のトピックについて説明します。

  • 異種クラスターが CPU ボトルネックの解消にどのように役立つか
  • 異種クラスターをいつ使用するか、およびその他の代替手段
  • PyTorch と TensorFlow の参照実装
  • パフォーマンスベンチマークの結果
  • Mobileye の異種クラスター

AWSの 高速化されたコンピューティング インスタンス ファミリには、AWS カスタム チップのアクセラレータが含まれています (AWSインフェレンティア, AWS トレーニング)、NVIDIA(GPU)、及び ガウディ アクセラレータ Habana Labs (インテルの会社) から。 この投稿では、GPU とアクセラレータという用語を同じ意味で使用していることに注意してください。

異種クラスターがデータ処理のボトルネックを解消する方法

ディープ ラーニング モデルをトレーニングするデータ サイエンティストは、トレーニングのコスト効率を最大化し、トレーニング時間を最小限に抑えることを目指しています。 これを達成するための基本的な最適化の目標の XNUMX つは、GPU の使用率を高くすることです。 アマゾン エラスティック コンピューティング クラウド (Amazon EC2) インスタンス。 これは、従来の GPU を多用するニューラル ネットワーク モデルの順方向および逆方向の伝播と、コンピューター ビジョンでのデータ処理や拡張、強化学習での環境シミュレーションの実行など、CPU を多用するタスクを組み合わせた ML ワークロードでは、より困難になる可能性があります。 これらのワークロードは最終的に CPU バウンドになる可能性があり、既存のアクセラレータが部分的にアイドル状態になるため、より多くの CPU を使用するとスループットが向上し、トレーニングが高速かつ安価になります。 場合によっては、CPU:GPU の比率が高い別のインスタンス タイプに切り替えることで、CPU のボトルネックを解決できます。 ただし、インスタンスファミリーのアーキテクチャ、ストレージ、またはネットワークの依存関係が原因で、別のインスタンスタイプに切り替えることができない場合があります。

このような状況では、インスタンス タイプを混合することによって CPU パワーの量を増やす必要があります: GPU を備えたインスタンスと CPU を一緒に使用します。 合計すると、全体的に CPU:GPU の比率が高くなります。 最近まで、SageMaker トレーニング ジョブは、選択された XNUMX つのインスタンス タイプのインスタンスを持つことに限定されていました。 SageMaker の異種クラスターを使用すると、データ サイエンティストは複数のインスタンス タイプでトレーニング ジョブを簡単に実行できます。これにより、既存の CPU タスクの一部を GPU インスタンスから専用のコンピューティング最適化 CPU インスタンスにオフロードできるため、GPU の使用率が高くなり、高速でコストが高くなります。効率的なトレーニング。 さらに、追加の CPU パワーにより、トレーニングの前段階として従来オフラインで実行されていた前処理タスクをトレーニング ジョブの一部にすることができます。 これにより、データの前処理と DNN トレーニングの仮定とハイパーパラメーターの両方の反復と実験が高速化されます。

たとえば、強力な GPU インスタンス タイプ ml.p4d.24xlarge (96 vCPU、8 x NVIDIA A100 GPU)、CPU:GPU の比率は 12:1 です。 20 つの GPU を 100% 使用するのに十分なデータを前処理するために、トレーニング ジョブで 8 個の vCPU が必要であるとします。 したがって、100 つの GPU すべてを 160% 使用するには、4 個の vCPU インスタンス タイプが必要です。 ただし、次の図の左側に示されているように、ml.p24d.64xlarge は 40 個の vCPU、つまり 60% に満たないため、GPU 使用率は 4% に制限されます。 別の ml.p24d.XNUMXxlarge インスタンスを追加すると効果がありますか? いいえ、ジョブの CPU:GPU 比率は変わらないためです。

異種クラスターでは、図の右側に示すように、5.18 つの ml.c72xlarge (210 vCPU) を追加できます。 このクラスターの正味の合計 vCPU は 96 (2+72*30) で、CPU:GPU の比率は 1:5.18 になります。 これらのコンピューティング最適化インスタンスのそれぞれは、データ前処理の CPU 集中型タスクでオフロードされ、GPU を効率的に使用できるようになります。 ml.cXNUMXxlarge の追加コストにもかかわらず、GPU 使用率が高いほど処理が高速になり、価格パフォーマンスのメリットが高くなります。

異種クラスターをいつ使用するか、およびその他の代替手段

このセクションでは、CPU のボトルネックを特定する方法を説明し、インスタンス タイプのスケールアップと異種クラスターを使用して解決する方法について説明します。

CPU のボトルネックを特定する簡単な方法は、CPU と GPU を監視することです 使用率指標 での SageMaker トレーニングジョブの場合 アマゾンクラウドウォッチ. これらのビューには、 AWSマネジメントコンソール トレーニング ジョブ ページのインスタンス メトリック ハイパーリンク内。 関連するメトリックを選択し、5 分から 1 分の解像度に切り替えます。 スケールは vCPU または GPU ごとに 100% であるため、4 つの vCPU/GPU を持つインスタンスの使用率は 400% に達する可能性があることに注意してください。 次の図は、CloudWatch メトリクスからのそのような例の 100 つであり、CPU が約 XNUMX% 使用されており、CPU のボトルネックを示していますが、GPU は十分に使用されていません。

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。

詳細な診断を行うには、トレーニング ジョブを実行します。 Amazon SageMakerデバッガ SageMaker Python SDK を使用して SageMaker エスティメーターを構築するときにプロファイラー構成を追加することにより、リソース使用状況、統計、およびフレームワーク操作をプロファイリングします。 トレーニング ジョブを送信したら、結果を確認します。 プロファイラ レポート CPUのボトルネックに。

より高い CPU:GPU コンピューティング比率がジョブにメリットをもたらす可能性があると結論付けた場合は、まず、同じインスタンス ファミリー内の別のインスタンス タイプにスケールアップすることを検討してください (利用可能な場合)。 たとえば、モデルを ml.g5.8xlarge (32 個の vCPU、1 GPU) でトレーニングしている場合は、ml.g5.16xlarge (64 個の vCPU、1 GPU) にスケールアップすることを検討してください。 または、マルチ GPU インスタンス ml.g5.12xlarge (48 個の vCPU、4 個の GPU) を使用してモデルをトレーニングしている場合は、ml.g5.24xlarge (96 個の vCPU、4 個の GPU) にスケールアップすることを検討してください。 を参照してください。 G5 詳細については、インスタンス ファミリーの仕様を参照してください。

同じインスタンス ファミリーに vCPU:GPU の比率が高いインスタンス タイプがないため、スケールアップができない場合があります。 たとえば、ml.trn1.32xlarge、ml.p4d.24xlarge、または ml.g5.48xlarge の場合、SageMaker モデルのトレーニングには異種クラスターを検討する必要があります。

スケールアップ以外にも、NVIDIA のような異種クラスターの代替手段があることに注意してください。 DALIこれにより、画像の前処理が GPU にオフロードされます。 詳細については、次を参照してください。 TensorFlow Data Service、NVIDIA DALI、およびその他の方法でデータ前処理のボトルネックを克服する.

意思決定を簡素化するには、次のフローチャートを参照してください。

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。

SageMaker 異種クラスターの使用方法

すぐに開始するには、この投稿の一部として提供されている TensorFlow または PyTorch の例に直接ジャンプできます。

このセクションでは、SageMaker 異種クラスターの使用方法を簡単な例で説明します。 SageMaker Python SDK と Estimator クラスを使用してモデルをトレーニングする方法を既に知っていることを前提としています。 そうでない場合は、参照してください SageMaker Python SDK の使用 続行する前に

この機能の前に、トレーニング ジョブの Estimator クラスを InstanceCount InstanceType パラメーターは、単一のインスタンス タイプ (同種のクラスター) しかないことを暗黙的に想定しています。 異種クラスターのリリースに伴い、新しい sagemaker.instance_group.InstanceGroup クラス。 これは、論理的な役割 (データ処理やニューラル ネットワークの最適化など) を担うように設計された、特定のインスタンス タイプの XNUMX つ以上のインスタンスのグループを表します。タイプ、および各インスタンス グループのインスタンスの数。詳細については、を参照してください。 SageMaker Python SDK の使用 & 低レベル SageMaker API の使用.

インスタンス グループを定義したら、SageMaker を読み取るようにトレーニング スクリプトを変更する必要があります。 トレーニング環境情報 これには、異種クラスター構成が含まれます。 構成には、現在のインスタンス グループ、各グループ内の現在のホスト、および現在のホストが存在するグループとそのランキングなどの情報が含まれています。 トレーニング スクリプトにロジックを構築して、インスタンス グループを特定のトレーニングおよびデータ処理タスクに割り当てることができます。 さらに、トレーニング スクリプトは、インスタンス間のグループ通信または分散データ ロード メカニズムを処理する必要があります (たとえば、 tf.data.service TensorFlow またはジェネリックで gRPC クライアント サーバー) またはその他のフレームワーク (たとえば、 Apache Spark).

異種トレーニング ジョブを起動し、実行時に環境構成を読み取る簡単な例を見てみましょう。

  1. トレーニング ジョブを定義して起動するとき、SageMaker エスティメータへの引数として使用される XNUMX つのインスタンス グループを設定します。
    from sagemaker.instance_group import InstanceGroup
    data_group = InstanceGroup("data_group", "ml.c5.18xlarge", 2)
    dnn_group = InstanceGroup("dnn_group", "ml.p4d.24xlarge", 1)
    
    from sagemaker.pytorch import PyTorch
    estimator = PyTorch(...,
        entry_point='launcher.py',
        instance_groups=[data_group, dnn_group]
    )
  2. エントリ ポイント トレーニング スクリプト (名前は launcher.py)、異種クラスター構成を読み取り、インスタンスが前処理または DNN コードを実行するかどうかを判断します。
    from sagemaker_training import environment
    env = environment.Environment()
    if env.current_instance_group == 'data_group': ...;

これで、SageMaker があなたに代わって行うタスクと、あなたが担当するタスクを要約しましょう。

SageMaker は次のタスクを実行します。

  1. インスタンス グループの定義に従って、さまざまなインスタンス タイプをプロビジョニングします。
  2. すべてまたは特定のインスタンス グループで入力チャネルをプロビジョニングします。
  3. トレーニング スクリプトと依存関係をインスタンスに配布します。
  4. 定義されている場合は、特定のインスタンス グループで MPI クラスターをセットアップします。

次のタスクを担当します。

  1. 開始トレーニング ジョブ スクリプトを変更して、インスタンス グループを指定します。
  2. 分散データ パイプラインを実装します (たとえば、 tf.data.service).
  3. エントリ ポイント スクリプトを変更します ( launcher.py ノートブックの例では) すべてのインスタンスで実行される単一のエントリ ポイントになり、それが実行されているインスタンス グループを検出し、関連する動作 (データ処理や DNN 最適化など) をトリガーします。
  4. トレーニング ループが終了したら、すべてのインスタンス グループのすべてのインスタンスでエントリ ポイント プロセスが終了していることを確認する必要があります。 SageMaker はすべてのインスタンスの処理が完了するのを待ってからジョブを完了としてマークし、請求を停止するため、これは重要です。 の launcher.py TensorFlow および PyTorch サンプル ノートブックのスクリプトは、DNN グループ インスタンスが作業を終了したときに終了するシグナリング データ グループ インスタンスの参照実装を提供します。

SageMaker 異種クラスターのノートブックの例

このセクションでは、 ノートブックの例 TensorFlow と PyTorch ML フレームワークの両方。 ノートブックには、実装の詳細、コードのしくみに関するウォークスルー、トレーニング スクリプトで再利用できるコード スニペット、フロー図、およびコスト比較分析があります。

どちらの例でも、モデルが意味のある方法で収束するとは思わないでください。 私たちの目的は、エポック/ステップ時間で表されるデータ パイプラインとニューラル ネットワークの最適化スループットを測定することだけです。 ワークロードに見合った価格パフォーマンスのメリットを生み出すには、独自のモデルとデータセットでベンチマークする必要があります。

tf.data.service ベースの分散データ ローダー (TensorFlow) を使用する異種クラスター

この ノート TensorFlow の tf.data.service ベースの分散データ パイプライン。 ディープ ラーニング コンピューター ビジョン モデルをトレーニングします レスネット50 これには、CPU を集中的に使用するデータ拡張が必要です。 それは使用しています ホーヴォド マルチ GPU 分散データ並列処理用。

ワークロードを 4 つの構成で実行します。最初は同種クラスター、単一の ml.p24d.XNUMXxlarge インスタンスとして、標準を使用します。 tf.data GPU 使用率の低下につながる CPU ボトルネックを示すパイプライン。 XNUMX 回目の実行では、SageMaker 異種クラスターを使用して、単一のインスタンス タイプから XNUMX つのインスタンス グループに切り替えます。 この実行により、一部のデータ処理が追加の CPU インスタンスにオフロードされます ( tf.data.service).

次に、同種構成と異種構成を比較し、主要な価格性能比の利点を見つけます。 次の表に示すように、異種ジョブ (86 ミリ秒/ステップ) は、同種ジョブ (2.2 ミリ秒/ステップ) よりもトレーニングが 192 倍速く、モデルのトレーニングが 46% 安くなります。

例 1 (TF) ml.p4d.24xl ml.c5.18xl 時間あたりの料金* 平均ステップ時間 ステップあたりのコスト 価格パフォーマンスの向上
1 0 $37.688 192ミリ秒 $0.201 .
不均一 1 2 $45.032 86ミリ秒 $0.108 視聴者の38%が

* 1 時間あたりの料金は us-east-XNUMX に基づいています SageMaker オンデマンド料金

この高速化は、データ グループによって提供される追加の vCPU と、より高速な前処理を利用することによって可能になります。 を参照してください ノート 詳細とグラフについては。

gRPC クライアント サーバー ベースの分散データ ローダー (PyTorch) を使用する異種クラスター

この ノート gRPC クライアント サーバー ベースの分散データ ローダーを使用した SageMaker トレーニング用の異種クラスターを使用したサンプル ワークロードを示します。 この例では、単一の GPU を使用します。 以下に基づいて PyTorch モデルを使用します。 公式MNISTの例. トレーニング コードは、データの前処理が重くなるように変更されています。 このモデルを同種クラスタ モードと異種クラスタ モードの両方でトレーニングし、価格性能比を比較します。

この例では、ワークロードが複数の GPU の恩恵を受けることができず、特定の GPU アーキテクチャ (NVIDIA V60)。 同種のトレーニング ジョブと異種のトレーニング ジョブの両方を実行し、次の表に示すように、主なコスト パフォーマンスの利点を発見しました。 異種ジョブ (1.19 秒/ステップ) は、同種ジョブ (6.5 秒/ステップ) よりもトレーニングが 0.18 倍速く、モデルのトレーニングが 77% 安くなります。

例 2 (PT) ml.p3.2xl ml.c5.9xl 時間あたりの料金* 平均ステップ時間 ステップあたりのコスト 価格パフォーマンスの向上
1 0 $3.825 1193ミリ秒 $0.127 .
不均一 1 1 $5.661 184ミリ秒 $0.029 視聴者の38%が

* 1 時間あたりの料金は us-east-XNUMX に基づいています SageMaker オンデマンド料金

これが可能になるのは、CPU 数が多い場合、32 個のデータ ローダー ワーカー (ml.p8xlarge では 3.2 個) を使用してデータを前処理し、頻繁に GPU を 100% 近く使用できるためです。 を参照してください ノート 詳細とグラフについては。

Mobileye の異種クラスター

Intel 傘下の Mobileye は、運輸業界に革命をもたらし、道路をより安全にし、人命を救うことを目標に、先進運転支援システム (ADAS) と自動運転車の技術を開発しています。 これらのテクノロジーは、SageMaker を使用してトレーニングされた高度なコンピューター ビジョン (CV) モデルを使用して実現されます。 Amazon シンプル ストレージ サービス (アマゾン S3)。 これらのモデルは、最先端のディープ ラーニング ニューラル ネットワーク技術を使用しています。

当社の CV モデルの 2 つで、CPU のボトルネックは主に、十分に活用されていない GPU につながる大量のデータ前処理が原因であることに気付きました。 この特定のワークロードについて、代替ソリューションの検討を開始し、ECXNUMX インスタンスに基づく異種クラスターを使用した分散データ パイプライン テクノロジを評価し、両方のリファレンス実装を考え出しました。 TensorFlow & パイトーチ. SageMaker 異種クラスターのリリースにより、SageMaker でこれと同様のワークロードを実行して、価格パフォーマンスの利点を向上させることができます。

考慮事項

異種クラスター機能の開始により、SageMaker は、トレーニングジョブ内でインスタンスタイプを組み合わせたり一致させたりする際の柔軟性を大幅に向上させます。 ただし、この機能を使用する場合は、次の点を考慮してください。

  • 異種クラスター機能は、SageMaker を通じて利用できます パイトーチ & TensorFlow フレームワーク推定クラス。 サポートされているフレームワークは、PyTorch v1.10 以降および TensorFlow v2.6 以降です。
  • すべてのインスタンス グループが同じ Docker イメージを共有します。
  • すべてのインスタンス グループは、同じトレーニング スクリプトを共有します。 したがって、トレーニング スクリプトを変更して、所属するインスタンス グループを検出し、それに応じて fork を実行する必要があります。
  • トレーニング インスタンスのホスト名 (たとえば、alog-1、algo-2 など) はランダムに割り当てられ、それらが属するインスタンス グループを示しません。 インスタンスのロールを取得するには、実行時にインスタンス グループのメンバーシップを取得することをお勧めします。 これは、ログインを確認するときにも関係します クラウドウォッチ、ログ ストリーム名 [training-job-name]/algo-[instance-number-in-cluster]-[epoch_timestamp] ホスト名があります。
  • 分散トレーニング戦略 (通常は MPI クラスター) は、XNUMX つのインスタンス グループにのみ適用できます。
  • セージメーカー マネージド ウォーム プール と SageMaker ローカルモード 現在、異種クラスター トレーニングでは使用できません。

まとめ

この投稿では、SageMaker トレーニングの異種クラスター機能をいつ、どのように使用するかについて説明しました。 実際のユース ケースで 46% のコスト パフォーマンスの向上を実証し、分散データ ローダーをすぐに使い始めることができました (tf.data.service および gRPC クライアント サーバー) の実装。 これらの実装は、既存のトレーニング スクリプトの最小限のコード変更で使用できます。

始めるには、私たちを試してみてください ノートブックの例. この機能の詳細については、次を参照してください。 異種クラスターを使用したトレーニング.


著者について

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。ギリナチュム は、EMEAのAmazonMachineLearningチームの一員として働くシニアAI/MLスペシャリストソリューションアーキテクトです。 Giliは、ディープラーニングモデルのトレーニングの課題と、機械学習が世界をどのように変えているかについて情熱を注いでいます。 暇なときは、ギリは卓球を楽しんでいます。

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。フルシケシ ガングル ML トレーニングと AWS ネットワーキングの両方の専門知識を持つ AI/ML スタートアップの主要なソリューション アーキテクトです。 彼は、自律走行車、ロボティクス、CV、NLP、MLOps、ML プラットフォーム、ロボティクス プロセス オートメーション テクノロジーのスタートアップが AWS で効率的かつ効果的にビジネスを運営するのを支援しています。 AWS に入社する前は、Hrushikesh は主にクラウドおよびデータ プラットフォームに関する 20 年以上の業界経験を積んでいました。

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。ギャルおしり Amazon SageMaker チームのシニアプロダクトマネージャーです。 彼は、機械学習のツール、フレームワーク、およびサービスに 7 年間取り組んできた経験があります。

Amazon SageMaker 異種クラスター PlatoBlockchain Data Intelligence を使用して、モデルトレーニングのコストパフォーマンスを向上させます。垂直検索。あい。チャイムランド Intel Company の Mobileye で自動運転車ソリューションのディープラーニングとコンピューター ビジョン テクノロジに取り組んでいる機械学習アルゴリズムの開発者です。 彼をチェックしてください ブログ.

タイムスタンプ:

より多くの AWS機械学習