0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

30日間で理解する GCP for AWSエンジニア - 実践ブログシリーズ - 18日目: SageMakerとVertex AI:機械学習プラットフォームの比較]

Posted at

【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
  • 医療画像の異常検知システム

ハイブリッド戦略

段階的アプローチ:

  1. Phase 1: Vertex AI AutoMLでクイックプロトタイピング
  2. Phase 2: 要件が明確になったらSageMakerで本格実装
  3. 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コンソールでの操作手順:

  1. Vertex AI → データセット

    • 「データセットを作成」をクリック
    • 表形式データを選択
    • CSVファイルをCloud Storageにアップロード
  2. AutoMLモデルの学習

    • 「モデルをトレーニング」選択
    • AutoML Tables選択
    • ターゲット列: churn
    • 予算設定: 1ノード時間
  3. 自動最適化の実行

    • 特徴量エンジニアリング自動実行
    • アルゴリズム選択自動実行
    • ハイパーパラメータ最適化自動実行

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活用

実践的な活用戦略:

  1. PoC段階: Vertex AI AutoMLで迅速検証
  2. プロダクション判断: 要件に応じてプラットフォーム選択
  3. 継続改善: 両プラットフォームの特徴を活かした使い分け

次回は、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だけで機械学習!データサイエンスの新しい形]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?