目次
- 完全学習ガイド
- 試験概要
- ドメイン別出題割合
- Domain 1: 機械学習向けデータ準備(28%)
- Domain 2: MLモデル開発(26%)
- Domain 3: MLワークフローのデプロイとオーケストレーション(22%)
- Domain 4: MLソリューションの監視・保守・セキュリティ(24%)
- 試験頻出アーキテクチャパターン
- 試験重要数値チートシート
- 頻出問題パターン
- 8週間学習プラン
- MLA-C01 追加詳解セクション
- MLA-C01 模擬問題(本番形式)
- MLA-C01 試験直前チェックリスト
- 付録: MLA-C01 頻出サービス一覧
- SageMaker 詳細技術リファレンス
- MLOps 高度なパターン
- SageMaker の高度な機能
- SageMaker Inference 詳細
- ML セキュリティとコンプライアンス
- 模擬試験追加問題(35問)
- 学習戦略(MLA-C01)
- 試験直前チェックリスト(MLA-C01)
- ドメイン別詳細解説(追加)
- Domain 1 詳細: データ準備とFeature Engineering
- Domain 2 詳細: モデル開発とトレーニング
- Domain 3 詳細: MLOps と自動化
- Domain 4 詳細: モデルのデプロイと最適化
- Amazon Bedrock 完全ガイド(MLA試験向け)
- MLセキュリティと コンプライアンス詳細
- 試験対策 重要サービス比較表
- 追加模擬試験問題(MLA-C01)第2セット
- MLA-C01 総合まとめ
- AWS AI/ML サービス完全カタログ
- SageMaker Canvas と No-Code ML
- SageMaker Training コンテナ詳細
- MLflow と SageMaker 統合
- コスト最適化のベストプラクティス
- 試験に出る重要な数値・制限
- 実践シナリオ問題集
- 最終模擬試験(MLA-C01)第3セット 20問
- 付録: 重要CLIコマンド集(SageMaker)
- SageMaker JumpStart 詳細ガイド
- SageMaker Ground Truth 詳細
- Amazon Kendra ML検索エンジン
- SageMaker Domain とユーザープロファイル
- SageMaker Clarify 詳細実装
- 模擬試験 総合問題(MLA-C01)第4セット 20問
- 付録B: SageMaker Python SDK チートシート
- SageMaker 組み込みアルゴリズム完全リファレンス
- SageMaker アルゴリズム使い分けガイド
- コスト最適化 詳細ガイド
- 最終チェックリスト(試験直前)
- 参考リソース
- 用語集(グロッサリー)
AWS Certified Machine Learning Engineer - Associate (MLA-C01)
完全学習ガイド
試験概要
| 項目 | 詳細 |
|---|---|
| 試験コード | MLA-C01 |
| 正式名称 | AWS Certified Machine Learning Engineer - Associate |
| レベル | Associate |
| 難易度 | ★★★☆☆ |
| 試験時間 | 170分 |
| 問題数 | 85問(65問採点対象 + 20問採点外) |
| 合格スコア | 720/1000 |
| 受験料 | $150 USD |
| 有効期限 | 3年 |
| 前提推奨 | MLの実務経験1年以上 + AWS基礎知識 |
対象者
- MLモデルの構築・運用に携わるMLエンジニア・データサイエンティスト
- SageMakerを使ったMLパイプライン構築を担当するエンジニア
- MLOpsの実装・自動化を担当するDevOpsエンジニア
MLS-C01(廃止)との違い
| 観点 | MLS-C01(廃止済み) | MLA-C01 |
|---|---|---|
| 焦点 | MLアルゴリズム・理論 | MLエンジニアリング・デプロイ・運用 |
| レベル | Specialty | Associate |
| 受験料 | `300 | `150 |
| 生成AI範囲 | ほぼなし | Bedrockや基盤モデルを含む |
ドメイン別出題割合
| ドメイン | 出題割合 |
|---|---|
| Domain 1: 機械学習向けデータ準備 | 28% |
| Domain 2: MLモデル開発 | 26% |
| Domain 3: MLワークフローのデプロイとオーケストレーション | 22% |
| Domain 4: MLソリューションの監視・保守・セキュリティ | 24% |
┌──────────────────────────────────────────────────────────────────────┐
│ Domain 1: データ準備 28% ██████████████ │
│ Domain 2: MLモデル開発 26% █████████████ │
│ Domain 3: デプロイ・オーケストレーション 22% ███████████ │
│ Domain 4: 監視・保守・セキュリティ 24% ████████████ │
└──────────────────────────────────────────────────────────────────────┘
Domain 1: 機械学習向けデータ準備(28%)
1.1 データ収集・取り込み
AWSデータソースとパターン
| サービス | 用途 |
|---|---|
| Amazon S3 | MLの標準ストレージ・データレイク |
| Amazon RDS / Aurora | 構造化トランザクションデータ |
| Amazon DynamoDB | NoSQLリアルタイムデータ |
| Amazon Kinesis Data Streams | ストリーミング・リアルタイムML |
| Amazon Redshift | バッチML学習向けDWH |
| AWS Glue | ETL・データカタログ |
| AWS Lake Formation | データレイクのアクセス管理 |
- バッチ取り込み:
- S3 → AWS Glue ETL → S3 (Parquet) → SageMaker Training
- ストリーミング取り込み:
- IoT/App → Kinesis Streams → Lambda → S3 / Feature Store
1.2 データ変換・前処理
SageMaker Processing Job
from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput
processor = ScriptProcessor(
image_uri='683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-scikit-learn:1.2-1-cpu-py3',
command=['python3'],
instance_type='ml.m5.xlarge',
instance_count=1,
role=role
)
processor.run(
code='preprocessing.py',
inputs=[ProcessingInput(source='s3://bucket/raw/', destination='/opt/ml/processing/input')],
outputs=[ProcessingOutput(output_name='train', source='/opt/ml/processing/output/train',
destination='s3://bucket/processed/train/')]
)
データ変換ツール比較
| ツール | 特徴 | ユースケース |
|---|---|---|
| AWS Glue DataBrew | ノーコードGUI | データアナリスト向け前処理 |
| SageMaker Processing | Pythonスクリプト | カスタム前処理ロジック |
| AWS Glue ETL | Spark/Python | 大規模バッチ変換 |
| EMR | フルマネージドSpark | ペタバイト規模 |
1.3 SageMaker Feature Store
from sagemaker.feature_store.feature_group import FeatureGroup
feature_group = FeatureGroup(name='customer-features', sagemaker_session=sess)
feature_group.create(
s3_uri='s3://bucket/feature-store/',
record_identifier_name='customer_id',
event_time_feature_name='event_time',
role_arn=role,
enable_online_store=True # Online(低レイテンシ)+ Offline(S3)
)
| ストア | レイテンシ | 用途 |
|---|---|---|
| Online Store | <10ms | リアルタイム推論の特徴量取得 |
| Offline Store (S3) | 分〜時間 | バッチ学習データ生成 |
1.4 データ品質とバリデーション
# SageMaker Data Wrangler でデータ品質分析
# または SageMaker Clarify でデータバイアス検出
from sagemaker import clarify
data_bias_config = clarify.DataConfig(
s3_data_input_path='s3://bucket/data/',
s3_output_path='s3://bucket/bias-report/',
label='target',
dataset_type='text/csv'
)
Domain 2: MLモデル開発(26%)
2.1 SageMaker ビルトインアルゴリズム
| 問題タイプ | アルゴリズム | 特徴 |
|---|---|---|
| 2値・多値分類/回帰 | XGBoost | 高性能・解釈可能、最頻出 |
| 大規模線形モデル | Linear Learner | 高速・L1/L2正則化自動 |
| 時系列予測 | DeepAR | 多変量・確率的予測 |
| 異常検知 | Random Cut Forest | 非教師あり・ストリーミング対応 |
| テキスト分類/Word2Vec | BlazingText | 高速テキスト処理 |
| 推薦 | Factorization Machines | スパース行列対応 |
| 画像分類 | Image Classification | CNN転移学習 |
| 物体検出 | Object Detection | SSD/YOLOベース |
| 近傍探索 | KNN | 分類・回帰 |
2.2 カスタムモデル(Script Mode)
from sagemaker.pytorch import PyTorch
estimator = PyTorch(
entry_point='train.py',
source_dir='./src',
role=role,
instance_count=1,
instance_type='ml.p3.2xlarge',
framework_version='2.1',
py_version='py310',
hyperparameters={'epochs': 50, 'lr': 0.001}
)
estimator.fit({'train': 's3://bucket/train/', 'val': 's3://bucket/val/'})
2.3 ハイパーパラメータ最適化(HPO)
from sagemaker.tuner import HyperparameterTuner, IntegerParameter, ContinuousParameter
tuner = HyperparameterTuner(
estimator=xgb_estimator,
objective_metric_name='validation:auc',
objective_type='Maximize',
hyperparameter_ranges={
'max_depth': IntegerParameter(3, 10),
'eta': ContinuousParameter(0.01, 0.3),
'subsample': ContinuousParameter(0.5, 1.0),
},
max_jobs=20,
max_parallel_jobs=4,
strategy='Bayesian'
)
| 戦略 | 適用ケース |
|---|---|
| Bayesian | 試行回数制限あり・効率最優先 |
| Random | 広い探索空間・並列実行 |
| Hyperband | 深層学習・早期打ち切り |
| Grid | パラメータ少・全網羅 |
2.4 生成AI / 基盤モデルの活用
import boto3, json
bedrock_runtime = boto3.client('bedrock-runtime')
# SageMaker JumpStart: OSSモデルのFine-tuning
from sagemaker.jumpstart.estimator import JumpStartEstimator
estimator = JumpStartEstimator(
model_id='meta-textgeneration-llama-3-8b',
hyperparameters={'epochs': 3, 'per_device_train_batch_size': 4},
instance_type='ml.g5.12xlarge'
)
estimator.fit({'training': 's3://bucket/fine-tune-data/'})
2.5 モデル評価指標
| 問題 | 指標 | 注意 |
|---|---|---|
| 2値分類(均衡) | Accuracy, ROC-AUC, F1 | 均衡データ前提 |
| 2値分類(不均衡) | PR-AUC, F1, Recall/Precision | Accuracyは不適 |
| 回帰 | RMSE, MAE, R², MAPE | - |
| ランキング | NDCG, MRR | 推薦・検索 |
Domain 3: MLワークフローのデプロイとオーケストレーション(22%)
3.1 SageMaker エンドポイント種類
| タイプ | 特徴 | ユースケース |
|---|---|---|
| Real-time Endpoint | 低レイテンシ・常時稼働 | 同期リアルタイム推論 |
| Serverless Endpoint | アイドル時無課金・コールドスタートあり | 低頻度・断続的トラフィック |
| Async Endpoint | 非同期・大ペイロード対応(〜1GB) | 長時間処理・大規模入力 |
| Batch Transform | S3→S3 バッチ推論 | 一括スコアリング |
# Serverless Endpoint
from sagemaker.serverless import ServerlessInferenceConfig
predictor = model.deploy(
serverless_inference_config=ServerlessInferenceConfig(
memory_size_in_mb=2048,
max_concurrency=20
)
)
# A/B テスト(Production Variants)
sm_client.create_endpoint_config(
EndpointConfigName='ab-test',
ProductionVariants=[
{'VariantName': 'v1', 'ModelName': 'model-v1', 'InitialVariantWeight': 80, ...},
{'VariantName': 'v2', 'ModelName': 'model-v2', 'InitialVariantWeight': 20, ...}
]
)
3.2 SageMaker Pipelines(MLOps)
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import ProcessingStep, TrainingStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
# パイプライン: 前処理 → 学習 → 評価 → 条件分岐 → モデル登録
pipeline = Pipeline(
name='MLTrainingPipeline',
steps=[step_process, step_train, step_evaluate, step_cond]
)
pipeline.upsert(role_arn=role)
pipeline.start()
EventBridge (スケジュール)
↓
SageMaker Pipelines
├── Processing Job(前処理)
├── Training Job(学習)
├── Evaluation Job(評価)
└── Condition: メトリクス閾値超え?
├── YES → Model Registry登録 → 承認 → Endpoint更新
└── NO → SNS通知(アラート)
3.3 SageMaker Model Registry
model_package = model.register(
model_package_group_name='my-model-group',
approval_status='PendingManualApproval',
inference_instances=['ml.m5.xlarge'],
model_metrics=model_metrics
)
# 承認後、自動デプロイ(EventBridge + Lambda or CodePipeline連携)
sm_client.update_model_package(
ModelPackageArn=model_package.model_package_arn,
ModelApprovalStatus='Approved'
)
3.4 コンテナ・インフラ選択
| インスタンス | 特徴 |
|---|---|
| ml.p3.* / ml.p4d.* | GPU学習(V100/A100) |
| ml.g5.* | 推論・中規模学習(A10G GPU) |
| ml.inf1.* / ml.inf2.* | AWS Inferentiaチップ・低コスト推論 |
| ml.trn1.* | AWS Trainiumチップ・低コスト学習 |
| ml.c5.* | CPU推論・前処理 |
# Spot Instanceで学習コスト最大90%削減
estimator = Estimator(
use_spot_instances=True,
max_run=3600,
max_wait=7200,
checkpoint_s3_uri='s3://bucket/checkpoints/' # 中断再開に必須
)
Domain 4: MLソリューションの監視・保守・セキュリティ(24%)
4.1 SageMaker Model Monitor
from sagemaker.model_monitor import DefaultModelMonitor, DataCaptureConfig
# データキャプチャ設定
data_capture_config = DataCaptureConfig(
enable_capture=True,
sampling_percentage=100,
destination_s3_uri='s3://bucket/captured-data/',
capture_options=['Input', 'Output']
)
# ベースライン統計生成
monitor.suggest_baseline(
baseline_dataset='s3://bucket/training-data/baseline.csv',
dataset_format=DatasetFormat.csv(header=True),
output_s3_uri='s3://bucket/baseline/'
)
# 監視スケジュール(1時間ごと)
monitor.create_monitoring_schedule(
schedule_cron_expression=CronExpressionGenerator.hourly(),
endpoint_input=predictor.endpoint_name,
statistics='s3://bucket/baseline/statistics.json',
constraints='s3://bucket/baseline/constraints.json',
)
| モニタータイプ | 検出内容 |
|---|---|
| Data Quality | 入力データの統計ドリフト(分布変化・欠損増加) |
| Model Quality | 予測精度・AUCの低下 |
| Model Bias (Clarify) | 公平性・特定グループへのバイアス |
| Feature Attribution (Clarify) | SHAP値の変化(重要特徴量のシフト) |
4.2 MLOpsのCI/CD
コードPush(CodeCommit/GitHub)
↓
CI: CodePipeline / GitHub Actions
├── ユニットテスト
├── SageMaker Pipelinesトリガー
└── モデル評価・品質チェック
↓
CD: 承認後 → Endpointデプロイ(Blue/Green or Canary)
4.3 セキュリティ
| 要件 | AWSの実装 |
|---|---|
| 通信暗号化 | VPCエンドポイント・TLS |
| データ暗号化 | S3/EBS/EFS KMS暗号化 |
| アクセス制御 | IAMロール・最小権限原則 |
| ネットワーク分離 | SageMaker VPC Mode(インターネット遮断) |
| 個人情報保護 | Amazon Macie(S3上のPII自動検出) |
| 監査 | AWS CloudTrail |
# SageMakerをVPC内で実行(インターネットアクセスなし)
estimator = Estimator(
subnets=['subnet-xxxxxxxx'],
security_group_ids=['sg-xxxxxxxx'],
encrypt_inter_container_traffic=True
)
4.4 コスト最適化
| 手法 | 削減効果 |
|---|---|
| Spot Instances(学習) | 最大90%削減 |
| Savings Plans | 最大64%削減 |
| Serverless Endpoint | アイドル時無課金 |
| Multi-Model Endpoint | 複数モデルを1エンドポイントで共有 |
| Inferentia/Graviton推論 | Real-time比で最大70%削減 |
| S3 Intelligent-Tiering | データストレージ自動最適化 |
試験頻出アーキテクチャパターン
パターン1: リアルタイムML推論
- User → API Gateway → Lambda → SageMaker Real-time Endpoint
- ↓
- Feature Store (Online) ← 特徴量リアルタイム取得
パターン2: バッチMLパイプライン
S3 (生データ)
↓ EventBridge (日次)
SageMaker Pipelines
├── Processing(前処理)
├── Training(学習)
├── Evaluation(AUC>閾値?)
└── Model Registry → SNS承認通知 → デプロイ
パターン3: データドリフト検知・自動再学習
Endpoint → Data Capture → S3
↓
Model Monitor(Data Quality)
↓ 違反検知
EventBridge → Lambda → SageMaker Pipelines(再学習)
試験重要数値チートシート
| 項目 | 値 |
|---|---|
| 合格スコア | 720/1000 |
| 試験時間 | 170分 |
| Processing Job 最大実行時間 | 24時間 |
| Training Job 最大実行時間 | 5日 |
| Spot Instance 最大コスト削減 | 90% |
| Model Monitor 最小実行間隔 | 1時間 |
| Feature Store Online レイテンシ | <10ms |
| Async Endpoint 最大ペイロード | 1GB |
| Serverless Endpoint 最大メモリ | 6GB |
| Multi-Model Endpoint モデル数 | 制限なし(ディスク容量次第) |
頻出問題パターン
Q1: エンドポイント選択
問題: 1日数回しかリクエストが来ないMLモデルのコスト最適化。
解答: Serverless Inference Endpoint。アイドル時課金なし。コールドスタート許容が前提。
Q2: HPO戦略
問題: 試行回数が20回に制限されている場合の最適なHPO戦略は?
解答: Bayesian最適化。過去の試行から学習して次の試行点を決定するため、少ない試行回数で効率的に最適解に近づける。
Q3: データドリフト
問題: 本番モデルの精度が徐々に低下している。入力データの統計的変化を自動検出・アラートするサービスは?
解答: SageMaker Model Monitor(Data Quality Monitor)。学習時のベースライン統計との差分を定期的に計算してアラートを発行。
Q4: 分散学習
問題: 100億パラメータのTransformerモデルが1GPUに収まらない場合の対処法は?
解答: **SageMaker Model Parallel Library(SMP)**でモデルを複数GPUに分割。Data Parallelはモデルが1GPUに収まる前提。
Q5: セキュリティ
問題: 医療データを使ったMLモデル学習で、インターネットに出ない閉域網環境でSageMakerを実行するには?
解答: SageMaker VPC Mode(subnets + security_group_idsを指定)+ VPCエンドポイント(S3/SageMaker API用)。
8週間学習プラン
Week 1-2: データ準備
- [ ] SageMaker Processing Job ハンズオン
- [ ] AWS Glue ETL・DataBrew 実践
- [ ] SageMaker Feature Store 構築
- [ ] データ品質・バイアス検出(Clarify)
Week 3-4: モデル開発
- [ ] XGBoost・Linear Learner 学習実践
- [ ] PyTorch Script Mode ハンズオン
- [ ] HPO(Bayesian/Hyperband)実践
- [ ] SageMaker JumpStart Fine-tuning
Week 5-6: デプロイ・オーケストレーション
- [ ] 各Endpointタイプのデプロイ実践
- [ ] SageMaker Pipelines フルパイプライン構築
- [ ] Model Registry・承認フロー
- [ ] CodePipeline連携CI/CD
Week 7-8: 監視・セキュリティ + 試験対策
- [ ] Model Monitor 全4種類のセットアップ
- [ ] VPC Mode・IAM最小権限
- [ ] AWS公式模擬試験
- [ ] 苦手ドメイン集中復習
MLA-C01 追加詳解セクション
Amazon SageMaker 完全詳解
SageMaker の全体像
SageMaker の主要コンポーネント:
データ準備:
→ SageMaker Data Wrangler(GUIデータ前処理)
→ SageMaker Feature Store(特徴量管理)
→ SageMaker Ground Truth(ラベリング)
モデル開発:
→ SageMaker Studio(統合開発環境)
→ SageMaker Notebooks(Jupyter環境)
→ SageMaker JumpStart(事前構築モデル・Fine-tuning)
モデル訓練:
→ SageMaker Training Jobs(スケーラブル訓練)
→ SageMaker Autopilot(AutoML)
→ SageMaker Automatic Model Tuning(HPO)
→ SageMaker Experiments(実験管理)
モデルデプロイ:
→ SageMaker Endpoints(リアルタイム推論)
→ SageMaker Serverless Inference(サーバーレス推論)
→ SageMaker Batch Transform(バッチ推論)
→ SageMaker Async Inference(非同期推論)
ML運用(MLOps):
→ SageMaker Model Registry(モデルバージョン管理)
→ SageMaker Pipelines(MLパイプライン自動化)
→ SageMaker Model Monitor(ドリフト検出)
→ SageMaker Clarify(バイアス・説明可能性)
SageMaker 推論エンドポイント詳細
推論タイプの比較(試験最頻出)
| 推論タイプ | 特徴 | コスト | 用途 |
|---|---|---|---|
| リアルタイム推論 | 常時稼働・低レイテンシ | 常時課金 | チャットボット・API推論 |
| サーバーレス推論 | オートスケール・コールドスタートあり | 呼び出し時のみ課金 | 散発的なトラフィック |
| 非同期推論 | キューで非同期処理・大きなペイロード対応 | 処理時間課金 | 大きな入力・長時間処理 |
| バッチ変換 | バッチデータを一括処理 | 処理時間課金 | 大量データの定期処理 |
選択基準:
「チャットボット・リアルタイムAPI」 → リアルタイム推論
「ほとんど呼び出されない・コスト最小化」 → サーバーレス推論
「10MBを超える大きなファイルの処理」 → 非同期推論
「100万件のデータを夜間に一括推論」 → バッチ変換
SageMaker Training Jobs 詳細
インスタンスタイプ選択:
CPU インスタンス(ml.m5, ml.c5等):
→ 軽量モデル・前処理・推論
→ コスト低い
GPU インスタンス(ml.p3, ml.p4d, ml.g5等):
→ 深層学習・大規模モデル訓練
→ ml.p3.2xlarge: V100 1基
→ ml.p4d.24xlarge: A100 8基
分散訓練(Distributed Training):
→ 複数インスタンス・複数GPUで並列学習
→ データ並列性(Data Parallelism): バッチを複数に分割
→ モデル並列性(Model Parallelism): モデルを分割(大型モデル)
→ SageMaker Distributed Training Library使用
スポットインスタンスを使った訓練コスト削減:
→ Managed Spot Training を有効化
→ チェックポイント(S3に定期保存)で中断からの再開
→ コスト最大90%削減
SageMaker MLOps
SageMaker Pipelines
概念:
→ MLワークフローをDAG(有向非循環グラフ)として定義
→ 各ステップ: データ前処理→訓練→評価→条件分岐→デプロイ
主要ステップタイプ:
ProcessingStep: データ前処理(SageMaker Processing Job)
TrainingStep: モデル訓練(Training Job)
EvaluationStep: モデル評価
ConditionStep: 精度が閾値以上かどうかで分岐
RegisterModel: Model Registryに登録
LambdaStep: Lambda関数の実行
パイプライン自動化:
→ EventBridgeでS3への新データ到着時に自動実行
→ 定期スケジュール実行
SageMaker Model Monitor 詳細
監視タイプ:
データ品質監視(Data Quality Monitoring):
→ 入力データの統計的性質を本番でモニター
→ 訓練データとの分布比較(データドリフト検出)
モデル品質監視(Model Quality Monitoring):
→ 予測精度の継続的測定
→ グラウンドトゥルース(実際のラベル)と予測の比較
バイアス監視(Bias Drift Monitoring):
→ 本番データのバイアス変化を検出
特徴量重要度監視(Feature Attribution Drift):
→ SHAP値の分布変化を検出
アラームとアクション:
→ CloudWatch Alarms でドリフト検出時に通知
→ SNS → Lambdaで自動再学習パイプラインをトリガー
SageMaker Clarify 詳細
バイアス検出メトリクス:
訓練前バイアス:
→ Class Imbalance(CI): クラス不均衡
→ Difference in Proportions of Labels(DPL): グループ間のラベル比率の差
訓練後バイアス:
→ Disparate Impact(DI): グループ間の予測率の比
→ Accuracy Difference(AD): グループ間の精度差
説明可能性(Explainability):
→ SHAP(SHapley Additive exPlanations)値で特徴量重要度を計算
→ グローバル説明: モデル全体での特徴量重要度
→ ローカル説明: 個別の予測に対する特徴量の寄与度
SageMaker JumpStart
JumpStartで利用できるもの:
1. 事前訓練済みモデル(500以上)
→ テキスト生成・画像分類・物体検出等
→ デプロイだけでなくFine-tuningも可能
2. ML ソリューションテンプレート
→ コンプリートなパイプライン(データ収集からデプロイまで)
3. サンプルノートブック
→ ユースケース別のJupyterノートブック
Bedrock vs SageMaker JumpStart の使い分け:
Bedrock: サーバーレス・APIアクセスのみ・コード最小
SageMaker JumpStart: Fine-tuning可能・カスタムデータで訓練
MLA-C01 模擬問題(本番形式)
問題 MLA-01
SageMakerで「ほとんど呼び出されないがコールドスタートを許容できる推論エンドポイント」を最小コストで運用したい。最も適切な推論タイプはどれですか?
- A. リアルタイム推論エンドポイント
- B. SageMaker Serverless Inference
- C. SageMaker Batch Transform
- D. SageMaker Async Inference
正解と解説
正解: B
サーバーレス推論は呼び出し時のみ課金され、ゼロスケール(未使用時はコストゼロ)が可能。コールドスタートの遅延が許容できる場合に最もコスト効率が良い。
問題 MLA-02
SageMaker Training Jobでコスト削減のため「Managed Spot Training」を有効にした。訓練が中断された場合でも最初からやり直さないために必要な設定はどれですか?
- A. データ並列訓練を有効にする
- B. S3にチェックポイントを定期的に保存するよう設定する
- C. Provisioned Capacityを使用する
- D. Reserved Instanceを購入する
正解と解説
正解: B
スポットインスタンスは中断されることがある。チェックポイント(訓練の途中状態)をS3に定期保存することで、再開時に最初からやり直すのではなく途中から継続できる。
問題 MLA-03
本番SageMakerエンドポイントの「入力データの統計的性質が時間とともに変化していないか」を自動的にモニタリングするサービスはどれですか?
- A. SageMaker Clarify
- B. SageMaker Model Monitor(Data Quality Monitoring)
- C. SageMaker Experiments
- D. SageMaker Debugger
正解と解説
正解: B
SageMaker Model MonitorのData Quality Monitoringは本番エンドポイントへの入力データの統計的分布(平均・標準偏差・欠損値率等)を継続的に監視し、訓練データからの逸脱(データドリフト)を検出する。
問題 MLA-04
SageMaker Pipelinesで「モデルの評価精度が80%以上の場合のみモデルをModel Registryに登録し、それ以下の場合は通知のみ送信したい」という条件分岐を実装するには何を使いますか?
- A. TrainingStep
- B. ProcessingStep
- C. ConditionStep
- D. LambdaStep
正解と解説
正解: C
ConditionStepは条件(評価メトリクスの閾値等)に基づいてパイプラインを分岐させる。精度>=80%の場合はRegisterModelに進み、そうでない場合はLambdaStepで通知する分岐を実装できる。
問題 MLA-05
SageMaker Model Registryでモデルを管理する際、本番デプロイの前に人間の承認を必要とする「ガバナンスプロセス」を実装する方法はどれですか?
- A. モデルを自動的に全ての環境にデプロイする
- B. モデルをPending状態で登録し、レビュー後にApprovedに変更してからデプロイする
- C. モデルをS3に直接保存して承認フォームを添付する
- D. SageMaker ExperimentsでA/Bテストを実施してから承認する
正解と解説
正解: B
SageMaker Model Registryはモデルバージョンの承認ステータス(PendingManualApproval → Approved/Rejected)を管理できる。CI/CDパイプラインは Approvedのモデルのみを本番デプロイするよう設定できる。
問題 MLA-06
「100万件の顧客データを夜間に一括してMLモデルで推論し、結果をS3に保存したい」最も適切なSageMaker推論タイプはどれですか?
- A. リアルタイム推論エンドポイント
- B. サーバーレス推論
- C. バッチ変換(Batch Transform)
- D. 非同期推論
正解と解説
正解: C
バッチ変換はS3の入力データを一括処理して結果をS3に出力する。エンドポイントを常時稼働させずにバッチ処理後は自動的にリソースを解放する。大量データの定期処理に最適。
問題 MLA-07
SageMaker Clarifyが計算するSHAP値の説明として正しいものはどれですか?
- A. モデルの訓練速度を示す指標
- B. 各特徴量が特定の予測にどれだけ貢献したかを示す値
- C. モデルのハイパーパラメータの最適値
- D. データドリフトの程度を示す統計量
正解と解説
正解: B
SHAP(SHapley Additive exPlanations)値は各特徴量が個別の予測に対してどれだけ貢献したかを定量化する。正の値はその特徴量が予測を高める方向に働き、負の値は低める方向に働いていることを示す。
問題 MLA-08
SageMaker Automatic Model Tuning(HPO)が使用する最適化アルゴリズムとして、デフォルトで使用されるものはどれですか?
- A. グリッドサーチ(Grid Search)
- B. ランダムサーチ(Random Search)
- C. ベイズ最適化(Bayesian Optimization)
- D. 遺伝的アルゴリズム(Genetic Algorithm)
正解と解説
正解: C
SageMaker HPOのデフォルトはベイズ最適化。過去の試行結果を学習して次の試行点を賢く選択するため、グリッドサーチ・ランダムサーチより少ない試行数で最適なハイパーパラメータを発見できる。
MLA-C01 試験直前チェックリスト
- [ ] SageMakerの全コンポーネントとその役割
- [ ] 4つの推論タイプの使い分け(リアルタイム/サーバーレス/非同期/バッチ)
- [ ] SageMaker Pipelinesの各ステップタイプ
- [ ] SageMaker Model Monitorの4つの監視タイプ
- [ ] SageMaker ClarifyのSHAP値とバイアス検出メトリクス
- [ ] Managed Spot Training とチェックポイントの関係
- [ ] SageMaker JumpStart vs Bedrock の使い分け
付録: MLA-C01 頻出サービス一覧
| サービス | MLA試験での重点 |
|---|---|
| Amazon SageMaker Training | 訓練ジョブ・分散訓練・スポット訓練 |
| SageMaker Endpoints | 4種類の推論タイプ |
| SageMaker Pipelines | MLワークフロー自動化・ConditionStep |
| SageMaker Model Registry | バージョン管理・承認ワークフロー |
| SageMaker Model Monitor | データドリフト・モデル品質・バイアス監視 |
| SageMaker Clarify | SHAP値・バイアス検出・説明可能性 |
| SageMaker Feature Store | 特徴量の一元管理・オンライン/オフラインストア |
| SageMaker HPO | ベイズ最適化・ハイパーパラメータ調整 |
| SageMaker JumpStart | 事前訓練済みモデル・Fine-tuning |
| SageMaker Autopilot | AutoML・自動モデル選択 |
| SageMaker Ground Truth | データラベリング・クラウドソーシング |
| Amazon Bedrock | 生成AI・基盤モデルAPI |
| Amazon S3 | データレイク・モデルアーティファクト |
| AWS Glue | ETL・特徴量前処理 |
SageMaker 詳細技術リファレンス
SageMaker Training 詳細
学習ジョブの構成:
import sagemaker
from sagemaker.estimator import Estimator
estimator = Estimator(
image_uri='123456789.dkr.ecr.region.amazonaws.com/my-training:latest',
role=role,
instance_count=1,
instance_type='ml.p3.2xlarge',
# ハイパーパラメータ
hyperparameters={
'learning_rate': 0.001,
'epochs': 100,
'batch_size': 32
},
# スポット学習(コスト削減)
use_spot_instances=True,
max_wait=7200,
checkpoint_s3_uri='s3://bucket/checkpoints',
# メトリクス定義(CloudWatch で可視化)
metric_definitions=[
{'Name': 'train:loss', 'Regex': 'train_loss: ([0-9\.]+)'},
{'Name': 'val:accuracy', 'Regex': 'val_accuracy: ([0-9\.]+)'}
],
# 環境変数
environment={
'PYTHONDONTWRITEBYTECODE': '1'
},
# 出力設定
output_path='s3://bucket/output',
base_job_name='my-training'
)
データ入力チャンネル:
from sagemaker.inputs import TrainingInput
# File モード
train_input = TrainingInput(
s3_data='s3://bucket/train',
content_type='application/x-recordio',
s3_data_type='S3Prefix'
)
# Pipe モード(大規模データ用)
train_input_pipe = TrainingInput(
s3_data='s3://bucket/train',
input_mode='Pipe', # ストリーミング読み込み
content_type='application/x-recordio-protobuf'
)
estimator.fit({
'train': train_input,
'validation': val_input
})
SageMaker Model Registry 詳細
from sagemaker.model import Model
from sagemaker.workflow.model_step import ModelStep
# モデルパッケージグループの作成
sagemaker_client.create_model_package_group(
ModelPackageGroupName='my-model-group',
ModelPackageGroupDescription='Production models'
)
# モデルを Model Registry に登録
model_package = sagemaker_client.create_model_package(
ModelPackageGroupName='my-model-group',
ModelPackageDescription='XGBoost v1.5',
InferenceSpecification={
'Containers': [{
'Image': container_uri,
'ModelDataUrl': 's3://bucket/model.tar.gz'
}],
'SupportedContentTypes': ['text/csv'],
'SupportedResponseMIMETypes': ['text/csv']
},
ModelApprovalStatus='PendingManualApproval',
# モデルメトリクス(評価結果)
ModelMetrics={
'ModelQuality': {
'Statistics': {
'ContentType': 'application/json',
'S3Uri': 's3://bucket/metrics/statistics.json'
}
}
}
)
# 承認(本番デプロイOK)
sagemaker_client.update_model_package(
ModelPackageName=model_package_arn,
ModelApprovalStatus='Approved'
)
MLOps 高度なパターン
A/Bテストとシャドウテスト
from sagemaker.endpoint import Endpoint
# A/B テスト: 複数バージョンにトラフィック分割
endpoint_config = sagemaker_client.create_endpoint_config(
EndpointConfigName='ab-test-config',
ProductionVariants=[
{
'VariantName': 'ModelA',
'ModelName': 'model-v1',
'InitialInstanceCount': 1,
'InstanceType': 'ml.m5.large',
'InitialVariantWeight': 90 # 90% のトラフィック
},
{
'VariantName': 'ModelB',
'ModelName': 'model-v2',
'InitialInstanceCount': 1,
'InstanceType': 'ml.m5.large',
'InitialVariantWeight': 10 # 10% のトラフィック
}
]
)
# シャドウテスト: 本番と並行してシャドウモデルで評価
shadow_config = sagemaker_client.create_endpoint_config(
EndpointConfigName='shadow-test-config',
ProductionVariants=[{
'VariantName': 'Production',
'ModelName': 'model-v1',
'InitialVariantWeight': 1
}],
ShadowProductionVariants=[{
'VariantName': 'Shadow',
'ModelName': 'model-v2',
'SamplingPercentage': 50 # 50% のリクエストをシャドウに転送
}]
)
Blue/Green デプロイ
# Step 1: グリーン(新しい)エンドポイントを作成
# Step 2: 小量のトラフィックをグリーンに移す
sagemaker_client.update_endpoint_weights_and_capacities(
EndpointName='my-endpoint',
DesiredWeightsAndCapacities=[
{'VariantName': 'Blue', 'DesiredWeight': 90},
{'VariantName': 'Green', 'DesiredWeight': 10}
]
)
# Step 3: メトリクスを確認
# Step 4: トラフィックを 100% グリーンに
sagemaker_client.update_endpoint_weights_and_capacities(
EndpointName='my-endpoint',
DesiredWeightsAndCapacities=[
{'VariantName': 'Blue', 'DesiredWeight': 0},
{'VariantName': 'Green', 'DesiredWeight': 1}
]
)
SageMaker の高度な機能
SageMaker Ground Truth 詳細
Ground Truth のラベリングフォー:
Built-in Task Types:
Image Classification(画像分類)
Bounding Box(物体検出)
Semantic Segmentation(セマンティックセグメンテーション)
Text Classification(テキスト分類)
Named Entity Recognition(固有表現認識)
ワークフォース:
Amazon Mechanical Turk(クラウドワーカー)
プライベートチーム(自社の注釈者)
AWS Marketplace(専門ベンダー)
自動ラベリング(Auto-labeling):
ML モデルで信頼度が高いサンプルを自動ラベリング
信頼度が低いサンプルのみ人間がレビュー
コストを最大70%削減
Ground Truth Plus:
フルマネージドのラベリングサービス(AWS が管理)
コスト見積もりなし(従量制)
品質管理をAWSが担当
SageMaker Debugger 詳細
from sagemaker.debugger import Rule, DebuggerHookConfig, TensorBoardOutputConfig
from sagemaker.debugger import rule_configs
# デバッガーの設定
rules = [
Rule.sagemaker(rule_configs.vanishing_gradient()),
Rule.sagemaker(rule_configs.exploding_tensor()),
Rule.sagemaker(rule_configs.overfit()),
Rule.sagemaker(rule_configs.loss_not_decreasing()),
# カスタムルール
Rule.sagemaker(
base_config=rule_configs.vanishing_gradient(),
name='custom_grad_check',
rule_parameters={'threshold': '0.0001'}
)
]
hook_config = DebuggerHookConfig(
s3_output_path='s3://bucket/debug',
hook_parameters={'save_interval': '100'} # 100ステップごとに保存
)
tensorboard_output_config = TensorBoardOutputConfig(
s3_output_path='s3://bucket/tensorboard'
)
estimator = TensorFlow(
...,
debugger_hook_config=hook_config,
rules=rules,
tensorboard_output_config=tensorboard_output_config
)
SageMaker Inference 詳細
推論の種類と比較
リアルタイムエンドポイント(Real-time Inference):
用途: 低レイテンシ(< 1 秒)が必要
スケール: Auto Scaling で自動スケール
コスト: インスタンス稼働時間で課金
設定例:
Application Auto Scaling でターゲット追跡スケーリング
CloudWatch メトリクス(InvocationsPerInstance)で制御
サーバーレス推論(Serverless Inference):
用途: 断続的なトラフィック
コールドスタート: 数秒
コスト: 呼び出し回数 + 処理時間(アイドル時は0)
制約: GPU なし、最大6GB RAM
非同期推論(Asynchronous Inference):
用途: 大きなペイロード(> 6 MB)、処理時間が長い(> 60秒)
動作: リクエストをキューに入れて非同期処理、結果をS3に保存
通知: SNS でリクエスト完了を通知
コスト: エンドポイント稼働 + 非同期設定(Scale to Zero 対応)
バッチ変換(Batch Transform):
用途: 大量データの一括推論
動作: S3 入力 → バッチ処理 → S3 出力
コスト: 処理時間のみ(常時エンドポイント不要)
推論最適化
SageMaker Neo(コンパイル最適化):
学習済みモデルをターゲットハードウェア向けに最適化
対応フレームワーク: TensorFlow/PyTorch/MXNet/XGBoost/scikit-learn
対応ターゲット: EC2(x86/ARM)/edge デバイス(Raspberry Pi/Jetson)
効果: 最大2倍の速度向上、モデルサイズの削減
推論コンテナの最適化:
TensorRT(NVIDIA GPU 用の推論最適化)
ONNX(フレームワーク間の相互運用)
INT8 量子化(精度を保ちつつモデルサイズ削減)
ML セキュリティとコンプライアンス
SageMaker VPC 設定
# SageMaker ジョブを VPC 内で実行
estimator = Estimator(
...,
subnets=['subnet-xxxxx', 'subnet-yyyyy'],
security_group_ids=['sg-zzzzz'],
encrypt_inter_container_traffic=True # コンテナ間通信を暗号化
)
# VPC 内で S3 アクセスには VPC Endpoint が必要
# com.amazonaws.region.s3 ゲートウェイエンドポイント
SageMaker のセキュリティ設定:
ネットワーク:
VPC 内での実行(外部インターネットアクセスを遮断)
インターコンテナ通信の暗号化
データ:
EBS/S3 の KMS 暗号化
Secrets Manager からの認証情報取得
アクセス制御:
実行ロールによる最小権限
リソースポリシーでのアクセス制限
SageMaker Studio の VPC 設定
監査:
CloudTrail での API コール記録
CloudWatch Logs での学習ログ
模擬試験追加問題(35問)
問題 9
SageMaker でモデルが本番環境でデータドリフトを示しています。自動的にドリフトを検出して通知する仕組みを構築したい場合、最適なアーキテクチャはどれですか?
- A. Lambda で毎時間本番データをサンプリングして手動比較する
- B. SageMaker Model Monitor でデータ品質モニタリングを設定し、CloudWatch Alarm で通知する
- C. CloudWatch Dashboard で手動にメトリクスを確認する
- D. SageMaker Clarify でバイアス分析を定期実行する
正解と解説
正解: B
SageMaker Model Monitor のセットアップ:
from sagemaker.model_monitor import DataCaptureConfig, DefaultModelMonitor
# 1. データキャプチャを設定
data_capture_config = DataCaptureConfig(
enable_capture=True,
sampling_percentage=100,
destination_s3_uri='s3://bucket/capture'
)
# 2. ベースライン統計量を作成
monitor = DefaultModelMonitor(role=role, ...)
monitor.suggest_baseline(
baseline_dataset='s3://bucket/baseline/train.csv',
dataset_format=DatasetFormat.csv(header=True)
)
# 3. 監視スケジュールを作成
monitor.create_monitoring_schedule(
monitor_schedule_name='data-quality-monitor',
endpoint_input=endpoint_name,
statistics=baseline_statistics_uri,
constraints=baseline_constraints_uri,
schedule_cron_expression='cron(0 * ? * * *)' # 毎時
)
# 違反時は CloudWatch Metrics → Alarm → SNS 通知
問題 10
SageMaker ハイパーパラメータチューニング(HPO)で「Bayesian 最適化」を選択する際の同時実行数(MaxParallelTrainingJobs)の設定についての推奨は?
- A. 常に最大値に設定して最速で完了させる
- B. 総ジョブ数の10%以下に設定(Bayesian の探索効率を確保しつつ並列化)
- C. 並列実行は精度に影響しないため気にしなくて良い
- D. 同時実行は1に設定する(Bayesian は逐次実行必須)
正解と解説
正解: B
Bayesian 最適化と並列実行のトレードオフ:
MaxParallelTrainingJobs = 1(逐次):
最も効率的な探索(各試行の結果を次に活用)
時間がかかる
MaxParallelTrainingJobs = 最大:
速く完了するが探索効率が低下
Random Search に近い動作になる
推奨: 総ジョブ数の10%以下
例: MaxNumberOfTrainingJobs=100 なら MaxParallelTrainingJobs=10
並列実行中のジョブは他のジョブの結果を待たずに実行されるため、Bayesian の「過去の結果から学ぶ」効率が下がります。
問題 11
SageMaker Studio の「Experiment」機能でモデルの比較をする際、最も効果的な情報の記録方法はどれですか?
- A. 結果を手動で Excel スプレッドシートに記録する
- B. SageMaker Experiments SDK を使ってハイパーパラメータ、メトリクス、アーティファクトを自動的に記録する
- C. CloudWatch ダッシュボードを手動で作成する
- D. S3 に結果ファイルを保存する
正解と解説
正解: B
SageMaker Experiments の使用:
from sagemaker.experiments.run import Run
with Run(
experiment_name='classification-experiment',
run_name='xgboost-baseline',
sagemaker_session=session
) as run:
# ハイパーパラメータを記録
run.log_parameters({
'max_depth': 5,
'eta': 0.1,
'num_round': 100
})
# モデル学習
estimator.fit(inputs)
# メトリクスを記録
run.log_metric('accuracy', 0.92)
run.log_metric('auc', 0.95)
# アーティファクトのパスを記録
run.log_artifact('model', 's3://bucket/model.tar.gz')
Studio の Experiments UI で全実験を比較・可視化できます。
問題 12〜43(ショート形式)
問題 12: SageMaker の「マネージドスポット学習(Managed Spot Training)」で学習が中断されるのはどのような場合ですか? → 正解: AWS がスポットキャパシティを必要とした場合(EC2 スポットの仕組みと同じ)。中断前に2分間の通知。チェックポイントから自動再開(チェックポイントS3 URI設定が必要)。最大 90% のコスト削減
問題 13: SageMaker の「学習コンテナ」で必要なディレクトリ構造は?
→ 正解: /opt/ml/input/data/: 学習データ(チャンネル名がサブディレクトリ)。/opt/ml/model/: モデルアーティファクトの出力先。/opt/ml/output/: その他のアウトプット。/opt/ml/input/config/: ハイパーパラメータ(JSON)
問題 14: SageMaker Processing ジョブで Scikit-learn スクリプトを実行する際の実装は?
→ 正解: SKLearnProcessor を使用(from sagemaker.sklearn.processing import SKLearnProcessor)。framework_version でバージョン指定。run() メソッドで inputs(S3→コンテナ)と outputs(コンテナ→S3)を指定
問題 15: SageMaker の「マルチモデルエンドポイント(MME)」と「マルチコンテナエンドポイント(MCE)」の違いは? → 正解: MME: 同じフレームワークの多数モデルを1エンドポイントに(モデルはオンデマンドでロード/アンロード)。MCE: 異なるフレームワーク(PyTorch+TF等)のコンテナを1エンドポイントに(最大15コンテナ)。MMEはコスト最適化、MCEはアーキテクチャ柔軟性
問題 16: SageMaker の「ターゲット追跡スケーリング(Target Tracking Scaling)」の設定は?
→ 正解: 指定メトリクス(SageMakerVariantInvocationsPerInstance等)を目標値に維持するAuto Scaling。例: InvocationsPerInstance=1000 に設定 → 各インスタンスが1000リクエスト/分を超えそうならスケールアウト
問題 17: SageMaker の「推論パイプライン(Inference Pipeline)」はどのような場合に使用しますか? → 正解: 前処理→推論→後処理を一連のコンテナとして定義する場合(最大15コンテナ)。学習時の前処理を推論時にも同様に適用(Training-Serving Skew 防止)。Scikit-learn → XGBoost の組み合わせが典型例
問題 18: SageMaker の「カスタムコンテナ(BYOC)」で学習に必要な環境変数は?
→ 正解: SM_CHANNEL_TRAIN(学習データのパス)、SM_MODEL_DIR(モデル出力パス)、SM_OUTPUT_DATA_DIR(その他出力パス)、SM_HPS(ハイパーパラメータのJSON文字列)。SageMaker Toolkit ライブラリで自動設定
問題 19: SageMaker Clarify の「SHAP(Shapley Additive exPlanations)」はどのような情報を提供しますか? → 正解: 各特徴量がモデルの予測にどれだけ貢献しているかを数値化(ゲーム理論ベース)。グローバル説明(全体的な特徴量重要度)とローカル説明(個別予測の説明)の両方を提供。モデル非依存のアプローチ
問題 20: SageMaker の「オフラインフィーチャーストア(Offline Feature Store)」はどこにデータを保存しますか? → 正解: Amazon S3 に Parquet 形式で保存され、AWS Glue Data Catalog のテーブルとして登録。Amazon Athena でSQLクエリが可能。Offline Store は学習用(大量データを効率的に読み込み)
問題 21: SageMaker の「バッチ変換(Batch Transform)」と「非同期推論」の使い分けは? → 正解: バッチ変換: S3内の全データを一括処理(エンドポイント不要、処理完了後にクラスターを削除)。非同期推論: リクエストをキューに入れて順次処理(エンドポイントを維持、スケールゼロ対応、SNSで完了通知)
問題 22: SageMaker Studio の「ドメイン(Domain)」と「ユーザープロファイル(User Profile)」の関係は? → 正解: ドメイン: Studio 環境の単位(1 VPC + 1 EFS)。ユーザープロファイル: ドメイン内のユーザー(各ユーザーが独立した EFS の home directory を持つ)。IAM ロールはユーザープロファイルに設定
問題 23: SageMaker の「ライフサイクル設定(Lifecycle Configuration)」の用途は? → 正解: Studio ノートブックまたはコンテナ起動時に自動実行するスクリプト。使用例: pip パッケージの自動インストール、Git リポジトリのクローン、環境設定。Studio カーネル起動時に毎回または一度だけ実行
問題 24: SageMaker の「ハイパーパラメータチューニングの目的指標(Objective Metric)」の設定で重要な点は? → 正解: 最適化の方向(Maximize/Minimize)を正しく設定。メトリクスの正規表現パターンでログから正確に抽出されるよう設定。一般的な設定: 精度はMaximize、損失はMinimize
問題 25: SageMaker の「デプロイ済みモデルのエンドポイントのバージョン管理」はどのように行いますか? → 正解: Model Registry でモデルをバージョン管理し、承認されたバージョンのみデプロイ。エンドポイントの設定(EndpointConfig)をバージョン管理してロールバック可能。Lambda エイリアス/SageMaker エンドポイント設定の切り替えで実現
問題 26: SageMaker Ground Truth の「品質管理(Quality Assurance)」の仕組みは? → 正解: 注釈者の精度を「ゴールデンデータセット(正解がわかっているデータ)」で評価。精度が低い注釈者のデータを除外または品質向上トレーニング。複数の注釈者による同一データへの注釈で合意点を算出
問題 27: SageMaker モデルの「学習ジョブアーティファクト」の管理はどのように行いますか?
→ 正解: S3 にモデルアーティファクト(model.tar.gz)として自動保存。SageMaker Experiments でジョブごとにS3 URIを記録。モデルレジストリで承認済みバージョンのみをエンドポイントにデプロイ
問題 28: SageMaker の「ローカルモード(Local Mode)」の制約は?
→ 正解: Docker が必要(GPU ローカルモードには NVIDIA Docker が必要)。instance_type='local'で設定。大規模データや分散学習には不向き。本番と完全に同じコンテナ環境をローカルでテスト可能
問題 29: SageMaker 推論の「コンテンツタイプ(Content-Type)」の設定が重要な理由は?
→ 正解: 推論エンドポイントはContent-Typeヘッダーに基づいてリクエストを適切なデシリアライザーで処理。text/csv、application/json、application/x-npy等。コンテンツタイプの不一致は400エラーの原因
問題 30: SageMaker の「モデルカード(Model Card)」の目的は? → 正解: モデルの用途、訓練データ、評価メトリクス、バイアス分析、使用上の制限を文書化。MLガバナンスとコンプライアンスへの対応。モデルレジストリと統合してバージョンごとにドキュメントを管理
問題 31: SageMaker の「Data Wrangler」でエクスポートできる形式は? → 正解: SageMaker Pipeline(Pythonスクリプトとして)、SageMaker Feature Store(特徴量の直接登録)、Python スクリプト(Pandas/Spark)、SageMaker Processing ジョブ。UIで作成した変換を再利用可能な形式に変換
問題 32: SageMaker の「Heterogeneous Cluster(異種クラスター)」の用途は? → 正解: 学習に異なるインスタンスタイプを組み合わせる機能。例: データ前処理には CPU 最適化(c5)、モデル学習には GPU(p3)。各インスタンスグループに異なるインスタンスタイプを設定して学習効率を最適化
問題 33: SageMaker の「コールドスタート」問題の根本的な原因は? → 正解: サーバーレス推論やスケールゼロ状態からのコンテナ起動時間(モデルのロード、依存ライブラリの初期化)。リアルタイムエンドポイントでもトラフィックが長期間なかった後の最初のリクエストでも発生。Provisioned Concurrency で解決
問題 34: SageMaker の「Slurm on AWS」パターンはどのような場面で使用しますか? → 正解: HPC(高性能コンピューティング)ワークフローでSlurm ジョブスケジューラーを使用しているチームがAWSに移行する場合。ParallelCluster + Slurm でオンプレの HPC クラスターと同様のワークフローをAWSで実行
問題 35: SageMaker の「学習ジョブの分散戦略(Data Parallel vs Model Parallel)」の使い分けの基準は? → 正解: データ並列: モデル全体が1つのGPUに収まる場合(バッチをGPU間で分割して高速化)。モデル並列: モデルが1つのGPUに収まらない場合(モデルをGPU間で分割)。通常はデータ並列から始め、GPUメモリ不足ならモデル並列に移行
学習戦略(MLA-C01)
試験の特徴
MLA-C01 の重点分野(ドメイン別):
Domain 1: データ準備と特徴エンジニアリング(20%)
SageMaker Data Wrangler/Feature Store/Processing
Domain 2: ML モデル開発(26%)
SageMaker Training/Experiments/Debugger/HPO
Domain 3: デプロイとオーケストレーション(22%)
SageMaker 推論(4タイプ)/Pipelines/Model Registry
Domain 4: ML ソリューションの監視と改善(16%)
Model Monitor/Clarify/ドリフト検出/再学習
Domain 5: セキュリティ・コンプライアンス・ガバナンス(16%)
IAM/KMS/VPC設定/Model Cards/MLガバナンス
30日学習プラン
Week 1: データ準備と特徴エンジニアリング
Day 1-2: SageMaker Feature Store(Online/Offline)
Day 3-4: SageMaker Data Wrangler
Day 5-6: SageMaker Processing(Sklearn/Spark)
Day 7: データ品質とGround Truth
Week 2: モデル開発
Day 8-9: SageMaker Training(基本設定/Spot)
Day 10-11: SageMaker HPO(Bayesian/Random/Grid)
Day 12-13: SageMaker Debugger + Experiments
Day 14: SageMaker Autopilot + JumpStart
Week 3: デプロイとMLOps
Day 15-16: SageMaker 推論4種(リアルタイム/サーバーレス/非同期/バッチ)
Day 17-18: SageMaker Pipelines(ConditionStep/ModelRegistry)
Day 19-20: Model Monitor(4種の監視タイプ)
Day 21: SageMaker Clarify
Week 4: 仕上げ
Day 22-24: 模擬試験
Day 25-27: 弱点補強
Day 28-30: 直前チェックリスト
試験直前チェックリスト(MLA-C01)
学習とデプロイ
- [ ] SageMaker の推論4種類(リアルタイム/サーバーレス/非同期/バッチ)の特性を説明できる
- [ ] Managed Spot Training の設定(チェックポイント含む)ができる
- [ ] データ並列とモデル並列の使い分けを説明できる
- [ ] SageMaker HPO のBayesian最適化の特性を説明できる
MLOps
- [ ] SageMaker Pipelines で ConditionStep を使った自動承認フローを設計できる
- [ ] Model Registry でモデルのバージョン管理と承認フローを実装できる
- [ ] Model Monitor の4種類(データ品質/モデル品質/バイアス/特徴量帰属)を説明できる
- [ ] A/Bテストとシャドウテストを SageMaker で実装できる
セキュリティ
- [ ] SageMaker ジョブをVPC内で実行する設定を説明できる
- [ ] コンテナ間通信の暗号化を設定できる
- [ ] Feature Store の IAM 設定(Read/Write を分離)を設計できる
MLA-C01 機械学習エンジニアアソシエイト完全ガイド追加セクション完了
ドメイン別詳細解説(追加)
Domain 1 詳細: データ準備とFeature Engineering
Amazon SageMaker Data Wrangler 完全ガイド
Data Wrangler ワークフロー:
- データソース接続: S3, Athena, Redshift, Snowflake
- データフロー(.flow ファイル): Import → Transform → Export
- 変換処理: 欠損値処理、エンコーディング、スケーリング
- 出力先: S3, SageMaker Processing, Feature Store
Data Wrangler 主要機能
| 機能カテゴリ | 具体的な変換 | 用途 |
|---|---|---|
| 欠損値処理 | 削除/平均補完/中央値補完/最頻値補完 | データクリーニング |
| エンコーディング | One-Hot/Ordinal/Target Encoding | カテゴリ変数変換 |
| スケーリング | Standard/MinMax/Robust Scaler | 数値変換 |
| テキスト処理 | TF-IDF/Count Vectorizer/BERT埋め込み | NLP前処理 |
| 時系列 | ラグ特徴/移動平均/季節性分解 | 時系列特徴抽出 |
| カスタム変換 | Pandasコード/PySpark/PYSPARK SQL | 独自ロジック |
SageMaker Feature Store 詳細
Feature Store アーキテクチャ:
Feature Group
├── メタデータ: 名前、説明、タグ
├── Record Identifier: 主キー(例: customer_id)
└── Event Time: タイムスタンプ
├── Online Store(DynamoDB): 低レイテンシ、最新データ、リアルタイム推論
└── Offline Store(S3 Parquet): バッチ処理、全履歴保持、モデルトレーニング
# Feature Store 完全実装例
import boto3
import pandas as pd
import time
from sagemaker.feature_store.feature_group import FeatureGroup
import sagemaker
session = sagemaker.Session()
# Feature Group 定義
feature_group = FeatureGroup(
name='customer-features-v1',
sagemaker_session=session
)
feature_definitions = [
{'FeatureName': 'customer_id', 'FeatureType': 'String'},
{'FeatureName': 'event_time', 'FeatureType': 'Fractional'},
{'FeatureName': 'age', 'FeatureType': 'Integral'},
{'FeatureName': 'annual_income', 'FeatureType': 'Fractional'},
{'FeatureName': 'churn_risk_score', 'FeatureType': 'Fractional'},
]
feature_group.create(
s3_uri='s3://my-bucket/feature-store/',
record_identifier_name='customer_id',
event_time_feature_name='event_time',
role_arn=role,
enable_online_store=True,
feature_definitions=feature_definitions
)
df = pd.DataFrame({
'customer_id': ['C001', 'C002', 'C003'],
'event_time': [time.time(), time.time(), time.time()],
'age': [35, 28, 42],
'annual_income': [75000.0, 52000.0, 98000.0],
'churn_risk_score': [0.15, 0.72, 0.08],
})
feature_group.ingest(data_frame=df, max_workers=4, wait=True)
# Online Store からリアルタイム取得
record = feature_group.get_record(record_identifier_value='C001')
# Offline Store からバッチ取得(Athena クエリ)
query = feature_group.athena_query()
query.run(
query_string=f'SELECT * FROM "{query.table_name}" WHERE event_time > 1700000000',
output_location='s3://my-bucket/query-results/'
)
query.wait()
df_result = query.as_dataframe()
Domain 2 詳細: モデル開発とトレーニング
インスタンスタイプ選択ガイド
データサイズ < 10GB:
└── MLモデル: ml.m5 / ml.c5
└── DLモデル: ml.p3 / ml.g4dn
データサイズ > 10GB:
└── 分散トレーニング必要: ml.p3.16xlarge + 分散設定
└── 分散トレーニング不要: ml.g4dn.xlarge
Managed Spot Training 設定
from sagemaker.estimator import Estimator
estimator = Estimator(
image_uri='763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.13-gpu-py39',
role=role,
instance_count=1,
instance_type='ml.p3.2xlarge',
use_spot_instances=True,
max_wait=7200, # max_run の 2倍推奨
max_run=3600,
# チェックポイント設定(必須!)
checkpoint_s3_uri='s3://my-bucket/checkpoints/',
checkpoint_local_path='/opt/ml/checkpoints/',
hyperparameters={'epochs': 100, 'batch-size': 64}
)
チェックポイント実装(train.py):
- 学習再開時: checkpoint_path が存在する場合 torch.load() で再開
- 保存: 5エポックごとに epoch, model_state_dict, optimizer_state_dict を保存
分散トレーニング設定
from sagemaker.pytorch import PyTorch
estimator = PyTorch(
entry_point='train_distributed.py',
role=role,
instance_count=4,
instance_type='ml.p3.16xlarge',
framework_version='1.13',
py_version='py39',
distribution={
'smdistributed': {
'dataparallel': {'enabled': True}
}
}
)
分散トレーニング戦略比較:
- データ並列: 各GPUがフルモデルを持ち異なるバッチを処理。AllReduceで勾配集約。シンプルだがGPUメモリ制限あり
- モデル並列: モデルを分割して各GPUに配置。GPUメモリに収まらない大規模モデルに使用
- SageMaker Distributed Library: smdistributed.dataparallel と smdistributed.modelparallel を提供
Domain 3 詳細: MLOps と自動化
SageMaker Pipelines 全ステップタイプ
| ステップ | 用途 |
|---|---|
| ProcessingStep | データ前処理、評価 |
| TrainingStep | モデルトレーニング |
| TuningStep | ハイパーパラメータ最適化 |
| TransformStep | バッチ変換 |
| CreateModelStep | モデル作成 |
| RegisterModel | モデルレジストリ登録 |
| ConditionStep | 条件分岐 |
| FailStep | パイプライン失敗 |
| LambdaStep | Lambda関数呼び出し |
| CallbackStep | 外部システム呼び出し |
| EMRStep | EMR Spark ジョブ |
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep
accuracy_condition = ConditionGreaterThanOrEqualTo(
left=JsonGet(
step_name=evaluation_step.name,
property_file=evaluation_report,
json_path='metrics.accuracy.value'
),
right=0.85
)
condition_step = ConditionStep(
name='CheckAccuracy',
conditions=[accuracy_condition],
if_steps=[register_model_step],
else_steps=[FailStep(name='AccuracyFail', error_message='精度が基準値未満')]
)
Model Monitor 4種類の詳細実装
from sagemaker.model_monitor import DataCaptureConfig, DefaultModelMonitor
from sagemaker.model_monitor import CronExpressionGenerator
# データキャプチャ設定(エンドポイント作成時)
data_capture_config = DataCaptureConfig(
enable_capture=True,
sampling_percentage=100,
destination_s3_uri='s3://my-bucket/data-capture/',
capture_options=['REQUEST', 'RESPONSE']
)
# Data Quality Monitor
my_monitor = DefaultModelMonitor(
role=role,
instance_count=1,
instance_type='ml.m5.xlarge'
)
my_monitor.suggest_baseline(
baseline_dataset='s3://my-bucket/baseline/train.csv',
output_s3_uri='s3://my-bucket/baseline-results/'
)
my_monitor.create_monitoring_schedule(
monitor_schedule_name='daily-data-quality-check',
endpoint_input=endpoint_name,
output_s3_uri='s3://my-bucket/monitor-reports/',
statistics=my_monitor.baseline_statistics(),
constraints=my_monitor.suggested_constraints(),
schedule_cron_expression=CronExpressionGenerator.hourly()
)
Domain 4 詳細: モデルのデプロイと最適化
SageMaker Inference Recommender
最適インスタンスタイプの自動ベンチマーク:
- Default モード: 30分間、代表的なインスタンスタイプを評価
- Advanced モード: 最大2時間、カスタム負荷テストで詳細評価
- 出力: インスタンスタイプ、P95レイテンシ、コスト/時間の比較
マルチモデルエンドポイント(MME)詳細
from sagemaker.multidatamodel import MultiDataModel
mme = MultiDataModel(
name='multi-model-endpoint',
model_data_prefix='s3://my-bucket/models/',
model=model,
sagemaker_session=session
)
predictor = mme.deploy(
initial_instance_count=2,
instance_type='ml.m5.xlarge'
)
# 個別モデルへの推論(TargetModelで指定)
response = predictor.predict(
data=test_data,
target_model='customer-segment-A/model.tar.gz'
)
# 新モデルを動的に追加(ダウンタイムなし)
mme.add_model(
model_data_source='s3://my-bucket/new-model/model.tar.gz',
model_data_path='new-model/model.tar.gz'
)
MME のメリット: 数百モデルを一エンドポイントで管理、使用頻度低モデルのアンロード、コスト大幅削減
Auto Scaling 設定
import boto3
autoscaling = boto3.client('application-autoscaling')
autoscaling.register_scalable_target(
ServiceNamespace='sagemaker',
ResourceId=f'endpoint/{endpoint_name}/variant/AllTraffic',
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=1,
MaxCapacity=10
)
autoscaling.put_scaling_policy(
PolicyName='ml-endpoint-scaling',
ServiceNamespace='sagemaker',
ResourceId=f'endpoint/{endpoint_name}/variant/AllTraffic',
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
PolicyType='TargetTrackingScaling',
TargetTrackingScalingPolicyConfiguration={
'TargetValue': 70.0,
'PredefinedMetricSpecification': {
'PredefinedMetricType': 'SageMakerVariantInvocationsPerInstance'
},
'ScaleInCooldown': 300,
'ScaleOutCooldown': 60
}
)
Amazon Bedrock 完全ガイド(MLA試験向け)
Bedrock 基本アーキテクチャ
基盤モデル(FM)プロバイダー:
- Anthropic: Claude 3 Opus/Sonnet/Haiku
- AI21 Labs: Jurassic-2
- Cohere: Command, Embed
- Stability AI: Stable Diffusion XL
- Amazon: Titan Text, Titan Embeddings, Titan Image
- Meta: Llama 3
主要機能:
- Playground: モデルテスト・比較
- Fine-tuning: ドメイン特化モデル作成(継続的事前学習 / 指示チューニング)
- Knowledge Base: RAG(検索拡張生成)
- Agents: 自律的タスク実行(API連携・ツール使用)
- Model Evaluation: 自動/人間評価
Bedrock Python SDK 使用例
import boto3
import json
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
# テキスト生成(Claude 3)
response = bedrock.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
body=json.dumps({
'anthropic_version': 'bedrock-2023-05-31',
'max_tokens': 1000,
'messages': [{'role': 'user', 'content': 'AWSとは何ですか?'}]
}),
contentType='application/json',
accept='application/json'
)
result = json.loads(response['body'].read())
print(result['content'][0]['text'])
# エンベッディング生成(Titan Embeddings)
embed_response = bedrock.invoke_model(
modelId='amazon.titan-embed-text-v1',
body=json.dumps({'inputText': 'Amazon SageMaker'}),
contentType='application/json',
accept='application/json'
)
embedding = json.loads(embed_response['body'].read())['embedding'] # 1536次元
Bedrock Knowledge Base (RAG)
import boto3
bedrock_agent_runtime = boto3.client('bedrock-agent-runtime')
# Knowledge Base からの RAG 検索・生成
response = bedrock_agent_runtime.retrieve_and_generate(
input={'text': 'SageMakerの推論タイプを教えてください'},
retrieveAndGenerateConfiguration={
'type': 'KNOWLEDGE_BASE',
'knowledgeBaseConfiguration': {
'knowledgeBaseId': 'YOUR_KB_ID',
'modelArn': 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0',
'retrievalConfiguration': {
'vectorSearchConfiguration': {
'numberOfResults': 5,
'overrideSearchType': 'HYBRID' # セマンティック+キーワード
}
}
}
}
)
print(response['output']['text'])
# Knowledge Base 作成(OpenSearch Serverless使用)
bedrock_agent_mgmt = boto3.client('bedrock-agent')
kb_response = bedrock_agent_mgmt.create_knowledge_base(
name='ml-docs-kb',
roleArn=role_arn,
knowledgeBaseConfiguration={
'type': 'VECTOR',
'vectorKnowledgeBaseConfiguration': {
'embeddingModelArn': 'arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1'
}
},
storageConfiguration={
'type': 'OPENSEARCH_SERVERLESS',
'opensearchServerlessConfiguration': {
'collectionArn': collection_arn,
'vectorIndexName': 'ml-docs-index',
'fieldMapping': {
'vectorField': 'embedding',
'textField': 'text',
'metadataField': 'metadata'
}
}
}
)
MLセキュリティと コンプライアンス詳細
SageMaker セキュリティ設定一覧
estimator = PyTorch(
entry_point='train.py',
role=role,
instance_count=2,
instance_type='ml.p3.8xlarge',
framework_version='1.13',
py_version='py39',
# VPC設定(インターネットアクセスを遮断)
subnets=['subnet-0123456789abcdef0', 'subnet-0987654321fedcba0'],
security_group_ids=['sg-0123456789abcdef0'],
# コンテナ間通信の暗号化
encrypt_inter_container_traffic=True,
# ネットワーク分離(S3/ECRへのVPCエンドポイントが必要)
enable_network_isolation=True,
# S3 暗号化
output_kms_key='arn:aws:kms:us-east-1:123456789012:key/key-id'
)
セキュリティベストプラクティス:
- VPCサブネット指定でインターネットアクセス遮断
- S3データをKMSで暗号化(SSE-KMS)
- コンテナ間通信の暗号化有効化
- IAM最小権限の原則
- CloudTrailでAPI呼び出しを監査
- SageMaker Studio でネットワーク分離設定
試験対策 重要サービス比較表
SageMaker 全サービス一覧
| サービス | 用途 | 試験での出題ポイント |
|---|---|---|
| Studio | 統合開発環境 | JupyterLab ベース |
| Data Wrangler | GUI データ前処理 | .flow ファイル |
| Feature Store | 特徴量管理 | Online/Offline 二層 |
| Ground Truth | データラベリング | 人間/自動ラベリング |
| Clarify | バイアス/説明可能性 | SHAP値 |
| Experiments | 実験管理 | Experiment→Trial→TrialComponent |
| Debugger | トレーニング診断 | 勾配消失/爆発検出 |
| HPO | ハイパーパラメータ最適化 | Bayesian最適化 |
| Autopilot | AutoML | CRISP-DM自動化 |
| JumpStart | 事前学習済みモデル | Fine-tuning対応 |
| Pipelines | MLワークフロー | CI/CD for ML |
| Model Registry | モデル管理 | バージョン/承認 |
| Model Monitor | モデル監視 | 4種類の監視 |
| Neo | モデル最適化 | エッジデバイス対応 |
| Inference Recommender | 最適インスタンス | ベンチマーク自動化 |
推論タイプ詳細比較(再掲・試験重要)
| 項目 | リアルタイム | サーバーレス | 非同期 | バッチ変換 |
|---|---|---|---|---|
| レイテンシ | 低(ms) | 低(コールドスタート有) | 非同期 | バッチ |
| ペイロード | 最大6MB | 最大4MB | 最大1GB | 無制限 |
| 処理時間 | 60秒以内 | 60秒以内 | 最大15分 | 無制限 |
| コールドスタート | なし | あり | なし | なし |
| 課金 | インスタンス時間 | リクエスト単位 | インスタンス時間 | インスタンス時間 |
| ユースケース | Webアプリ | 低頻度 | 大ファイル | 大量バッチ |
| スケーリング | Auto Scaling | 自動 | キューベース | N/A |
追加模擬試験問題(MLA-C01)第2セット
Q1. SageMaker Training Job でスポットインスタンスを使用する際の必須要件は?
- A) 学習スクリプトがGPUをサポートすること
- B) チェックポイントをS3に保存する設定
- C) 分散トレーニングを使用すること
- D) カスタムコンテナを使用すること
正解: B - スポットインスタンスは中断される可能性があるため、checkpoint_s3_uriとcheckpoint_local_pathの設定が必須です。
Q2. SageMaker Feature Store のOnline StoreとOffline Storeの違いは?
- A) Online Store = DynamoDB(低レイテンシ)、Offline Store = S3 Parquet(バッチ処理)
- B) Online Store = S3、Offline Store = DynamoDB
- C) Online Store = Athenaでクエリ、Offline Store = APIでアクセス
- D) 両方とも同じデータを使用する
正解: A - Online StoreはDynamoDBベースで低レイテンシ、Offline StoreはS3 Parquet形式でAthenを使ったバッチ処理に使います。
Q3. Model Quality Monitor が必要とするものは?
- A) トレーニングデータのみ
- B) Ground Truth(正解ラベル)とキャプチャした予測値
- C) 特徴量の統計量ベースライン
- D) SHAPバリュー
正解: B - Model Quality Monitor は予測値と実際の正解ラベルを比較して精度の劣化を検出します。
Q4. Bedrock Knowledge Base でRAGを実装する際に最重要な設定は?
- A) Lambda関数の設定
- B) ベクトルデータベースとエンベッディングモデル
- C) Auto Scalingグループ
- D) CloudFront配信設定
正解: B - RAGにはドキュメントをベクトル化するエンベッディングモデルと、ベクトルを保存・検索するベクトルデータベースが必要です。
Q5. SageMaker Clarify の前処理バイアスと後処理バイアスの違いは?
- A) 前処理バイアスはデータ内のバイアス、後処理バイアスはモデル予測のバイアス
- B) 前処理バイアスはモデルバイアス、後処理バイアスはデータバイアス
- C) 違いはない
- D) 後処理バイアスはデータ分割に関するバイアス
正解: A - Pre-training バイアスはトレーニングデータのバイアスを測定、Post-training バイアスはモデル予測結果のバイアスを測定します。
Q6. SageMaker Pipelines でメトリクスが閾値以下でパイプラインを停止するには?
- A) Lambda Step でロジック実装
- B) ConditionStep と FailStep の組み合わせ
- C) CloudWatch Alarm を使用
- D) SNS 通知を設定
正解: B - ConditionStepで条件分岐し、満たさない場合のブランチでFailStepを実行します。
Q7. SageMaker でモデル並列が必要なのはどの場合か?
- A) データセットが大きすぎる場合
- B) モデルが一つのGPUメモリに収まらない場合
- C) トレーニング速度を上げたい場合
- D) コストを削減したい場合
正解: B - モデル並列はLLMなどGPUメモリに収まらない大規模モデルのトレーニングに使用します。
Q8. マルチモデルエンドポイント(MME)の最大の利点は?
- A) 推論速度の向上
- B) 一つのエンドポイントで複数モデルを動的ロード/アンロード、コスト削減
- C) セキュリティの強化
- D) モデルの精度向上
正解: B - MMEは一つのエンドポイントで数百モデルをホストでき、使用頻度の低いモデルはメモリからアンロードします。
Q9. SageMaker Neo のコンパイルの主目的は?
- A) モデルの精度向上
- B) ターゲットデバイスに最適化してレイテンシ削減と推論効率化
- C) モデルのセキュリティ強化
- D) データ前処理の自動化
正解: B - Neoはターゲットハードウェアに最適化してコンパイルし、推論速度を最大2倍向上させます。
Q10. SageMaker A/Bテストで2つのモデルを比較する設定方法は?
- A) 2つの別々のエンドポイントを作成
- B) 一つのエンドポイントに2つのProductionVariantを設定し、トラフィック分割を指定
- C) Lambda関数でルーティング
- D) CloudFront でA/Bテスト
正解: B - ProductionVariantsに2つのVariantを設定し、InitialVariantWeightでトラフィック比率を指定します。
Q11. Ground Truth でラベリングコスト削減の自動ラベリング機能は?
- A) SageMaker Autopilot
- B) Automated Data Labeling(Auto Labeling)
- C) SageMaker Clarify
- D) Rekognition
正解: B - Ground Truth のAuto Labelingは信頼度の高い予測に自動でラベルを付与し、不確実なデータのみ人間に送ります。最終的に70-80%以上を自動ラベリングできます。
Q12. Spot Training で max_wait と max_run の正しい関係は?
- A) max_wait < max_run
- B) max_wait > max_run(スポットインスタンス待機時間を含む)
- C) max_wait = max_run
- D) max_wait はオプション
正解: B - max_wait はスポットインスタンスが利用可能になるまでの待機時間を含む総時間で、max_run より大きく設定。通常 max_wait = max_run × 2 が推奨です。
Q13. SageMaker Debugger で勾配消失問題を検出するルールは?
- A) DeadRelu
- B) VanishingGradient
- C) WeightUpdateRatio
- D) LossNotDecreasing
正解: B - VanishingGradient ルールは勾配の絶対値が非常に小さくなった場合に検出します。
Q14. Bedrock の Provisioned Throughput が必要なケースは?
- A) 低頻度のAPIコール
- B) 一貫した高スループットが必要な本番環境
- C) テスト環境での利用
- D) 費用を最小化したい場合
正解: B - Provisioned Throughputはモデルユニットを事前購入し、一貫したスループットを保証。On-Demandより高コストですが、高負荷本番環境でのレイテンシ安定化に有効です。
Q15. SageMaker Pipeline で並列実行するには?
- A) StepごとにParallelオプションを設定
- B) 依存関係を持たない複数のStepを同じPipelineに含めると自動的に並列実行
- C) ParallelStep を使用
- D) Lambda Step で並列化
正解: B - SageMaker Pipelines はDAGとして実行され、依存関係のないStepは自動的に並列実行されます。
Q16. インプレース更新とブルー/グリーンデプロイの違いは?
- A) インプレース更新はダウンタイムあり、ブルー/グリーンはゼロダウンタイム
- B) ブルー/グリーンはダウンタイムあり、インプレースはゼロダウンタイム
- C) 違いはない
- D) どちらも同じダウンタイム
正解: A - インプレース更新は既存インスタンスを直接更新するため短時間のダウンタイムが発生。ブルー/グリーンは新フリートを並行起動し正常確認後にトラフィック切り替え、ゼロダウンタイムを実現します。
Q17. SageMaker Processing Job で使用できるフレームワークは?
- A) Scikit-learnのみ
- B) Scikit-learn、PyTorch、TensorFlow、Apache Spark(PySpark)など
- C) TensorFlowのみ
- D) PyTorchとTensorFlowのみ
正解: B - SKLearnProcessor、PyTorchProcessor、TensorFlowProcessor、SparkMLProcessor(PySpark)、ScriptProcessor(カスタムコンテナ)など多数のプロセッサを提供します。
Q18. MLモデルのデータドリフトとモデルドリフトの違いは?
- A) 同じ概念
- B) データドリフトは入力データ分布の変化、モデルドリフトは予測精度の低下
- C) モデルドリフトはコードの変更、データドリフトはHWの変更
- D) モデルドリフトは意図的、データドリフトは意図しない変化
正解: B - データドリフト(コバリエートシフト)は入力特徴量の分布変化。モデルドリフト(コンセプトドリフト)は入出力の関係変化による精度低下。それぞれData Quality MonitorとModel Quality Monitorで検出します。
Q19. SageMaker で機密データを扱う場合のベストプラクティスは?
- A) データをインターネット経由で送信
- B) VPCエンドポイント使用、VPC内実行、S3/EFS暗号化(KMS)、コンテナ間通信暗号化
- C) パブリックS3バケットに保存
- D) 認証なしでAPIアクセス
正解: B - VPCサブネット指定でインターネットアクセス遮断、S3データのKMS暗号化、コンテナ間通信暗号化、IAM最小権限、CloudTrail監査が必須です。
Q20. Rekognition Custom Labels の利点は?
- A) 独自カテゴリの画像分類モデルをコードなしで構築可能
- B) 汎用的な物体検出のみ
- C) テキスト認識に特化
- D) 動画解析のみ
正解: A - 少量の学習データ(数百枚から)でカスタム画像分類・物体検出モデルを構築できます。製品の欠陥検出、医療画像分類など特定ドメインに最適です。
Q21. Bayesian最適化のHPOでの利点は?
- A) 並列実行に最も適している
- B) 過去のトライアル結果を学習して効率的に探索空間を絞り込む
- C) ランダムサーチより遅い
- D) 単純なモデルにのみ適用可能
正解: B - Bayesian最適化はガウス過程を使って目的関数の事後分布を推定し、次のハイパーパラメータを効率的に選択します。少ない試行回数で最適値に近づけますが、並列実行にはRandomが適しています。
Q22. SageMaker Clarify でSHAP値を計算する際のベースラインは?
- A) トレーニングデータの平均値(固定)
- B) ゼロベクトル
- C) 各特徴量が「存在しない」と仮定した場合のシャプレー値の参照点
- D) テストデータの最小値
正解: C - SHAPはゲーム理論に基づき各特徴量の予測への貢献度を計算します。ベースラインとして特徴量が「ない状態」を仮定し、一般的にはトレーニングデータの平均値や特定サンプルが使用されます。
Q23. Model Registry でモデルのステータスを「Approved」にする推奨方法は?
- A) 手動承認のみ
- B) ConditionStep による自動評価 + 必要に応じた人間承認の二段階フロー
- C) タイマーによる自動承認
- D) CodeBuild による承認
正解: B - ベストプラクティスは、ConditionStepで基準を自動評価し「PendingManualApproval」にした後、MLエンジニアが確認して「Approved」に変更する二段階承認フローです。
Q24. SageMaker Autopilot の処理順序は?
- A) データ分析 → 候補パイプライン生成 → 特徴量エンジニアリング → モデルトレーニング
- B) モデルトレーニング → 特徴量エンジニアリング → データ分析
- C) 特徴量エンジニアリング → データ分析 → モデルトレーニング
- D) データ分析のみ自動化
正解: A - AutopilotはCRISP-DMに従い、①データ分析・EDA → ②候補パイプライン生成 → ③特徴量エンジニアリング → ④モデルトレーニング/HPO → ⑤最良モデル選定の順で処理します。
Q25. SageMaker Experiments の階層構造は?
- A) Experiment → Run
- B) Project → Model → Version
- C) Trial → TrialComponent
- D) Experiment → Trial → TrialComponent
正解: D - Experimentsの階層はExperiment(プロジェクト単位)→ Trial(個別実験)→ TrialComponent(各ステップ:前処理/トレーニング/評価)です。
Q26. SageMaker JumpStart の主な用途は?
- A) データ前処理の自動化
- B) 事前学習済みモデルのFine-tuningとデプロイの簡素化
- C) ハイパーパラメータの自動最適化
- D) モデルの監視自動化
正解: B - JumpStartはHugging Face、PyTorch Hubなどから事前学習済みモデルへのワンクリックアクセスとFine-tuningを提供します。独自データでのカスタマイズに最適です。
Q27. Bedrock Fine-tuning の2種類のアプローチの違いは?
- A) 両方とも同じ
- B) 継続的事前学習(大量テキストで自己教師あり学習)vs 指示チューニング(入出力ペアで特定タスク特化)
- C) 継続的事前学習はコスト高、指示チューニングはコスト低のみの違い
- D) 継続的事前学習は分類、指示チューニングは生成のみ
正解: B - 継続的事前学習(Continued Pre-training)は大量のドメイン特化テキストで基盤知識を更新。指示チューニング(Fine-tuning)は入力/出力ペアデータで特定タスクへの応答能力を強化します。
Q28. SageMaker Pipeline でパラメータをオーバーライドして実行する方法は?
- A) コードを書き換えて再デプロイ
- B) pipeline.start(parameters={…}) でパラメータ辞書を指定
- C) 環境変数として設定
- D) S3設定ファイルを更新
正解: B - pipeline.start(parameters={'ParameterName': value})でパイプライン実行時にパラメータをオーバーライドできます。デフォルト値からの変更も柔軟に対応可能です。
Q29. SageMaker Debugger でトレーニング中に問題検出時の自動アクション設定は?
- A) メールのみ
- B) Rule を設定し、問題検出時に自動的にトレーニングを停止またはSNS通知
- C) CloudWatch Alarm のみ
- D) 自動アクションは不可能
正解: B - DebuggerはBuilt-in RuleまたはCustom Ruleを設定し、条件を満たした場合に自動でトレーニングを停止(コスト削減)またはSNS通知を送ることができます。
Q30. SageMaker エンドポイントのCanaryデプロイで新モデルへのトラフィックの推奨割合は?
- A) 50%からスタート
- B) 5-10%からスタートし段階的に増加
- C) 100%に一度に移行
- D) 最初の1時間は0%
正解: B - Canaryデプロイは新モデルに最初は少量のトラフィック(5-10%)を流し、問題がなければ段階的に増やします(Canary → Linear → All-At-Once)。CloudWatchメトリクスを監視しながら安全にデプロイを進めます。
MLA-C01 総合まとめ
試験 重要ポイント TOP 20
- Feature Store: Online=DynamoDB(リアルタイム)、Offline=S3 Parquet(バッチ)
- 推論4種類: リアルタイム(6MB/60s) / サーバーレス(4MB/コールドスタート) / 非同期(1GB/15min) / バッチ(無制限)
- Spot Training: チェックポイント必須、max_wait > max_run(×2推奨)
- Pipelines: ConditionStep+FailStepでメトリクスベース制御、DAGで自動並列化
- Model Monitor: データ品質/モデル品質/バイアス/特徴量帰属の4種類
- A/Bテスト: ProductionVariant複数設定 + InitialVariantWeight
- Blue/Greenデプロイ: ゼロダウンタイム、Canary(5-10%) → Linear → All-At-Once
- 分散トレーニング: データ並列(バッチ分散)vsモデル並列(モデルが大きすぎる場合)
- Clarify: Pre/Post-training バイアス、SHAP値による説明可能性
- Bedrock RAG: Knowledge Base = ベクトルDB + エンベッディングモデル + Hybrid検索
- Neo: ハードウェア最適化コンパイル(TensorRT/OpenVINO、推論最大2倍高速化)
- MME: 1エンドポイントで数百モデル、コスト大幅削減
- Inference Recommender: Default(30分) / Advanced(2時間)ベンチマーク
- Autopilot: CRISP-DM自動化、候補パイプライン生成
- Ground Truth Auto Labeling: 信頼度高い予測を自動ラベリング、コスト70-80%削減
- セキュリティ: VPCサブネット + コンテナ間通信暗号化 + KMS + IAM最小権限
- Experiments: Experiment → Trial → TrialComponent の3層階層
- Debugger: VanishingGradient, ExplodingTensor, LossNotDecreasing などのビルトインルール
- Bedrock Provisioned Throughput: モデルユニット事前購入、高スループット本番に最適
- JumpStart: 事前学習済みモデルのFine-tuning簡素化(Hugging Face等から直接利用)
MLA-C01 機械学習エンジニアアソシエイト 完全ガイド完了
AWS AI/ML サービス完全カタログ
コンピュータビジョン系サービス
| サービス | 主な機能 | 用途 |
|---|---|---|
| Amazon Rekognition | 顔認識/物体検出/テキスト抽出/不適切コンテンツ検出 | 画像・動画分析 |
| Rekognition Custom Labels | カスタム物体検出/分類 | 独自カテゴリの画像認識 |
| Amazon Textract | OCR + 構造化データ抽出(フォーム/テーブル) | ドキュメント処理 |
| Amazon Lookout for Vision | 製造ラインの視覚的欠陥検出 | 品質管理/異常検出 |
Rekognition 主要API
import boto3
rekognition = boto3.client('rekognition')
# 物体・シーン検出
response = rekognition.detect_labels(
Image={'S3Object': {'Bucket': 'my-bucket', 'Name': 'image.jpg'}},
MaxLabels=10,
MinConfidence=80
)
# 顔検出
faces = rekognition.detect_faces(
Image={'S3Object': {'Bucket': 'my-bucket', 'Name': 'photo.jpg'}},
Attributes=['ALL']
)
# テキスト検出
text = rekognition.detect_text(
Image={'S3Object': {'Bucket': 'my-bucket', 'Name': 'sign.jpg'}}
)
# 顔比較(なりすまし検出)
comparison = rekognition.compare_faces(
SourceImage={'S3Object': {'Bucket': 'my-bucket', 'Name': 'source.jpg'}},
TargetImage={'S3Object': {'Bucket': 'my-bucket', 'Name': 'target.jpg'}},
SimilarityThreshold=90
)
# カスタムモデル(Custom Labels)での推論
custom = rekognition.detect_custom_labels(
ProjectVersionArn='arn:aws:rekognition:us-east-1:123:project/MyModel/version/v1/1234',
Image={'S3Object': {'Bucket': 'my-bucket', 'Name': 'product.jpg'}},
MinConfidence=70
)
自然言語処理(NLP)系サービス
| サービス | 機能 | ユースケース |
|---|---|---|
| Amazon Comprehend | エンティティ抽出/感情分析/言語検出/トピックモデリング | テキスト分析 |
| Comprehend Medical | 医療用語抽出/PHI検出 | 医療記録処理 |
| Amazon Translate | リアルタイム翻訳(75+言語) | 多言語コンテンツ |
| Amazon Transcribe | 音声テキスト変換(STT) | 音声記録/字幕 |
| Amazon Polly | テキスト音声変換(TTS) | 音声コンテンツ |
| Amazon Lex | チャットボット/音声ボット(自動音声対話) | カスタマーサービス |
Amazon Comprehend 実装例
import boto3
comprehend = boto3.client('comprehend')
text = "Amazon SageMaker helps data scientists build ML models quickly in Tokyo."
# エンティティ認識(人名/組織/場所/日付など)
entities = comprehend.detect_entities(Text=text, LanguageCode='en')
for entity in entities['Entities']:
print(f"{entity['Type']}: {entity['Text']} ({entity['Score']:.2f})")
# 感情分析
sentiment = comprehend.detect_sentiment(Text=text, LanguageCode='en')
print(f"Sentiment: {sentiment['Sentiment']}")
# 出力: Positive, Negative, Mixed, Neutral
# キーフレーズ抽出
keyphrases = comprehend.detect_key_phrases(Text=text, LanguageCode='en')
# 言語検出
language = comprehend.detect_dominant_language(Text=text)
# カスタム分類モデル(Comprehend Custom Classifier)
# 固有のカテゴリに基づくドキュメント分類
response = comprehend.classify_document(
Text=text,
EndpointArn='arn:aws:comprehend:us-east-1:123:document-classifier-endpoint/my-classifier'
)
時系列・予測系サービス
| サービス | 機能 | ユースケース |
|---|---|---|
| Amazon Forecast | 時系列予測(AutoML) | 需要予測/在庫最適化 |
| Amazon Lookout for Metrics | 時系列異常検出 | KPI異常検知 |
| Amazon Lookout for Equipment | 設備の予知保全 | 産業IoT |
Amazon Forecast 実装
import boto3
forecast = boto3.client('forecast')
# データセットグループ作成
dataset_group = forecast.create_dataset_group(
DatasetGroupName='retail-demand-forecast',
Domain='RETAIL' # RETAIL, INVENTORY_PLANNING, EC2 CAPACITY, WORK_FORCE, etc.
)
# データセット作成(TARGET_TIME_SERIES が必須)
dataset = forecast.create_dataset(
DatasetName='retail-sales',
Domain='RETAIL',
DatasetType='TARGET_TIME_SERIES',
Schema={
'Attributes': [
{'AttributeName': 'timestamp', 'AttributeType': 'timestamp'},
{'AttributeName': 'target_value', 'AttributeType': 'float'}, # 予測対象
{'AttributeName': 'item_id', 'AttributeType': 'string'}, # 製品ID
]
},
DataFrequency='D' # 日次データ
)
# 予測子(Predictor)作成(AutoML使用)
predictor = forecast.create_auto_predictor(
PredictorName='retail-auto-predictor',
ForecastHorizon=30, # 30日先まで予測
ForecastFrequency='D',
DataConfig={
'DatasetGroupArn': dataset_group['DatasetGroupArn']
},
ExplainPredictor=True # 予測の説明可能性
)
パーソナライゼーション
import boto3
personalize = boto3.client('personalize-runtime')
# リアルタイム推薦(ユーザーベース)
response = personalize.get_recommendations(
campaignArn='arn:aws:personalize:us-east-1:123:campaign/my-campaign',
userId='USER_001',
numResults=10
)
# 類似アイテム推薦
similar = personalize.get_recommendations(
campaignArn='arn:aws:personalize:us-east-1:123:campaign/similar-items-campaign',
itemId='ITEM_001',
numResults=5
)
# イベント(行動履歴)の記録
personalize_events = boto3.client('personalize-events')
personalize_events.put_events(
trackingId='TRACKING_ID',
userId='USER_001',
sessionId='SESSION_001',
eventList=[{
'sentAt': 1700000000,
'eventType': 'CLICK',
'itemId': 'ITEM_001',
'properties': '{"numRatings": 3, "eventValue": 4.5}'
}]
)
SageMaker Canvas と No-Code ML
SageMaker Canvas の主要機能
SageMaker Canvas はコードなしでMLモデルを構築できるビジュアルツールです。
Canvas ワークフロー
┌─────────────────┐
│ 1. データインポート│
│ S3, Redshift, │
│ Snowflake 対応 │
└────────┬────────┘
↓
┌─────────────────┐
│ 2. モデルタイプ │
│ 選択 │
│ ・二値分類 │
│ ・多値分類 │
│ ・数値予測 │
│ ・時系列予測 │
│ ・画像分析 │
│ ・テキスト分析 │
└────────┬────────┘
↓
┌─────────────────┐
│ 3. モデルビルド │
│ ・Quick Build │
│ (2-15分) │
│ ・Standard │
│ (2-4時間) │
└────────┬────────┘
↓
┌─────────────────┐
│ 4. 予測実行 │
│ ・単一予測 │
│ ・バッチ予測 │
└─────────────────┘
Canvas の特徴:
- 対象ユーザー: データアナリスト、ビジネスアナリスト(MLエンジニア不要)
- AutoML: SageMaker Autopilot を内部利用
- モデル共有: Studio のMLエンジニアとモデル共有可能
- Bedrock統合: 生成AIモデルもCanvas から利用可能
SageMaker Training コンテナ詳細
組み込みコンテナ vs カスタムコンテナ
コンテナ選択フロー
┌──────────────────────────────────────────┐
│ SageMaker 組み込みアルゴリズム使用? │
└──────────────────┬───────────────────────┘
│
┌─────────┴─────────┐
↓ YES ↓ NO
┌─────────────────┐ ┌───────────────────────┐
│ 組み込みコンテナ│ │ フレームワーク有り? │
│ XGBoost/Linear │ └───────────┬───────────┘
│ Regression/etc │ │
└─────────────────┘ ┌─────────┴─────────┐
↓ YES ↓ NO
┌─────────────────┐ ┌─────────────────┐
│ フレームワーク │ │ カスタムコンテナ│
│ コンテナ │ │ (完全独自実装)│
│ TF/PyTorch/SKL │ └─────────────────┘
└─────────────────┘
カスタムコンテナ作成手順
# Dockerfile
FROM python:3.9-slim
# SageMaker Training Toolkit インストール
RUN pip install sagemaker-training
# 依存関係インストール
COPY requirements.txt .
RUN pip install -r requirements.txt
# トレーニングスクリプトコピー
COPY train.py /opt/ml/code/train.py
# SageMaker が呼び出すエントリポイント
ENV SAGEMAKER_PROGRAM train.py
# ECRへのプッシュ
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
REGION="us-east-1"
IMAGE_NAME="my-training-container"
# ECR リポジトリ作成
aws ecr create-repository --repository-name $IMAGE_NAME --region $REGION
# ログイン
aws ecr get-login-password --region $REGION | \
docker login --username AWS --password-stdin \
${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com
# ビルドとプッシュ
docker build -t ${IMAGE_NAME} .
docker tag ${IMAGE_NAME}:latest \
${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${IMAGE_NAME}:latest
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${IMAGE_NAME}:latest
# カスタムコンテナでのEstimator作成
from sagemaker.estimator import Estimator
estimator = Estimator(
image_uri=f'{account_id}.dkr.ecr.{region}.amazonaws.com/my-training-container:latest',
role=role,
instance_count=1,
instance_type='ml.m5.xlarge',
hyperparameters={
'learning-rate': 0.001,
'epochs': 50
}
)
estimator.fit({'train': 's3://my-bucket/data/train/'})
MLflow と SageMaker 統合
SageMaker MLflow Tracking
import mlflow
import mlflow.sklearn
import boto3
import sagemaker
# SageMaker MLflow Tracking URI 設定
mlflow.set_tracking_uri('arn:aws:sagemaker:us-east-1:123456789:mlflow-tracking-server/my-server')
# 実験の記録
with mlflow.start_run(run_name='xgboost-experiment-v1'):
# パラメータ記録
mlflow.log_param('n_estimators', 100)
mlflow.log_param('max_depth', 5)
mlflow.log_param('learning_rate', 0.1)
# モデルトレーニング
model = XGBClassifier(n_estimators=100, max_depth=5, learning_rate=0.1)
model.fit(X_train, y_train)
# メトリクス記録
accuracy = model.score(X_test, y_test)
mlflow.log_metric('accuracy', accuracy)
mlflow.log_metric('auc', roc_auc_score(y_test, model.predict_proba(X_test)[:, 1]))
# モデル保存
mlflow.sklearn.log_model(model, 'xgboost-model')
# アーティファクト保存(特徴量重要度グラフなど)
mlflow.log_artifact('feature_importance.png')
# SageMaker Model Registry への登録
mlflow.register_model(
model_uri=f'runs:/{run_id}/xgboost-model',
name='fraud-detection-model'
)
コスト最適化のベストプラクティス
SageMaker コスト最適化戦略
コスト削減チェックリスト
┌────────────────────────────────────────────────────────┐
│ トレーニング │
│ ✓ Managed Spot Training (最大90%削減) │
│ ✓ 適切なインスタンスタイプ選択 │
│ ✓ 早期停止(Early Stopping)設定 │
│ ✓ SageMaker Experiments でムダな実験削減 │
├────────────────────────────────────────────────────────┤
│ 推論エンドポイント │
│ ✓ Auto Scaling でアイドル時はスケールイン │
│ ✓ Serverless Inference(低頻度リクエスト) │
│ ✓ Multi-Model Endpoint(モデル統合) │
│ ✓ Graviton ベースインスタンス(ml.c7g) │
│ ✓ 不要エンドポイントの自動削除(Lambda+EventBridge) │
├────────────────────────────────────────────────────────┤
│ 開発/実験環境 │
│ ✓ Studio JupyterServer の自動シャットダウン設定 │
│ ✓ 小さいインスタンスでプロトタイプ → 大きいで本番 │
│ ✓ SageMaker Savings Plans の活用 │
└────────────────────────────────────────────────────────┘
コスト計算例
# Spot Training vs On-Demand 比較
# ml.p3.2xlarge(GPU): On-Demand $3.825/時間
# Spot 価格: 約$1.15/時間(約70%割引)
# 1000時間のトレーニングの場合
on_demand_cost = 1000 * 3.825 # $3,825
spot_cost = 1000 * 1.15 # $1,150 (約70%削減)
savings = on_demand_cost - spot_cost # $2,675 削減
# Serverless vs Realtime Endpoint 比較
# リクエスト数: 月10,000回、各1秒
# Realtime (ml.m5.large): $0.134/時間 × 720時間 = $96.5/月(常時稼働)
# Serverless: $0.0000021/GB-second × 2GB × 1秒 × 10000回 = $0.042/月
試験に出る重要な数値・制限
SageMaker 主要制限値
| 項目 | 制限値 | 備考 |
|---|---|---|
| リアルタイム推論 ペイロード | 最大 6 MB | それ以上は非同期推論 |
| サーバーレス推論 ペイロード | 最大 4 MB | |
| 非同期推論 ペイロード | 最大 1 GB | |
| 非同期推論 処理時間 | 最大 15 分 | 60分まで延長可能 |
| リアルタイム推論 タイムアウト | 最大 60 秒 | デフォルト |
| Spot Training max_wait | max_run より大きく | 推奨: max_run × 2 |
| HPO 最大並列ジョブ数 | 最大 10 | |
| HPO 最大ジョブ数 | 最大 500 | |
| Feature Store Online Store TTL | 設定可能 | デフォルト: 永続 |
| Autopilot 最大候補数 | 250 | |
| Ground Truth ラベリング | 1ジョブ最大 500,000 件 | |
| SageMaker Batch Transform | 最大インスタンス数: 1000 |
Bedrock 主要制限値
| 項目 | 値 | 備考 |
|---|---|---|
| Knowledge Base チャンクサイズ | デフォルト 300 トークン | 調整可能 |
| Agents タイムアウト | 最大 30 秒/ターン | |
| Fine-tuning 最小データ量 | モデル依存 | 一般的に1,000件以上推奨 |
| Provisioned Throughput 最小コミット | 1ヶ月 |
実践シナリオ問題集
シナリオ1: 不正検出システムの構築
要件:
- リアルタイムの取引データに対して不正検出
- 月間1億件の取引
- 99.9%の可用性が必要
- モデルの精度劣化を早期検知
推奨アーキテクチャ:
取引API → Kinesis Data Streams
→ Lambda(前処理)
→ SageMaker リアルタイムエンドポイント
→ 予測結果 → DynamoDB(記録)
→ 不正フラグ → SNS → アラート
Model Monitor(hourly)
→ DataCapture → S3
→ 異常検知 → CloudWatch Alarm
→ → Retraining Pipeline トリガー
選択理由:
- リアルタイムエンドポイント: 低レイテンシ(ミリ秒)要件
- Multi-AZ デプロイ: 99.9%可用性
- Auto Scaling: 1億件/月のトラフィック変動対応
- Model Monitor: 精度劣化の自動検知
シナリオ2: 医療画像診断支援システム
要件:
- X線画像から異常を検出
- 高精度モデルが必要(FN最小化)
- 処理時間は数時間以内で可
- HIPAA コンプライアンス準拠
推奨アーキテクチャ:
S3(暗号化)→ SageMaker 非同期推論エンドポイント
→ 画像前処理(Lambda)
→ 診断支援モデル
→ 結果 → S3(暗号化)→ 医師向けシステム
トレーニング:
Ground Truth(医師によるラベリング)
→ SageMaker Training(VPC内、KMS暗号化)
→ Model Registry(承認フロー有り)
→ SageMaker Pipelines(再トレーニング自動化)
選択理由:
- 非同期推論: 大きい画像ファイル、即時応答不要
- VPC + KMS: HIPAA 準拠のデータ保護
- Ground Truth: 医師によるラベリングの管理
- 承認フロー: 医療システムの安全デプロイ
シナリオ3: ECサイトの商品推薦システム
要件:
- ユーザーごとのパーソナライズ推薦
- リアルタイムの行動データを反映
- 1000万ユーザー対応
- A/Bテストで効果検証
推奨アーキテクチャ:
ユーザー行動 → Kinesis → Lambda
→ Amazon Personalize(リアルタイム推薦)
→ CloudFront キャッシュ
→ Webサイト
または高度なカスタマイズ版:
ユーザー行動 → Feature Store(online)
→ SageMaker エンドポイント(A/Bテスト設定)
→ Model A(90%トラフィック)
→ Model B(10%トラフィック)
→ CloudWatch で効果測定
→ 優れた方に徐々に移行
選択理由:
- Personalize: 行動ベースの推薦をマネージドで実現
- Feature Store: リアルタイム特徴量の一元管理
- A/Bテスト: ProductionVariant でトラフィック分割
- CloudFront: 推薦結果のキャッシュでレイテンシ削減
最終模擬試験(MLA-C01)第3セット 20問
Q1. SageMaker Training で「チェックポイント」が必要な理由は?
- A) モデルの精度向上
- B) スポットインスタンス中断後の再開と長時間トレーニングの安全性確保
- C) 推論速度の改善
- D) ハイパーパラメータの自動調整
正解: B - チェックポイントにより、スポットインスタンス中断後でも学習を最初からやり直さずに再開でき、長時間トレーニングの途中経過も保護されます。
Q2. Amazon Bedrock で「モデルをカスタマイズ」する主な2つの方法は?
- A) Fine-tuning と RAG
- B) 継続的事前学習(Continued Pre-training)と Fine-tuning(指示チューニング)
- C) Transfer Learning とZero-shot Learning
- D) LoRA と Adapter
正解: B - 継続的事前学習はドメイン特化テキストで基盤知識を更新し、Fine-tuning(指示チューニング)は入出力ペアで特定タスクへの応答を強化します。
Q3. SageMaker Pipelines でモデル評価の結果をパイプライン内で使用するには?
- A) S3から手動で読み込む
- B) PropertyFile と JsonGet を使ってステップの出力からメトリクスを参照
- C) 環境変数として受け渡す
- D) SSM Parameter Store を使用
正解: B - PropertyFileでJSON形式の評価結果を定義し、JsonGetでConditionStepの条件式からメトリクス値を動的に参照できます。
Q4. SageMaker Feature Store でオンラインとオフラインが「不整合」になる可能性がある理由は?
- A) バグによる不整合
- B) Online StoreはリアルタイムでDynamoDB更新、Offline Storeへの同期には数分の遅延がある
- C) Offline Storeは手動更新のみ
- D) 不整合は発生しない
正解: B - Online Storeへの書き込みは即時ですが、Offline Store(S3)への同期には通常数分の遅延があります。リアルタイム推論にはOnline Store、バッチMLにはOffline Storeという使い分けが重要です。
Q5. Amazon Comprehend の「カスタムエンティティ認識」と「組み込みエンティティ認識」の違いは?
- A) 違いはない
- B) 組み込みは人名/組織/場所などの汎用エンティティ、カスタムは独自のエンティティタイプ(製品コード、医療用語等)
- C) カスタムの方が常に精度が高い
- D) 組み込みのみが英語対応
正解: B - 組み込みエンティティはPERSON, ORGANIZATION, LOCATION, DATE等の汎用タイプを検出。カスタムは独自データでトレーニングしたドメイン固有エンティティ(例: 製品コード「ABC-1234」)を検出できます。
Q6. SageMaker Debugger のフック(Hook)とルール(Rule)の関係は?
- A) 独立した機能
- B) フックがトレーニング中のテンソルデータを収集し、ルールがそのデータを分析して問題を検出
- C) ルールがデータ収集し、フックが分析
- D) どちらも同じ機能
正解: B - フック(Hook)はトレーニングループに挿入されトレーニング中の重みや勾配などのテンソルをS3に保存します。ルール(Rule)はそのデータを継続的に分析し、勾配消失・発散などの問題を検出します。
Q7. SageMaker で「コンテナイメージのバージョン管理」のベストプラクティスは?
- A) 常にlatestタグを使用
- B) バージョン付きタグを使用し、ECRのイメージスキャンを有効化
- C) タグなしで使用
- D) ローカルでのみ管理
正解: B - latestタグは変更されるため、v1.0.0のような固定バージョンタグを使用してトレーニングの再現性を確保します。ECRイメージスキャンで脆弱性も検出できます。
Q8. SageMaker Processing Job でデータ分割(前処理)を行う際の推奨構成は?
- A) Lambda関数のみで実装
- B) SKLearnProcessorまたはSparkMLProcessorでS3のデータを処理し、出力をS3へ
- C) EC2インスタンスで実行
- D) Glue ETLのみで対応
正解: B - SageMaker Processing Job はスケーラブルなデータ前処理のためのマネージドサービスです。Scikit-learnならSKLearnProcessor、大規模データならSparkMLProcessorを使用します。
Q9. Amazon Forecast の「Related Time Series」データとは?
- A) 予測対象データ
- B) 予測に影響する外部変数(天気/プロモーション/祝日など)
- C) 過去の予測結果
- D) テストデータ
正解: B - Related Time Series(関連時系列)は予測精度を向上させる外部変数です。例えば天気データ(気温/降水量)、プロモーション情報、価格変動などを予測モデルに組み込めます。
Q10. SageMaker Model Monitor でカスタム制約を定義する場面は?
- A) デフォルト制約で十分なため不要
- B) ビジネスルールに基づいた独自の品質基準(例: 特定カラムがnullでないこと)
- C) モデル精度のみを監視したい場合
- D) パフォーマンステストのため
正解: B - カスタム制約(Custom Constraints)でビジネス固有のデータ品質ルールを定義できます。例: age > 0, income_range must be [‘low’, ‘medium’, ‘high’] など。
Q11. SageMaker で「継続的デプロイ(Continuous Deployment)」を実現するには?
- A) 手動でのみ可能
- B) CodePipeline + SageMaker Pipelines + Model Registryの承認フローを組み合わせ
- C) Lambda関数のみで実装
- D) CloudFormationのみで対応
正解: B - MLのCD(継続的デプロイ)は、①CodeCommitへのコードPush → ②CodePipeline起動 → ③SageMaker Pipelines実行(前処理→トレーニング→評価)→ ④Model Registryへ登録 → ⑤承認後に自動デプロイ、というフローで実現します。
Q12. Bedrock Agents で「Action Groups」の役割は?
- A) モデルのバージョン管理
- B) エージェントが呼び出せるLambda関数のセット(外部API/DBとの連携機能を定義)
- C) ユーザー認証機能
- D) モデルの微調整
正解: B - Action Groupsは、エージェントがタスク実行のために呼び出せるツール(Lambda関数)を定義します。例: データベース検索、メール送信、APIコールなど。OpenAPI仕様で関数のスキーマを定義します。
Q13. SageMaker で「推論パイプライン(Inference Pipeline)」を使用する理由は?
- A) 複数モデルを直列に繋ぎ、前処理→推論→後処理をワンステップで実行
- B) 複数エンドポイントの負荷分散
- C) モデルの並列実行
- D) コスト削減のため
正解: A - 推論パイプラインはデータ前処理コンテナ → MLモデルコンテナ → 後処理コンテナを直列に繋ぎ、単一エンドポイントとして公開します。前処理ロジックをモデルと一緒にデプロイできます。
Q14. Amazon Personalize でリアルタイムにユーザー行動を反映させるには?
- A) バッチ処理で日次更新
- B) PutEvents API でリアルタイムに行動イベントを記録
- C) S3からCSVで更新
- D) Kinesis経由でのみ可能
正解: B - PutEvents API を使うことで、ユーザーのクリック/購入/評価などのイベントをリアルタイムに記録し、次の推薦にすぐ反映できます。
Q15. SageMaker Studio でノートブックのコンピューティングリソースを制御するには?
- A) 固定インスタンスのみ
- B) カーネルゲートウェイアプリのインスタンスタイプを選択(ml.t3.medium 〜 ml.p4d.24xlarge)
- C) Auto Scalingグループで設定
- D) Lambda関数で制御
正解: B - SageMaker Studio では、ノートブックカーネル起動時にインスタンスタイプ(CPU/GPU/メモリ)を選択できます。重い処理ではml.g4dn.xlargeなどGPUインスタンスに切り替え、完了後は軽量インスタンスに戻してコスト最適化します。
Q16. SageMaker でモデルのカーディナリティが高い(1万以上)カテゴリ変数の特徴量エンジニアリング手法は?
- A) One-Hot Encodingのみ
- B) Target Encoding(ターゲットエンコーディング)またはEmbedding
- C) Label Encodingのみ
- D) 変数を削除
正解: B - カーディナリティが高い場合、One-Hot Encodingは次元爆発を起こします。Target Encoding(カテゴリ値を目的変数の平均値で置換)またはNeural NetworkのEmbedding層が有効です。Data Wranglerでも対応可能です。
Q17. ML実験の再現性(Reproducibility)を確保するための重要な要素は?
- A) 常に同じデータを使用すれば十分
- B) データバージョン管理、コードバージョン管理(Git)、環境固定(コンテナ)、乱数シード固定
- C) 同じインスタンスタイプで実行
- D) SageMaker Experimentsのみで対応
正解: B - 再現性には①データのバージョン管理(S3バージョニング)②コードのGit管理③環境の固定(Dockerコンテナ)④乱数シード固定(random_state=42)⑤SageMaker Experimentsによるメタデータ記録、のすべてが必要です。
Q18. SageMaker Batch Transform と SageMaker Processing Job の違いは?
- A) 同じ機能
- B) Batch Transformはモデル推論用、Processing Jobは前処理/後処理/評価用
- C) Processing Jobの方が高速
- D) Batch Transformはリアルタイムのみ
正解: B - Batch TransformはデプロイしたMLモデルで大量データに対して一括推論を実行するサービス。Processing Jobはデータ前処理、特徴量エンジニアリング、モデル評価などの汎用的な処理実行環境です。
Q19. Amazon Lookout for Vision の主なユースケースは?
- A) テキスト分析
- B) 製造ラインでの製品外観検査、傷・欠陥・歪みの自動検出
- C) 時系列異常検知
- D) 音声認識
正解: B - Lookout for Visionは製造業の品質管理に特化したコンピュータビジョンサービスです。少量の正常品画像(通常30枚程度)でモデルを学習し、生産ラインでリアルタイムに欠陥を検出します。
Q20. SageMaker Pipeline の「パイプラインパラメータ」と「ステップのプロパティ」の違いは?
- A) 同じもの
- B) パイプラインパラメータは実行前に定義する変数、ステップのプロパティは実行中に動的に生成される値(前ステップの出力URIなど)
- C) パラメータはコード内のみ、プロパティはCloudFormationで設定
- D) プロパティは変更不可
正解: B - パイプラインパラメータ(ParameterString等)はパイプライン定義時に宣言し実行時にオーバーライド可能な変数。ステップのプロパティ(.properties.ModelArtifacts.S3ModelArtifacts等)は前のステップが実際に実行されて生成される動的な値で、後続ステップで参照できます。
MLA-C01 第3セット完了
付録: 重要CLIコマンド集(SageMaker)
# Training Job の作成と監視
aws sagemaker create-training-job \
--training-job-name my-job-$(date +%s) \
--algorithm-specification \
TrainingImage=763104351884.dkr.ecr.us-east-1.amazonaws.com/xgboost:1 \
TrainingInputMode=File \
--role-arn arn:aws:iam::123456789:role/SageMakerRole \
--input-data-config \
'[{"ChannelName":"train","DataSource":{"S3DataSource":{"S3Uri":"s3://bucket/data","S3DataType":"S3Prefix"}}}]' \
--output-data-config S3OutputPath=s3://bucket/output \
--resource-config InstanceType=ml.m5.xlarge,InstanceCount=1,VolumeSizeInGB=30 \
--stopping-condition MaxRuntimeInSeconds=3600
# トレーニング状態確認
aws sagemaker describe-training-job \
--training-job-name my-job-123 \
--query 'TrainingJobStatus'
# エンドポイント一覧
aws sagemaker list-endpoints \
--status-equals InService \
--query 'Endpoints[*].[EndpointName,CreationTime]' \
--output table
# 推論テスト
aws sagemaker-runtime invoke-endpoint \
--endpoint-name my-endpoint \
--content-type 'text/csv' \
--body '1.5,2.3,0.8,1.2' \
--accept 'application/json' \
/tmp/result.json
# Pipeline 実行
aws sagemaker start-pipeline-execution \
--pipeline-name MyMLPipeline \
--pipeline-execution-display-name 'run-2024-01' \
--pipeline-parameters \
'[{"Name":"ModelApprovalStatus","Value":"Approved"}]'
# Model Registry のモデル承認
aws sagemaker update-model-package \
--model-package-arn arn:aws:sagemaker:us-east-1:123:model-package/my-model/1 \
--model-approval-status Approved
MLA-C01 機械学習エンジニアアソシエイト 完全ガイド 全セクション完了
SageMaker JumpStart 詳細ガイド
JumpStart で利用可能なモデルカテゴリ
JumpStart モデルカタログ
┌────────────────────────────────────────────────────────┐
│ テキスト・言語モデル │
│ ・BERT (bert-base-uncased, bert-large-cased) │
│ ・RoBERTa, ALBERT, DistilBERT │
│ ・GPT-J, GPT-NeoX, Falcon, Llama 2 │
│ ・Hugging Face Hub 全モデル(数千種類) │
├────────────────────────────────────────────────────────┤
│ コンピュータビジョンモデル │
│ ・ResNet (18/34/50/101/152) │
│ ・EfficientNet, MobileNet │
│ ・YOLO v8 (物体検出) │
│ ・Stable Diffusion (画像生成) │
├────────────────────────────────────────────────────────┤
│ テーブルデータモデル │
│ ・CatBoost, LightGBM, XGBoost │
│ ・AutoGluon (AutoML) │
└────────────────────────────────────────────────────────┘
JumpStart Fine-tuning 実装
from sagemaker.jumpstart.estimator import JumpStartEstimator
from sagemaker.jumpstart.model import JumpStartModel
# ステップ1: Fine-tuning(独自データで学習)
estimator = JumpStartEstimator(
model_id='huggingface-text2text-flan-t5-xl',
model_version='*', # 最新版
role=role,
instance_type='ml.g5.2xlarge',
# Fine-tuning パラメータ
hyperparameters={
'instruction_tuned': 'False',
'num_train_epochs': '3',
'per_device_train_batch_size': '4',
'max_input_length': '512',
}
)
# データはS3のjsonlines形式
# {"input": "...", "output": "..."}
estimator.fit({'training': 's3://bucket/finetune-data/'})
# ステップ2: Fine-tuned モデルのデプロイ
predictor = estimator.deploy(
initial_instance_count=1,
instance_type='ml.g5.2xlarge'
)
# 推論
response = predictor.predict({
'inputs': 'AWS SageMakerとは何ですか?日本語で説明してください。',
'parameters': {
'max_new_tokens': 256,
'temperature': 0.7,
'top_p': 0.9
}
})
print(response[0]['generated_text'])
SageMaker Ground Truth 詳細
ラベリングジョブタイプ
| ジョブタイプ | 用途 | 形式 |
|---|---|---|
| 画像分類 | 画像を1つのカテゴリに分類 | シングルラベル/マルチラベル |
| 物体検出 | 画像内の物体をバウンディングボックスで囲む | JSON形式 |
| セマンティックセグメンテーション | ピクセルレベルのクラス分類 | マスク画像 |
| テキスト分類 | テキストをカテゴリに分類 | シングル/マルチラベル |
| 名前付きエンティティ認識(NER) | テキスト内のエンティティを識別 | IOBタグ形式 |
| 3D点群(Point Cloud) | 3Dオブジェクト検出/セグメンテーション | 自動運転等 |
| カスタム | 独自のラベリングUI | HTML/JavaScript |
Auto Labeling 詳細フロー
Auto Labeling フロー
┌───────────────────────────────────────────┐
│ 第1バッチ(例: 300件) │
│ → 人間がラベリング │
│ → このデータで機械学習モデルを学習 │
└─────────────────┬─────────────────────────┘
↓
┌───────────────────────────────────────────┐
│ 残りのデータに自動ラベリング試行 │
│ ・信頼度 > 閾値 → 自動ラベル(コスト0) │
│ ・信頼度 < 閾値 → 人間にルーティング │
└─────────────────┬─────────────────────────┘
↓
┌───────────────────────────────────────────┐
│ 人間ラベリング分で追加学習 │
│ → 精度向上 → より多くを自動化 │
└───────────────────────────────────────────┘
最終的に約70-80%を自動ラベリングで処理
import boto3
sm_client = boto3.client('sagemaker')
# Ground Truth ラベリングジョブ作成
response = sm_client.create_labeling_job(
LabelingJobName='product-classification-v1',
LabelAttributeName='product-category',
# 入力データ(S3にあるJSONLines形式のマニフェスト)
InputConfig={
'DataSource': {
'S3DataSource': {
'ManifestS3Uri': 's3://bucket/input/manifest.jsonl'
}
}
},
# 出力先
OutputConfig={
'S3OutputPath': 's3://bucket/output/',
'KmsKeyId': 'arn:aws:kms:us-east-1:123:key/key-id'
},
# IAMロール
RoleArn=role,
# ラベルカテゴリ(S3に保存)
LabelCategoryConfigS3Uri='s3://bucket/config/categories.json',
# アルゴリズムの設定(自動ラベリング使用)
LabelingJobAlgorithmsConfig={
'LabelingJobAlgorithmSpecificationArn': \
'arn:aws:sagemaker:us-east-1:027400017018:labeling-job-algorithm-specification/image-classification',
'InitialActiveLearningModelArn': '', # 空で最初から学習
'LabelingJobResourceConfig': {
'VolumeKmsKeyId': ''
}
},
# 人間のワークフロー設定
HumanTaskConfig={
'WorkteamArn': 'arn:aws:sagemaker:us-east-1:123:workteam/private-crowd/my-team',
'UiConfig': {
'UiTemplateS3Uri': 's3://bucket/ui/template.html'
},
'PreHumanTaskLambdaArn': \
'arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClass',
'TaskTitle': '商品カテゴリ分類',
'TaskDescription': '画像を適切なカテゴリに分類してください',
'NumberOfHumanWorkersPerDataObject': 3, # 3人の多数決
'TaskTimeLimitInSeconds': 300,
'AnnotationConsolidationConfig': {
'AnnotationConsolidationLambdaArn': \
'arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClass'
}
}
)
Amazon Kendra ML検索エンジン
Kendra vs Bedrock Knowledge Base 比較
| 機能 | Amazon Kendra | Bedrock Knowledge Base |
|---|---|---|
| 検索タイプ | インテリジェント検索(意味理解) | ベクトル検索(RAG) |
| ドキュメント形式 | PDF/Word/HTML/S3/SharePoint/Salesforce等 | PDF/テキスト(S3) |
| 専門性 | エンタープライズ文書検索 | LLMとの統合RAG |
| 出力 | 検索結果リスト(抜粋付き) | LLMによる自然言語回答 |
| コスト | 月$700〜(Developer edition) | 使用量ベース |
| セットアップ | コネクタ設定(SharePoint等) | S3 + ベクトルDB設定 |
SageMaker Domain とユーザープロファイル
SageMaker Domain の概念
SageMaker Domain 構成
┌────────────────────────────────────────────────────────┐
│ Domain(組織単位) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ VPC設定、EFS(共有ストレージ)、タグ、権限 │ │
│ └──────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────┐ │
│ ↓ ↓ ↓ │
│ UserProfile A UserProfile B UserProfile C │
│ (データサイエンティスト)(MLエンジニア)(管理者) │
│ └ Studio 環境 └ Studio 環境 └ 管理のみ │
│ 個別の IAM 設定 個別の IAM 設定 │
│ 個別の EFS スペース 個別の EFS スペース │
└────────────────────────────────────────────────────────┘
Domain 作成のベストプラクティス
import boto3
sm_client = boto3.client('sagemaker')
# SageMaker Domain 作成
response = sm_client.create_domain(
DomainName='ml-production-domain',
AuthMode='IAM', # または 'SSO'(AWS IAM Identity Center)
DefaultUserSettings={
'ExecutionRole': 'arn:aws:iam::123456789:role/SageMakerStudioRole',
# JupyterServerアプリの設定
'JupyterServerAppSettings': {
'DefaultResourceSpec': {
'InstanceType': 'system',
'SageMakerImageArn': 'arn:aws:sagemaker:us-east-1:081325390199:image/jupyter-server-3'
}
},
# カーネルゲートウェイの設定
'KernelGatewayAppSettings': {
'DefaultResourceSpec': {
'InstanceType': 'ml.t3.medium',
'SageMakerImageArn': 'arn:aws:sagemaker:us-east-1:081325390199:image/datascience-1.0'
},
# 使用可能なインスタンスタイプを制限(コスト管理)
'CustomImages': []
},
# Studio 内のコード実行をVPC内に限定
'SecurityGroups': ['sg-0123456789abcdef0'],
},
# VPC設定(推奨: VPCOnly モード)
VpcId='vpc-0123456789abcdef0',
SubnetIds=['subnet-0123456789abcdef0'],
AppNetworkAccessType='VpcOnly', # インターネットアクセス禁止
# EFS(ホームディレクトリ)の暗号化
HomeEfsFileSystemKmsKeyId='arn:aws:kms:us-east-1:123456789012:key/key-id'
)
SageMaker Clarify 詳細実装
バイアス分析の完全実装
from sagemaker.clarify import (
SageMakerClarifyProcessor, BiasConfig,
DataConfig, ModelConfig, ModelPredictedLabelConfig
)
# Clarify プロセッサ
clarify_processor = SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type='ml.m5.xlarge',
sagemaker_session=session
)
# データ設定
data_config = DataConfig(
s3_data_input_path='s3://bucket/test-data.csv',
s3_output_path='s3://bucket/clarify-output/',
label='income', # 目的変数
headers=['age', 'education', 'gender', 'income'],
dataset_type='text/csv'
)
# バイアス設定(保護属性の定義)
bias_config = BiasConfig(
label_values_or_threshold=[1], # 有利な結果(income >= 50K)
facet_name='gender', # 保護属性(性別)
facet_values_or_threshold=[0] # 不利なグループ(例: 女性=0)
)
# モデル設定
model_config = ModelConfig(
model_name='income-prediction-model',
instance_type='ml.m5.xlarge',
instance_count=1,
accept_type='text/csv'
)
model_predictions_config = ModelPredictedLabelConfig(
probability_threshold=0.5
)
# バイアス分析実行(Pre-training + Post-training)
clarify_processor.run_bias(
data_config=data_config,
bias_config=bias_config,
model_config=model_config,
model_predicted_label_config=model_predictions_config,
pre_training_methods='all', # CI, DPL, KL, KS, etc.
post_training_methods='all' # DPPL, DI, DCO, RD, DAR, etc.
)
# 説明可能性分析(SHAP値)
from sagemaker.clarify import SHAPConfig
shap_config = SHAPConfig(
baseline=[
[33, 'Bachelors', 'Male', 0] # ベースライン(平均的な個人)
],
num_samples=1000, # モンテカルロサンプリング数
agg_method='mean_abs', # 集約方法
save_local_shap_values=True # 個別SHAP値も保存
)
clarify_processor.run_explainability(
data_config=data_config,
model_config=model_config,
explainability_config=shap_config
)
主要バイアスメトリクス一覧
| メトリクス | 略称 | 説明 |
|---|---|---|
| Class Imbalance | CI | データ内のグループ比率の差 |
| Difference in Positive Proportions | DPL | 正例割合の差 |
| Kullback-Leibler Divergence | KL | 分布の類似度 |
| Disparate Impact | DI | グループ間の予測割合比 |
| Difference in Conditional Acceptance | DCA | 条件付き受容率の差 |
| Recall Difference | RD | グループ間の再現率の差 |
| Accuracy Difference | AD | グループ間の精度の差 |
模擬試験 総合問題(MLA-C01)第4セット 20問
Q1. SageMaker JumpStart でFine-tuningを行う主な利点は?
- A) モデルをゼロから構築するより高速かつ少ないデータで高精度モデルを構築
- B) コストがゼロ
- C) カスタムコンテナが不要になる
- D) 自動的にエンドポイントがデプロイされる
正解: A - Transfer Learningを活用したFine-tuningにより、少量のドメイン特化データで事前学習済みモデルを自社タスクに適応させられます。ゼロから学習するより高速で精度も高くなります。
Q2. SageMaker Ground Truth の「ワークチーム」の種類は?
- A) Public(Amazon Mechanical Turk)、Private(社内チーム)、Vendor(認定ベンダー)
- B) Public のみ
- C) Private のみ
- D) AIのみ
正解: A - Ground Truthは3種類のワークチームをサポート:①Amazon Mechanical Turk(パブリッククラウドワーカー、コスト低)②プライベートチーム(自社従業員、セキュリティ高)③認定ベンダー(専門ラベリング会社、品質高)
Q3. SageMaker Domain でユーザーごとのコスト管理を実施するには?
- A) 全ユーザーに同じ設定
- B) UserProfile ごとに異なるIAMロールとインスタンスタイプ制限を設定
- C) CloudTrailのみで監視
- D) Lambda で制限
正解: B - 各UserProfileに個別のIAMロール(リソース制限含む)を割り当て、使用可能なインスタンスタイプをKernelGatewayAppSettingsで制限することでコスト管理できます。
Q4. Amazon Comprehend Medical が検出できる特殊な情報は?
- A) 一般的なテキストエンティティのみ
- B) PHI(Protected Health Information): 患者名/診断結果/投薬情報/医療コード等
- C) 財務情報のみ
- D) 画像情報
正解: B - Comprehend Medicalは医療ドメイン特化で、PHI(保護医療情報)の自動識別、ICD-10コードへのマッピング、Rx Normによる薬剤正規化などが可能です。HIPAA対応。
Q5. SageMaker Clarify の「説明可能性レポート」で確認できるSHAP値の意味は?
- A) モデルの全体精度
- B) 各特徴量が特定の予測にどの程度寄与したか(正: 予測を増加、負: 減少させる)
- C) 特徴量の相関係数
- D) モデルのパラメータ数
正解: B - SHAP値はゲーム理論に基づく特徴量重要度で、各特徴量が個々の予測にどれだけ貢献しているかを数値化します。正の値は予測値を増加させ、負の値は減少させる方向への寄与を示します。
Q6. Amazon Forecast で「Probabilistic Forecasting(確率的予測)」を使う理由は?
- A) 計算速度が速い
- B) 単一の点推定値だけでなく、P10/P50/P90などの予測区間(不確実性)を提供
- C) コストが安い
- D) 必須の設定
正解: B - 確率的予測はP10(10%信頼区間の下限)、P50(中央値)、P90(90%信頼区間の上限)などの分位数予測を提供します。在庫管理ではP90で安全在庫を計算し、P50で期待値を計算するといった使い方ができます。
Q7. SageMaker でトレーニング中のメトリクスをリアルタイムで確認するには?
- A) S3からのみ確認
- B) CloudWatchメトリクスまたはSageMaker Experimentsコンソール
- C) 完了後のみ確認可能
- D) Lambda で収集が必要
正解: B - SageMaker Training JobはコンテナからのSTDOUTに出力されたメトリクス(正規表現でキャプチャ)をリアルタイムでCloudWatch Metricsに送信します。SageMaker Experimentsコンソールでもリアルタイム確認が可能です。
Q8. SageMaker の「推論コンテナ(Inference Container)」を作成する際のエントリポイント要件は?
- A) 任意のスクリプト名
- B) model_fn(モデルロード)、predict_fn(予測実行)、input_fn(入力変換)、output_fn(出力変換)の4関数
- C) main.pyのみ
- D) Dockerfileのみ
正解: B - SageMaker推論コンテナはサービングツールキットに従い4つの関数を実装します:model_fnでモデルをロード、input_fnでリクエストをデシリアライズ、predict_fnで予測実行、output_fnでレスポンスをシリアライズします。
Q9. Amazon Lookout for Metrics で「アラートのみ」ではなく「異常の根本原因」も特定できるのはなぜ?
- A) 機械学習により関連するディメンションの組み合わせを分析
- B) CloudWatchアラームとの違いはない
- C) ログ分析機能がある
- D) 人間が判断する
正解: A - Lookout for Metricsは単に閾値超過を検出するだけでなく、関連するディメンション(地域/製品/チャネル等)を分析して「東京リージョンのモバイルユーザーの注文がX%減少」といった根本原因の絞り込みを自動的に行います。
Q10. SageMaker Endpoint でのモデル更新中の「ゼロダウンタイム」を実現するメカニズムは?
- A) Lambda で切り替え
- B) SageMakerがBlue/Greenデプロイを管理し、新しいフリートが健全状態になるまでトラフィックを維持
- C) Route 53で切り替え
- D) CloudFrontで管理
正解: B - SageMakerのエンドポイント更新時、ブルー/グリーンデプロイでは新しいインスタンスフリートを起動し、全インスタンスがIn Service状態になった後でトラフィックを切り替えます。この間、旧フリートが引き続きトラフィックを処理します。
Q11. SageMaker Feature Store で「イベント時刻(event_time)」の役割は?
- A) レコードの一意識別子
- B) フィーチャーのバージョン管理のタイムスタンプ(同じrecord_idの最新値を取得するため)
- C) アクセス時間の記録
- D) ファイル名の一部
正解: B - event_timeにより同じレコードIDに対して時系列で複数のレコードを保存できます。Online StoreはRecord Identifierに対して最新のレコードのみ返します。point-in-time正確な特徴量取得にも使用されます。
Q12. MLモデルの「point-in-time correct」な特徴量とは?
- A) 最新データを使用すること
- B) 予測時点での情報のみを使用(未来のデータリークを防ぐ)
- C) 整合性のとれたデータ
- D) 欠損値がないデータ
正解: B - point-in-time correctは学習データ作成時に将来の情報を使わないことです。例えば2023年1月の購買予測モデルを作る際に2023年2月のデータを特徴量に使うとデータリークが発生します。Feature Storeのevent_timeを使うとpoint-in-time correctな特徴量取得が可能です。
Q13. SageMaker Pipelines の「実行のキャッシュ(Step Caching)」の効果は?
- A) モデルの精度向上
- B) 以前の実行と同じ入力のステップはスキップして実行時間とコストを削減
- C) セキュリティの強化
- D) デバッグの簡素化
正解: B - Step Cachingを有効にすると、同じ入力(データ、パラメータ、コード)のProcessingStepやTrainingStepの結果をキャッシュし、再実行時はスキップします。開発イテレーションのコスト削減に効果的です。
Q14. Amazon Bedrock の「ガードレール(Guardrails)」の主な機能は?
- A) モデルのコスト管理
- B) 有害コンテンツフィルタリング、PII保護、グラウンディング確認など安全性確保
- C) レイテンシ改善
- D) モデル選択の自動化
正解: B - Bedrockガードレールは:①有害コンテンツのブロック(ヘイトスピーチ/暴力等)②PII(個人情報)の検出とマスキング③テーマベースのコンテンツ制限(競合他社言及禁止等)④グラウンディング確認(RAGの回答がドキュメントに基づくか)など安全な生成AIアプリを実現します。
Q15. SageMaker でA/Bテスト後に「徐々に移行(Linear rollout)」を設定するには?
- A) 手動でVariantWeightを毎日変更
- B) update_endpoint_weights_and_capacities() で段階的にWeight比率を更新
- C) 不可能
- D) CloudFront で実装
正解: B - update_endpoint_weights_and_capacities()APIを使って、例えばModel Bのウェイトを10% → 30% → 50% → 100%と段階的に変更することでLinear rolloutを実現できます。CloudWatch Alarmsと組み合わせた自動化も可能です。
Q16. SageMaker Canvas で予測した結果はどこで確認・共有できるか?
- A) S3のみ
- B) Canvas内のUIで確認し、SageMaker Studioとモデル共有、または予測結果をS3/QuickSightにエクスポート
- C) Lambda経由のみ
- D) SageMaker Studio のみ
正解: B - Canvas内のUIでインタラクティブに予測結果を確認でき、MLエンジニアとSageMaker Studio上でモデルを共有して本番化を依頼することも可能。バッチ予測結果はS3にエクスポートし、QuickSightで可視化できます。
Q17. SageMaker Experiments のベストプラクティスとして、実験間で比較すべき情報は?
- A) インスタンスタイプのみ
- B) ハイパーパラメータ、評価メトリクス(AUC/精度等)、データセット、コードバージョン
- C) コストのみ
- D) 実行時間のみ
正解: B - 実験比較では全因子を記録する必要があります:①ハイパーパラメータ(learning_rate, max_depth等)②メトリクス(AUC, accuracy, F1等)③使用データセット④コードバージョン(Gitコミットハッシュ)。これにより再現性のある最良モデルを特定できます。
Q18. Amazon Personalize で「コールドスタート問題」を軽減するには?
- A) 解決不可能
- B) アイテムメタデータ(カテゴリ/タグ/説明)を活用したコンテンツベースフィルタリングの組み合わせ
- C) 全ユーザーに同じ推薦
- D) 手動キュレーション
正解: B - 新規ユーザー/アイテムの行動履歴がない「コールドスタート問題」には、アイテムのメタデータ(Item Interactions ではなく Items データセット)を活用します。Personalize のSIMS(Item-to-Item)レシピやaws-user-personalizationレシピのメタデータ統合機能が有効です。
Q19. SageMaker Training の「最大実行時間(MaxRuntimeInSeconds)」超過時の動作は?
- A) 警告のみ
- B) トレーニングジョブが自動停止(Stopped状態)になる
- C) インスタンスが再起動
- D) 一時停止して再開を待つ
正解: B - MaxRuntimeInSeconds を超えるとSageMakerは自動的にトレーニングジョブをStopします。長時間の意図しない実行によるコスト超過を防ぐための安全装置です。Spot Trainingのmax_runも同じです。
Q20. MLOps の成熟度レベル(MLOps Maturity Model)の正しい段階は?
- A) Level 0 → 1 → 2
- B) Level 0(手動) → Level 1(ML自動化) → Level 2(CI/CDパイプライン自動化)
- C) Beginner → Intermediate → Advanced
- D) Bronze → Silver → Gold
正解: B - Google/Amazonのベストプラクティスに基づくMLOps成熟度:Level 0(手動プロセス、Jupyterノートブック)→ Level 1(ML パイプライン自動化、Model Monitor)→ Level 2(完全なCI/CDパイプライン、コードPush → 自動テスト → 自動デプロイ)
MLA-C01 第4セット完了
付録B: SageMaker Python SDK チートシート
# よく使うimport
import sagemaker
from sagemaker import get_execution_role
from sagemaker.session import Session
from sagemaker.estimator import Estimator
from sagemaker.pytorch import PyTorch
from sagemaker.tensorflow import TensorFlow
from sagemaker.sklearn.estimator import SKLearn
from sagemaker.huggingface import HuggingFace
from sagemaker.xgboost import XGBoost
from sagemaker.inputs import TrainingInput
from sagemaker.model import Model
from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer, JSONSerializer
from sagemaker.deserializers import CSVDeserializer, JSONDeserializer
# セッション初期化
session = sagemaker.Session()
role = get_execution_role()
bucket = session.default_bucket()
region = session.boto_region_name
# === Estimator パターン ===
# トレーニング
estimator = PyTorch(
entry_point='train.py',
source_dir='./src', # ディレクトリ全体をアップロード
role=role,
instance_type='ml.p3.2xlarge',
instance_count=1,
framework_version='1.13',
py_version='py39',
hyperparameters={'epochs': 50, 'lr': 0.001},
metric_definitions=[
{'Name': 'train:loss', 'Regex': 'Loss: ([0-9\\.]+)'},
{'Name': 'validation:accuracy', 'Regex': 'Accuracy: ([0-9\\.]+)'}
],
enable_sagemaker_metrics=True
)
estimator.fit({'train': TrainingInput(s3_data='s3://bucket/train/', content_type='text/csv')})
# モデルのデプロイ
predictor = estimator.deploy(
initial_instance_count=1,
instance_type='ml.m5.large',
serializer=JSONSerializer(),
deserializer=JSONDeserializer()
)
# 推論
result = predictor.predict({'inputs': [1.0, 2.0, 3.0]})
# エンドポイント削除(重要: 費用発生を防ぐ)
predictor.delete_endpoint()
# === バッチ変換 ===
transformer = estimator.transformer(
instance_count=1,
instance_type='ml.m5.xlarge',
output_path='s3://bucket/batch-output/'
)
transformer.transform(
data='s3://bucket/batch-input/',
content_type='text/csv',
split_type='Line' # 行ごとに分割
)
transformer.wait()
MLA-C01 機械学習エンジニアアソシエイト 完全ガイド 全セクション完了(総合版)
SageMaker 組み込みアルゴリズム完全リファレンス
教師あり学習アルゴリズム
| アルゴリズム | タスク | 主なハイパーパラメータ | 入力形式 |
|---|---|---|---|
| Linear Learner | 分類・回帰 | predictor_type, num_models, l1/l2 | recordIO/CSV |
| XGBoost | 分類・回帰 | max_depth, eta, num_round, subsample | CSV/LibSVM |
| Factorization Machines | 分類・回帰(スパース) | num_factors, predictor_type | recordIO |
| K-Nearest Neighbors (KNN) | 分類・回帰 | k, sample_size, predictor_type | recordIO/CSV |
| DeepAR | 時系列予測 | context_length, prediction_length, num_layers | JSON Lines |
| Object2Vec | 埋め込み/分類 | enc_dim, mlp_dim, optimizer | JSON Lines |
教師なし学習アルゴリズム
| アルゴリズム | タスク | 主なハイパーパラメータ | 入力形式 |
|---|---|---|---|
| K-Means | クラスタリング | k, mini_batch_size, epochs | recordIO/CSV |
| PCA | 次元削減 | algorithm_mode, num_components, subtract_mean | recordIO/CSV |
| IP Insights | 異常検知(IP/ユーザー) | num_entity_vectors, vector_dim | CSV |
| Random Cut Forest (RCF) | 時系列異常検知 | num_trees, num_samples_per_tree, feature_dim | recordIO/CSV |
NLP・テキスト処理アルゴリズム
| アルゴリズム | タスク | 主なハイパーパラメータ | 入力形式 |
|---|---|---|---|
| BlazingText | 単語埋め込み/テキスト分類 | mode(Word2Vec/supervised), vector_dim | テキスト |
| Sequence-to-Sequence (Seq2Seq) | 機械翻訳/テキスト要約 | batch_size, num_layers, num_embed | JSON/recordIO |
| Neural Topic Model (NTM) | トピックモデリング | num_topics, encoder_layers | recordIO/CSV |
| Latent Dirichlet Allocation (LDA) | トピックモデリング | num_topics, alpha0 | recordIO/CSV |
コンピュータビジョン アルゴリズム
| アルゴリズム | タスク | 主なハイパーパラメータ | 入力形式 |
|---|---|---|---|
| Image Classification | 画像分類 | num_classes, use_pretrained_model, epochs | recordIO/image |
| Object Detection | 物体検出 | num_classes, use_pretrained_model, base_network | recordIO/image |
| Semantic Segmentation | ピクセル分類 | num_classes, use_pretrained_model, backbone | recordIO/image |
SageMaker アルゴリズム使い分けガイド
問題タイプ別アルゴリズム選択
問題: 「顧客が解約するか予測したい(バイナリ分類)」
└── 特徴量が数値 → Linear Learner / XGBoost
└── 特徴量がスパース(カテゴリ多数)→ Factorization Machines
└── 自動特徴選択が必要 → SageMaker Autopilot
問題: 「将来の売上を予測したい(時系列予測)」
└── 単一時系列 → DeepAR(短系列)/ Linear Learner(シンプル)
└── 複数時系列 → DeepAR(最適)
└── 外部変数あり → Amazon Forecast(Related Time Series)
問題: 「テキストを分類したい(文書分類)」
└── シンプルな分類 → BlazingText(supervised mode)
└── 高精度が必要 → JumpStart の BERT/RoBERTa Fine-tuning
└── マルチラベル → Comprehend Custom Classifier
問題: 「異常を検知したい」
└── 時系列 → Random Cut Forest (RCF)
└── ネットワーク不正 → IP Insights
└── メトリクス異常 → Lookout for Metrics
問題: 「データのクラスタリング」
└── 通常のクラスタリング → K-Means
└── 次元削減後にクラスタリング → PCA → K-Means
コスト最適化 詳細ガイド
インスタンスタイプコスト比較(米国東部 us-east-1 参考値)
| インスタンス | vCPU | メモリ | GPU | 価格/時 | 推奨用途 |
|---|---|---|---|---|---|
| ml.t3.medium | 2 | 4 GB | - | $0.050 | Studio開発 |
| ml.m5.large | 2 | 8 GB | - | $0.115 | 軽量トレーニング |
| ml.m5.xlarge | 4 | 16 GB | - | $0.230 | 中規模処理 |
| ml.c5.xlarge | 4 | 8 GB | - | $0.204 | CPU集約トレーニング |
| ml.p3.2xlarge | 8 | 61 GB | 1x V100 | $3.825 | DLトレーニング |
| ml.p3.8xlarge | 32 | 244 GB | 4x V100 | $14.688 | 大規模DL |
| ml.g4dn.xlarge | 4 | 16 GB | 1x T4 | $0.736 | 推論/小規模DL |
| ml.g4dn.12xlarge | 48 | 192 GB | 4x T4 | $3.912 | 中規模DL |
| ml.inf1.xlarge | 4 | 8 GB | AWS Inferentia | $0.440 | NLP推論最適化 |
節約戦略まとめ
30-50%節約:
✓ Managed Spot Training(60-90%削減)
✓ Auto Scaling(不要時スケールイン)
✓ Serverless Inference(低頻度リクエスト)
10-30%節約:
✓ インスタンスサイズ最適化(Inference Recommender活用)
✓ マルチモデルエンドポイント(複数モデル統合)
✓ SageMaker Savings Plans(1年/3年コミット)
✓ Graviton インスタンス(ml.c7g.xlarge等、約20%安)
5-10%節約:
✓ S3 Intelligent Tiering(データストレージ)
✓ リザーブドインスタンス(Training Job用)
✓ 開発環境の自動停止(Lambda+EventBridge)
最終チェックリスト(試験直前)
試験当日チェック
SageMaker コア概念
- [ ] Feature Store の Online/Offline の使い分けを説明できる
- [ ] 推論4種類(リアルタイム/サーバーレス/非同期/バッチ)の制限値を覚えた
- [ ] Spot Training でチェックポイント設定が必須の理由を説明できる
- [ ] Pipelines の ConditionStep + FailStep パターンを設計できる
- [ ] Model Monitor の4種類(データ品質/モデル品質/バイアス/特徴量帰属)を説明できる
- [ ] Blue/Green デプロイとCanaryデプロイの違いを説明できる
- [ ] MMEのメリット(コスト削減と動的ロード)を説明できる
MLOps
- [ ] SageMaker Pipelines でCI/CDを実現するフローを設計できる
- [ ] Model Registry の承認フローを設計できる
- [ ] データドリフトとモデルドリフトの検出方法を説明できる
- [ ] A/Bテスト(ProductionVariant)の設定を説明できる
セキュリティ
- [ ] SageMaker VPC設定(サブネット+SG+コンテナ間暗号化)を設定できる
- [ ] IAM最小権限の原則をSageMakerに適用できる
- [ ] S3データのKMS暗号化設定を説明できる
AWS AI Services
- [ ] Rekognition/Comprehend/Forecast/Personalize の使い分けを説明できる
- [ ] Amazon Bedrock のKnowledge Base(RAG)の構成を設計できる
- [ ] Bedrock Fine-tuning の2種類(継続的事前学習/指示チューニング)を説明できる
アルゴリズム
- [ ] XGBoost の主要ハイパーパラメータ(max_depth, eta, subsample)を説明できる
- [ ] DeepAR の適用場面(複数時系列予測)を説明できる
- [ ] BlazingText の2モード(Word2Vec/テキスト分類)を説明できる
- [ ] K-Meansとランダムカットフォレストの用途を説明できる
参考リソース
| リソース | URL/場所 |
|---|---|
| SageMaker 公式ドキュメント | docs.aws.amazon.com/sagemaker |
| SageMaker Python SDK | sagemaker.readthedocs.io |
| AWS MLエンジニアアソシエイト 試験ガイド | aws.amazon.com/certification/certified-machine-learning-engineer-associate |
| SageMaker Examples GitHub | github.com/aws/amazon-sagemaker-examples |
| Bedrock ドキュメント | docs.aws.amazon.com/bedrock |
| AWS AI Blog | aws.amazon.com/blogs/machine-learning |
用語集(グロッサリー)
| 用語 | 説明 |
|---|---|
| AutoML | 機械学習の自動化(SageMaker Autopilot) |
| SHAP | SHapley Additive exPlanations - 特徴量重要度の説明 |
| CRISP-DM | データマイニングの標準プロセス(Autopilotが採用) |
| covariate shift | トレーニングとサービング時の入力分布の変化 |
| concept drift | 入力と出力の関係が変化し精度が低下する現象 |
| cold start | 新規ユーザー/アイテムの行動履歴がない問題 |
| canary deployment | 少量のトラフィックで新バージョンを試験的にリリース |
| shadow testing | 新モデルにトラフィックを流すが結果は返さない比較テスト |
| A/B testing | 複数バージョンを実際のユーザーで比較 |
| blue/green deployment | 新旧フリートを並行稼働させゼロダウンタイムで切り替え |
| feature store | 機械学習用の特徴量を一元管理するデータベース |
| model registry | 学習済みモデルのバージョン管理と承認を管理する仕組み |
| MLOps | MLの開発・運用を効率化するDevOps的手法 |
| DAG | 有向非巡回グラフ - Pipelinesの実行グラフ |
| embedding | 高次元データを低次元ベクトルで表現する手法 |
| fine-tuning | 事前学習済みモデルを特定タスク向けに追加学習 |
| RAG | Retrieval Augmented Generation - 検索拡張生成 |
| inference pipeline | 前処理→推論→後処理を直列に繋いだエンドポイント |
| data parallelism | データを分割して複数GPUで並列学習 |
| model parallelism | モデルを分割して複数GPUに配置して学習 |
MLA-C01 機械学習エンジニアアソシエイト 完全学習ガイド(最終版)完了 総計: 本ガイドにより試験範囲を網羅した包括的な学習資料を提供