機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。

機械学習推論データ キャプチャ ソリューションを AWS Lambda にデプロイする

機械学習 (ML) の予測を監視すると、デプロイされたモデルの品質を向上させることができます。 本番環境で行われた推論からデータを取得すると、デプロイされたモデルを監視し、モデルの品質の偏差を検出できます。 これらの逸脱を早期かつプロアクティブに検出することで、モデルの再トレーニング、上流システムの監査、品質問題の修正などの是正措置を講じることができます。

AWSラムダ は、大規模なリアルタイム ML 推論を提供できるサーバーレス コンピューティング サービスです。 この投稿では、Lambda ML 推論ワークロードにデプロイできるサンプル データ キャプチャ機能を紹介します。

2020 年 500 月、Lambda はパッケージ形式としてコンテナ イメージのサポートを導入しました。 この機能により、展開パッケージのサイズ制限が 10 MB から 2021 GB に増加しました。 この機能がリリースされる前は、パッケージ サイズの制約により、TensorFlow や PyTorch などの ML フレームワークを Lambda 関数にデプロイすることが困難でした。 ローンチ後、パッケージサイズの上限が引き上げられたことで、ML は Lambda にデプロイするための実行可能で魅力的なワークロードになりました。 XNUMX 年、ML 推論は、Lambda サービスで最も急速に成長しているワークロード タイプの XNUMX つでした。

アマゾンセージメーカーAmazon のフルマネージド ML サービスである には、独自のモデル監視機能が含まれています。 ただし、この投稿のサンプル プロジェクトでは、ML 推論に Lambda を使用する顧客向けに、モデル監視で使用するデータ キャプチャを実行する方法を示しています。 このプロジェクトでは、推論関数のパフォーマンスとレイテンシーへの影響を最小限に抑えるために、Lambda 拡張機能を使用して推論データをキャプチャします。 Lambda 拡張機能を使用すると、関数開発者への影響も最小限に抑えられます。 拡張機能を介して統合することにより、監視機能を複数の機能に適用し、中央のチームによって維持できます。

ソリューションの概要

このプロジェクトには、distilbert ベースの事前トレーニング済みの質問応答モデルを使用してリアルタイムの推論を提供するサーバーレス アプリケーションのソース コードとサポート ファイルが含まれています。 このプロジェクトでは、Hugging Face の質問と回答の自然言語処理 (NLP) モデルを使用します。 パイトーチ 自然言語推論タスクを実行します。 このプロジェクトには、モデル予測のための推論データ キャプチャを実行するためのソリューションも含まれています。 Lambda 関数の作成者は、推論リクエストの入力と予測結果からどのデータを拡張機能に送信するかを正確に決定できます。 このソリューションでは、入力とモデルからの回答を拡張機能に送信します。 次に、拡張機能は定期的にデータを Amazon シンプル ストレージ サービス (Amazon S3) バケット。 を使用して、データ キャプチャ拡張機能をコンテナー イメージとしてビルドします。 makefile. 次に、Lambda 推論関数をコンテナー イメージとして構築し、拡張コンテナー イメージをコンテナー イメージ レイヤーとして追加します。 次の図は、アーキテクチャの概要を示しています。

Lambda 拡張機能は、Lambda 関数を拡張する方法です。 このプロジェクトでは、外部の Lambda 拡張機能を使用して、推論リクエストと推論からの予測をログに記録します。 外部拡張機能は、Lambda ランタイム環境で別のプロセスとして実行されるため、推論関数への影響が軽減されます。 ただし、この関数は、CPU、メモリ、ストレージなどのリソースを Lambda 関数と共有します。 最適なリソースの可用性を確保するために、Lambda 関数に十分なメモリを割り当てることをお勧めします。 (私たちのテストでは、推論 Lambda 関数に 5 GB のメモリを割り当て、最適なリソースの可用性と推論のレイテンシーを確認しました)。 推論が完了すると、Lambda サービスはすぐにレスポンスを返し、拡張機能が S3 バケットへのリクエストとレスポンスのログ記録を完了するのを待ちません。 このパターンでは、監視拡張機能は推論の待機時間に影響しません。 Lambda 拡張機能の詳細については、 これらのビデオシリーズをチェックしてください.

プロジェクト内容

このプロジェクトは AWSサーバーレスアプリケーションモデル (AWS SAM) コマンドライン インターフェイス (CLI)。 このコマンドライン ツールにより、開発者はアプリケーションを初期化および構成できます。 ローカルでパッケージ化、ビルド、およびテストします。 AWS クラウドにデプロイします。

このプロジェクトのソース コードは、次の場所からダウンロードできます。 GitHubリポジトリ.

このプロジェクトには、次のファイルとフォルダーが含まれています。

  • アプリ/app.py – ML 推論のコードを含む、アプリケーションの Lambda 関数のコード。
  • アプリ/Dockerfile – 推論関数、Hugging Face からダウンロードしたモデル、およびレイヤーとして構築された Lambda 拡張機能をパッケージ化するコンテナー イメージを構築するための Dockerfile。 .zip 関数とは対照的に、関数の作成時にレイヤーをコンテナ パッケージ化された Lambda 関数にアタッチすることはできません。 代わりに、レイヤーを構築し、その内容をコンテナー イメージにコピーします。
  • 拡張機能 – モデル モニター拡張ファイル。 この Lambda 拡張機能は、入力を推論関数に記録し、対応する予測を S3 バケットに記録するために使用されます。
  • アプリ/モデル – Hugging Face からダウンロードしたモデル。
  • アプリ/requirements.txt – コンテナーにインストールされる Python 依存関係。
  • イベント – 関数のテストに使用できる呼び出しイベント。
  • テンプレート.yaml – アプリケーションの AWS リソースを定義する記述子ファイル。

アプリケーションは、Lambda 関数や アマゾンAPIゲートウェイ API。 これらのリソースは、 template.yaml このプロジェクトのファイル。 テンプレートを更新して、アプリケーション コードを更新するのと同じデプロイ プロセスで AWS リソースを追加できます。

前提条件

このチュートリアルでは、次の前提条件を満たしている必要があります。

サンプル アプリケーションをデプロイする

アプリケーションを初めてビルドするには、次の手順を実行します。

  • シェルで次のコードを実行します。 (これにより、拡張機能もビルドされます):
  • モデル モニター アプリケーションの Docker イメージをビルドします。 ビルドの内容は .aws-sam ディレクトリにジョブを開始します。
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Amazon ECR にログインします。
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Amazon ECR にリポジトリを作成します。

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • コンテナ イメージを Amazon ECR にプッシュします。
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • 行番号 1 のコメントを外します アプリ/Dockerfile 正しい ECR リポジトリ イメージを指すように編集し、6 行目と 7 行目のコメントを外します。 アプリ/Dockerfile:
WORKDIR /opt
COPY --from=layer /opt/ .

  • アプリケーションを再度ビルドします。

Lambda はコンテナー イメージ パッケージ タイプの Lambda レイヤーを直接サポートしていないため、再度ビルドします。 最初にモデル監視コンポーネントをコンテナ イメージとして構築し、それを Amazon ECR にアップロードしてから、そのイメージをモデル監視アプリケーションでコンテナ レイヤーとして使用する必要があります。

  • 最後に、Lambda 関数、API Gateway、および拡張機能をデプロイします。
sam deploy --guided

このコマンドは、一連のプロンプトでアプリケーションをパッケージ化して AWS にデプロイします。

  • スタック名 : デプロイされた名前 AWS CloudFormation スタック。 これは、アカウントとリージョンに固有のものである必要があり、開始点として、プロジェクト名と一致するものを使用することをお勧めします。
  • AWSリージョン : アプリケーションをデプロイする AWS リージョン。
  • 展開する前に変更を確認する :に設定した場合 yes、手動レビューを実行する前に、すべての変更セットが表示されます。 no に設定すると、AWS SAM CLI はアプリケーションの変更を自動的にデプロイします。
  • AWS SAM CLI IAM ロールの作成を許可する : この例を含む多くの AWS SAM テンプレートは、 AWS IDおよびアクセス管理 AWS サービスにアクセスするために含まれる Lambda 関数に必要な (IAM) ロール。 デフォルトでは、これらは必要最小限のアクセス許可に限定されています。 IAM ロールを作成または変更する CloudFormation スタックをデプロイするには、 CAPABILITY_IAM の値 capabilities 提供されなければなりません。 このプロンプトでアクセス許可が提供されない場合、この例をデプロイするには、明示的に渡す必要があります --capabilities CAPABILITY_IAM sam deploy
  • 引数を samconfig.toml に保存します :に設定した場合 yes、選択内容はプロジェクト内の構成ファイルに保存されるため、将来は実行するだけです sam deploy アプリケーションに変更をデプロイするためのパラメーターはありません。

デプロイ後に表示される出力値で、API Gateway エンドポイント URL を見つけることができます。

アプリケーションをテストする

アプリケーションをテストするには、Postman または curl を使用してリクエストを API Gateway エンドポイントに送信します。 例えば:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

次のコードのような出力が表示されます。 コンテキストから推論された ML モデルは、質問に対する答えを返しました。

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

数分後、S3 バケットにファイルが表示されます。 nlp-qamodel-model-monitoring-modelmonitorbucket- 入力と推論がログに記録されます。

クリーンアップ

作成したサンプル アプリケーションを削除するには、AWS CLI を使用します。

aws cloudformation delete-stack --stack-name 

まとめ

この投稿では、モデル監視機能を Lambda 拡張機能として実装し、それを Lambda ML 推論ワークロードにデプロイしました。 このソリューションを構築して、独自の AWS アカウントにデプロイする方法を示しました。 最後に、テストを実行してモニターの機能を検証する方法を示しました。

コメント欄にご意見やご質問をお寄せください。 その他のサーバーレス学習リソースについては、次のサイトをご覧ください。 サーバーレスランド.


著者について

機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。ダン・フォックス は、Worldwide Specialist Organization for Serverless のプリンシパル スペシャリスト ソリューション アーキテクトです。 Dan は顧客と協力して、サーバーレス サービスを活用して、スケーラブルでフォールト トレラントな高性能で費用対効果の高いアプリケーションを構築できるよう支援しています。 ダンは美しいコロラド州ボルダーに住み、働くことができることに感謝しています。

機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。ニュートン・ジェイン AWS Lambda で機械学習、ハイ パフォーマンス コンピューティング (HPC)、およびメディア処理の顧客向けに新しいエクスペリエンスを構築する責任を負うシニア プロダクト マネージャーです。 彼は、パフォーマンスの向上、待ち時間の短縮、スケーラビリティの向上、信頼性の向上、およびコストの削減を実現する新機能の開発を主導しています。 彼はまた、AWS のお客様がコンピューティング集約型アプリケーション向けの効果的なサーバーレス戦略を定義するのを支援しています。

機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。ディクシャ・シャルマ AWS のソリューション アーキテクト兼機械学習スペシャリストです。 彼女は、特に機械学習とサーバーレス テクノロジの分野で、顧客がクラウドの採用を加速するのを支援しています。 Diksha は、ビジネスと IT の課題に対応する上で AWS の価値を顧客に示す、カスタマイズされた概念実証を展開しています。 彼女は、AWS に関する知識を顧客に提供し、顧客と協力して希望するソリューションを構築します。

機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。ヴェーダ ラマン メリーランド州を拠点とする機械学習のシニア スペシャリスト ソリューション アーキテクトです。 Veda はお客様と協力して、効率的で安全かつスケーラブルな機械学習アプリケーションの設計を支援します。 Veda は、お客様が機械学習にサーバーレス テクノロジを活用できるよう支援することに関心を持っています。

機械学習推論データ キャプチャ ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。 ジョシュ・カーン サーバーレスのワールドワイド テック リーダーであり、プリンシパル ソリューション アーキテクトです。 彼は、スタートアップから世界最大の企業まで、あらゆる規模の顧客が AWS サーバーレステクノロジーを効果的に使用できるように支援する、AWS のサーバーレスエキスパートのグローバルコミュニティを率いています。

タイムスタンプ:

より多くの AWS機械学習