はじめに
近年、ChatGPTやDALL-E3などの生成系AI分野の発展が目覚ましいですが、実際にこれらのAIモデルを活用したシステムを構築した経験がある人はどの程度いるでしょうか?
ビジネスシーンでの課題解決や趣味でAIを活用したいと考えている人など、最初に直面するであろう問題として、「AIを活用したいが、始め方が分からない」「費用や工数はどの程度かかるのだろう」という疑問があります。この連載では、サーバーレスを活用したAIシステムのプロトタイプ開発を通じて、これらの問題を解決する方法を提供します。また、AI開発を始めてみたい人々が一歩を踏み出す助けとなることを目指して、AIシステム開発の入門を解説します。
このシリーズは全3回の連載を予定しています。第1回の記事では、サーバーレス技術の解説とその活用について、第2回ではAWSを活用して開発したAIシステムの実装例を紹介し、第3回ではGCPを活用してChatGPTを組み込んだシステムの実装例を紹介します。
サーバーレスとは
システム開発を行うにあたって、まずそのシステムをどの環境で動かすかを考える必要があります。自分でサーバーを管理しながら開発することもできますが、ゼロからインフラを構築するには多大な労力が必要です。そこで活用できるのがサーバーレス技術です。
自分でサーバーを用意する場合、開発ツールの環境構築、冗長構成の設計、サーバーダウン時の対応など、多くのことを考慮する必要があります。これは素早くプロトタイプを開発したい場合には適していません。一方、サーバーレス環境を利用すると、開発環境が最初から整っていたり、負荷がかかったときに自動的に分散してくれたりするため、インフラ周りの悩みが大幅に減ります。
今回は、その中でもAWSのLambdaとGCPのCloud Functionsを取り上げ、それぞれの利用方法を紹介していきます。
LamdaとCloud Functions
LambdaとCloud Functionsは、それぞれAWSとGCPで動作するサーバーレス環境です。これらの魅力は、それぞれのクラウドプラットフォームのサービスを簡単に利用できる点にあります。S3やCloud Strageなどのストレージサービス、RDSやCloud SQLなどのデータベースサービスなど、必要なサービスを随時取り入れながら開発を進めることが可能です。
サーバーレス技術を選ぶ際に、LambdaとCloud Functionsのどちらを利用するかを検討するかもしれません。基本的には、利用したいサービスがAWSまたはGCPにあれば、そのプラットフォームを選択するのが一般的です。ただし、それぞれには独自の特性と利点があるため、それらを比較し理解することも重要です。
LambdaやCloud Functionsなどのクラウドサービスには、ある程度の利用量まで無料で利用できる枠があります。プロジェクトの規模にもよりますが、プロトタイプの試用段階では、多くの場合、利用料金がこの無料枠に収まります。これは、コストを抑えながら開発を進める上で大きなメリットとなります。
無料枠/月 | Lambda | Cloud Functions |
---|---|---|
リクエスト | 100万リクエスト | 200万リクエスト |
コンピューティング時間 | 400,000GB秒 | 400,000GB秒 |
関数からのデータ送信 | 100GB | 5GB |
Cloud Functionsはリクエスト数に対する無料枠が多く、一方でLambdaは大きなデータの送信に対する許容量が大きいです。
次に、機能面で比較します。Cloud Functionsには第1世代と第2世代があり、第2世代の方がメモリ割り当てと実行時間に優れています。AIシステムの開発においてこれらの要素は重要ですので、この比較では第2世代Cloud FunctionsとLambdaの最大スペックを比較します。
スペック | Lambda | Cloud Functions |
---|---|---|
最大メモリ | 10.24GB | 32.0 GB |
最長実行時間 | 15分 |
HTTPトリガー:60分 イベントトリガー:9分 |
最大同時実行数 | 1,000 | 3,000 |
クラウドサービス数 | AWS:約220種類 |
GCP:約165種類 Firebaseとの連携が可能 |
主要な部分を抜き出してみると、Cloud Functionsは最大メモリと最長実行時間でLambdaを上回っています。したがって、Lambdaのスペックが不十分な場合は、Cloud Functionsの利用を検討するとよいでしょう。
また、提供しているクラウドサービスの数も異なり、AWSは約220種類、GCPは約165種類です。GCPにはFirebaseの各種機能との連携という利点もあります。