SageMakerとBedrockでAI離脱しないために
AWSでAIを始めたい・勉強したいとなった時、目につくAIサービスの中でPollyやRekognition, Lex,Qなどは目的と機能が具体的で分かりやすいかと思います。しかし、SageMakerAIとBedrockあたりから話が大きくなり専門性や抽象度も高くなってきてサヨウナラしたりしていないでしょうか。
これら二つは自前でのAIシステム開発で使いそうな感じはしますが、パッと調べてもAI開発の用語が飛び交うため把握や対比が大変な感じがします。その目的やターゲットの違いについて本稿では簡単な比較や概説を行います。
AWSでのAI PoC導入やAIプラクティショナー試験を検討している人向けの全体俯瞰や橋渡し的な想定です。表面的な解説なので詳細については各自で掘り下げてください。
結論:何が違うか
どちらもAI開発に活用できるAWSマネージドサービスですが、以下の対比ができます。
- SageMakerAI :高度に独自のMLモデルを開発、最適化したい(生成AIとは限らない)
- Bedrock :簡便に生成AIを利用したりアプリに組み込んだりしたい(通常は生成AI利用)
| 観点 | SageMaker | Bedrock |
|---|---|---|
| 目的 | 独自のMLモデルを構築・学習・運用するための総合基盤やツールを提供:独自モデルの構築・最適化 | 学習済の生成AIモデルやLLMなどを利用するための基盤やツールを提供:迅速簡便な生成AI利用 |
| 対象ユーザ | データサイエンティストやMLエンジニア | アプリ開発者や業務・ビジネスに近い比較的ライトなユーザ |
| 扱うモデル | 主に自作モデルを扱い、自由に構築・学習・チューニング可能 | 学習済みの公開された基盤モデル(カスタマイズは一部) |
| 機械学習の手段 | あり。独自データを使って再学習・チューニングできる (高自由度) | 原則なし。代わりに「プロンプトチューニング」や「RAG(検索拡張生成)」が中心 |
| カスタマイズ手法 | ファインチューニング、ハイパーパラメータ調整、独自アルゴリズム | モデル選択、プロンプト設計、Guardrails設定、RAG連携 |
| 料金モデル | コンピュート・ストレージ・トレーニング・推論時間ごとに課金 | 推論APIの呼び出し回数・トークン量課金 |
| 代表的な用途 | 需要予測、画像分類、異常検知、レコメンドなど(生成AIに限らない) | チャットボット、要約、コード生成、検索応答など(生成AIが中心) |
AWS SageMaker AI
AWSで機械学習を実装する際の環境やモデル学習、運用管理など全工程をサポートしたサービスを提供します。実体としては多数のサブ機能や選択肢が用意されています。その中から工程や目的に応じて機能・サービスを適宜使い分けていく形になります。
サービスは多岐にわたりますが中には機械学習やクラウド開発自体の理解や習熟が必要なものもあります。本職のAI/MLエンジニアが独自のモデルを最適化するにはSageMakerの各機能を駆使して継続的な開発・チューニング・デプロイをすることになります。
以下は工程ごとの比較的よく使われるサービスや機能の一例です。
| 工程 | 機能・サービス | 概要 |
|---|---|---|
| ① データ準備 | Ground Truth | データラベリングを自動化。教師あり学習の学習データ作成に使用。 |
| ① データ準備 | Data Wrangler | データの前処理・特徴量作成をGUIで簡単に実施。 |
| ② モデル構築・学習 | Studio | Jupyterベースの統合開発環境。データ探索・学習・評価を一元管理可能。 |
| ② モデル構築・学習 | Autopilot | AutoML機能。データを与えるだけで最適なモデルを自動生成。 |
| ② モデル構築・学習 | Canvas | ノーコード・GUIで機械学習モデルを作成・予測可能なMLツール |
| ② モデル構築・学習 | JumpStart | 事前構築済みのモデルやテンプレートを簡単に利用可能。 |
| ③ デプロイ・推論 | Real-Time Inference | データをリアルタイムにモデルへ送信・即応答。 |
| ③ デプロイ・推論 | Batch Transform | 大量データに対して非同期でバッチ処理学習を実行。リアルタイム性不要な場合に有効。 |
| ③ デプロイ・推論 | Serverless Inference | サーバー不要でリクエスト時のみ学習を実行、自動スケーリングしコスト効率が高い。 |
| ④ 運用・MLOps | Pipelines | MLワークフローの自動化。CI/CDによる再学習を簡単に構築できる。 |
| ④ 運用・MLOps | Model Monitor | デプロイ後のモデル精度を監視し、データドリフトを検出。 |
主要な機能としてこの辺から覚えていくといいのではないでしょうか(初学者にはこれだけでも「うげっ」となるかもしれませんが...)。実作業までせずともAWSコンソールから各項目を眺めみるだけでも、各機能でやりたいことと前後関係がイメージしやすいと思います。
当然ながら実際に開発をしたりMLEアソシの試験を受けるならこれらに加えSageMaker他機能含めた掘下げや幅出しが必要です。本当は小節で各項目の掘り下げをもう少し書きたいのだけれども細かい説明や画像の説明が増えるので取り急ぎ超概説だけにとどめておきます。
Bedrock
生成AI利用や運用に特化したサービスで、大規模言語モデル(LLM)や事前学習モデル(Foundation Model, FM)をAPI経由で利用できます。要約、検索、チャット、画像生成など多数の学習済みモデルが公開されており、そこから目的・用途に応じて選択します。
アプリ開発者やライトに生成AIを使いたいユーザがターゲットで、API経由で容易にアプリに生成AIを組み込むこともできるし、モデルの切替も柔軟スピーディに実現できます。
なお、自分で学習させる必要は無いが逆に自分で公開モデルに直接学習させることは通常できない。例えば「生成AIで検索回答しつつ正誤をフィードバックしたい」といった要件は、一般的にモデルの教師あり学習に該当するためBedrockだけでは対応外の構成となります。
Bedrockナレッジベース (いわゆるRAGの利用)
ナレッジベースは、自社や社内の文書・データを活用して生成AIモデル(LLM)がより正確に回答できるようにRAGを実装し情報を補強するためのマネージドサービスです。
公開されたモデル単体では「事前学習された一般知識」しか持たず、前述のように個別に学習させることはできないため、社内情報や専門情報などには通常答えられません。そこで、RAG=Retrieval-Augmented Generationの仕組みを用います。RAGはモデルの外部に知識や文書などのPrivateDataを配置して、生成AIが検索時に参照して情報補強できるようにします。これにより特定のドメイン知識を取り込んだ形で文脈に沿った回答を生成できるようにします。
Bedrockナレッジベースでは以下の工程を自動で実行し、Bedrockで利用する公開モデルにさらに情報精度と信頼性の追加を実現します。
| ステップ | 説明 |
|---|---|
| Retrieval (検索) |
予め社内文書などPrivateDataをS3にナレッジベースとして蓄積。 ユーザーの質問に関連する文書・データをナレッジベースから検索。 多くの場合ベクトル埋め込みで意味的類似度検索を行う。 |
| Augmented(拡張) | 検索結果を「参考情報」としてLLMなどに渡すプロンプトに追加。 |
| Generation (生成) |
拡張された参考情報を考慮して回答を生成。 公開LLMのみによる生成と比べて、外部知識で補強(拡張)されているため精度・信頼性が高い。 |
Bedrockでの例外学習・カスタマイズ
Bedrockで提供される公開FMは通常セキュリティや品質の観点から再学習は不可だが、一部のモデル(主にAmazon Titanシリーズ)はカスタムチューニングが可能な場合がある。
ファインチューニング
ファインチューニングは既存の学習済みモデルに対して少量のデータを追加し特定分野・モデルタスクに適応させる方法です。Amazon Titanなど一部はファインチューニングが可能で、生成AIのモデルに自分の入力データを追学習させることが可能である。
だが他社提供モデルなどほとんどのモデルは プロンプトやRAGでカスタマイズすることとなる。
継続的な事前トレーニング(Continued Pre-training)
既存のFoundation Model(FM)に対して、ラベルなしの大量データを使って追加学習を行うことで、モデルの特定ドメイン知識の適応や表現力を高める手法です。
継続的な事前トレーニングもほぼAmazon Titanシリーズのみが対応可能である。
継続的な事前トレーニングをしてからファインチューニングをする場合もある。ファインチューニングは特定タスク(QAや分類など)の最適化が目的で、継続的事前トレーニングは知識・情報の吸収が目的となる。
あくまでモデル『カスタマイズ』としてファインチューニング"や"継続的事前トレーニング"を行うことができるだけで、モデルを1から再学習させる機能では無い。
AIプラクティショナー試験で「Bedrock"で特定ドメインの知識を『学習/適用/反映』させる」旨の選択肢⇒"Bedrock" ”学習” ⇒ 無理!誤答!とは限らない。モデルの再学習は無理だがRAGやファインチューニングで知識の反映は可能(設問や文脈次第)