AWS Inferentia2 上でのペット行動検出のための視覚言語モデルのコスト効率的なデプロイ
Tomofun 社は、GPU インスタンスから AWS Inferentia2 ベースの EC2 Inf2 インスタンスに移行することで、Furbo ペットカメラの推論コストを 83% 削減し、高精度と低レイテンシを維持しました。この記事では、BLIP モデルの適応、アーキテクチャ、ストレステストを含む移行プロセスを詳しく説明します。
Tomofun は台湾に本社を置くペットテクノロジースタートアップで、Furbo ペットカメラを通じてペットの行動(吠える、走るなど)をリアルタイムで検出し、飼い主に警告を送ります。この機能の中核には、ビデオストリームからペットの行動を解釈するコンピュータビジョンおよび視覚言語モデルがあります。
当初、Furbo の推論ワークロードは GPU ベースの Amazon EC2 インスタンスでホストされていました。GPU は高スループットを提供しましたが、常時オンで大規模なリアルタイム推論をサポートする必要があるため、コストが高くなっていました。コスト削減と精度維持のために、Tomofun は AWS のカスタム AI チップ Inferentia2 を搭載した EC2 Inf2 インスタンスに移行しました。
課題:リアルタイム視覚言語モデルの大規模 GPU 推論コスト削減
高度な視覚言語モデル(BLIP など)を GPU インスタンスで実行することは、常時オン、リアルタイム推論のワークロードにはコスト効率が悪いことが判明しました。Tomofun は、数十万台のデバイスにわたってほぼ継続的なペット行動監視を維持しつつ、モデルの忠実性とスループットを維持する必要がありました。さらに、すでに PyTorch 向けに最適化された BLIP コードの大部分を書き換えることなくこれを実現する必要がありました。
ソリューション概要
システムは 2 層アーキテクチャを採用しています。第 1 層では、Elastic Load Balancing (ELB) と Auto Scaling グループを使用して API サーバーをホストし、Furbo カメラからの画像ストリームを処理します。第 2 層では、推論インスタンスを実行し、画像を BLIP モデルに渡します。BLIP モデルは 3 つのコンポーネント(イメージエンコーダ、テキストエンコーダ、テキストデコーダ)に分解され、各コンポーネントは軽量ラッパーを介して torch_neuronx でコンパイルされ、Neuron 最適化された TorchScript アーティファクトに変換された後、推論パイプラインに統合されます。このモジュラーアプローチにより、元の BLIP アーキテクチャは変更されませんでした。
初期実装では、Furbo の API は推論呼び出しを GPU コンテナのみにルーティングしていましたが、現在では Inf2 ベースのコンテナにもリクエストを送信できるようになり、アップストリーム API やダウンストリームアラートロジックを変更する必要はありません。このアーキテクチャにより、Tomofun は GPU と Inferentia2 のバックエンドをリアルタイムで切り替えながら推論リクエストを処理でき、高可用性を維持しつつ、コスト効率の高い推論を柔軟にスケールできます。
Amazon CloudWatch はレイテンシ、スループット、エラー率などの主要な運用メトリクスを監視します。ELB は CloudWatch メトリクスとしての受信リクエスト数に基づいてインスタンスプールのサイズを管理します。各インスタンスタイプのスループットベンチマークはストレステストで確立されているため、スケーリング決定は画像リクエスト量に直接基づいて行われます。
Inferentia2 での BLIP の最適化
BLIP はイメージエンコーダ、テキストエンコーダ、テキストデコーダの 3 つのコンポーネントで構成されています。Inferentia2 でのサポートのために、Tomofun はモデルをコンポーネントに分解し、入出力形状に適合する軽量ラッパーを作成しました。各コンポーネントは torch_neuronx で独立してコンパイルされ、推論パイプラインに組み合わされました。
コンパイルフェーズでは、元のモデルコンポーネントが torch_neuronx.trace() に直接渡され、Neuron 最適化された TorchScript アーティファクトにコンパイルされます。デプロイフェーズでは、コンパイルされたサブモジュールがラッパークラスを通じてロードされ、最終的な BLIP 推論パイプラインが構築されます。ラッパーはデプロイ時のみ使用され、コンパイルモデルをロードして I/O をフォーマットするため、元のコードは変更されません。
ストレステスト
Tomofun は実際の Furbo カメラワークロードをシミュレートするストレステストを実施しました。各ビデオストリームは、「犬が吠えているか?」、「犬が遊んでいるか?」、「犬が家具を噛んでいるか?」などのアクション検出クエリをトリガーしました。テストにより、Inf2 インスタンス(1 つの Inferentia2 チップ、32 GB メモリ)が必要なスループットを維持し、低レイテンシを達成できることが確認されました。オンデマンド GPU インスタンスと比較して、Inf2.xlarge インスタンスへの移行によりコストが 83% 削減され、パフォーマンスは損なわれませんでした。
結論
BLIP 推論を AWS Inferentia ベースの EC2 Inf2 インスタンスに移行することで、Tomofun は Furbo アプリケーションのデプロイコストを 83% 削減しました。GPU から Inferentia2 への移行はシームレスで、軽量ラッパークラスのみが必要であり、BLIP のコアロジックは変更されていません。テストにより、Inferentia2 の使用はデプロイコストを削減するだけでなく、大規模リアルタイム推論の高スループットも維持できることが確認されました。Tomofun はさらに多くのワークロードを Inferentia2 に移行する計画であり、AWS ディープラーニングコンテナの採用もロードマップに組み込まれています。