Contents
1. Vertex AI とは?
Vertex AI は GCP 上で データ管理 → モデル学習 → デプロイ → モニタリング を一括して行える統合プラットフォームです。
主なコンポーネントは次の通りです。
| コンポーネント | 主な役割 |
|---|---|
| AutoML | ラベル付きデータだけで自動的に最適モデルを生成 |
| Custom Training | 任意の TensorFlow / PyTorch スクリプトを分散学習可能 |
| Vertex Pipelines | ML ワークフローをコード化し CI/CD を実装 |
| Model Registry | モデルバージョンとメタデータを一元管理 |
| Endpoint | デプロイ済みモデルへのオンライン/バッチ予測インターフェース |
これらはすべて同一 UI と Python SDK (vertexai ライブラリ) で操作でき、実験 → 本番 の移行がスムーズです。
2. 事前準備と環境構築
2‑1. プロジェクト作成・課金有効化・IAM ロール付与
| 手順 | 操作内容 |
|---|---|
| ① プロジェクト作成 | コンソール → プロジェクト → 「新しいプロジェクト」 |
| ② 課金設定 | 作成したプロジェクトに課金アカウントを紐付け(左メニューの「請求」) |
| ③ IAM ロール | 以下のロールを自分またはサービス アカウントに割り当て ・ roles/aiplatform.admin (Vertex AI 全体管理)・ roles/storage.objectAdmin(データセットやモデル用バケット操作)・必要に応じて roles/compute.viewer 等 |
ポイント:最小権限の原則を守り、プロジェクトオーナー以外には
aiplatform.userなど限定的なロールだけ付与すると安全です。
2‑2. Vertex AI Workbench(Jupyter/Colab 互換ノートブック)の作成
- コンソール左メニュー → Vertex AI → Workbench を選択
- 「ノートブック環境を作成」ボタンをクリック
- 必要項目を入力(例)
| 項目 | 推奨値 |
|---|---|
| 名前 | my-workbench |
| リージョン | <REGION>(例: us-central1) |
| マシンタイプ | n1-standard-4 + GPU (NVIDIA_TESLA_T4) |
| Python バージョン | 3.10 |
作成後、ノートブック UI が表示されるので次のコマンドで SDK をインストールします。
|
1 2 |
!pip install -U "vertexai[preview]" |
3. データ準備と AutoML 画像分類
3‑1. Cloud Storage にデータを配置
| パス例 | 内容 |
|---|---|
gs://<BUCKET_NAME>/images/ |
JPEG/PNG 形式の学習画像 |
gs://<BUCKET_NAME>/labels.csv |
ラベル情報(2 列) |
|
1 2 3 4 |
gcs_path,label gs://my-bucket/images/cat_001.jpg,cat gs://my-bucket/images/dog_023.jpg,dog |
3‑2. AutoML データセット作成(UI)
- Vertex AI → Datasets → 「データセットを作成」
- 種類: 画像、タスク: 分類 (マルチクラス) を選択
- データソースに
labels.csvを指定しインポート
3‑3. AutoML データセット作成(CLI)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# データセットの作成 gcloud beta ai datasets create \ --region=<REGION> \ --display-name="image-classification-ds" \ --metadata-schema-uri=google.cloud.aiplatform.schema.dataset.metadata.imageClassification # CSV のインポート gcloud beta ai datasets import-data \ --region=<REGION> \ --dataset=<DATASET_ID> \ --import-schema-uri=google.cloud.aiplatform.schema.io.imageClassification.singleLabelCsv \ --source-uris=gs://<BUCKET_NAME>/labels.csv |
注:
gcloud ai custom-jobs createはカスタムトレーニング用コマンドです。AutoML では上記のdatasets import-data系を利用してください。
4. カスタムトレーニング(Python SDK)
以下は 変数名ミス を修正したサンプルです。
プレースホルダーは必ず < > で囲んでいるので、実際の値に置換してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 1️⃣ SDK のインストールと初期化(Notebook 上で実行) !pip install -q "vertexai[preview]" # Workbench 用 from vertexai.preview import aiplatform PROJECT_ID = "<PROJECT_ID>" REGION = "<REGION>" # 正しい変数名を使用 aiplatform.init(project=PROJECT_ID, location=REGION) # 2️⃣ カスタムコンテナイメージ(例: TensorFlow GPU) CONTAINER_URI = "gcr.io/cloud-aiplatform/custom-containers/tf-gpu.2-13:latest" # 3️⃣ 学習スクリプトを Cloud Storage にアップロード済みと想定 SCRIPT_PATH = "gs://<BUCKET_NAME>/train.py" # 4️⃣ CustomJob の作成 custom_job = aiplatform.CustomJob.from_local_script( display_name="image-classifier-job", script_path=SCRIPT_PATH, container_uri=CONTAINER_URI, requirements=["tensorflow==2.13.*", "pillow"], machine_type="n1-standard-8", accelerator_type="NVIDIA_TESLA_T4", accelerator_count=1, args=[ "--train-data", "gs://<BUCKET_NAME>/images/train/", "--val-data", "gs://<BUCKET_NAME>/images/val/", "--output-dir", "gs://<BUCKET_NAME>/model-output/" ], ) # 5️⃣ ジョブ実行(同期モード) custom_job.run(sync=True) print(f"ジョブリソース名: {custom_job.resource_name}") |
ポイント解説
aiplatform.initの引数は project=PROJECT_ID, location=REGION と正確に記述すること。from_local_scriptはローカルまたは Cloud Storage 上のスクリプトを自動で Docker 化して実行します。machine_type・accelerator_*で GPU を割り当て、sync=Trueにするとノートブックがジョブ完了まで待機します。
5. 学習結果の可視化(TensorBoard)
|
1 2 3 4 5 6 7 8 9 10 |
# train.py の抜粋:TensorBoard ログ出力例 import tensorflow as tf, pathlib, datetime, os log_dir = "/tmp/tb_logs" tb_cb = tf.keras.callbacks.TensorBoard(log_dir=log_dir, update_freq='epoch') model.fit(train_ds, epochs=20, validation_data=val_ds, callbacks=[tb_cb]) # 学習終了後に Cloud Storage へコピー !gsutil -m cp -r $log_dir gs://<BUCKET_NAME>/tb_logs/${AIP_JOB_ID} |
Notebook 側で表示するには:
|
1 2 3 |
%load_ext tensorboard %tensorboard --logdir gs://<BUCKET_NAME>/tb_logs/ |
6. デプロイとオンライン予測
6‑1. エンドポイント作成(SDK)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from vertexai.preview import aiplatform model = aiplatform.Model(model_name="projects/<PROJECT_ID>/locations/<REGION>/models/1234567890") endpoint = model.deploy( machine_type="n1-standard-4", min_replica_count=1, max_replica_count=5, traffic_split={"0": 100}, sync=True, ) print(f"Endpoint 名: {endpoint.resource_name}") |
6‑2. 予測リクエスト(SDK)
|
1 2 3 4 5 6 7 |
prediction = endpoint.predict( instances=[ {"content": open("sample_image.jpg", "rb").read(), "mime_type": "image/jpeg"} ] ) print("Prediction:", prediction) |
6‑3. REST API 呼び出し例
|
1 2 3 4 5 6 7 8 9 10 |
TOKEN=$(gcloud auth application-default print-access-token) curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ https://<REGION>-aiplatform.googleapis.com/v1/projects/<PROJECT_ID>/locations/<REGION>/endpoints/${ENDPOINT_ID}:predict \ -d '{ "instances": [{"content":"<BASE64_ENCODED_IMAGE>","mime_type":"image/jpeg"}] }' |
ポイント:GPU が必要な推論は
machine_typeに加えてaccelerator_type/accelerator_countを指定してください。
7. コスト見積もり(2026 年 5 月時点)
| リソース | 単価 (USD)※ | 備考 |
|---|---|---|
CPU (n1-standard-4) |
$0.20 / 時間 | |
GPU (NVIDIA_TESLA_T4) |
$0.35 / 時間 | |
Endpoint (n1-standard-4) |
$0.15 / 時間(オンデマンド) | 自動スケーリング時は実稼働分のみ課金 |
| AutoML | AutoML 固有の料金が別途適用 | 公式料金表参照 |
*※ 上記は参考値です。正確な金額は Google Cloud コンソールの「見積もり」ページで確認してください。
見積もりシナリオ
| シナリオ | 使用時間 | 計算式 | 合計 (USD) |
|---|---|---|---|
| AutoML 画像分類(GPU 無) | 2 h CPU | 2 h × $0.20 = $0.40 | $0.40 |
| カスタムトレーニング(T4 GPU 1 台、3 h) | 3 h CPU + 3 h GPU | (3×$0.20) + (3×$0.35) = $1.65 | $1.65 |
| エンドポイント稼働(CPU 1 台、24 h) | 24 h | 24×$0.15 = $3.60 | $3.60 |
| 合計 | — | — | ≈ $5.65 |
注意:AutoML の内部料金は別途課金されます。実運用時は必ず公式価格表を参照し、予算アラートを設定しましょう。
8. セキュリティベストプラクティス
| 項目 | 推奨設定 |
|---|---|
| IAM | - roles/aiplatform.admin はプロジェクトオーナーに限定- データサイエンティストは roles/aiplatform.user + roles/storage.objectViewer で十分 |
| VPC Service Controls | Vertex AI 用のサービス境界を作成し、外部 IP からのアクセスを遮断。Cloud Storage はプライベートリンク経由に設定 |
| 暗号化 | デフォルトは Google 管理鍵 (Google‑managed) が適用。機密データは CMEK(Customer‑Managed Encryption Keys)を使用し、キーは Cloud KMS に保管 |
| 監査ログ | Cloud Audit Logs を有効化し、aiplatform.googleapis.com の操作をすべて記録 |
9. よくあるエラーと対処法
| エラーメッセージ | 発生シーン | 主な原因 | 解決策 |
|---|---|---|---|
PermissionDenied |
カスタムジョブが Cloud Storage に書き込めない | IAM ロール不足 | サービスアカウントに roles/storage.objectAdmin を付与 |
InvalidArgument: location mismatch |
データセットとジョブのリージョンが異なる | リージョン不統一 | すべてのリソース(Notebook、Dataset、Endpoint)を同一 <REGION> に揃える |
ResourceExhausted: quota exceeded |
同時に複数 GPU ジョブを起動した | クォータ上限超過 | Cloud Console の「クォータ」ページで上限増加申請、またはジョブ実行数を削減 |
トラブルシューティングの流れ
1. エラーメッセージを全文コピー → Google 検索
2.gcloud auth listで使用中アカウント確認
3. コンソール > IAM & Admin > 権限、または クォータ ページをチェック
10. まとめ
- Vertex AI はデータから推論まで一貫したフローを提供し、AutoML と Custom Training のハイブリッド利用が可能
- 必要な前提条件(プロジェクト・課金・IAM)を整えたら、Workbench でノートブック環境を立ち上げ、
vertexaiSDK を使ってコードベースのジョブも簡単に実行できる - 料金は従量課金制。公式料金表と予算アラートでコスト管理を忘れずに
- IAM の最小権限化、VPC Service Controls、CMEK の組み合わせが推奨セキュリティ構成
これらのポイントを押さえておけば、安全かつスケーラブルに機械学習プロジェクトを進めることができます。ぜひ本ガイドを手元に置き、実際の開発・運用で活用してください。