amazon.com で購入する商品を検索した場合、Amazon 検索サービスを使用したことになります。 Amazon Search では、世界中のお客様の検索と発見のエクスペリエンスに責任を負っています。 バックグラウンドでは、世界中の製品カタログにインデックスを付け、高度にスケーラブルな AWS フリートをデプロイし、高度な機械学習 (ML) を使用して、関連性のある興味深い製品をすべての顧客のクエリに一致させます。
当社の科学者は、検索結果の品質を向上させるために、何千もの ML モデルを定期的にトレーニングしています。 大規模な実験をサポートすることには、特にこれらの ML モデルをトレーニングする科学者の生産性を向上させるという点で、独自の課題があります。
この投稿では、私たちがどのように管理システムを構築したかを共有します アマゾンセージメーカー これにより、科学者は何千もの実験を開始して忘れ、必要なときに通知を受けることができます。 価値の高いタスクとアルゴリズム エラーの解決に集中できるようになり、時間を 60% 節約できます。
課題
Amazon Search では、科学者が SageMaker で多数の ML モデルトレーニングジョブを実験および実行することにより、情報検索の問題を解決しています。 私たちのチームの革新に遅れずについていくために、私たちのモデルの複雑さとトレーニング ジョブの数は時間の経過とともに増加しています。 SageMaker トレーニング ジョブを使用すると、インフラストラクチャを管理する必要なく、これらのモデルを大規模にトレーニングおよび調整するための時間とコストを削減できます。
このような大規模な ML プロジェクトのすべてと同様に、トレーニング ジョブはさまざまな要因で失敗する可能性があります。 この投稿では、容量不足とアルゴリズム エラーによる障害に焦点を当てています。
ジョブ管理システムを備えたアーキテクチャを設計して、キャパシティの利用不可やアルゴリズム エラーによるジョブの失敗を許容し、その可能性を減らしました。 これにより、科学者は何千ものトレーニング ジョブを起動して忘れ、一時的な失敗時に自動的に再試行し、必要に応じて成功または失敗の通知を受け取ることができます。
ソリューションの概要
次のソリューション図では、SageMaker トレーニングジョブをソリューションの基本単位として使用しています。 つまり、ジョブは ML モデルのエンドツーエンドのトレーニングを表します。
このソリューションの大まかなワークフローは次のとおりです。
- 科学者は API を呼び出して、新しいジョブをシステムに送信します。
- ジョブは
New
メタデータ ストアのステータス。 - ジョブ スケジューラが非同期的に取得する
New
メタデータストアからジョブを取得し、その入力を解析して、それぞれの SageMaker トレーニングジョブを起動しようとします。 ステータスがLaunched
orFailed
成功に応じて。 - モニターはジョブの進行状況を定期的にチェックし、その進捗状況を報告します。
Completed
,Failed
またはInProgress
メタデータ ストアの状態。 - 通知機能がトリガーされて報告されます
Completed
&Failed
仕事は科学者に。
ジョブ履歴をメタデータ ストアに保持することで、チームは傾向分析を実施し、プロジェクトの進捗状況を監視することもできます。
このジョブ スケジューリング ソリューションは、以下に基づいて疎結合のサーバーレス コンポーネントを使用します。 AWSラムダ, Amazon DynamoDB, Amazon シンプル通知サービス (Amazon SNS)、および アマゾンイベントブリッジ. これにより、水平方向のスケーラビリティが保証され、当社の科学者は最小限の運用労力で何千ものジョブを立ち上げることができます。 次の図は、サーバーレス アーキテクチャを示しています。
以下のセクションでは、各サービスとそのコンポーネントについて詳しく説明します。
ジョブ実行のメタデータストアとしての DynamoDB
DynamoDB の使いやすさとスケーラビリティにより、ジョブのメタデータを DynamoDB テーブルに永続化することが当然の選択となりました。 このソリューションは、科学者によって送信されたジョブのいくつかの属性を保存するため、進行状況の追跡とワークフローのオーケストレーションに役立ちます。 最も重要な属性は次のとおりです。
- ジョブ ID – 固有のジョブ ID。 これは、自動生成されるか、科学者によって提供されます。
- 仕事の状況 – ジョブのステータス。
- ジョブ引数 – トレーニング ジョブの作成に必要なその他の引数 (Amazon S3 の入力パス、トレーニング イメージ URI など)。 トレーニング ジョブの作成に必要なパラメータの完全なリストについては、次を参照してください。 トレーニングジョブの作成.
コア ロジックのラムダ
XNUMXつ使用します コンテナベース ジョブ ワークフローを調整する Lambda 関数:
- ジョブのサブミット – この関数は、科学者が新しい仕事を開始する必要があるときに呼び出されます。 簡単にするための API として機能します。 また、それを前面に出すこともできます アマゾンAPIゲートウェイ、 必要に応じて。 この関数は、ジョブを DynamoDB テーブルに登録します。
- 起動ジョブ – この関数は、定期的に取得します
New
DynamoDB テーブルからジョブを取得し、SageMaker を使用してそれらを起動します トレーニングジョブの作成 指図。 次のような一時的な障害で再試行します。ResourceLimitExceeded
&CapacityError
、システムに回復力を装備します。 次に、ジョブのステータスを次のように更新します。Launched
orFailed
成功に応じて。 - ジョブの監視 – この機能は、ジョブの進行状況を定期的に追跡します。 説明TrainingJob コマンドを実行し、それに応じて DynamoDB テーブルを更新します。 世論調査
Failed
メタデータからジョブを再送信するか、最終的な失敗としてマークするかを評価します。 また、科学者のジョブが終了状態に達すると、科学者に通知メッセージを発行します。
スケジューリングのための EventBridge
EventBridge を使用して、Launch Jobs および Monitor Jobs Lambda 関数をスケジュールに従って実行します。 詳細については、次を参照してください。 チュートリアル:EventBridgeを使用してAWSLambda関数をスケジュールする.
また、 AmazonDynamoDBストリーム トリガー用。 詳細については、次を参照してください。 DynamoDBストリームとAWS Lambdaトリガー.
Amazon SNS による通知
私たちの科学者は Amazon SNS を使用してメールで通知 ジョブが最終状態に達したとき (Failed
再試行の最大回数の後)、 Completed
または Stopped
.
まとめ
この投稿では、Amazon Search が ML モデルのトレーニング ワークロードをスケジューリングし、キャパシティ不足やアルゴリズム エラーが発生した場合に再試行することで、そのワークロードに回復力を追加する方法を共有しました。 Lambda 関数を DynamoDB テーブルと組み合わせて中央のメタデータ ストアとして使用し、ワークフロー全体を調整しました。
このようなスケジューリング システムにより、科学者は自分の仕事を提出し、忘れることができます。 これにより時間が節約され、より良いモデルの作成に集中できます。
学習をさらに進めるには、次のサイトにアクセスしてください。 素晴らしい SageMaker SageMaker を使用するために必要なすべての関連する最新のリソースを XNUMX か所で見つけることができます。
著者について
ルチャオ・ワン Amazon Search のソフトウェアエンジニアです。 彼は、機械学習アプリケーションの科学的革新のペースを加速するために、クラウド上のスケーラブルな分散システムと自動化ツールに焦点を当てています。
イシャン・バット Amazon Prime Video チームのソフトウェア エンジニアです。 彼は主に MLOps 分野で働いており、過去 4 年間、Amazon SageMaker を使用して MLOps 製品を構築した経験があります。
アビナンダン・パトニ Amazon Search のシニア ソフトウェア エンジニアです。 彼は、スケーラブルな分散型深層学習トレーニングとリアルタイム推論のためのシステムとツールの構築に焦点を当てています。
エイマン・エルナハラヴィ Amazon Search のプリンシパル ソフトウェア エンジニアであり、機械学習の加速、スケーリング、自動化の取り組みをリードしています。 彼女の専門知識は、機械学習、分散システム、パーソナライゼーションなど、複数の分野に及びます。
ソフィアンハミティ AWSのAI / MLスペシャリストソリューションアーキテクトです。 彼は、エンドツーエンドの機械学習ソリューションの構築と運用を支援することで、業界全体の顧客がAI / MLの旅を加速するのを支援しています。
ロミ・ダッタ博士 Amazon SageMaker チームの製品管理のシニア マネージャーで、トレーニング、処理、機能ストアを担当しています。 彼は AWS に 4 年以上勤務しており、SageMaker、S3、および IoT でいくつかの製品管理のリーダーシップの役割を果たしています。 AWS に入社する前は、IBM、Texas Instruments、および Nvidia で、さまざまな製品管理、エンジニアリング、および運用上のリーダーシップの役割を果たしてきました。 修士号と博士号を取得しています。 テキサス大学オースティン校で電気工学およびコンピュータ工学の学士号を取得し、シカゴ大学ブース ビジネス スクールで MBA を取得しています。
RJ は、トレーニングと推論のための大規模な深層学習システムを構築するための取り組みを主導するSearchM5チームのエンジニアです。 仕事以外では、彼はさまざまな料理を探求し、ラケットスポーツをしています。