コンテンツへスキップ

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

Ultralytics'YOLOv8のような高度なコンピュータビジョンモデルを Amazon SageMaker Endpoints にデプロイすることで、様々な機械学習アプリケーションの可能性が広がります。これらのモデルを効果的に使用する鍵は、そのセットアップ、設定、およびデプロイプロセスを理解することにあります。YOLOv8 、AWSによる堅牢でスケーラブルな機械学習サービスであるAmazon SageMakerとシームレスに統合されると、さらに強力になります。

このガイドでは、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アカウントにサインアップしてください。

  • 設定された IAM ロール:Amazon SageMaker、AWS CloudFormation、Amazon S3に必要な権限を持つIAMロールが必要です。このロールは、これらのサービスへのアクセスを許可するポリシーを持っている必要があります。

  • 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ノートブックを探して開く。

  • テストノートブックを実行します:ノートブック内の指示に従って、デプロイされた SageMaker エンドポイントをテストします。これには、エンドポイントに画像を送信し、推論を実行することが含まれます。その後、以下のように出力をプロットして、モデルのパフォーマンスと精度を視覚化します。

テスト結果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 統合ガイドのページで、機械学習プロジェクトを強化できるその他のツールや機能をご覧ください。



作成日:2024-01-04 更新日:2024-05-03
作成者:glenn-jocher(3),abirami-vina(1)

コメント