セクション3 基礎 — プロトタイプから ML モデルへのスケール
📘 対象:新人エンジニア。モデル種別の選び方・訓練フロー・HPT の基礎を一通り知る。
1. モデル種別の選定
1.1 タスク → モデルの典型対応
| タスク |
第一候補 |
代替 |
| 二値・多値分類(テーブル) |
Boosted Trees (XGBoost/LightGBM) |
DNN, Logistic |
| 回帰(テーブル) |
Boosted Trees / Linear |
DNN |
| 時系列予測 |
ARIMA_PLUS (BQML) / Prophet |
DeepAR / Transformer ベース |
| 画像分類 |
CNN (ResNet/EfficientNet) |
Vision Transformer (ViT) |
| 物体検出 |
YOLO / Faster R-CNN |
DETR |
| テキスト分類・要約 |
Gemini ファインチューニング |
BERT 系 |
| チャット / 生成 |
Gemini |
OSS LLM (Llama/Mistral) |
| 推薦 |
Matrix Factorization / Two-Tower |
LLM ベース推薦 |
| 異常検知 |
Autoencoder / Isolation Forest |
LLM プロンプト |
1.2 コスト/複雑性/解釈性の3軸
解釈性高 ←──────────────────────────────────────→ 解釈性低
Linear → Logistic → Decision Tree → Boosted Trees → DNN → LLM
コスト低 → ← コスト高
- 解釈性が必要(金融・医療・規制)→ Linear / Logistic / Tree、または Explainable AI で属性可視化
- コスト最優先 → まず BigQuery ML の Logistic / Boosted Trees
- 精度最優先 → DNN / 基盤モデル
2. プロダクト選定
| プロダクト |
何のため |
主な使用者 |
| BigQuery ML |
SQL でモデル訓練 |
データアナリスト・データエンジニア |
| Agent Platform AutoML |
データさえあれば自動でモデル |
ML 初心者・ビジネスアナリスト |
| Tabular Workflows |
テーブルデータの自動 ML(AutoML 上位互換) |
ML エンジニア |
| Agent Platform Custom Training |
Python フレームワークで自由に訓練 |
ML エンジニア |
| Kubeflow on GKE |
自分でクラスタ管理、最大の柔軟性 |
プラットフォームチーム |
| Agent Platform Pipelines |
訓練を含む E2E パイプライン |
MLOps チーム |
3. 訓練データの整理
3.1 保存場所の使い分け
- Cloud Storage:画像・動画・音声・モデル成果物・チェックポイント
- BigQuery:構造化データ・特徴量・実験ログ
- Filestore (NFS):訓練中の高速ファイルアクセス(複数ノード共有)
- AlloyDB / Spanner:トランザクションを伴うリアルタイム参照
3.2 データフォーマット
- TFRecord:TensorFlow 用、シーケンシャル読み出し高速
- Parquet:列指向、解析・前処理向き
- JSON Lines (.jsonl):LLM 訓練の標準フォーマット
- CSV:互換性は高いが大規模には不向き
3.3 訓練データの取り込み
- 構造化:BigQuery → Cloud Storage に export → 訓練
- 画像:GCS に直接置き、
tf.data / torch.utils.data で読み込み
- ストリーミング:Pub/Sub → Dataflow → BigQuery / GCS(バッチで蓄積してから訓練)
4. Agent Platform Custom Training の基本
4.1 訓練ジョブの実行パターン
| パターン |
説明 |
| Custom Training Job |
コンテナ or Python パッケージを submit、Agent Platform が VM 確保・実行 |
| Hyperparameter Tuning Job |
上記 + Vizier で並列ハイパラ探索 |
| Distributed Training |
複数ノード・複数 GPU で分散実行 |
4.2 コンテナの選択
- Pre-built Container:TF / PyTorch / sklearn / XGBoost の標準環境
- Custom Container:自分の Dockerfile で完全制御
4.3 簡単な submit 例
from google.cloud import aiplatform
job = aiplatform.CustomJob(
display_name="my-training",
worker_pool_specs=[{
"machine_spec": {"machine_type": "n1-standard-4", "accelerator_type": "NVIDIA_TESLA_T4", "accelerator_count": 1},
"replica_count": 1,
"container_spec": {
"image_uri": "us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.2-2.py310:latest",
"args": ["--epochs=10", "--data-dir=gs://my-bucket/data"],
},
}],
)
job.run()
5. ハイパーパラメータチューニング (HPT)
5.1 Vizier
- Google の ベイズ最適化 ベースの HPT サービス
- Agent Platform に統合(
HyperparameterTuningJob)
- パラメータ範囲・最適化目標・最大試行数を設定
5.2 主要なアルゴリズム
- Bayesian Optimization(Vizier のデフォルト、Google 製)
- Grid Search:全組み合わせ(小規模・離散値向け)
- Random Search:ランダム(高次元で意外と強い)
- Population Based Training (PBT):進化的アルゴリズム
5.3 何をチューニングするか
- Learning Rate(最重要)
- Batch Size
- Optimizer (Adam / SGD / etc.)
- Layer 数 / Hidden Units
- Dropout / Regularization
- 学習スケジューラ
5.4 並列度と早期停止
- 並列度(同時試行数)を上げると速いが探索効率は下がる
- Median Stopping などの早期停止で無駄な訓練を打ち切り
6. ファインチューニング(基礎)
6.1 いつ必要か
- ベース基盤モデル + プロンプト + few-shot で 精度頭打ち
- 出力フォーマットを厳密に守らせたい
- ドメイン固有の用語・スタイル
- 推論コスト削減(小モデル + チューニング = 中モデルと同等)
6.2 主な手法
| 手法 |
説明 |
何が良い |
| Full Fine-tuning |
全パラメータを更新 |
最大の表現力、ただし計算コスト大 |
| PEFT (Parameter-Efficient Fine-tuning) |
小数のパラメータのみ更新 |
計算量・メモリ大幅減 |
| LoRA (Low-Rank Adaptation) |
PEFT の代表、低ランク行列を追加学習 |
一般的、Agent Platform でサポート |
| Adapter |
中間層に小さなモジュール挿入 |
LoRA に似た発想 |
| Prompt Tuning |
プロンプト埋め込みのみ学習 |
最軽量・複数タスクで切替容易 |
| RLHF |
人間フィードバックで強化学習 |
チャット・好み調整 |
6.3 ファインチューニングの流れ(Gemini 例)
- 訓練データ準備:JSONL(入力・期待出力ペア)100〜数千件
- データ検証:Agent Platform に upload、フォーマット自動チェック
- チューニングジョブ起動:手法(Supervised / RLHF)・エポック数・学習率を指定
- 評価:ホールドアウトデータで自動評価メトリクス
- デプロイ:チューニング済みモデルをエンドポイントに
7. ハードウェア選定(基礎)
| アクセラレータ |
強み |
用途 |
| CPU |
互換性・コスト |
小規模 ML・前処理・ARIMA など |
| GPU (T4/L4/A100/H100) |
並列計算・汎用 |
CNN / 中小 LLM / 推論 |
| TPU (v4/v5e/v5p) |
Google 製、行列演算特化 |
大規模 LLM 訓練・JAX/TF 向け |
| Edge TPU / Coral |
低消費電力 |
エッジ推論 |
7.1 GPU の世代感
- T4:小規模・コスト重視、推論向け
- L4:T4 後継、生成 AI 推論向け
- A100:訓練向け、80GB HBM 版あり
- H100:最新、超大規模 LLM 訓練
7.2 TPU
- v5e:コスト効率重視、推論にも強い
- v5p:訓練特化、超大規模
- Multislice:複数 Pod を結合して 1万チップ超のスーパーコンピュータ化
- Pathways:単一プログラムで TPU を扱う Google 製ランタイム
7.3 選定の鉄則
- 小規模 ML・古典 ML → CPU
- 中規模 CNN・中規模 LLM → GPU
- 大規模 LLM・JAX/TF・コスト性能比 → TPU
- モバイル/IoT 推論 → Edge TPU
8. このセクションで覚えるキーワード(基礎)
- ARIMA_PLUS / Boosted Trees / DNN / LLM:モデル種別
- BigQuery ML / AutoML / Tabular Workflows / Custom Training / Kubeflow on GKE:プロダクト
- Vizier:ベイズ最適化ベースの HPT
- LoRA / PEFT / Adapter / RLHF / Prompt Tuning:ファインチューニング手法
- CPU / GPU (T4/L4/A100/H100) / TPU (v5e/v5p) / Edge TPU:ハードウェア
次は 02_応用.md で分散訓練と訓練失敗のトラブルシューティング、ファインチューニングの詳細を扱います。