AWSのお客様は、クラウドインフラストラクチャの設計、開発、および管理をInfrastructure as Code(IaC)に依存しています。 IaCは、開発オペレーション(DevOps)の分野でのベストプラクティスに従うことができる一方で、顧客のインフラストラクチャとサービスが一貫性があり、スケーラブルで、再現可能であることを保証します。
IaCを使用してAWSインフラストラクチャとサービスを管理するためのXNUMXつの可能なアプローチは次のとおりです。 テラフォーム、これにより、開発者はインフラストラクチャを再利用可能なコードモジュールに編成できます。 この側面は、機械学習(ML)の分野でますます重要になっています。 TerraformをIaCとして使用したトレーニングと推論を含む、MLパイプラインの開発と管理により、インフラストラクチャを最初から開発することなく、複数のMLユースケースまたはリージョンに合わせて簡単に拡張できます。 さらに、MLパイプラインのさまざまな実装間でトレーニングと推論を行うためのインフラストラクチャ(インスタンスのタイプやサイズなど)に一貫性を提供します。 これにより、リクエストと着信トラフィックを別の場所にルーティングできます アマゾンセージメーカー エンドポイント
この投稿では、TerraformとAmazonSageMakerを使用してMLパイプラインをデプロイおよび管理する方法を紹介します。
ソリューションの概要
この投稿では、コードを提供し、AmazonSageMakerを使用したモデルのトレーニングと推論のためにTerraformを使用してMLパイプライン用のAWSインフラストラクチャをデプロイするために必要な手順を説明します。 MLパイプラインは AWSステップ関数 次の図に示すように、MLパイプラインに実装されているさまざまなステップを調整します。
ステップ関数は開始します AWSラムダ 関数、一意のジョブIDを生成します。これは、SageMakerトレーニングジョブを開始するときに使用されます。 ステップ関数は、推論に使用されるモデル、エンドポイント構成、およびエンドポイントも作成します。 追加のリソースには、次のものがあります。
- AWS IDおよびアクセス管理 他のリソースとの相互作用を可能にするために、リソースにアタッチされた (IAM) ロールとポリシー
- Amazon シンプル ストレージ サービス (Amazon S3) トレーニング データとモデル出力用のバケット
- An Amazon エラスティック コンテナ レジストリ (Amazon ECR) リポジトリ デッカー トレーニングと推論ロジックを含む画像
Dockerイメージを使用したトレーニングと推論のためのML関連のコードは、主に以下の既存の作業に依存しています GitHubリポジトリ.
次の図は、ソリューションアーキテクチャを示しています。
次の大まかな手順を説明します。
- Terraformを使用してAWSインフラストラクチャをデプロイします。
- DockerイメージをAmazonECRにプッシュします。
- MLパイプラインを実行します。
- エンドポイントを呼び出します。
リポジトリ構造
この投稿に使用されたコードとデータを含むリポジトリは、次の場所にあります。 GitHubリポジトリ.
リポジトリには、次のディレクトリが含まれています。
/terraform
–次のサブフォルダーで構成されます。./infrastructure
–インフラストラクチャのデプロイに使用する変数宣言に加えて、MLパイプラインモジュールを呼び出すmain.tfファイルが含まれています./ml-pipeline-module
–再利用できるTerraformMLパイプラインモジュールが含まれています
/src
–次のサブフォルダーで構成されます。./container
–Dockerイメージの定義を使用したトレーニングと推論のサンプルコードが含まれています./lambda_function
– SageMakerトレーニングジョブの一意のジョブIDなど、構成を生成するLambda関数のPythonコードが含まれています
/data
–次のファイルが含まれています。./iris.csv
–MLモデルをトレーニングするためのデータが含まれています
前提条件
このチュートリアルでは、次の前提条件を満たしている必要があります。
- AWSアカウント
- テラフォーム バージョン0.13.5以降
- AWSコマンドラインインターフェイス (AWS CLI) v2
- Python 3.7以上
- デッカー
Terraformを使用してAWSインフラストラクチャをデプロイする
MLパイプラインをデプロイするには、必要に応じていくつかの変数と名前を調整する必要があります。 このステップのコードは /terraform
ディレクトリにあります。
初めて初期化するときは、ファイルを開きます terraform/infrastructure/terraform.tfvars
変数を調整します プロジェクト名 変数に加えて、プロジェクトの名前に 地域 別のリージョンにデプロイする場合。 トレーニングや推論のために、インスタンスタイプなどの追加の変数を変更することもできます。
次に、次のコマンドを使用して、Terraformでインフラストラクチャを展開します。
出力をチェックして、計画されたリソースが正しく表示されることを確認し、すべてが正しいかどうかを適用段階でyesで確認します。 次に、Amazon ECRコンソールに移動し(またはターミナルでTerraformの出力を確認し)、Terraformを介して作成したECRリポジトリのURLを取得します。
出力は、ECRリポジトリのURLを含め、次の表示出力のようになります。
DockerイメージをAmazonECRにプッシュします
MLパイプラインとSageMakerが推論のためにSageMakerエンドポイントをトレーニングおよびプロビジョニングするには、Dockerイメージを提供してAmazonECRに保存する必要があります。 あなたはディレクトリで例を見つけることができます src/container
。 前の手順でAWSインフラストラクチャをすでに適用している場合は、説明されているようにDockerイメージをプッシュできます。 Dockerイメージが開発されたら、次のアクションを実行して、Amazon ECRにプッシュできます(必要に応じてAmazon ECR URLを調整します)。
すでにTerraformでAWSインフラストラクチャを適用している場合は、Terraformを介して再度デプロイすることなく、コードとDockerイメージの変更をAmazonECRに直接プッシュできます。
MLパイプラインを実行する
MLパイプラインをトレーニングして実行するには、StepFunctionsコンソールに移動して実装を開始します。 ステートマシンの視覚化で、各ステップの進行状況を確認できます。 SageMakerトレーニングジョブの進行状況とSageMakerエンドポイントのステータスを確認することもできます。
ステップ関数でステートマシンを正常に実行すると、SageMakerエンドポイントが作成されたことがわかります。 SageMakerコンソールで、 推論 ナビゲーションペインで、次に エンドポイント。 ステータスがInServiceに変わるのを必ず待ってください。
エンドポイントを呼び出す
エンドポイントを呼び出すには(この例では、アイリスデータセットに対して)、次のPythonスクリプトを AWS SDK for Python(Boto3)。 これは、SageMakerノートブックから実行するか、次のコードスニペットをLambda関数に埋め込むことができます。
クリーンアップ
コマンドterraformdestroyを使用して、Terraformによって作成されたインフラストラクチャを破棄できますが、最初にS3バケット内のデータとファイルを削除する必要があります。 さらに、SageMakerエンドポイント(または複数回実行される場合は複数のSageMakerエンドポイント)はステップ関数を介して作成され、Terraformを介して管理されません。 これは、ステップ関数を使用してMLパイプラインを実行するときにデプロイが行われることを意味します。 したがって、不要なコストを回避するために、StepFunctionsMLパイプラインを介して作成されたXNUMXつまたは複数のSageMakerエンドポイントも削除してください。 次の手順を実行します。
- Amazon S3コンソールで、S3トレーニングバケットのデータセットを削除します。
- AmazonS3コンソールまたはAWSCLIのいずれかを介して、S3モデルバケットのMLパイプラインを介してトレーニングしたすべてのモデルを削除します。
- Terraformを介して作成されたインフラストラクチャを破棄します。
- SageMakerコンソールまたはAWSCLIのいずれかで、Step Functionsを介して作成されたSageMakerエンドポイント、エンドポイント設定、およびモデルを削除します。
まとめ
おめでとう! SageMakerとTerraformを使用してMLパイプラインをデプロイしました。 このソリューション例は、MLパイプライン用のAWSインフラストラクチャとサービスを再利用可能な方法で簡単にデプロイする方法を示しています。 これにより、複数のユースケースまたはリージョンに合わせてスケーリングでき、ワンクリックで一貫した方法でMLモデルのトレーニングとデプロイが可能になります。 さらに、たとえば、新しいデータが利用可能になったときや、アルゴリズムコードを変更したいときに、MLパイプラインを複数回実行できます。 リクエストまたはトラフィックをさまざまなSageMakerエンドポイントにルーティングすることもできます。
ニーズと潜在的な企業標準に従って、セキュリティ機能の追加とセキュリティのベストプラクティスの採用を検討することをお勧めします。 さらに、このソリューションをCI / CDパイプラインに組み込むことで、要件に応じてDevOpsのベストプラクティスと標準を採用および確立するためのさらなる機能が提供されます。
著者について
オリバー・ゾリコファー アマゾンウェブサービスのデータサイエンティストです。 彼は、グローバル企業の顧客が機械学習モデルを構築、トレーニング、デプロイできるようにするだけでなく、MLOpsを使用してMLモデルのライフサイクルを管理できるようにします。 さらに、彼は関連するクラウドソリューションを構築および設計しています。
- "
- 100
- 7
- アクセス
- 従った
- 越えて
- 行動
- 添加
- NEW
- アルゴリズム
- すべて
- 既に
- Amazon
- Amazon Webサービス
- 別の
- アプローチ
- 建築
- AREA
- 利用できます
- AWS
- さ
- BEST
- ベストプラクティス
- ボディ
- 国境
- ビルド
- 構築します
- 機能
- 例
- CD
- 変化する
- 選択する
- クラウド
- クラウドインフラ
- コード
- 会社
- 領事
- コンテナ
- 含まれています
- コスト
- 作成した
- 作成します。
- 顧客
- Customers
- データ
- データサイエンティスト
- 展開します
- 展開
- 展開する
- 展開
- 記載された
- 設計
- 破壊する
- 破壊された
- 開発する
- 発展した
- 開発者
- 開発
- 開発
- 異なります
- 直接に
- デッカー
- 簡単に
- enable
- 奨励する
- エンドポイント
- Enterprise
- すべてのもの
- 例
- 既存の
- 探る
- ファッション
- 特徴
- フィギュア
- 名
- 初回
- フォロー中
- function
- さらに
- 生成
- グローバル
- 持って
- 認定条件
- How To
- HTTPS
- アイデンティティ
- 画像
- 実装
- 実装
- 重要性
- include
- 含ま
- 含めて
- ますます
- インフラ
- 相互作用
- IT
- ジョブ
- 最新の
- 学習
- LINE
- 機械
- 機械学習
- 管理します
- マネージド
- 管理する
- ML
- モデル
- の試合に
- 名
- ナビゲーション
- 必要
- ノート
- 開いた
- 業務執行統括
- 注文
- その他
- ポリシー
- 可能
- 潜在的な
- プロジェクト
- 提供します
- は、大阪で
- 倉庫
- 要求
- リクエスト
- 要件
- リソース
- 応答
- ルート
- ラン
- ランニング
- ド電源のデ
- 規模
- 科学者
- SDDK
- セキュリティ
- サービス
- 同様の
- 簡単な拡張で
- サイズ
- 固体
- 溶液
- ソリューション
- ステージ
- 規格
- start
- 開始
- 都道府県
- Status:
- ストレージ利用料
- 店舗
- 首尾よく
- ターミナル
- したがって、
- 介して
- 時間
- トラフィック
- トレーニング
- ユニーク
- つかいます
- 可視化
- wait
- ウェブ
- Webサービス
- while
- 無し
- 仕事