すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:GPU リソースの活用と Knative における GPU 共有の有効化

最終更新日:Mar 26, 2026

Knative で AI 推論、ハイパフォーマンスコンピューティング(HPC)、その他の GPU ワークロードを実行するには、Knative サービスが GPU リソースをリクエストするよう設定します。サービスに専用 GPU を割り当てるか、複数の Pod が単一の物理 GPU を共有できるように GPU 共有を有効化できます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • お使いの ACK クラスターに Knative がデプロイ済みです。詳細については、「Knative のデプロイ」をご参照ください。

専用 GPU の設定

Knative サービスのマニフェストに、以下の 2 つのフィールドを追加します。

  • k8s.aliyun.com/eci-use-specs アノテーション(spec.template.metadata.annotations 内)— GPU 高速化 ECS インスタンスタイプを指定します。

  • nvidia.com/gpu リソース制限(spec.containers.resources.limits 内)— コンテナが要求する GPU 数を指定します。このフィールドは必須です。省略すると、Pod の起動に失敗します。

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 数(個)を指定します。省略すると、Pod の起動に失敗します。

対応する GPU インスタンスファミリー

インスタンスファミリーGPU チップインスタンスタイプの例
gn7iNVIDIA A10ecs.gn7i-c8g1.2xlarge
gn7ecs.gn7-c12g1.3xlarge
gn6vNVIDIA V100ecs.gn6v-c8g1.2xlarge
gn6eNVIDIA V100ecs.gn6e-c12g1.3xlarge
gn6iNVIDIA T4ecs.gn6i-c4g1.xlarge
gn5iNVIDIA P4ecs.gn5i-c2g1.large
gn5NVIDIA P100ecs.gn5-c4g1.xlarge
gn5 インスタンスファミリーにはローカルディスクが含まれます。ローカルディスクをエラスティックコンテナインスタンスにマウントするには、「ローカルディスクがアタッチされたエラスティックコンテナインスタンスの作成」をご参照ください。

ご利用のリージョンで利用可能な GPU 高速化 ECS インスタンスタイプの完全な一覧については、「リージョン別 ECS インスタンスタイプ」をご参照ください。インスタンスファミリーの概要については、「インスタンスファミリーの概要」をご参照ください。

GPU 高速化エラスティックコンテナインスタンスでは、NVIDIA GPU ドライバー バージョン 460.73.01 および CUDA Toolkit バージョン 11.2 をサポートしています。

GPU 共有の有効化

GPU 共有により、複数の Pod が単一の物理 GPU のメモリ領域を分割して共有できます。軽量な推論サービスや開発環境などのワークロードに適しています。

  1. ノードでGPU共有を有効化します。詳細については、「GPU共有の有効化」をご参照ください。

  2. Knative サービスのマニフェストにおいて、aliyun.com/gpu-memspec.containers.resources.limits 下に設定し、各コンテナに割り当てる GPU メモリサイズ(GB 単位)を指定します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: "100"  # 最大 Pod レプリカ数
            autoscaling.knative.dev/minScale: "0"    # アイドル時にゼロスケール
        spec:
          containerConcurrency: 1  # 各 Pod レプリカあたりの最大同時リクエスト数
          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 メモリ(GB)

次のステップ