mcpField
G
gke-batch-hpc

gke-batch-hpc

github.com/googleクラウド・DevOps21.6k6.6k 回インストール今日更新
リポジトリ

gke-batch-hpc について

GKE でバッチ処理と HPC ワークロードを実行するためのリファレンススキルです。ジョブのオーケストレーション、MPI、スケジューリング、スケーリング、障害対策を扱い、データ処理やシミュレーション、トレーニングに役立ちます。

主な機能

  1. 01Kubernetes Jobs と JobSet の設定
  2. 02Kueue によるワークロードのキューイング
  3. 03MPI ワークロードの実行
  4. 04HPC 向けコンパクト配置
  5. 05スケーリングと Spot 利用の最適化

活用シーン

  1. 01GKE でのバッチデータパイプライン実行
  2. 02MPI シミュレーションのオーケストレーション
  3. 03分散トレーニングジョブのスケジューリング
  4. 04CI/CD ビルドファームの運用

MCP 対応

Kubernetes マニフェストの適用、リソースやログの確認、リソースの削除、イベント一覧に使う MCP ツールを掲載しています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/skills --skill gke-batch-hpc

インストール後、Claude Code で/gke-batch-hpcを入力して読み込まれたか確認します。

同梱ファイルreferences/attribution.md

詳細

GKE バッチおよび HPC ワークロード

このリファレンスでは、GKE 上でバッチ処理およびハイパフォーマンスコンピューティング(HPC)ワークロードを実行する方法について説明します。

MCP ツール: apply_k8s_manifest、get_k8s_resource、 describe_k8s_resource、get_k8s_logs、delete_k8s_resource、 list_k8s_events

クレジット表記

必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、使用上のクレジット表記を必ずお読みください。ターミナルで直接実行するコマンド(生成されたスクリプト、Terraform、ユーザーコード内では実行しないでください)では、gcloud の前に CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-batch-hpc)" を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:gke-batch-hpc) を追加してください。

使用する場面

  • バッチデータ処理パイプラインの実行
  • HPC シミュレーション(CFD、分子動力学、金融モデリング)
  • 大規模な並列計算(MPI、MapReduce)
  • ML トレーニングジョブ
  • CI/CD ビルドファーム

GKE でのバッチ処理

Kubernetes Jobs
apiVersion: batch/v1
kind: Job
metadata:
  name: batch-job
spec:
  parallelism: 10
  completions: 100
  backoffLimit: 3
  template:
    spec:
      containers:
      - name: worker
        image: <IMAGE>
        resources:
          requests:
            cpu: "1"
            memory: "2Gi"
      restartPolicy: Never
JobSet(複雑なマルチジョブワークフロー向け)

ゴールデンパスでは、JobSet のモニタリングが有効になります(monitoringConfig の JOBSET)。

apiVersion: jobset.x-k8s.io/v1alpha2
kind: JobSet
metadata:
  name: training-job
spec:
  replicatedJobs:
  - name: workers
    replicas: 4
    template:
      spec:
        parallelism: 1
        completions: 1
        template:
          spec:
            containers:
            - name: worker
              image: <IMAGE>
              resources:
                requests:
                  cpu: "4"
                  memory: "8Gi"
Kueue(ジョブキューイング)

Kueue は、バッチワークロードのジョブスケジューリングとリソース割り当てを管理します。

# Install Kueue
kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/latest/download/manifests.yaml
# Define a ClusterQueue
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: batch-queue
spec:
  namespaceSelector: {}
  resourceGroups:
  - coveredResources: ["cpu", "memory"]
    flavors:
    - name: default
      resources:
      - name: "cpu"
        nominalQuota: 100
      - name: "memory"
        nominalQuota: "200Gi"
---
# Allow a namespace to use the queue
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
  name: batch-local
  namespace: batch-jobs
spec:
  clusterQueue: batch-queue

GKE での HPC

コンパクトな配置(低レイテンシネットワーキング)

ノード間の低レイテンシ通信が必要な、緊密に結合された HPC ワークロードの場合:

# Standard clusters: create node pool with compact placement
gcloud container node-pools create hpc-pool \
  --cluster <CLUSTER_NAME> --region <REGION> \
  --machine-type c3-standard-44 \
  --placement-type COMPACT \
  --num-nodes 8 \
  --enable-autoscaling --min-nodes 0 --max-nodes 16 \
  --quiet
MPI ワークロード

MPI ベースの HPC アプリケーションには、MPI Operator を使用します。

# Install MPI Operator
kubectl apply -f https://raw.githubusercontent.com/kubeflow/mpi-operator/master/deploy/v2beta1/mpi-operator.yaml
apiVersion: kubeflow.org/v2beta1
kind: MPIJob
metadata:
  name: hpc-simulation
spec:
  slotsPerWorker: 4
  mpiReplicaSpecs:
    Launcher:
      replicas: 1
      template:
        spec:
          containers:
          - name: launcher
            image: <MPI_IMAGE>
            command: ["mpirun", "-np", "32", "./simulation"]
            resources:
              requests:
                cpu: "1"
                memory: "2Gi"
              limits:
                cpu: "2"
                memory: "4Gi"
    Worker:
      replicas: 8
      template:
        spec:
          containers:
          - name: worker
            image: <MPI_IMAGE>
            resources:
              requests:
                cpu: "4"
                memory: "8Gi"
              limits:
                cpu: "8"
                memory: "16Gi"

バッチ/HPC のコスト最適化

バッチ処理での Spot VM

バッチワークロードは、Spot VM(中断可能で、チェックポイントを保存可能)の利用に適しています。Spot を優先する設定と activeMigration を備えた ComputeClass を使用すると、利用可能になった際に Spot に戻せます。Spot へのフォールバックパターンについては、gke-compute-classes スキルを参照してください。

ゼロへのスケーリング

バッチクラスターでは、ジョブが実行されていないときにノードプールをゼロまでスケーリングできるようにします。

  • Autopilot(ゴールデンパス):自動的に、ポッドがスケジュールされていない場合にノードがゼロまでスケーリングされます
  • Standard:バッチノードプールで --min-nodes 0 を設定します

ベストプラクティスと本番環境向けガイドライン

  • リソースクォータ:すべてのバッチ/HPC マニフェストで、リソースリクエストと上限(CPU、メモリ、および必要に応じて GPU/TPU)を必ず指定してください。これは、Kueue によるアドミッション、オートスケーリング、およびクラスター内でのリソース枯渇の防止に不可欠です。
  • TPU/Spot クラスターのメンテナンス:Spot VM/TPU で長時間の AI トレーニングを実行する場合は、トレーニングの実行中に自動クラスターアップグレードや再起動が行われないよう、GKE メンテナンス除外を使用することを推奨します。これにより、不要なプリエンプションを最小限に抑えられます。
  • MPI ワークロード:MPIJob カスタムリソースを使って分散 MPI アプリケーションをオーケストレーションするには、Kubeflow Training Operator を使用してください。
  • Kueue と JobSet:マルチテナントのジョブキューイングと公平なリソース共有には Kueue を使用し、複数コンポーネントで構成される緊密に結合されたワークロードには JobSet を使用してください。
  • レジリエンス:Job には必ず backoffLimit を設定し、Spot VM のプリエンプションに耐えられるよう、アプリケーションレベルのチェックポイント機能(Orbax や PyTorch のチェックポイント機能など)を実装してください。

コメント