コンテンツへスキップ

Amazon SageMaker エンドポイントへのYOLOv8 展開ガイド

Deploying advanced computer vision models like Ultralytics' YOLOv8 on Amazon SageMaker Endpoints opens up a wide range of possibilities for various machine learning applications. The key to effectively using these models lies in understanding their setup, configuration, and deployment processes. YOLOv8 becomes even more powerful when integrated seamlessly with Amazon SageMaker, a robust and scalable machine learning service by AWS.

このガイドでは、Amazon SageMaker Endpoints 上でYOLOv8 PyTorch モデルをデプロイするプロセスを順を追って説明します。AWS 環境を準備し、モデルを適切に構成し、デプロイのために AWS CloudFormation や AWS Cloud Development Kit (CDK) のようなツールを使用するための要点を学びます。

アマゾン・セージメーカー

Amazon SageMakerの概要

Amazon SageMakerは、Amazon Web Services(AWS)が提供する機械学習サービスで、機械学習モデルの構築、トレーニング、デプロイのプロセスを簡素化する。機械学習ワークフローの様々な側面を処理するための幅広いツールを提供する。これには、モデルをチューニングするための自動化機能、モデルを大規模にトレーニングするためのオプション、モデルを本番環境にデプロイするための簡単な方法などが含まれます。SageMaker は一般的な機械学習フレームワークをサポートしており、多様なプロジェクトに必要な柔軟性を提供します。また、データラベリング、ワークフロー管理、パフォーマンス分析にも対応しています。

Amazon SageMaker エンドポイントへのYOLOv8 の展開

Amazon SageMaker にYOLOv8 をデプロイすることで、そのマネージド環境をリアルタイムの推論に使用し、オートスケールのような機能を利用することができます。以下の AWS アーキテクチャをご覧ください。

AWSアーキテクチャ

ステップ1:AWS環境のセットアップ

まず、以下の前提条件が整っていることを確認する:

  • AWSアカウント:まだお持ちでない場合は、AWSアカウントにサインアップしてください。

  • Configured IAM Roles: You'll need an IAM role with the necessary permissions for Amazon SageMaker, AWS CloudFormation, and Amazon S3. This role should have policies that allow it to access these services.

  • AWSCLI :まだインストールされていない場合は、AWS Command Line Interface (CLI) をダウンロードしてインストールし、アカウント情報を使用して設定します。AWSCLI の手順に従ってインストールしてください。

  • AWS CDK: まだインストールされていない場合は、デプロイのスクリプトに使用する AWS Cloud Development Kit (CDK) をインストールします。AWSCDKのインストール手順に従ってください。

  • 十分なサービスクォータ:Amazon SageMakerの2つのリソースに十分なクォータがあることを確認してください。 ml.m5.4xlarge エンドポイント用と ml.m5.4xlarge をノートブック・インスタンスの使用量に割り当てます。それぞれ最低1つのクォータ値が必要です。現在のクォータがこの要件を下回っている場合、それぞれのクォータの増加をリクエストすることが重要です。クォータの増加は AWS Service Quotasのドキュメント.

ステップ 2:YOLOv8 SageMaker リポジトリのクローン

次のステップは、SageMaker でYOLOv8 をデプロイするためのリソースを含む特定の AWS リポジトリをクローンすることです。GitHub でホストされているこのリポジトリには、必要な CDK スクリプトと設定ファイルが含まれています。

  • GitHub リポジトリをクローンします:ターミナルで以下のコマンドを実行し、host-yolov8-on-sagemaker-endpoint リポジトリをクローンします:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • クローンされたディレクトリに移動します:ディレクトリをクローンされたリポジトリに変更します:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

ステップ3:CDK環境のセットアップ

必要なコードが揃ったので、AWS CDKでデプロイするための環境をセットアップする。

  • Python 仮想環境を作成する:これにより、Python の環境と依存関係が分離される。実行する:
python3 -m venv .venv
  • 仮想環境を起動します:
source .venv/bin/activate
  • 依存関係をインストールします:プロジェクトに必要なPython の依存関係をインストールします:
pip3 install -r requirements.txt
  • AWS CDK ライブラリをアップグレードします:AWS CDKライブラリの最新バージョンを確認してください:
pip install --upgrade aws-cdk-lib

ステップ4: AWS CloudFormationスタックの作成

  • CDKアプリケーションを合成します:CDKコードからAWS CloudFormationテンプレートを生成します:
cdk synth
  • CDKアプリケーションをブートストラップするCDKをデプロイするためにAWS環境を準備します:
cdk bootstrap
  • スタックをデプロイする:必要なAWSリソースを作成し、モデルをデプロイします:
cdk deploy

ステップ 5:YOLOv8 モデルの展開

導入の説明に入る前に、 Ultralytics が提供するYOLOv8 モデルの範囲を必ずチェックしてください。これは、あなたのプロジェクトの要件に最も適切なモデルを選択するのに役立ちます。

AWS CloudFormation Stackを作成したら、次はYOLOv8 をデプロイする。

  • ノートブックインスタンスを開きます:AWSコンソールにアクセスし、Amazon SageMakerサービスに移動します。ダッシュボードから "Notebook Instances "を選択し、CDKデプロイスクリプトによって作成されたノートブックインスタンスを見つけます。ノートブックインスタンスを開いてJupyter環境にアクセスします。

  • inference.pyにアクセスして修正します:Jupyter で SageMaker ノートブックのインスタンスを開き、inference.py ファイルを探します。inference.pyのoutput_fn関数を以下のように編集し、構文エラーがないことを確認してスクリプトに変更を保存します。

import json


def output_fn(prediction_output, content_type):
    """Formats model outputs as JSON string according to content_type, extracting attributes like boxes, masks, keypoints."""
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if result.boxes is not None:
            infer["boxes"] = result.boxes.numpy().data.tolist()
        if result.masks is not None:
            infer["masks"] = result.masks.numpy().data.tolist()
        if result.keypoints is not None:
            infer["keypoints"] = result.keypoints.numpy().data.tolist()
        if result.obb is not None:
            infer["obb"] = result.obb.numpy().data.tolist()
        if result.probs is not None:
            infer["probs"] = result.probs.numpy().data.tolist()
    return json.dumps(infer)
  • 1_DeployEndpoint.ipynbを使用してエンドポイントをデプロイする:Jupyter環境で、sm-notebookディレクトリにある1_DeployEndpoint.ipynbノートブックを開きます。ノートブックの指示に従ってセルを実行し、YOLOv8 モデルをダウンロードし、更新された推論コードとともにパッケージ化し、Amazon S3 バケットにアップロードします。このノートブックは、YOLOv8 モデル用の SageMaker エンドポイントの作成とデプロイをガイドします。

ステップ 6: 配備のテスト

YOLOv8 モデルがデプロイされたら、そのパフォーマンスと機能性をテストすることが重要です。

  • テスト・ノートブックを開く:同じJupyter環境で、sm-notebookディレクトリにある2_TestEndpoint.ipynbノートブックを探して開く。

  • Run the Test Notebook: Follow the instructions within the notebook to test the deployed SageMaker endpoint. This includes sending an image to the endpoint and running inferences. Then, you'll plot the output to visualize the model's performance and accuracy, as shown below.

テスト結果YOLOv8

  • クリーンアップ・リソース:テストノートブックは、エンドポイントとホストされたモデルをクリーンアップするプロセスも案内します。これは、コストとリソースを効果的に管理するための重要なステップです。

ステップ7:モニタリングと管理

テスト後は、展開したモデルの継続的なモニタリングと管理が不可欠である。

  • Amazon CloudWatch で監視:Amazon CloudWatch を使用して、SageMaker エンドポイントのパフォーマンスと健全性を定期的にチェックします。

  • エンドポイントの管理エンドポイントの継続的な管理には、SageMaker コンソールを使用します。これには、必要に応じてモデルをスケーリング、更新、または再デプロイすることが含まれます。

これらのステップを完了することで、Amazon SageMaker Endpoints 上でYOLOv8 モデルのデプロイとテストを成功させることができます。このプロセスは、機械学習のデプロイのために AWS サービスを使用する実践的な経験を身につけるだけでなく、将来的に他の高度なモデルをデプロイするための基礎も築きます。

概要

このガイドでは、AWS CloudFormation と AWS Cloud Development Kit (CDK) を使って Amazon SageMaker Endpoints にYOLOv8 をデプロイする手順を順を追って説明しました。このプロセスには、必要な GitHub リポジトリのクローン、CDK 環境のセットアップ、AWS サービスを使用したモデルのデプロイ、SageMaker でのパフォーマンスのテストが含まれます。

技術的な詳細については、AWS Machine Learning Blog のこちらの記事を参照してください。また、Amazon SageMakerの公式ドキュメントで、様々な特徴や機能についての詳細を確認することができます。

YOLOv8 のさまざまな統合についてもっとお知りになりたいですか?Ultralytics 統合ガイドのページで、機械学習プロジェクトを強化できるその他のツールや機能をご覧ください。



Created 2024-01-04, Updated 2024-06-02
Authors: glenn-jocher (6), sergiuwaxmann (1), abirami-vina (1)

コメント