Storage

Amazon S3

RAGパイプラインの取り込み元・モデルカスタマイズの学習データ置き場・バッチ推論の入出力先。AIP-C01ではオブジェクトストレージの一般論ではなく、Bedrockの各機能がS3をどう読み書きするかが問われます。

  • B|実装まわり
  • D1 FM統合・データ・コンプラ
  • D3 安全性・セキュリティ・ガバナンス

ひとことで言うと

S3自体の機能説明ではなく、Bedrockの各機能がS3をどう扱うかが試験の対象です。データソース(Knowledge Bases)・学習データ置き場(モデルカスタマイズ)・入出力先(バッチ推論)の3役です。

要するに、Bedrockから見たS3は「棚」ではなく「受け渡し窓口」です。Knowledge Basesは棚に並んだ文書を検索して答えを作りますが、モデルカスタマイズとバッチ推論はS3を素通りする窓口として使います。学習データはJSONLファイルとしてS3に置かれ、Bedrockが読みに来て、結果もまたS3に置かれる。窓口が3つあるだけで、どれも「S3が主役」ではありません。

何に使うか

用途S3の役割関連ドメイン
Knowledge Bases のデータソース元文書+サイドカーメタデータファイルを置く場所D1 1.4
モデルカスタマイズ(ファインチューニング)学習・検証データセット(.jsonl)の置き場所D1 1.2
バッチ推論入力プロンプト(JSONL)と出力結果の受け渡し先D1 1.3 / D2 2.2

試験でどう問われるか

問われ方正解に寄る条件引っかけ
「CSVの特定列だけをメタデータとして扱いたい」<ファイル名>.csv.metadata.json に contentFields / fieldsToInclude を書くメタデータをS3のオブジェクトタグで管理する案(Knowledge Basesのメタデータフィルタはサイドカーファイル方式)
「ファインチューニングの学習データをどう渡すか」S3に .jsonl を置き、モデルカスタマイズジョブにS3パスを指定するSageMaker Ground Truth を経由させる案(それはラベリング用途で、渡し方そのものとは別問題)
「バッチ推論の入力と出力の場所」inputDataConfig / outputDataConfig にそれぞれS3の場所を指定する。バッチ推論はプロビジョンドスループットのモデルには使えない入出力を同じバケットの同じプレフィックスにする案(許可はされるが、出力ファイルの上書き事故を招きやすい)
「マルチモーダル画像を学習データに含めたい」JSONの image フィールドに s3Location.uri(s3://bucket/path)を書く画像をBase64でJSONに埋め込む案(対応モデルによっては可能だが、S3参照の方がファイルサイズ制限に強い)

バッチ推論はツール呼び出し(function calling)と構造化出力に対応していません。入力JSONLの各レコードは独立して処理され、対話的なやり取りを前提とする機能は使えません。「エージェントの処理を一括で流したい」というシナリオでバッチ推論を選ぶのは誤りです。

実務でどう使うか

  • モデルごとに学習データのサイズ上限が違う。 例えばAnthropic Claude 3 Haikuのファインチューニングは最大10GB(学習)+1GB(検証)、Titan Text Premierは学習ファイル1GB・検証ファイル100MBが上限です。上限を跨いだ設計をすると、S3側ではなくジョブ投入時にエラーになります
  • バッチ推論・ファインチューニングとも、別アカウントのS3バケットを使うにはAPI経由の指定が必要。 コンソールの「Browse S3」は同一アカウント前提です
  • Knowledge Basesのメタデータフィルタは、CSVの列を使う方法とサイドカー .metadata.json を使う方法の2系統がある。 CSV方式は「1コンテンツ列+複数メタデータ列」に限定され、サイドカー方式は任意のドキュメント形式に使えて includeForEmbedding などのオプションも持ちます。混同すると「メタデータのはずなのに検索対象に含まれてしまう」ような事故になります

別アカウントのS3バケットを使う場合、コンソールの「Browse S3」は使えません。バッチ推論もモデルカスタマイズも、クロスアカウントのS3パスを指定するにはAPI経由でジョブを作成する必要があります。「コンソールにバケットが出てこない」はバグではなく仕様です。

取り違えやすいもの

迷う相手切り分けの一言
S3 VectorsS3自体はベクトルを保持しない。Knowledge Basesのベクトルストア選択肢の1つとして別サービス扱いになる(浮動小数点のみ・メタデータは1KB/35キーまで)
SageMaker Ground TruthS3はデータの置き場所。Ground Truthはラベル付け(アノテーション)そのものを行う別サービス
Bedrock Data AutomationS3は入出力の場所。Data Automationは非構造化データ(PDF・動画等)を構造化データに変換する処理そのもの

想起チェック

Q1. Knowledge BasesでCSVの特定列だけを検索対象にしたいとき、何を用意しますか?

<ファイル名>.csv.metadata.json というサイドカーファイルを用意し、contentFields で検索対象の列を、fieldsToInclude(または fieldsToExclude)でメタデータ扱いにする列を指定します。

Q2. バッチ推論で使えない機能は何ですか?

ツール呼び出し(function calling)と構造化出力(response_format)です。各レコードが独立処理される前提のため、対話的なやり取りが必要な機能は使えません。

出典(AWS公式)