AIシステムのプロトタイプにおけるサーバーレスの活用
弊社では、Cloud Functionsを用いたAIシステムのプロトタイプ開発を複数行っています。今回はその一つを取り上げ、開発の進行方法やAIモデルの組み込み方を簡単に紹介します。
このシステムでは、画像認識のAIを用いて画像内の物体を検出し、それに対する処理を行います。Cloud Functionsを選定した理由は、Webフロント側をFirebase Hostingで用意することになったからです。Cloud FunctionsはFirebaseの各機能との連携が可能で、その点においてLambdaよりも便利に開発を進めることができます。また、仕様決定の段階で大量のメモリや処理時間が必要になると判断したため、その面で余裕が持てるCloud Functionsを選択したという理由もあります。
プロトタイプの構成は非常にシンプルで、以下の図のようになっています。
処理の流れは次の通りです。WebフロントからAIに判定してもらいたい画像をCloud Functionsに送信し、Cloud Functions上でAIモデルを動かして推論を行います。この時、AIモデルはCloud Storageに保存されており、推論を行う前にダウンロードしてCloud Functions上で展開します。推論などの処理が終わった後、結果をWebフロントに返します。
Cloud FunctionsでAIモデルを扱う際に注意すべき点は、メモリサイズの上限と推論の処理時間です。今回のケースでは、YOLOv5をベースとしたAIモデルと大きめの推論画像をメモリに載せる必要があったため、必要なメモリが多くなると予想されましたが、4GBも確保してあればメモリ不足にならないことが確認できました。
また、Lambdaと同様に、Cloud FunctionsはGPUではなくCPUを使用します。AIモデルの推論処理はGPUの方が効率が良く、速度面での大きな差が出ます。そのため、プロトタイプ段階では処理速度が許容範囲内であっても、本番環境を想定すると許容範囲を超える可能性があります。その場合は、AWSのEC2インスタンスなど、GPUを利用した推論用のサーバーを用意する必要があります。
このように、サーバーレス技術はプロトタイプ開発の初期段階では低コストで始められる便利な手段ですが、実際の運用を考えると、サーバーレスで運用できるか、サーバーを設置する必要があるかを判断する必要があります。
連載の次回以降では、本格的なAIシステムの開発における、サーバーレスの実装方法について紹介します。
