Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ | アマゾン ウェブ サービス

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ | アマゾン ウェブ サービス

2021年に、 AWS サポート プロアクティブ サービス の一部として AWSエンタープライズサポート プラン。 導入以来、私たちは何百ものお客様のワークロードの最適化、ガードレールの設定、機械学習 (ML) ワークロードのコストと使用状況の可視性の向上を支援してきました。

この一連の投稿では、コストの最適化について学んだ教訓を共有します。 アマゾンセージメーカー。 この投稿では、を使用したデータの前処理に焦点を当てます。 Amazon SageMaker処理 および AmazonSageMakerデータラングラー

データの前処理は、データ中心の AI アプローチにおいて極めて重要な役割を果たします。 ただし、ML のトレーニングと評価用に生データを準備することは、多くの場合、コンピューティング リソース、時間、人的労力の点で退屈で困難な作業です。 データの準備は通常、さまざまなソースから統合し、欠損値やノイズのある値、外れ値などに対処する必要があります。

さらに、ML チームは、一般的な抽出、変換、読み込み (ETL) タスクに加えて、データを評価し、MLOps パイプラインの一部として特徴重要度スコアやトレーニング後のモデル評価を生成するためのクイック モデルの作成など、より高度な機能を必要とすることがあります。

SageMaker は、これらの問題を解決するために特別に設計された XNUMX つの機能、SageMaker Processing と Data Wrangler を提供します。 SageMaker Processing を使用すると、フルマネージドのインフラストラクチャ上で前処理、後処理、モデル評価を簡単に実行できます。 Data Wrangler は、単一のビジュアル インターフェイスと完全に分散されたデータ処理環境を使用して、データ ソースの統合と特徴エンジニアリングのプロセスを簡素化することで、データの集計と準備にかかる時間を短縮します。

どちらの SageMaker 機能も、I/O、ストレージ、および計算に関するいくつかのオプションを備えた優れた柔軟性を提供します。 ただし、これらのオプションの設定を誤ると、特に大規模なデータセットを扱う場合、不必要なコストが発生する可能性があります。

この投稿では、価格設定要因を分析し、SageMaker Processing ジョブと Data Wrangler ジョブのコスト最適化のガイダンスを提供します。

SageMakerの処理

SageMaker Processing は、データ処理とモデル評価ワークロードを実行するためのマネージド ソリューションです。 ML ワークフローでの特徴量エンジニアリング、データ検証、モデル評価、モデル解釈などのデータ処理ステップで使用できます。 SageMaker Processing を使用すると、独自のカスタム処理スクリプトを持ち込み、カスタム コンテナを構築するか、scikit-learn、Lime、Spark などの一般的なフレームワークで SageMaker 管理コンテナを使用するかを選択できます。

SageMaker Processing は、使用期間とそのインスタンスに接続されているプロビジョニングされたストレージに基づいて、選択したインスタンス タイプに対して料金を請求します。 パート 1 では、使用を開始する方法を説明しました。 AWSコストエクスプローラー SageMaker でのコスト最適化の機会を特定します。

使用量タイプにフィルターを適用することで、処理コストをフィルターできます。 これらの使用タイプの名前は次のとおりです。

  • REGION-Processing:instanceType (例えば、 USE1-Processing:ml.m5.large)
  • REGION-Processing:VolumeUsage.gp2 (例えば、 USE1-Processing:VolumeUsage.gp2)

Cost Explorer で SageMaker 処理コストを確認するには、まず SageMaker でフィルタリングして、 カスタマーサービス、および用 使用タイプを入力すると、すべての処理インスタンスの実行時間を選択できます。 processing:ml プレフィックスを入力してメニューのリストを選択します。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

処理とパイプライン開発のコストを回避する

SageMaker Processing ジョブの実行期間の適切なサイズ設定と最適化を行う前に、過去のジョブ実行に関する高レベルのメトリクスをチェックします。 これを行うには XNUMX つの方法から選択できます。

まず、次の場所にアクセスできます。 処理 SageMakerコンソールのページ。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

また、 list_processing_jobs API.

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

処理中のジョブのステータスは次のとおりです。 InProgress, Completed, Failed, Stoppingまたは Stopped.

新しい MLOps パイプラインを開発する場合、多数のジョブが失敗するのが一般的です。 ただし、使用するリソースには料金が発生するため、SageMaker でジョブを起動する前に、常にテストを行い、ジョブを検証するためにあらゆる努力を払う必要があります。 この目的のために、SageMaker Processing を使用できます。 ローカルモード。 ローカル モードは、エスティメーター、プロセッサ、パイプラインを作成し、ローカル開発環境にデプロイできるようにする SageMaker SDK の機能です。 これは、SageMaker 管理環境でスクリプトを実行する前にスクリプトをテストする優れた方法です。 ローカル モードは、SageMaker 管理のコンテナおよび自分で提供するコンテナによってサポートされています。 ローカル モードの使用方法の詳細については、 AmazonSageMakerパイプライン、 参照する ローカルモード.

I/O関連コストの最適化

SageMaker 処理ジョブは、管理されたデータ ソースの一部として XNUMX つのデータ ソースへのアクセスを提供します。 入力の処理: Amazon シンプル ストレージ サービス (Amazon S3)、 アマゾンアテナ, Amazonレッドシフト。 詳細については、を参照してください。 処理S3入力, Athenaデータセット定義, Redshiftデータセット定義それぞれ。

最適化について検討する前に、SageMaker 処理ジョブはこれらのデータ ソースをサポートしていますが、必須ではないことに注意することが重要です。 処理コードでは、アクセスするデータを任意のソースからダウンロードする任意のメソッドを実装できます (処理インスタンスがアクセスできる場合)。

処理パフォーマンスと最適化の機会を検出するためのより良い洞察を得るには、次のことをお勧めします。 ベストプラクティスのログ記録 処理スクリプト内で。 SageMaker は処理ログを次の宛先に公開します。 アマゾンクラウドウォッチ.

次のジョブ ログの例では、スクリプトの処理に 15 分かかったことがわかります ( Start custom script および End custom script).

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

ただし、SageMaker コンソールでは、ジョブにさらに 4 分 (ジョブの合計実行時間のほぼ 25%) かかったことがわかります。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

これは、処理スクリプトにかかった時間に加えて、SageMaker が管理するデータのダウンロードとアップロードにも時間がかかった (4 分) ことが原因です。 これがコストの大部分を占めることが判明した場合は、マルチプロセッシングを備えた Boto3 API を使用してファイルを同時にダウンロードしたり、サードパーティのライブラリを WebDataset または s5cmd として使用して Amazon S3 からのダウンロードを高速化するなど、ダウンロード時間を短縮する別の方法を検討してください。 。 詳細については、以下を参照してください。 s3cmd を使用した S5 ワークロードの並列化。 このような方法では、次の理由により Amazon S3 で料金が発生する可能性があることに注意してください。 データ転送.

処理ジョブもサポート パイプモード。 この方法を使用すると、SageMaker は ML ストレージ ボリュームを使用せずに、入力データをソースから処理コンテナーに直接名前付きパイプにストリーミングします。これにより、データのダウンロード時間が短縮され、ディスク ボリュームが小さくなります。 ただし、これには、単にディスク上のファイルから読み取るよりも複雑なプログラミング モデルが必要です。

前述したように、SageMaker Processing はデータ ソースとして Athena と Amazon Redshift もサポートしています。 これらのソースを使用して処理ジョブを設定すると、SageMaker はデータを Amazon S3 に自動的にコピーし、処理インスタンスが Amazon S3 の場所からデータをフェッチします。 ただし、ジョブが終了すると、管理されたクリーンアップ プロセスは存在せず、コピーされたデータは Amazon S3 に残り、不要なストレージ料金が発生する可能性があります。 したがって、Athena および Amazon Redshift データ ソースを使用する場合は、Lambda 関数などのクリーンアップ手順を必ず実装してください。 スケジュールに従って実行されます またはで ラムダステップ SageMaker パイプラインの一部として。

ダウンロードと同様に、処理成果物のアップロードも最適化の機会となる可能性があります。 処理ジョブの出力が ProcessingS3Output パラメータで指定できるのは、 S3UploadMode 使用します。 の S3UploadMode パラメータのデフォルト値は EndOfJobこれにより、ジョブの完了後に SageMaker が結果をアップロードします。 ただし、処理ジョブで複数のファイルが生成される場合は、 S3UploadMode 〜へ Continuousこれにより、処理の続行と同時に成果物のアップロードが可能になり、ジョブの実行時間が短縮されます。

適切なサイズの処理ジョブ インスタンス

適切なインスタンスのタイプとサイズを選択することは、SageMaker 処理ジョブのコストを最適化するための主要な要素です。 同じインスタンス ファミリー内の別のバージョンに移行するか、別のインスタンス ファミリーに移行することによって、インスタンスのサイズを適切に調整できます。 同じインスタンス ファミリー内で移行する場合は、CPU/GPU とメモリのみを考慮する必要があります。 適切な処理リソースの選択に関する詳細および一般的なガイダンスについては、以下を参照してください。 Amazon SageMaker で効率的なコンピューティング リソースを確保する.

インスタンスの選択を微調整するには、まず CloudWatch で処理ジョブのメトリクスを分析します。 詳細については、以下を参照してください。 Amazon CloudWatchでAmazon SageMakerを監視する.

CloudWatch は、SageMaker から生データを収集し、それを読み取り可能なほぼリアルタイムのメトリクスに処理します。 これらの統計は 15 か月間保存されますが、CloudWatch コンソールは検索を過去 2 週間に更新されたメトリクスに制限します (これにより、現在のジョブのみが表示されます)。 処理ジョブのメトリクスは /aws/sagemaker/ProcessingJobs 名前空間にあり、収集されるメトリクスは次のとおりです。 CPUUtilization, MemoryUtilization, GPUUtilization, GPUMemoryUtilization, DiskUtilization.

次のスクリーンショットは、先ほど見た処理ジョブの CloudWatch の例を示しています。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

この例では、CPU とメモリの平均値 (CloudWatch のデフォルト) が表示されます。平均 CPU 使用率は 0.04%、メモリは 1.84%、ディスク使用率は 13.7% です。 サイズを適切に設定するには、CPU とメモリの最大使用量を常に考慮してください (この例では、最初の 98 分間で最大 CPU 使用率は 3% でした)。 一般的なルールとして、CPU とメモリの最大使用量が常に 40% 未満であれば、マシンを安全に半分に削減できます。 たとえば、ml.c5.4xlarge インスタンスを使用していた場合、ml.c5.2xlarge に移行すると、コストを 50% 削減できます。

データ ラングラーのジョブ

データラングラーはの機能です Amazon SageMakerスタジオ これは、データの探索と処理のための反復可能でスケーラブルなソリューションを提供します。 Data Wrangler インターフェイスを使用して、データを対話的にインポート、分析、変換、特徴付けします。 これらのステップは、Data Wrangler ジョブで使用できるレシピ (.flow ファイル) にキャプチャされます。 これにより、同じデータ変換をデータに再適用したり、ML パイプラインの一部として、または独立して分散バッチ データ処理ジョブに拡張したりすることができます。

Studio での Data Wrangler アプリの最適化に関するガイダンスについては、このシリーズのパート 2 を参照してください。

このセクションでは、Data Wrangler ジョブの最適化に焦点を当てます。

データ ラングラーが使用するもの SageMaker Spark 処理ジョブ Data Wrangler で管理されるコンテナーを使用します。 このコンテナは、ジョブ内の .flow ファイルからの指示を実行します。 他の処理ジョブと同様に、Data Wrangler は、使用期間とそのインスタンスに接続されているプロビジョニングされたストレージに基づいて、選択したインスタンスに対して料金を請求します。

Cost Explorer では、使用量タイプにフィルターを適用することで、Data Wrangler ジョブのコストをフィルターできます。 これらの使用タイプの名前は次のとおりです。

  • REGION-processing_DW:instanceType (例えば、 USE1-processing_DW:ml.m5.large)
  • REGION-processing_DW:VolumeUsage.gp2 (例えば、 USE1-processing_DW:VolumeUsage.gp2)

Cost Explorer で Data Wrangler のコストを表示するには、SageMaker を使用するようにサービスをフィルタリングし、 使用タイプを選択してください processing_DW プレフィックスを付けてメニューのリストを選択します。 これにより、インスタンスの使用量 (時間) とストレージ ボリューム (GB) の両方に関連するコストが表示されます。 (Studio Data Wrangler のコストを確認したい場合は、使用量のタイプをフィルタリングできます。 Studio_DW プレフィックス。)

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

Data Wrangler ジョブ インスタンスの適切なサイズとスケジュールを設定する

現時点では、Data Wrangler はインスタンス サイズが ml.m5xlarge、ml.m5.4xlarge、および ml.m5.12xlarge の m5.24 インスタンスのみをサポートしています。 分散ジョブ機能を使用して、ジョブのコストを微調整できます。 たとえば、350 GiB の RAM を必要とするデータセットを処理する必要があるとします。 4xlarge (128 GiB) および 12xlarge (256 GiB) は処理できない可能性があるため、m5.24xlarge インスタンス (768 GiB) を使用することになります。 ただし、5.12 つの m2xlarge インスタンス (256 * 512 GiB = 40 GiB) を使用するとコストを 5.4% 削減でき、または 3 つの m128xlarge インスタンス (384 * 50 GiB = 5.24 GiB) を使用すると mXNUMXxlarge のコストを XNUMX% 節約できます。インスタンスのコスト。 これらは推定値であり、分散処理により、全体の実行時間に影響を与えるオーバーヘッドが発生する可能性があることに注意してください。

インスタンスタイプを変更するときは、必ず更新してください。 スパーク構成 それに応じて。 たとえば、プロパティを使用して構成された初期 ml.m5.4xlarge インスタンス ジョブがあるとします。 spark.driver.memory 2048に設定すると、 spark.executor.memory 55742 に設定し、後で ml.m5.12xlarge にスケールアップする場合は、これらの構成値を増やす必要があります。そうしないと、処理ジョブのボトルネックになります。 これらの変数は、Data Wrangler GUI または構成パスに追加された構成ファイルで更新できます (次の例を参照)。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

Data Wrangler のもう XNUMX つの魅力的な機能は、次の機能です。 スケジュールされたジョブを設定する。 データを定期的に処理している場合は、処理ジョブを自動的に実行するスケジュールを作成できます。 たとえば、新しいデータを取得したときに処理ジョブを自動的に実行するスケジュールを作成できます (例については、「 AmazonS3にエクスポートする or Amazon SageMaker 機能ストアへのエクスポート)。 ただし、スケジュールを作成すると、Data Wrangler によってスケジュールが作成されることに注意してください。 eventRule イベントブリッジで。 これは、作成したイベント ルール (および処理ジョブの実行に使用されるインスタンス) に対しても料金が発生することを意味します。 詳細については、「」を参照してください。 Amazon EventBridge の料金.

まとめ

この投稿では、前処理時のコスト分析とベスト プラクティスに関するガイダンスを提供しました。

SageMaker Processing ジョブと Data Wrangler ジョブを使用したデータ。 前処理と同様に、ML モデルの構築、トレーニング、実行には多くのオプションと構成設定があり、不必要なコストがかかる可能性があります。 したがって、機械学習が業界全体で強力なツールとしての地位を確立するにつれて、ML ワークロードはコスト効率を維持する必要があります。

SageMaker は、ML パイプラインの各ステップを容易にするための幅広く奥深い機能セットを提供します。

この堅牢性により、パフォーマンスや俊敏性を損なうことなく、継続的にコストを最適化する機会も得られます。


著者について

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。ディーパリ・ラジャレ AWS のシニア AI/ML スペシャリストです。 彼女は企業顧客と協力して、AWS エコシステムで AI/ML ソリューションをデプロイおよび維持するためのベストプラクティスに関する技術ガイダンスを提供しています。 彼女は、NLP とコンピューター ビジョンを含むさまざまな深層学習のユースケースについて、幅広い組織と協力してきました。 彼女は、組織が生成 AI を活用して使用エクスペリエンスを向上できるようにすることに情熱を注いでいます。 余暇には、映画、音楽、文学を楽しんでいます。

Amazon SageMaker の支出を分析し、使用状況に基づいてコスト最適化の機会を決定する、パート 3: 処理およびデータ ラングラー ジョブ |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。ユリ・ローゼンバーグ は、ヨーロッパ、中東、アフリカの AI および ML スペシャリスト テクニカル マネージャーです。 Uri はイスラエルに拠点を置き、ML に関するあらゆる分野で企業顧客が大規模に設計、構築、運用できるよう支援することに取り組んでいます。 余暇には、サイクリング、ハイキング、夕日鑑賞 (少なくとも XNUMX 日 XNUMX 回) を楽しんでいます。

タイムスタンプ:

より多くの AWS機械学習