Node SelectorとTolerations付きGPUワークロードPod
nodeSelector、tolerations、nvidia.com/gpuリソースリクエストを使用して、GPU搭載Kubernetesノードにおける GPU集約型ワークロード(ML推論、動画処理)をスケジュールします。
Scheduling
詳細な説明
KubernetesでのGPUワークロード
GPUワークロードにはGPUハードウェアを持つノードに着陸するための特定のスケジューリングが必要です。Kubernetesはノードラベル、tolerations、拡張リソースを使用してGPUスケジューリングを管理します。
主要な設定
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-inference
labels:
app: "ml-inference"
workload: "gpu"
spec:
replicas: 1
template:
spec:
containers:
- name: inference
image: my-ml-model:latest
ports:
- name: grpc
containerPort: 8500
resources:
requests:
cpu: "500m"
memory: "2Gi"
limits:
cpu: "2000m"
memory: "4Gi"
nodeSelector:
accelerator: "nvidia-tesla-v100"
tolerations:
- key: "nvidia.com/gpu"
operator: "Exists"
effect: "NoSchedule"
Node Selector vs Node Affinity
| 機能 | nodeSelector | nodeAffinity |
|---|---|---|
| 構文 | シンプルなキーバリュー | 表現力のあるオペレーター |
| ソフトプリファレンス | いいえ | はい(preferredDuringScheduling) |
| 複数条件 | ANDのみ | ANDとOR |
| ユースケース | シンプルなGPUスケジューリング | 複雑なマルチゾーンスケジューリング |
シンプルなGPUスケジューリングにはnodeSelectorで十分です。ソフトプリファレンスや複雑なマッチングロジックが必要な場合はnodeAffinityを使用してください。
Tolerations
GPUノードには通常、非GPUワークロードのスケジュールを防ぐtaintが設定されています(無駄を避けるため)。tolerationによりGPUワークロードがこれらのtaintされたノードに配置可能になります。tolerationがないと、スケジューラは利用可能なリソースがあってもGPUノードを考慮しません。
ユースケース
Kubernetesクラスタの専用GPUノードで機械学習推論、モデルトレーニング、ビデオトランスコーディング、その他のGPUアクセラレーションワークロードを実行する。