はじめに
前回の記事では、サーバーレス技術の解説を通じて、弊社が具体的にどのようにAIシステムを開発しているかをご紹介しました。AWSとGCPの2つのプラットフォームにフォーカスしましたが、今回の記事では特にAWSを用いた開発手法に焦点を当て、筆者が実際に手がけたAI Botの実装について解説していきます。
今回のAIシステムは、画像内の特定の物体を検出して処理を行う物体検出系のシステムです。AIモデルには物体検出を担当するYOLOv5を採用し、学習データの準備、学習の実行、推論を行うプログラムの実装、そしてフロントエンドの実装といった工程が必要となります。この過程で、Amazon SageMaker、特にServerless Inferenceを活用することで、コストを最小限に抑えながらサーバーレスでAIシステムを開発していく手順をご紹介します。
Amazon SageMaker Serverless Inference
SageMakerについて
AWSには、機械学習に必要な学習、開発、モデルのデプロイなどが行えるフルマネージドなインフラストラクチャであるSageMakerが用意されています。今回のようにモデルの学習から推論までを行うケースでは、効果的に利用できますが、学習や推論時にEC2インスタンスを起動することになり、その部分のコストを気にかけておく必要があります。特にSageMakerで推論用のエンドポイントを用意する場合、リアルタイム推論としてEC2インスタンスを常時稼働させるため、時間単位での課金が発生します。プロトタイプの作成時などアクセス数が多くない場合でも、料金がかかってしまう可能性があるので、その点を考慮する必要があります。
Serverless Inferenceについて
SageMakerにはServerless Inferenceという、リアルタイム推論ではなくサーバーレス推論を行う機能があります。前述のようにリアルタイム推論ではEC2インスタンスが常に稼働しているため、コストがかさむことがありますが、Serverless Inferenceを使用すると、推論が行われる際だけシステムが起動し、それ以外の時間はインスタンスが稼働しないため、コスト面で効果的です。
推論を行う際のシステム概要は、APIの実行によりAIモデルが推論を行うための推論用コンテナが起動され、コンテナがS3に配置されたAIモデルをダウンロードして推論を行い、結果を返すという流れです。
この具体的な実装については、後の章で詳細に解説していきます。今回の目標はコストを最小限に抑えながら実装することなので、学習はGoogle Colaboratoryで行い、推論エンドポイントはAmazon SageMaker Serverless Inferenceを使用することにしました。