モデルエンドポイントをホストする MLOps ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。

AWS Lambda でモデル エンドポイントをホストする MLOps ソリューションをデプロイする

2019 年、Amazon は、 気候の約束. この誓約の目標は、2040 年までにネット ゼロ カーボンを達成することです。これは、パリ協定の概要よりも 10 年早いものです。 サインアップする企業は、定期的な報告、二酸化炭素の除去、および信頼できるオフセットに取り組んでいます。 この記事の執筆時点で、377 社が気候に関する誓約に署名しており、その数は今も増え続けています。

AWS は、クラウド ソリューションと機械学習 (ML) を通じてネット ゼロ目標の達成を支援することに取り組んでいるため、炭素排出量を削減する多くのプロジェクトがすでに開発および展開されています。 製造業は、このようなプロジェクトから大きな利益を得ることができる産業の XNUMX つです。 コンプレッサーやチラーなど、製造工場の機械のエネルギー管理を最適化することで、企業は ML で二酸化炭素排出量を削減できます。

ML の実験段階から本番環境に効果的に移行することは困難です。 モデルのトレーニングと再トレーニングの自動化、モデル レジストリの作成、実験と展開の追跡は、主要な課題の一部です。 製造会社の場合、別の複雑なレイヤーがあります。つまり、展開されたモデルをエッジで実行する方法です。

この投稿では、持続可能なエネルギー管理ソリューションをホストする機械学習運用 (MLOps) テンプレートを提供することで、これらの課題に対処します。 このソリューションはユース ケースに依存しません。つまり、モデルとデータを変更することで、ユース ケースに適応させることができます。 でモデルを統合する方法を示します。 AmazonSageMakerパイプラインは、ML パイプラインを構築するためのネイティブ ワークフロー オーケストレーション ツールです。トレーニング ジョブと、オプションでモンテカルロ シミュレーションを使用した処理ジョブを実行します。 実験はで追跡されます AmazonSageMakerの実験. モデルは追跡され、 Amazon SageMaker モデルレジストリ. 最後に、最終モデルを展開するためのコードを提供します。 AWSラムダ 機能。

Lambda は、サーバーの管理やプロビジョニングを行わずにコードを実行できるコンピューティング サービスです。 Lambda の自動スケーリング、リクエストごとの請求、および使いやすさにより、Lambda はデータ サイエンス チームにとって一般的なデプロイの選択肢となっています。 この投稿により、データ サイエンティストはモデルを費用対効果が高くスケーラブルな Lambda 関数に変えることができます。 さらに、Lambda は以下との統合を可能にします AWS IoT Greengrass、持続可能なエネルギー管理ソリューションの場合のように、デバイスが生成したデータに基づいてエッジで動作できるようにするソフトウェアを構築するのに役立ちます。

ソリューションの概要

私たちが展開するアーキテクチャ (次の図を参照) は、機械学習に対する完全な CI/CD 駆動型のアプローチです。 XNUMX つのモノリシック ソリューションを回避するために、要素が分離されています。

図の左上から始めましょう。 の 処理 – イメージビルド コンポーネントは CI/CD 駆動型です AWS コードコミット のビルドとプッシュに役立つリポジトリ デッカー コンテナ Amazon エラスティック コンテナ レジストリ (アマゾン ECR)。 この処理コンテナーは、ML パイプラインの最初のステップとして機能しますが、後処理ステップにも再利用されます。 この場合、後処理としてモンテカルロ シミュレーションを適用します。 の トレーニング – イメージのビルド 左下に概説されているリポジトリは、 処理 その上にブロックします。 主な違いは、モデル トレーニング用のコンテナーをビルドすることです。

主なパイプライン、 モデルの構築 (パイプライン)は、SageMaker パイプラインの実行を自動化する別の CodeCommit リポジトリです。 このパイプラインは、データの前処理、モデルのトレーニング、SageMaker Experiments でのモデルメトリクスの追跡、データの後処理、および SageMaker モデルレジストリでのモデルのカタログ化を自動化して接続します。

最後のコンポーネントは右下にあります。 モデルの展開. の例に従うと、 AmazonSageMakerプロジェクト、SageMaker エンドポイントを使用してモデルをホストするテンプレートを取得します。 デプロイ リポジトリは、代わりに Lambda 関数でモデルをホストします。 リアルタイム予測を実行できる Lambda 関数をデプロイするためのアプローチを示します。

前提条件

ソリューションを正常に展開するには、次のものが必要です。

GitHub リポジトリをダウンロードする

最初のステップとして、 GitHubリポジトリ ローカルマシンに。 次のフォルダー構造が含まれています。

  • 展開 – 展開に関連するコードが含まれています
  • mllib — 前処理、トレーニング、提供、およびシミュレーション用の ML コードが含まれています
  • テスト — 単体テストと統合テストが含まれています

展開のキー ファイルはシェル スクリプトです。 deployment/deploy.sh. このファイルを使用して、アカウントにリソースをデプロイします。 シェル スクリプトを実行する前に、次の手順を完了します。

  1. Video Cloud Studioで deployment/app.py 下のbucket_nameを変更します SageMakerPipelineSourceCodeStackを選択します。 bucket_name グローバルに一意である必要があります (たとえば、氏名を追加します)。
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py、 変更 default_bucketget_pipeline 手順 1 で指定したものと同じ名前にします。

AWS CDK を使用してソリューションをデプロイする

まず、 AWS CLI を構成する 次に、次のコマンドを実行してデプロイ ディレクトリに移動し、仮想環境を作成してアクティブ化し、で指定された必要な pip パッケージをインストールします。 setup.py、そして deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh 次のアクションを実行します。

  1. Python で仮想環境を作成します。
  2. 仮想環境のアクティブ化スクリプトをソースします。
  3. AWS CDK と、で概説されている要件をインストールします。 setup.py.
  4. ブートストラップ 環境。
  5. 作成した必要なファイルを圧縮してコピーします。 mllib ファイルを、これらのアセットが必要な対応するフォルダーに入れます。
  6. Active Runs cdk deploy —require-approval never.
  7. を作成します AWS CloudFormation AWS CDK を介してスタックします。

展開の初期段階にかかる時間は 5 分未満です。 アーキテクチャ図に示されているように、AWS CLI で指定したリージョンの CodeCommit に XNUMX つのリポジトリが作成されました。 の AWS コードパイプライン パイプラインは同時に実行されます。 の modelbuild および modeldeploy パイプラインは、処理およびトレーニング イメージ ビルドの実行の成功に依存します。 の modeldeploy パイプラインはモデル ビルドの成功に依存します。 モデルのデプロイは 1.5 時間以内に完了します。

Studio でモデル リポジトリを複製する

Studio UI で AWS CDK デプロイを介して作成された SageMaker パイプラインをカスタマイズするには、最初にリポジトリを Studio に複製する必要があります。 Studio でシステム ターミナルを起動し、プロジェクト名と ID を指定した後、次のコマンドを実行します。

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

リポジトリのクローンを作成したら、コミットをリポジトリにプッシュできます。 これらのコミットは、関連するパイプラインの CodePipeline 実行をトリガーします。

また、ソリューションをローカル マシンに適用して、好みの IDE で作業することもできます。

SageMaker Pipelines と SageMaker Experiments UI をナビゲートする

SageMaker パイプラインは、相互接続された一連のステップであり、 Amazon SageMaker Python SDK. このパイプライン定義は、JSON 定義としてエクスポートできる有向非巡回グラフ (DAG) を使用してパイプラインをエンコードします。 このようなパイプラインの構造の詳細については、次を参照してください。 SageMaker パイプラインの概要.

MFAデバイスに移動する SageMakerリソース ペインをクリックし、表示する Pipelines リソースを選択します。 下 名前 、 見るべき PROJECT_NAME-PROJECT_ID. 実行 UI では、1 時間強かかると予想される正常な実行が表示されるはずです。 パイプラインは、次のスクリーンショットに示すようになります。

Amazon SageMaker パイプライン

AWS CDK スタックがデプロイされた後、実行は自動的にトリガーされました。 を選択して、実行を手動で呼び出すことができます。 創造する 実行。 そこから、処理およびトレーニング ステップのインスタンス タイプやインスタンス数など、独自のパイプライン パラメーターを選択できます。 さらに、実行に名前と説明を付けることができます。 パイプラインは、パイプライン定義全体で参照および定義できるパイプライン パラメーターを介して高度に構成可能です。

必要に応じて、パラメーターを使用して別のパイプライン実行を自由に開始してください。 その後、に移動します SageMakerリソース ペインをもう一度選択して選択します 実験と試行. そこに、次のような名前の行が再び表示されるはずです PROJECT_NAME-PROJECT_ID. 実験に移動し、ランダム ID を持つ実行のみを選択します。 そこから、SageMaker トレーニング ジョブを選択して、トレーニング ジョブに関連するメトリクスを調べます。

SageMaker Experiments の目標は、実験を作成し、それらにトライアルを入力し、トライアルと実験全体で分析を実行することをできるだけ簡単にすることです。 SageMaker Pipelines は SageMaker Experiments と密接に統合されており、デフォルトでは、実行ごとに実験、トライアル、およびトライアル コンポーネントが存在しない場合に備えて作成されます。

モデル レジストリで Lambda のデプロイを承認する

次のステップとして、以下のモデル レジストリに移動します。 SageMakerリソース. ここで、次のような名前の行をもう一度見つけることができます PROJECT_NAME-PROJECT_ID. 存在する唯一のモデルに移動して承認します。 これにより、モデル アーティファクトが Lambda のコンテナに自動的にデプロイされます。

モデル レジストリでモデルを承認すると、 アマゾンイベントブリッジ イベント ルールがトリガーされます。 このルールは、末尾の CodePipeline パイプラインを実行します。 *-modeldeploy. このセクションでは、このソリューションが承認されたモデルをどのように使用し、それを Lambda 関数でホストするかについて説明します。 CodePipeline は、既存の CodeCommit リポジトリも取得します。 *-modeldeploy そのコードを使用して CodeBuild で実行します。 CodeBuild のメイン エントリは、 buildspec.yml ファイル。 最初にこれを見てみましょう:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

インストール段階では、Python ライブラリが最新であることを確認し、仮想環境を作成し、AWS CDK v2.26.0 をインストールして、 aws-cdk 要件ファイルを使用する他のものと一緒の Python ライブラリ。 私達も AWS アカウントをブートストラップする. ビルド段階では、実行します build.py、次に説明します。 そのファイルは、承認された最新の SageMaker モデル アーティファクトを次からダウンロードします。 Amazon シンプル ストレージ サービス (Amazon S3) をローカルの CodeBuild インスタンスに追加します。 これ .tar.gz ファイルが解凍され、その内容が、メインの Lambda コードも含まれるフォルダーにコピーされます。 Lambda 関数は AWS CDK を使用してデプロイされ、コードは Amazon ECR の Docker コンテナから実行されます。 これは、AWS CDK によって自動的に行われます。

  build.py ファイルは、主に を使用する Python ファイルです。 AWS SDK for Python(Boto3) 利用可能なモデル パッケージを一覧表示します。

関数 get_approved_package 前に説明したように、その後ダウンロードされるアーティファクトの Amazon S3 URI を返します。

モデルを正常にデプロイしたら、次のことができます。 test デプロイ先として選択したリージョンの Lambda コンソールで直接実行します。関数の名前には、 DigitalTwinStack-DigitalTwin*. 関数を開き、 ホイール試乗 タブ。 次のイベントを使用して、テスト コールを実行できます。

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

テスト イベントを実行すると、次のスクリーンショットに示すような応答が返されます。

AWS Lambda 関数をテストする

さらにシミュレーションやトライアルを実行したい場合は、Lambda のタイムアウト制限を増やしてコードを試すことができます! または、生成されたデータを取得して、同じものを視覚化することもできます。 アマゾンクイックサイト. 以下は例です。 あなたの番がきました!

アマゾンクイックサイト

クリーンアップ

これ以上課金されないようにするには、次の手順を実行します。

  • AWS CloudFormation コンソールで、 EnergyOptimization スタック。
    これにより、ソリューション全体が削除されます。
  • スタックを削除する DigitalTwinStack、Lambda 関数をデプロイしました。

まとめ

この投稿では、エネルギー管理ソリューションの CI/CD 駆動型 MLOps パイプラインを紹介しました。このパイプラインでは、各ステップが分離されています。 Studio UI で ML パイプラインと実験を追跡できます。 また、別のデプロイ アプローチも示しました。モデル レジストリでモデルが承認されると、承認されたモデルをホストする Lambda 関数が CodePipeline を通じて自動的に構築されます。

AWS での MLOps パイプラインまたは持続可能なエネルギー管理ソリューションのいずれかに関心がある場合は、以下をご覧ください。 GitHubリポジトリ 独自の AWS 環境にスタックをデプロイします!


著者について

モデルエンドポイントをホストする MLOps ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。ローレンス・ファン・デル・マース は、AW​​S プロフェッショナル サービスのデータ サイエンティストです。 彼は、AWS で機械学習ソリューションを構築しているお客様と緊密に連携しており、機械学習が私たちが知っている世界をどのように変えているかについて情熱を持っています。

モデルエンドポイントをホストする MLOps ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。カンカン・ワン AWS プロフェッショナル サービスの AI/ML コンサルタントです。 彼女は、ヘルスケアおよびライフ サイエンス業界で AI/ML ソリューションを展開した豊富な経験を持っています。 彼女はまた、企業顧客がスケーラブルな AI/ML プラットフォームを構築して、データ サイエンティストのクラウド ジャーニーを加速するのを支援しています。

モデルエンドポイントをホストする MLOps ソリューションを AWS Lambda PlatoBlockchain Data Intelligence にデプロイします。垂直検索。あい。セレナ・タバラ は、AW​​S プロフェッショナル サービスのデータ サイエンティストです。 彼女は毎日顧客と協力して、AWS プラットフォームで革新することでビジネスの成果を達成しています。 余暇には、ピアノを弾いたり、ハイキングをしたり、バスケットボールを見たりすることを楽しんでいます。

マイケルウォールナー マイケルウォールナー は、AW​​S プロフェッショナル サービスの AI/ML に重点を置いたシニア コンサルタントです。 Michael は、クラウドへの移行を進めているお客様が AWSome になることを支援することに情熱を注いでいます。 彼は製造業に情熱を注いでおり、データを通じて製造業の変革を支援することを楽しんでいます。

タイムスタンプ:

より多くの AWS機械学習