AI タスクやハイパフォーマンスコンピューティングなど、GPU リソースを必要とするワークロードを Knative にデプロイするには、Knative サービスで GPU 要件を指定して、GPU アクセラレーション インスタンスを作成します。 さらに、GPU 共有機能を有効にすると、複数のポッドが 1 つの GPU を共有できるようになり、リソース使用率が最大化されます。
前提条件
Knative がクラスターにデプロイされていること。 詳細については、「Knative をデプロイする」をご参照ください。
GPU リソースを設定する
Knative サービスの構成の spec.template.metadata.annotations セクションにアノテーション k8s.aliyun.com/eci-use-specs を追加して、GPU アクセラレーション ECS インスタンスタイプを指定できます。 spec.containers.resources.limits セクションに nvidia.com/gpu フィールドを追加して、Knative サービスで必要な GPU リソースの量を指定できます。
次のコードブロックは例です。
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 # Knative でサポートされている 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 アクセラレーション ECS インスタンスファミリーがサポートされています。
gn7i。NVIDIA A10 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn7i-c8g1.2xlarge など、さまざまなインスタンスタイプが含まれています。
gn7。このインスタンスファミリーには、ecs.gn7-c12g1.3xlarge など、さまざまなインスタンスタイプが含まれています。
gn6v。NVIDIA V100 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn6v-c8g1.2xlarge など、さまざまなインスタンスタイプが含まれています。
gn6e。NVIDIA V100 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn6e-c12g1.3xlarge など、さまざまなインスタンスタイプが含まれています。
gn6i。NVIDIA T4 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn6i-c4g1.xlarge など、さまざまなインスタンスタイプが含まれています。
gn5i。NVIDIA P4 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn5i-c2g1.large など、さまざまなインスタンスタイプが含まれています。
gn5。NVIDIA P100 GPU を使用する GPU コンピューティング最適化インスタンスファミリー。 このインスタンスファミリーには、ecs.gn5-c4g1.xlarge など、さまざまなインスタンスタイプが含まれています。
gn5 インスタンスファミリーには、ローカルディスクが搭載されています。 ローカルディスクをエラスティックコンテナインスタンスにマウントできます。 詳細については、「エラスティックコンテナインスタンスを作成するためのECSインスタンスタイプの指定」をご参照ください。
GPU アクセラレーション エラスティックコンテナインスタンスでサポートされている GPU ドライバーのバージョンは NVIDIA 460.73.01 です。 GPU アクセラレーション エラスティックコンテナインスタンスでサポートされている CUDA Toolkit のバージョンは 11.2 です。
GPU アクセラレーション ECS インスタンスファミリーの詳細については、「リージョンごとに利用可能な ECS インスタンスタイプ」および「インスタンスファミリーの概要」をご参照ください。
GPU 共有を有効にする
例を参照して、ノードの GPU 共有機能を有効にします。
Knative サービスで
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 メモリサイズを指定します。
関連情報
AI モデルを Knative ポッドの推論サービスとしてデプロイし、自動スケーリングを設定し、GPU リソースを柔軟に割り当てて、GPU リソースの利用率を向上させ、AI 推論のパフォーマンスを向上させることができます。 詳細については、「Knative に AI 推論サービスをデプロイするためのベストプラクティス」をご参照ください。
GPU に関するよくある質問と解決策については、GPU に関する FAQ をご参照ください。