メインコンテンツまでスキップ

KubernetesへのGPUアプリケーションのデプロイ

KubernetesはCPUリソースと同様にGPUリソースを管理・使用します。ワーカーグループに選択したGPU設定に基づいて、アプリケーションのGPUリソースを宣言します。

注意事項:

  • GPUリクエストを指定せずにGPUリミットのみを指定できます(KubernetesはリミットをデフォルトのリクエストとSして使用します)。
  • GPUリミットとリクエストの両方を指定できますが、両者の値は同一である必要があります。
  • GPUリミットを指定せずにGPUリクエストのみを指定することはできません。

以下のコマンドでGPU設定を確認します:

kubectl get node -o json | jq '.items[].metadata.labels'

例: 以下の画像は、NVIDIA A30カードをstrategy: all-balanced、status: successで使用しているワーカーを示しています。

Alt text

デプロイ例

1. singleストラテジーのMIG共有モード

GPUリソースは以下のように宣言します:

nvidia.com/gpu: <number>

nvidia.com/gpu: 1

GPU singleストラテジーを使用したデプロイ例:

apiVersion: apps/v1

kind: Deployment

metadata:

name: example-gpu-app

spec:

replicas: 1

selector:

matchLabels:

component: gpu-app

template:

metadata:

labels:

component: gpu-app

spec:

containers:

- name: gpu-container

securityContext:

capabilities:

add:

- SYS_ADMIN

resources:

limits:

nvidia.com/gpu: 1

image: nvidia/samples:dcgmproftester-2.0.10-cuda11.0-ubuntu18.04

command: ["/bin/sh", "-c"]

args:

- while true; do /usr/bin/dcgmproftester11 --no-dcgm-validation -t 1004 -d 300; sleep 30; done

2. mixedストラテジーのMIG共有モード

GPUリソースは以下のように宣言します:

nvidia.com/<mig-profile>: <number>

nvidia.com/mig-1g.6gb: 2

GPU mixedストラテジーを使用したデプロイ例:

apiVersion: apps/v1

kind: Deployment

metadata:

name: example-gpu-app

spec:

replicas: 1

selector:

matchLabels:

component: gpu-app

template:

metadata:

labels:

component: gpu-app

spec:

containers:

- name: gpu-container

securityContext:

capabilities:

add:

- SYS_ADMIN

resources:

limits:

nvidia.com/mig-1g.6gb: 1

image: nvidia/samples:dcgmproftester-2.0.10-cuda11.0-ubuntu18.04

command: ["/bin/sh", "-c"]

args:

- while true; do /usr/bin/dcgmproftester11 --no-dcgm-validation -t 1004 -d 300; sleep 30; done

3. noneストラテジー

GPUリソースは以下のように宣言します:

nvidia.com/gpu: 1

GPU noneストラテジーを使用したデプロイ例:

apiVersion: apps/v1

kind: Deployment

metadata:

name: example-gpu-app

spec:

replicas: 1

selector:

matchLabels:

component: gpu-app

template:

metadata:

labels:

component: gpu-app

spec:

containers:

- name: gpu-container

securityContext:

capabilities:

add:

- SYS_ADMIN

resources:

limits:

nvidia.com/gpu: 1

image: nvidia/samples:dcgmproftester-2.0.10-cuda11.0-ubuntu18.04

command: ["/bin/sh", "-c"]

args:

- while true; do /usr/bin/dcgmproftester11 --no-dcgm-validation -t 1004 -d 300; sleep 30; done

4. MPS共有モード

GPUリソースは以下のように宣言します:

nvidia.com/gpu: <number>

nvidia.com/gpu: 1

注意: Podがリクエストできるnvidia.com/gpuリソースの最大値は1です。