Knative では、AI 推論や HPC などの GPU ワークロードをデプロイし、オプションで Pod 間の GPU 共有も可能です。
前提条件
-
クラスターにKnative がデプロイされていること。
GPU リソースの設定
GPU アクセラレーション対応の Elastic Compute Service (ECS) インスタンスタイプを指定するには、spec.template.metadata.annotations に k8s.aliyun.com/eci-use-specs annotations を追加します。GPU 数を設定するには、spec.containers.resources.limits に nvidia.com/gpu フィールドを追加します。nvidia.com/gpu を省略すると、Pod は起動後にエラーを出力します。
GPU を 1 つ使用する Knative Service の例:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
spec:
template:
metadata:
labels:
app: helloworld-go
annotations:
k8s.aliyun.com/eci-use-specs: ecs.gn5i-c4g1.xlarge # GPU アクセラレーション対応の ECS インスタンスタイプ
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
ports:
- containerPort: 8080
resources:
limits:
nvidia.com/gpu: '1' # 必要な GPU 数。必須フィールド。
サポートされている GPU インスタンスファミリー
| インスタンスファミリー | GPU モデル | インスタンスタイプの例 |
|---|---|---|
| gn7i | NVIDIA A10 | ecs.gn7i-c8g1.2xlarge |
| gn7 | — | ecs.gn7-c12g1.3xlarge |
| gn6v | NVIDIA V100 | ecs.gn6v-c8g1.2xlarge |
| gn6e | NVIDIA V100 | ecs.gn6e-c12g1.3xlarge |
| gn6i | NVIDIA T4 | ecs.gn6i-c4g1.xlarge |
| gn5i | NVIDIA P4 | ecs.gn5i-c2g1.large |
| gn5 | NVIDIA P100 | ecs.gn5-c4g1.xlarge |
サポートされている GPU ドライバー:NVIDIA 460.73.01。CUDA Toolkit:11.2。gn5 ファミリーにはローカルディスクが含まれています。ローカルディスクを ECI にマウントするには、「ローカルディスクがアタッチされたECIの作成」をご参照ください。リージョンごとに利用可能なインスタンスタイプについては、「各リージョンで利用可能なECSインスタンスタイプ」および「インスタンスファミリーの概要」をご参照ください。
GPU 共有の有効化
GPU 共有により、複数の Pod が 1 つの物理 GPU を共有できるようになり、ワークロードが専用の GPU アクセスを必要としない場合にコストを削減できます。
GPU 共有を有効にするには:
-
ノードでGPU 共有を有効にします。
-
Knative Service の
spec.containers.resources.limitsにaliyun.com/gpu-memフィールドを追加して、GPU メモリサイズを設定します:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: "100" autoscaling.knative.dev/minScale: "0" spec: containerConcurrency: 1 containers: - image: registry-vpc.cn-hangzhou.aliyuncs.com/hz-suoxing-test/test:helloworld-go name: user-container ports: - containerPort: 6666 name: http1 protocol: TCP resources: limits: aliyun.com/gpu-mem: "3" # GPU メモリのサイズを GiB 単位で指定します。
次のステップ
-
Knative での AI 推論サービスのデプロイに関するベストプラクティス — AI モデルのデプロイ、オートスケーリングの設定、GPU リソースの割り当て。