📚 AWS 機械学習試験対策 まとめノート(AIF → MLA 対応)
1. SageMaker 組み込みアルゴリズム(用途別早見表)
SageMaker(AWS のマネージド機械学習プラットフォーム)には、用途別の事前実装アルゴリズムが用意されています。問題でよく問われる「この用途ならコレ」を整理します。
| 用途 | 最適アルゴリズム | 理由・特徴 |
|---|---|---|
| 高次元かつ疎(スパース:ほとんどがゼロ)な特徴量での分類・回帰(例:ユーザーID×商品ID) | Factorization Machines(FM:因子分解機) | ワンホットエンコーディング(カテゴリ値を 0/1 ベクトルに展開する手法)後の大規模疎行列を効率的に扱える |
| 多系列の時系列予測(数百店舗・SKU など) | DeepAR | 系列横断で共通モデルを学習。related_time_series(関連時系列)や categorical features(カテゴリ特徴量)でイベントフラグやSKU IDを渡せる |
| ストリーミング/時系列の教師なし異常検知 | Random Cut Forest(RCF:ランダムカット森) | リアルタイムで異常スコアを返す |
| 画像のピクセル単位領域抽出(建物の輪郭など) | Semantic Segmentation(セマンティックセグメンテーション:意味的領域分割) | 各ピクセルにクラスを割り当てる |
| カテゴリ変数が多い表データの分類 | CatBoost(JumpStart 経由) | 欠損値・高カーディナリティ(カテゴリ値の種類が多い)に強い |
| 高速なテキスト分類・単語埋め込み | BlazingText | supervised モードで __label__クラス名 形式の入力ファイルを使う |
| IPアドレスとユーザーの組み合わせ異常検知 | IP Insights | 不正アクセス検知向け |
| 二値分類・回帰の定番 | XGBoost | 勾配ブースティング系の代表 |
2. ハイパーパラメータ調整:SageMaker AMT(Automatic Model Tuning:自動モデル調整)
AMT はモデルの最適なハイパーパラメータ(学習率や木の深さなど、人間が事前に決めるパラメータ)を自動探索する機能です。
戦略の選び分け
- Bayesian Optimization(ベイズ最適化):過去の試行結果を使って次の試行点を賢く選ぶ。試行回数を抑えたいときに最適。Warm Start(過去ジョブを Parent として再利用)も可能。並列度は抑えめにするのが定石。
- Hyperband(ハイパーバンド):性能の悪い試行を早期停止(Early Stop)してリソースを節約。学習が長時間で、序盤のロス(損失:予測と正解のズレ)から優劣が判別しやすいニューラルネットワーク学習 に特に有効。並列度を高くできる。
- Random / Grid:単純探索。並列度を高くできる。
設定要素
- ObjectiveMetric(目的指標)の最大化/最小化を指定
- ParameterRanges で連続値・整数・カテゴリの範囲を定義
- 複数指標の同時最適化は非対応 → 学習スクリプト内で 複合スコア(例:F1スコアと推論レイテンシの加重平均) を計算して出力する
3. 大規模言語モデル(LLM:Large Language Model)の効率的微調整
GPU メモリが限られるなかで巨大モデルを学習するための技術群です。
PEFT(Parameter-Efficient Fine-Tuning:パラメータ効率的微調整)
モデル全体ではなく、小さな追加モジュールだけを学習する手法の総称。
- LoRA(Low-Rank Adaptation:低ランク適応):元の重み行列に低ランク(小さなサイズ)の追加行列だけを学習。フル微調整より圧倒的に省メモリ。
- QLoRA:4bit 量子化(重みを4ビット整数に圧縮)+ LoRA。VRAM(GPU メモリ)制約が厳しいときの最適解。Hugging Face DLC(Deep Learning Container:深層学習用コンテナ)で
bitsandbytesとpeftライブラリを併用するのが SageMaker での王道。 - Adapter Tuning:各層に小さなアダプタ層を挿入して学習。
- Prompt Tuning:学習可能な「ソフトプロンプト」(埋め込みベクトルとしてのプロンプト)のみを学習。
「まず何から試すべきか」の順序
- プロンプトエンジニアリング(指示文の工夫):追加データがわずかで、フル微調整のコストをかけたくないとき
- RAG(Retrieval-Augmented Generation:検索拡張生成):自社データを根拠に回答させたいとき
- PEFT(LoRA / QLoRA):少量データで挙動を変えたいとき
- フル微調整 + 継続事前学習(Continued Pre-training):本格的なドメイン適応が必要なとき
4. 分散学習:規模に応じた使い分け
| 状況 | 使うべき機能 |
|---|---|
| データが大きい(数十GB〜TB)、モデルは1GPUに収まる | SMDDP(SageMaker Distributed Data Parallel:SageMaker 分散データ並列) |
| モデル自体が1GPUに収まらない | SMP(SageMaker Distributed Model Parallel:SageMaker 分散モデル並列) でレイヤをノード間に分割 |
| データもモデルも巨大(8ノード×8GPU等) | SMP + SMDDP の組み合わせ |
| ZeRO Stage 3(メモリ最適化技術)や Flash Attention を使いたい | SMDDP の Sharded Data Parallel(分割データ並列)+ Hugging Face DLC |
| 数百〜数千GPUの長時間ジョブ、自動復旧したい | SageMaker HyperPod |
5. Amazon Bedrock と RAG(検索拡張生成)
Bedrock は基盤モデル(Claude、Llama など複数モデル)をAPI経由で使える AWS のマネージドサービスです。
主要機能
- Knowledge Bases:社内文書をベクトル化して登録し、RAG を構築。ベクトルストアとして OpenSearch Serverless / Aurora PostgreSQL(pgvector)/ MongoDB Atlas / Pinecone / Redis Enterprise Cloud が利用可能。
- Guardrails:ハルシネーション(生成AIが事実と異なる内容をもっともらしく出す現象)対策。ソース外回答の禁止などのポリシーを設定。
- Model Evaluation:自動評価(ROUGE などの組み込みメトリクス)と人手評価(自社ワーカー or AWSマネージドワーカー)を併用可能。
- Provisioned Throughput:Custom Model(カスタムモデル)を SLO(Service Level Objective:サービス品質目標)で使うために MU(Model Unit:モデルユニット)を購入して専用キャパシティを確保。
- Batch Inference:CSV を投入し非同期処理。月1000万件レベルのレイテンシ許容ケースで Claude Haiku(軽量モデル) との組み合わせがコスト最適。
- Custom Model Import:SageMaker JumpStart で微調整したアーティファクトを Bedrock に取り込み可能。
RAG のベクトル類似度
- 典型的な距離メトリクスは Cosine Similarity(コサイン類似度:ベクトルの角度ベースの近さ)
- OpenSearch を独自運用する場合は k-NN プラグイン(k-Nearest Neighbors:k近傍法)を使い、KNN フィールドで検索
チャンク戦略(PDFを意味のある単位に分割する方法)
- セマンティックチャンク:意味境界を保って分割
- 固定サイズチャンク:例えば 300トークン + 20% オーバーラップ
6. 評価指標の選び方
これは試験で最も問われる領域です。
| 業務要件 | 最適な指標 |
|---|---|
| 偽陰性(実際は正例なのに負例と予測)を避けたい(病気の見逃し、不正の見逃し) | Recall(再現率) |
| 偽陽性(実際は負例なのに正例と予測)を避けたい | Precision(適合率) |
| 二値分類で正例/負例の順序付けの良し悪し | AUC(Area Under the Curve:ROC曲線下面積) |
| 不均衡データ(例:不正取引0.5%)の総合評価 | PR-AUC(Precision-Recall AUC) や F1スコア |
| 多クラス分類で少数クラスを取りこぼしたくない | Macro F1(クラスごとのF1を単純平均、少数クラスも公平に反映) |
| 時系列予測でビジネスサイドにも分かりやすい | MAPE(Mean Absolute Percentage Error:平均絶対パーセント誤差) |
| DeepAR の不確実性も含めた評価 | wQL(Weighted Quantile Loss:重み付き分位点損失) を複数分位点で算出 |
⚠️ 不正検知の典型ワナ:AUC が 0.95 でも本番で誤検出が多いケース → PR-AUC を追加 し、scale_pos_weight(正例重み比)と判別しきい値を AMT でチューニング。
7. データ前処理・不均衡対策・データリーケージ
クラス不均衡(正例が極端に少ない)への対処
scale_pos_weightを「負例/正例比」に設定(XGBoost)sample_weightを行ごとに付与- SMOTE(Synthetic Minority Over-sampling Technique:合成少数クラス過サンプリング) で少数クラスを合成
- 評価には F1 / PR-AUC / aucpr を使う
目的変数が右に偏った分布の回帰
- log変換 で学習 → 予測後に expm1(=exp(x)-1) で逆変換
時系列のデータリーケージ(未来情報の混入)防止
- 学習・検証・テスト分割を 時系列順 に行う
- 特徴量は 過去から未来の方向のみ で計算する
バイアス検出(SageMaker Clarify)
- 学習前の偏り検知に pre-training bias metrics:
- CI(Class Imbalance:クラス不均衡指標)
- DPL(Difference in Proportions of Labels:ラベル比率差)
- 学習後の解釈には SHAP値(SHapley Additive exPlanations:各特徴量の予測寄与度をゲーム理論で算出)をグローバル集約。
8. 過学習(オーバーフィッティング)対策
| 手法 | 説明 |
|---|---|
| L2正則化(Weight Decay:重み減衰)/ Ridge回帰 | 重みの二乗和を損失に加えてスケールを抑制。多重共線性(特徴量同士の相関が強すぎる問題)緩和にも有効 |
| Dropout | 学習中にランダムにニューロンを無効化 |
| Early Stopping(早期停止) | 検証指標が改善しなくなったら学習終了。XGBoost なら early_stopping_rounds=20(20ラウンド連続で改善なしなら停止) |
| Data Augmentation(データ拡張) | 画像ならランダムクロップ・反転で学習データを水増し |
| 転移学習(Transfer Learning) | 事前学習済みモデルを少量データで微調整。JumpStart で簡単に実現可能 |
9. アンサンブル学習(複数モデルを組み合わせて精度向上)
| 手法 | 性質 |
|---|---|
| Bagging(バギング:Bootstrap Aggregating) | 並列学習、分散低減。ブートストラップサンプリング(重複ありランダム抽出)で多様性確保。代表例:Random Forest |
| Boosting(ブースティング) | 直列学習、バイアス低減。弱学習器を逐次学習し誤差を補正。代表例:XGBoost / LightGBM / CatBoost |
| Stacking(スタッキング) | メタ学習、異種統合。複数モデルの予測を別の上位モデル(メタモデル)でさらに学習 |
勾配ブースティング3兄弟の違い
- XGBoost:最も広く使われる定番。SageMaker Built-in でも提供
- LightGBM:ヒストグラムベースで高速
- CatBoost:順序回帰でカテゴリ列を扱いやすい
AutoGluon Tabular の鉄板運用
presets="best_quality"で多層スタッキングし、CV(Cross-Validation:交差検証)を増やして頑健性を高める。
10. SageMaker 周辺機能(MLOps関連)
- SageMaker Experiments:実験ごとのメトリクス・コードバージョン・ハイパーパラメータをトラッキングして比較
- SageMaker Pipelines:ML ワークフローの構築。TrainingStep(学習)→ ProcessingStep(前処理・評価)→ ConditionStep(条件分岐)→ RegisterModelStep(モデル登録)の流れが定番。同一入力・同一構成のステップはキャッシュで再実行スキップ可能
- SageMaker Debugger:学習中の異常を自動検知。組み込みルール:exploding_tensor(勾配爆発)、VanishingGradient(勾配消失)、LowGPUUtilization(GPU低使用率)など。アクション設定でジョブ自動停止可能
- SageMaker Profiler:フレームワーク・システム両方のメトリクスを可視化。GPU使用率が低いボトルネック特定に有効
- SageMaker Clarify:バイアス検出・モデル説明性(SHAP値)
- SageMaker Model Registry:モデルバージョン管理
- SageMaker Model Cards:モデルの目的・データ・評価結果・倫理的考慮を文書化(ガバナンス強化)
- SageMaker Autopilot:AutoML(自動機械学習)。アルゴリズム選択・特徴量エンジニアリング・チューニングを自動化。時系列予測では target 列名・timestamp 列名・予測ホライズン(予測期間)・頻度を指定
- SageMaker JumpStart:事前学習済み基盤モデル(Llama 等)をワンクリックでデプロイ・微調整。業界別ソリューションテンプレートも提供
- SageMaker Data Wrangler:データ前処理 GUI。Insights Report 機能で相関やヒストグラムを最少工数で確認
- SageMaker Neo:エッジデバイス(Jetson Nano 等)向けにコンパイル最適化
- SageMaker FMEval:(Foundation Model Evaluations:基盤モデル評価)JumpStart や独自モデルを複数指標で自動評価
11. コンテナとスクリプトの実行方式
- Script Mode(スクリプトモード):AWS 提供の Deep Learning Container を使いつつ、自分のスクリプトをエントリポイントとして指定。
requirements.txtで依存追加可能 - BYOC(Bring Your Own Container:独自コンテナ持ち込み):独自 Dockerfile を ECR(Elastic Container Registry)にプッシュ。最大の柔軟性。要件:ENTRYPOINT で
/opt/ml/code配下の学習スクリプトを呼び出せること - Hugging Face Estimator:Hugging Face DLC を簡単に使える専用Estimator。Endpoint デプロイ時は環境変数
HF_MODEL_IDとHF_TASKを指定するだけ
Docker イメージ最適化
- マルチステージビルドで成果物のみを最終イメージにコピー
- 必要な依存パッケージのみインストールしレイヤキャッシュを意識
12. 半教師あり/自己教師あり学習(少量ラベル + 大量未ラベル)
- Pseudo-labeling(疑似ラベリング):モデルの予測を疑似ラベルとして未ラベルデータに付与
- Self-supervised pre-training(自己教師あり事前学習):ラベル不要のタスクで表現学習 → 本タスクで fine-tune
13. その他覚えておきたいAWSサービス
- Amazon Comprehend:マネージド NLP(自然言語処理)。カスタム分類でラベル付きデータをアップロードするだけで本番品質モデル取得
- Amazon Textract:マネージド OCR(光学文字認識:画像からテキスト抽出)
14. その他細かいテクニック
- チェックポイント保存:
checkpoint_s3_uriを指定しtorch.saveで保存 → 中断後再開可能 - クラスタリングの最適K決定:Elbow法(肘法) を SSE(Sum of Squared Errors:誤差平方和)または Inertia で評価/Silhouette Score(シルエットスコア) を最大化
- CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)のフィルタ:低層は色やエッジなどの局所特徴、高層は形状や物体パーツなどの高次特徴を学習
- トークナイズ高速化:Hugging Face
tokenizersの Fast(Rust実装) トークナイザを使う - シーケンス長統一:99パーセンタイル長で打ち切り+ミニバッチ単位の動的パディング(dynamic padding)で GPU メモリ効率最大化
- VPC内安全推論:Endpoint を VPC モード(仮想プライベートクラウド内通信)で作成
- 強化学習(Reinforcement Learning)フレームワーク:SageMaker は Ray RLlib と Coach をサポート
🎯 試験対策のキーポイント整理
・「疎な高次元 → Factorization Machines」「多系列時系列 → DeepAR」「異常検知 → Random Cut Forest」 はパターン暗記
・「GPUメモリ足りない LLM 微調整 → LoRA / QLoRA」 は鉄板
・「ハルシネーション抑制 → RAG(Knowledge Bases)+ Guardrails」 はセット
・AMT の戦略選択:少試行で良解 → Bayesian、長時間NN学習 → Hyperband
・不均衡データの評価:AUC だけでなく PR-AUC と F1 を組み合わせる
・時系列の前処理:データリーケージ防止のため時系列順分割