ついに発表された!Generative AI on AWS を調べてみた
本記事では、本日2023/04/13に発表されたGenerative AI on AWSを調べてみましたので、まとめてみたいと思います。
はじめに
2022年末にChatGPTが登場して以降、我々エンジニアの業務は大きな転換期を迎えています。
以前からAIやMLというワードはありましたが、ここまで早くAIの威力を思い知ることになるとは夢にも思っていませんでした。
そんな空前のAIブームが到来した今日、このビックウェーブに乗らない手はない。
ということで、私個人は先月からGPTなどの勉強を始めていました。
その矢先あのビックテックの一角であるAmazonが動き出しました!!
我々エンジニアとしては、AWSは毎日利用するようなサービスであり、ぜひとも押さえておきたい、ということで本記事にて今回発表されたサービスについてまとめたいと思います。
情報は以下AWSの発表内容を元にしています
TLDR
- Amazon と AI
- 発表されたサービス
- Amazon Bedrock
- Amazon Titan
- EC2 Trn1n instances and Inf2 instances
- Amazon CodeWhisperer
Amazon と AI
実はAmazonはAIにかなりの力を入れており、20年以上の研究開発を行ってきました。その成果に基づいて、現在もいろいろなサービスを提供しています。
具体的には、
- Amazonネットショップでのおすすめ商品の表示
- 配送工場での経路最適化
- Amazon GO (無人店舗での画像認識で利用)
などで活用されてきました。
また、Amazonの子会社であるAWSでは、このAmazonで培われたAI技術を民主化するために重要な役割を担っています。
例えば、Amazon Sagemaker というサービスがローンチされています。このサービスを使うことで、ユーザは安価なインフラコストでAIモデルをトレーニングし、簡単にデプロイすることができるようになりました。
そして、現在のChatGPTによる盛り上がりを受け、AWSもこの生成AI(Generative AI)の領域に乗り込むことを決めました!
発表されたサービス
本セクションでは、今回発表されたサービスをそれぞれまとめたいと思います。
Amazon Bedrock
一言で言うと、ChatGPTを提供するOpenAIを意識したサービスになります。
もう少し詳細に言えば、AWSが提供するFMsを利用し、API繋ぎこみを行うだけで簡単に生成AIを構築できるサービスになります。
このFMsとは、Foundation Modelsの略称で、日本語では「基盤モデル」と呼ぶそうです。
このFMsの特徴は、事前に大量かつ多様なデータでトレーニングを行い、エッジケースに対してはデータをカスタマイズ(俗に言うファインチューニング)することでタスクをこなすことができるモデルという点です。
そのため、ユーザは事前にAWSが提供するFMsを選び、そのまま利用することもできますし、ドメイン知識が特殊なケースでは、そのデータを学習させることで企業独自のケースに対応したモデルが作ることができるようになります。なお、このFMsには、昨今話題のBERT,GPT-3も含まれます。
ここで一点私が気になったのは、BedrockにはどのようなFMsが提供されるのかという点です。OpenAIやGoogleが提供するモデルをすぐに利用できるとは考えにくく、いいFMsが存在しないならAWSを選定する必要はないのでは?と感じました。
この点について、実は昨年11月にAWSは画像生成AIのStable Diffusionで有名なStability AIとパートナシップを結んでいます。そのため、Bedrockでは、Stability AIが提供するFMsが利用できるのです。
その他にも多言語対応したLLMのJurassic-2やChatGPTのような会話や質疑を行えるClaudeというFMsも提供されます。
残念ながら、今回の発表でJurassic-2の対応言語に日本語は含まれておりませんでしたが、近い将来対応してくれると信じましょう。
そして、次の章で説明しますが、Amazon TitanというAmazon独自のFMsも発表されました。
また、このAmazon Bedrockの特徴にカスタマイズ性が挙げれています。
競合であるOpenAIのGPTでもファインチューニングと呼ばれるデータのカスタマイズは可能です。しかし、ファインチューニングとはいえ、それなりのデータが必要になります。
以下はOpenAIのドキュメントを引用していますが、少なくとも数100個のデータは必要とのことです。
To fine-tune a model that performs better than using a high-quality prompt with our base models, you should provide at least a few hundred high-quality examples, ideally vetted by human experts.
一方、このBedrockでは、S3にあげたデータを学習に利用し、20件ほどのデータで学習可能とのことです。マーケティング側面での数値のような気がしますが、それでも学習データはOpenAIの半分以下で済むというのは魅力的なポイントになりそうです。
Customers simply point Bedrock at a few labeled examples in Amazon S3, and the service can fine-tune the model for a particular task without having to annotate large volumes of data (as few as 20 examples is enough)
Amazon Titan
Amazon Titan は Amazonが開発したFMsの名称で、Amazonの20年間の研究で得られた知見から作り出させれたテキスト生成系のAIモデルになります。
なお、ユースケースでは以下などが可能と記載されています。
- 自然言語でのテキスト生成や要約作成
- 個人の情報を学習し、より正確な検索体験の提供
- 不適切なコンテンツの書き換え
どのようなレベルのモデルなのか気になり、はやく利用してみたいなと思います。
EC2 Trn1n instances and Inf2 instances
EC2の新しいインスタンスタイプとして、Amazon EC2 Trn1nインスタンスとAmazon EC2 Inf2インスタンスが発表されました。これは機械学習に最適化されたインスタンスです。
Trn1nインスタンスは、AWS Trainiumを搭載し、トレーニングコストを最大50%削減し、1600Gbpsのネットワーク帯域幅と従来のTrn1インスタンスより20%高いパフォーマンスで、大規模でネットワーク集約型のモデル向けに提供されます。
Inf2インスタンスは、AWS Inferentia2を搭載し、数千億のパラメータを含むモデルを持つ大規模な生成AIアプリケーション向けに最適化されています。前世代のInferentiaベースのインスタンスと比較して、最大4倍のスループットと最大10倍のレイテンシーを実現し、他の同等のAmazon EC2インスタンスと比較して最大40%優れた推論価格性能を提供します。
総じて言えることとしては、機械学習には大規模なインフラが必要であり、数値は正直ピンとこないレベルだなという印象です。
Amazon CodeWhisperer
個人的には最も気になったサービスです。
Amazon CodeWhispererは、Github Copilotの競合になるサービスで、エンジニアの開発効率をあげてくれます。
明記される機能は主に以下になります。
- 自然言語からコードを自動生成
- セキュリティチェック
- OSSを参照したsuggestion
自然言語からコードを自動生成
これはCopilotとまったく同じ機能かと思いますが、コメントなどにやりたいことを書くと自動でコードを生成してくれる機能です。
セキュリティチェック
こちらもSnyncやAmazon CodeGuruなどで提供されるようなサービスと同様のものかと思います。
コード内にOWASPで定義されたような脆弱性が存在すれば検知しアラートをあげてくれる機能のようです。
OSSを参照したsuggestion
個人的にはこの機能は便利そうだなと思いました。CodeWhispererでは、OSSのコードを学習しており、類似したコードをSuggestionしてくれるのでそこにフラグを立てたり、あとでフィルタリングして探したりすることができるようです。
また、関連するOSSのリポジトリURLとライセンスを取得することで、レビューを容易にしたり、ライブラリ選定時にライセンスをパッと確認できたりするようです。
今後、どんどんAIがコードを書くようになる中で、どのライブラリを使うか、ライセンスは問題ないかに集中できるようになりそうですね。
なお、CodeWhispererが対応する現在の言語は以下になります。
- Python
- Java
- JavaScript
- TypeScript
- C#
- Go
- Kotlin
- Rust
- PHP
- SQL
有名ところはある程度カバーしているものの、Rubyがサポートされていないのは残念でもありますね。
また、CodeWhispererの費用は個人開発では無料なので、とりあえず有効にしてみるのもよさそうです。私も機会があればレビュー記事を書いて見たいと思います。
まとめ
いかがでしたでしょうか?
かなり突貫で書いてしまった記事ということもあり、ところどころ読みにくかったり、誤っている箇所もあるかもしれません。
そのため、本記事を読んで面白そうだなと思った場合はぜひ実際にAWSの情報を読んでみてください。
本記事を読んでいただきありがとうございました。
Discussion
FAQ の Which programming languages and IDEs does CodeWhisperer support? の項目を見ると Ruby と RubyMIne が言及されているので、Ruby にも対応しているんじゃないかなと思いました (まだ試してないので実際のところはわかりません)。
Kenta Murata さん
コメントありがとうございます!
おっしゃる通り、いただいたFAQでは Ruby も対応していそうですね。失礼いたしました。
私の方は以下の内容プレスで発表されていた内容を引用しておりましたが、FAQの方が正しそうな気がしますね。
こちらはRubyでも利用できるか実際に私の方でも試してみます!