【AWS経験者向け】SageMakerとVertex AI:機械学習プラットフォームの開発・運用比較
はじめに:MLプラットフォームの新しい選択肢
皆さん、こんにちは!「30日間でGCPをマスターするAWSエンジニアの挑戦」シリーズ、18日目へようこそ。
前回まで、データウェアハウス(BigQuery)やデータレイク(Athena)といったデータ分析基盤を学んできました。データ分析の次のステップとして重要になるのが、データから価値を創出する 機械学習(ML) です。
AWSでは、Amazon SageMaker がMLライフサイクル全体をサポートするエコシステムとして進化してきました。データ準備からモデル開発、デプロイ、運用まで、豊富なサービス群を提供しています。
GCPのVertex AI は、SageMakerと同様の役割を担いながらも、統合プラットフォームとしてシンプルな体験を重視した設計思想を持っています。特に、AutoMLとカスタムトレーニングを同一プラットフォームで提供する点で差別化されています。
この記事で学べること:
- SageMakerとVertex AIのアーキテクチャと設計思想の違い
- 開発体験・運用管理・コスト構造の実践的比較
- 実際のハンズオンを通じた両プラットフォームの特徴理解
- プロジェクト特性に応じた選択指針
プラットフォーム設計思想の根本的違い
Amazon SageMaker:専門化されたサービス群の連携
SageMakerは、MLライフサイクルの各段階に特化した個別サービスを豊富に提供するエコシステム型アプローチを採用しています。
SageMakerサービス群:
データ準備・ラベリング系:
├── SageMaker Ground Truth (データラベリング)
├── SageMaker Processing (データ前処理)
├── SageMaker Data Wrangler (ノーコードデータ準備)
└── SageMaker Feature Store (特徴量管理)
開発・実験系:
├── SageMaker Studio (統合開発環境)
├── SageMaker Notebooks (Jupyterベース開発)
├── SageMaker Experiments (実験管理)
└── SageMaker Autopilot (AutoML)
学習・最適化系:
├── SageMaker Training (分散学習)
├── SageMaker Hyperparameter Tuning (ハイパーパラメータ最適化)
├── SageMaker Distributed Training (大規模分散学習)
└── SageMaker Debugger (学習プロセス診断)
デプロイ・運用系:
├── SageMaker Endpoints (リアルタイム推論)
├── SageMaker Batch Transform (バッチ推論)
├── SageMaker Model Monitor (モデル監視)
├── SageMaker Clarify (バイアス検出・説明可能AI)
└── SageMaker Pipelines (MLOps パイプライン)
SageMakerの設計思想:
- 専門特化:各段階に最適化された高度な機能
- 柔軟性:複雑な要件にも対応可能な組み合わせ
- エコシステム:AWSサービスとの密な統合
メリット:
- 高度にカスタマイズされたMLパイプライン構築
- 大規模・複雑なMLプロジェクトへの対応
- 既存AWSインフラとのシームレス統合
デメリット:
- 学習コストの高さ
- サービス間連携の複雑性
- 初期セットアップの手間
GCP Vertex AI:統合プラットフォームアプローチ
Vertex AIは、MLライフサイクル全体を単一の統合プラットフォームで提供し、シンプルな開発体験を重視しています。
Vertex AI統合機能:
統合プラットフォーム:
├── Vertex AI Workbench (統合開発環境)
├── Vertex AI Pipelines (MLパイプライン)
├── Vertex AI Experiments (実験管理)
└── Vertex AI Model Registry (モデル管理)
AutoML機能群:
├── AutoML Tables (表形式データ)
├── AutoML Vision (画像分類・物体検出)
├── AutoML Natural Language (テキスト分析)
└── AutoML Video (動画解析)
カスタムトレーニング:
├── Custom Training (独自モデル学習)
├── Hyperparameter Tuning (最適化)
├── Distributed Training (分散学習)
└── Training with GPUs/TPUs (アクセラレータ)
デプロイ・運用:
├── Vertex AI Predictions (推論エンドポイント)
├── Batch Predictions (バッチ推論)
├── Model Monitoring (モデル監視)
└── Explainable AI (説明可能AI)
Vertex AIの設計思想:
- 統合性:全機能を単一プラットフォームで提供
- 簡潔性:一貫した操作体験とAPI
- 民主化:非専門家でも利用可能なAutoML
メリット:
- 学習コストの低さ
- 統一されたユーザー体験
- 迅速なプロトタイピング
デメリット:
- カスタマイズの制約
- ベンダーロックイン
- 一部高度な機能の不足
開発体験の実践比較
実際の機械学習プロジェクトでの開発体験を比較してみましょう。
プロジェクトシナリオ:ECサイトの商品推薦システム
データセット:
- ユーザー行動ログ(100万件)
- 商品情報(10万商品)
- 購入履歴(50万件)
Amazon SageMaker での開発フロー
Step 1: 開発環境のセットアップ
# SageMaker Studio または Notebook Instance でのセットアップ
import sagemaker
from sagemaker import get_execution_role
from sagemaker.sklearn.estimator import SKLearn
from sagemaker.tensorflow import TensorFlow
# IAMロールの設定
role = get_execution_role()
session = sagemaker.Session()
bucket = session.default_bucket()
Step 2: データ前処理(SageMaker Processing)
# データ前処理ジョブの実行
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.sklearn.processing import SKLearnProcessor
sklearn_processor = SKLearnProcessor(
framework_version='0.23-1',
role=role,
instance_type='ml.m5.large',
instance_count=1
)
sklearn_processor.run(
code='preprocessing.py',
inputs=[ProcessingInput(
source=f's3://{bucket}/raw-data/',
destination='/opt/ml/processing/input'
)],
outputs=[ProcessingOutput(
output_name='processed-data',
source='/opt/ml/processing/output',
destination=f's3://{bucket}/processed-data/'
)]
)
Step 3: モデル学習(SageMaker Training)
# TensorFlow Estimatorを使用したカスタム学習
tensorflow_estimator = TensorFlow(
entry_point='train.py',
role=role,
instance_count=1,
instance_type='ml.p3.2xlarge',
framework_version='2.8',
py_version='py39',
hyperparameters={
'epochs': 100,
'batch_size': 256,
'learning_rate': 0.001
}
)
tensorflow_estimator.fit({
'train': f's3://{bucket}/processed-data/train/',
'validation': f's3://{bucket}/processed-data/validation/'
})
Step 4: ハイパーパラメータ最適化
# ハイパーパラメータ自動最適化
from sagemaker.tuner import HyperparameterTuner, ContinuousParameter, IntegerParameter
hyperparameter_ranges = {
'learning_rate': ContinuousParameter(0.0001, 0.1),
'batch_size': IntegerParameter(64, 512),
'hidden_units': IntegerParameter(64, 256)
}
tuner = HyperparameterTuner(
tensorflow_estimator,
objective_metric_name='validation:accuracy',
hyperparameter_ranges=hyperparameter_ranges,
max_jobs=20,
max_parallel_jobs=4
)
tuner.fit({'train': train_data, 'validation': validation_data})
Step 5: モデルデプロイと監視
# リアルタイム推論エンドポイント
predictor = tensorflow_estimator.deploy(
initial_instance_count=1,
instance_type='ml.m5.xlarge',
endpoint_name='recommendation-endpoint'
)
# モデル監視の設定
from sagemaker.model_monitor import DataCaptureConfig, DefaultModelMonitor
data_capture_config = DataCaptureConfig(
enable_capture=True,
sampling_percentage=100,
destination_s3_uri=f's3://{bucket}/datacapture'
)
# 推論実行
result = predictor.predict({
'user_id': '12345',
'context': {'category': 'electronics', 'time': '2024-01-15T10:00:00'}
})
SageMaker開発の特徴:
- ✅ 高度にカスタマイズ可能
- ✅ スケーラブルな分散処理
- ⚠️ 複数サービスの連携が必要
- ⚠️ 設定の複雑性
GCP Vertex AI での開発フロー
Step 1: 統合環境でのセットアップ
# Vertex AI Workbench でのセットアップ
from google.cloud import aiplatform
from google.cloud.aiplatform import gapic as aip
# プロジェクト初期化
aiplatform.init(
project='your-project-id',
location='us-central1',
staging_bucket='gs://your-ml-bucket'
)
Step 2: AutoML による迅速プロトタイピング
# AutoML Tables での自動モデル構築
from google.cloud import aiplatform
# データセット作成
dataset = aiplatform.TabularDataset.create(
display_name="recommendation-dataset",
gcs_source=["gs://your-bucket/recommendation_data.csv"]
)
# AutoML学習ジョブ
automl_job = aiplatform.AutoMLTabularTrainingJob(
display_name="recommendation-automl",
optimization_prediction_type="classification",
optimization_objective="maximize-au-prc",
)
# 自動学習・最適化の実行
model = automl_job.run(
dataset=dataset,
target_column="will_purchase",
training_fraction_split=0.7,
validation_fraction_split=0.2,
test_fraction_split=0.1,
budget_milli_node_hours=1000, # 1時間の予算
)
Step 3: カスタムトレーニング(必要に応じて)
# カスタムトレーニングジョブ
from google.cloud.aiplatform import CustomTrainingJob
custom_job = CustomTrainingJob(
display_name="recommendation-custom-training",
container_uri="gcr.io/cloud-aiplatform/training/tf-gpu.2-8:latest",
python_package_gcs_uri="gs://your-bucket/training-package.tar.gz",
python_module_name="trainer.task",
requirements=["tensorflow==2.8.0", "pandas", "numpy"]
)
model = custom_job.run(
replica_count=1,
machine_type="n1-standard-8",
accelerator_type="NVIDIA_TESLA_T4",
accelerator_count=1,
args=[
"--epochs=100",
"--batch-size=256",
"--learning-rate=0.001"
]
)
Step 4: ハイパーパラメータ最適化
# Vertex AI でのハイパーパラメータ最適化
from google.cloud.aiplatform import HyperparameterTuningJob
from google.cloud.aiplatform_v1.types import StudySpec
hyperparameter_tuning_job = HyperparameterTuningJob(
display_name="recommendation-hp-tuning",
custom_job=custom_job,
metric_spec={
"accuracy": "maximize",
},
parameter_spec={
"learning_rate": StudySpec.ParameterSpec.DoubleValueSpec(
min_value=0.0001, max_value=0.1
),
"batch_size": StudySpec.ParameterSpec.IntegerValueSpec(
min_value=64, max_value=512
),
},
max_trial_count=20,
parallel_trial_count=4,
)
hyperparameter_tuning_job.run()
Step 5: 統合デプロイメント
# 統一されたデプロイメント
endpoint = aiplatform.Endpoint.create(
display_name="recommendation-endpoint",
)
# モデルデプロイ
model.deploy(
endpoint=endpoint,
deployed_model_display_name="recommendation-v1",
machine_type="n1-standard-4",
min_replica_count=1,
max_replica_count=10,
traffic_percentage=100,
)
# 推論実行
prediction = endpoint.predict(
instances=[{
"user_id": "12345",
"category": "electronics",
"time_of_day": "morning",
"previous_purchases": 5
}]
)
Vertex AI開発の特徴:
- ✅ 統一されたAPI・操作体験
- ✅ AutoMLによる迅速プロトタイピング
- ✅ シンプルなデプロイメント
- ⚠️ カスタマイズ範囲の制約
運用・管理面での詳細比較
運用項目 | Amazon SageMaker | GCP Vertex AI |
---|---|---|
開発環境 | Studio/Notebook (複数オプション) | Workbench (統一環境) |
実験管理 | SageMaker Experiments | 統合された実験トラッキング |
モデル管理 | Model Registry (個別設定) | 自動モデルバージョニング |
パイプライン | SageMaker Pipelines | Vertex AI Pipelines (Kubeflow) |
監視・ログ | CloudWatch + 個別設定 | 統合監視ダッシュボード |
アクセス制御 | IAM + リソースベース | 統一されたIAM設定 |
コスト管理 | サービス別課金 | 統合された課金体系 |
料金体系とコスト比較
コスト構造の比較
Amazon SageMaker:
Training: $0.269/時間 (ml.m5.large)
Inference: $0.048/時間 (ml.m5.large) + データ転送
Processing: $0.269/時間 (ml.m5.large)
Notebooks: $0.0582/時間 (ml.t3.medium)
その他: Ground Truth, Feature Store等の個別課金
GCP Vertex AI:
Custom Training: $0.24/時間 (n1-standard-4)
AutoML Tables: $19.32/ノード時間
Prediction: $0.056/時間 (n1-standard-2) + リクエスト課金
Workbench: Compute Engine料金 + ストレージ
実際のプロジェクトでのコスト試算
中規模MLプロジェクト(月間):
- データ準備・前処理:20時間
- モデル学習・実験:50時間
- 推論サービス:24時間×30日(常時稼働)
コスト項目 | SageMaker | Vertex AI |
---|---|---|
データ処理 | $67.25 (Processing 20h) | $48 (Custom Training) |
モデル学習 | $336.25 (Training 50h) | $193 (AutoML利用) |
推論サービス | $345.60 (Endpoint 720h) | $403.20 (Prediction 720h) |
合計 | $749 | $644 |
大規模プロジェクトでの比較:
- 分散学習、高度なカスタマイズが必要な場合、SageMakerが有利
- 迅速なプロトタイピングが中心の場合、Vertex AIが有利
実践的な選択指針
Amazon SageMakerを選ぶべき場面
✅ 適用場面:
- 既存のAWSインフラとの密な統合が必要
- 高度にカスタマイズされたMLパイプライン
- 大規模分散学習が頻繁に必要
- ML専門チームによる複雑なプロジェクト
📋 具体例:
- 金融機関のリスク評価システム
- 自動運転の画像認識モデル
- 大規模レコメンデーションシステム
- 複雑なNLPモデルの研究開発
GCP Vertex AIを選ぶべき場面
✅ 適用場面:
- 迅速なプロトタイピングとPoC
- AutoMLによる業務自動化
- 統一されたML運用プラットフォーム
- データサイエンス初心者〜中級者のチーム
📋 具体例:
- 小売業の需要予測システム
- マーケティングの顧客セグメンテーション
- 製造業の品質管理AI
- 医療画像の異常検知システム
ハイブリッド戦略
段階的アプローチ:
- Phase 1: Vertex AI AutoMLでクイックプロトタイピング
- Phase 2: 要件が明確になったらSageMakerで本格実装
- Phase 3: 両プラットフォームの最適な使い分け
役割分担パターン:
- Vertex AI: 迅速なPoC、自動化重視の業務AI
- SageMaker: 高度なカスタマイズ、大規模システム
実践ハンズオン:Vertex AI AutoMLの威力を体験
最後に、Vertex AIの特徴である「ノーコードML」を実際に体験してみましょう。
シナリオ:顧客離反予測モデルの構築
Step 1: データセット準備
customer_id,age,tenure,monthly_charges,total_charges,churn
1,25,12,65.5,850.5,No
2,35,24,89.2,2140.8,No
3,45,6,45.0,270.0,Yes
Step 2: Vertex AI AutoMLでの自動学習
GCPコンソールでの操作手順:
-
Vertex AI → データセット
- 「データセットを作成」をクリック
- 表形式データを選択
- CSVファイルをCloud Storageにアップロード
-
AutoMLモデルの学習
- 「モデルをトレーニング」選択
- AutoML Tables選択
- ターゲット列:
churn
- 予算設定: 1ノード時間
-
自動最適化の実行
- 特徴量エンジニアリング自動実行
- アルゴリズム選択自動実行
- ハイパーパラメータ最適化自動実行
Step 3: モデル評価と解釈
AutoML完了後、以下が自動生成されます:
# 自動生成される評価レポート
model_evaluation = {
'auPRC': 0.85,
'auROC': 0.82,
'accuracy': 0.78,
'precision': 0.73,
'recall': 0.81,
'f1_score': 0.77
}
# 特徴量重要度
feature_importance = [
{'feature': 'monthly_charges', 'importance': 0.35},
{'feature': 'tenure', 'importance': 0.28},
{'feature': 'total_charges', 'importance': 0.22},
{'feature': 'age', 'importance': 0.15}
]
Step 4: ワンクリックデプロイメント
# GUIでの簡単デプロイメント
# 「デプロイして使用」→「エンドポイントにデプロイ」
# 自動的にスケーラブルなAPIエンドポイントが作成される
# 予測実行(自動生成されるAPIコード)
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint('projects/YOUR_PROJECT/locations/us-central1/endpoints/ENDPOINT_ID')
prediction = endpoint.predict(instances=[{
'age': 30,
'tenure': 18,
'monthly_charges': 75.5,
'total_charges': 1359.0
}])
print(f"Churn Probability: {prediction.predictions[0]['scores'][1]}")
AutoMLの成果:
- ✅ 15分で本格的な予測モデルを構築
- ✅ 自動的な特徴量エンジニアリング
- ✅ 説明可能AIによる意思決定支援
- ✅ 本番レディなAPIの自動生成
まとめ:MLプラットフォーム選択の戦略的指針
AWS SageMakerとGCP Vertex AIは、どちらも優秀なMLプラットフォームですが、異なる価値を提供しています。
戦略的選択の指針:
判断軸 | SageMaker推奨 | Vertex AI推奨 |
---|---|---|
プロジェクト性質 | 研究開発・高度カスタマイズ | ビジネス課題解決・迅速実装 |
チーム構成 | ML専門家中心 | 業務担当者+データサイエンス |
開発スピード | 時間をかけて最適化 | 迅速なプロトタイピング重視 |
運用体制 | 専門的運用チーム | シンプルな運用を希望 |
既存インフラ | AWS中心 | マルチクラウド・GCP活用 |
実践的な活用戦略:
- PoC段階: Vertex AI AutoMLで迅速検証
- プロダクション判断: 要件に応じてプラットフォーム選択
- 継続改善: 両プラットフォームの特徴を活かした使い分け
次回は、GCP独自の強力な機能BigQuery MLを体験します。BigQueryに保存されたデータに対して、データ移動なしにSQLだけで機械学習を実行するという革新的なアプローチを実践してみましょう。
この記事が役に立ったという方は、ぜひ「いいね」や「ストック」をお願いします!
シリーズ記事一覧
- [【1日目】はじめの一歩!AWSエンジニアがGCPで最初にやるべきこと]
- [【2日目】GCPのIAMはAWSとどう違う?「プリンシパル」と「ロール」の理解]
- [【3日目】VPCとVPCネットワーク:GCPのネットワーク設計思想を理解する]
- [【4日目】S3とCloud Storage:オブジェクトストレージを徹底比較]
- [【5日目】RDSとCloud SQL:マネージドデータベースの運用管理の違い]
- [【6日目】EC2とCompute Engine:インスタンスの起動から課金モデルまで]
- [【7日目】1週間のまとめ:AWSとGCP、それぞれの得意なことと設計思想]
- [【8日目】EKSとGKE:Kubernetesのマネージドサービスを比較体験!]
- [【9日目】Dockerイメージをどこに置く?ECRとArtifact Registryを比較]
- [【10日目】LambdaとCloud Functions:イベント駆動型サーバーレスの実装]
- [【11日目】API GatewayとCloud Endpoints:API公開のベストプラクティス]
- [【12日目】Cloud Run:サーバーレスでコンテナを動かすGCPの独自サービスを試してみよう]
- [【13日目】AWS FargateとCloud Run:コンテナ運用モデルの根本的な違い]
- [【14日目】2週間のまとめ:GCPのコンテナ・サーバーレス技術はなぜ優れているのか?]
- [【15日目】RedshiftとBigQuery:データウェアハウスのアーキテクチャと料金体系]
- [【16日目】BigQueryをハンズオン!クエリを書いてデータ分析を体験]
- [【17日目】AthenaとBigQuery:データレイクに対するアプローチの違い]
- [【18日目】SageMakerとVertex AI:機械学習プラットフォームの開発・運用比較](この記事)
- [【19日目】BigQuery ML:SQLだけで機械学習!データサイエンスの新しい形]