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

Container Service for Kubernetes:GPU を共有する推論サービスのデプロイ

最終更新日:Dec 26, 2025

GPU の使用率を向上させるために、同じ GPU 上で複数のモデル推論タスクを実行できます。このトピックでは、Qwen1.5-0.5B-Chat モデルと V100 GPU を例として、KServe を使用して GPU を共有するモデル推論サービスをデプロイする方法について説明します。

前提条件

ステップ1:モデルデータの準備

OSS バケットまたは File Storage NAS (NAS) ファイルシステムを使用してモデルデータを準備できます。詳細については、「ossfs 1.0 静的プロビジョニングボリュームの使用」または「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。この例では、OSS バケットを使用します。

  1. モデルをダウンロードします。このトピックでは、Qwen1.5-0.5B-Chat モデルを例として使用します。

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/Qwen/Qwen1.5-0.5B-Chat.git
    cd Qwen1.5-0.5B-Chat
    git lfs pull
  2. ダウンロードした Qwen1.5-0.5B-Chat ファイルを OSS にアップロードします。

    説明

    ossutil のインストールと使用方法の詳細については、「ossutil のインストール」をご参照ください。

    ossutil mkdir oss://<your-bucket-name>/models/Qwen1.5-0.5B-Chat
    ossutil cp -r ./Qwen1.5-0.5B-Chat oss://<your-bucket-name>/models/Qwen1.5-0.5B-Chat
  3. ターゲットクラスターに永続ボリューム (PV) と永続ボリューム要求 (PVC) を設定します。

    • 次の表に、PV の例の基本設定を示します。

      設定項目

      説明

      [永続ボリュームタイプ]

      OSS

      [名前]

      llm-model

      証明書アクセス

      OSS にアクセスするための AccessKey ID と AccessKey Secret を設定します。

      [バケット ID]

      前のステップで作成した OSS バケットを選択します。

      OSS パス

      モデルが保存されているパス (例:/Qwen1.5-0.5B-Chat) を選択します。

    • 次の表に、PVC の例の基本設定を示します。

      設定項目

      説明

      [永続ボリューム要求タイプ]

      OSS

      [名前]

      llm-model

      [割り当てモード]

      [既存の永続ボリューム] を選択します。

      既存の永続ボリューム

      [既存の永続ボリュームを選択] リンクをクリックし、作成した PV を選択します。

ステップ2:推論サービスのデプロイ

2 つの Qwen 推論サービスを開始します。各サービスには 6 GB の GPU メモリが必要です。

2 つ目の Qwen 推論サービスを開始するには、同じコマンドを実行し、--name=qwen1--name=qwen2 に変更します。
arena serve kserve \
    --name=qwen1 \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:0.4.1 \
    --gpumemory=6 \
    --cpu=3 \
    --memory=8Gi \
    --data="llm-model:/mnt/models/Qwen1.5-0.5B-Chat" \
    "python3 -m vllm.entrypoints.openai.api_server --port 8080 --trust-remote-code --served-model-name qwen --model /mnt/models/Qwen1.5-0.5B-Chat --dtype=half --max-model-len=4096"

次の表にパラメーターを示します。

パラメーター

必須

説明

--name

はい

送信する推論サービスの名前。名前はグローバルに一意である必要があります。

--image

はい

推論サービスのレジストリアドレス。

--gpumemory

いいえ

リクエストする GPU メモリの量。例:--gpumemory=6。すべてのサービスによってリクエストされる合計 GPU メモリが、ノードの合計 GPU メモリを超えないようにしてください。

--cpu

いいえ

推論サービスに使用する vCPU の数。

--memory

いいえ

推論サービスに使用するメモリの量。

--data

いいえ

推論サービスのモデルパス。このトピックでは、モデルの PV は llm-model であり、コンテナーの /mnt/models/ フォルダにマウントされます。

ステップ3:推論サービスの検証

  1. 2 つの Qwen 推論サービスのデプロイ状況を確認できます。

    kubectl get pod -owide |grep qwen

    期待される出力:

    qwen1-predictor-856568bdcf-5pfdq   1/1     Running   0          7m10s   10.130.XX.XX   cn-beijing.172.16.XX.XX   <none>           <none>
    qwen2-predictor-6b477b587d-dpdnj   1/1     Running   0          4m3s    10.130.XX.XX   cn-beijing.172.16.XX.XX   <none>           <none>

    出力は、qwen1 と qwen2 の両方が同じ GPU ノード cn-beijing.172.16.XX.XX にデプロイされていることを示しています。

  2. 次の 2 つのコマンドを実行して、2 つの推論サービスの Pod にアクセスし、各 Pod に割り当てられた GPU メモリを確認します。

    kubectl exec -it qwen1-predictor-856568bdcf-5pfdq  -- nvidia-smi # 最初の推論サービスの Pod に入ります。
    kubectl exec -it qwen2-predictor-6b477b587d-dpdnj  -- nvidia-smi # 2 番目の推論サービスの Pod に入ります。

    期待される出力:

    • 最初の推論サービスに割り当てられた GPU メモリ

      Fri Jun 28 06:20:43 2024       
      +---------------------------------------------------------------------------------------+
      | NVIDIA-SMI 535.161.07             Driver Version: 535.161.07   CUDA Version: 12.2     |
      |-----------------------------------------+----------------------+----------------------+
      | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
      | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
      |                                         |                      |               MIG M. |
      |=========================================+======================+======================|
      |   0  Tesla V100-SXM2-16GB           On  | 00000000:00:07.0 Off |                    0 |
      | N/A   39C    P0              53W / 300W |   5382MiB /  6144MiB |      0%      Default |
      |                                         |                      |                  N/A |
      +-----------------------------------------+----------------------+----------------------+
                                                                                               
      +---------------------------------------------------------------------------------------+
      | Processes:                                                                            |
      |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
      |        ID   ID                                                             Usage      |
      |=======================================================================================|
      +---------------------------------------------------------------------------------------+
    • 2 番目の推論サービスに割り当てられた GPU メモリ

      Fri Jun 28 06:40:17 2024       
      +---------------------------------------------------------------------------------------+
      | NVIDIA-SMI 535.161.07             Driver Version: 535.161.07   CUDA Version: 12.2     |
      |-----------------------------------------+----------------------+----------------------+
      | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
      | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
      |                                         |                      |               MIG M. |
      |=========================================+======================+======================|
      |   0  Tesla V100-SXM2-16GB           On  | 00000000:00:07.0 Off |                    0 |
      | N/A   39C    P0              53W / 300W |   5382MiB /  6144MiB |      0%      Default |
      |                                         |                      |                  N/A |
      +-----------------------------------------+----------------------+----------------------+
                                                                                               
      +---------------------------------------------------------------------------------------+
      | Processes:                                                                            |
      |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
      |        ID   ID                                                             Usage      |
      |=======================================================================================|
      +---------------------------------------------------------------------------------------+

    出力は、両方の Pod の GPU メモリ制限が 6 GB であることを示しています。これは、各 Pod に 6 GB の GPU メモリが割り当てられ、ノードの GPU メモリが 2 つの推論サービス Pod によって正常に共有されていることを示します。

  3. Nginx Ingress ゲートウェイアドレスを使用して推論サービスにアクセスします。

    curl -H "Host: $(kubectl get inferenceservice qwen1 -o jsonpath='{.status.url}' | cut -d "/" -f 3)" \
         -H "Content-Type: application/json" \
         http://$(kubectl -n kube-system get svc nginx-ingress-lb -ojsonpath='{.status.loadBalancer.ingress[0].ip}'):80/v1/chat/completions \
         -d '{
                "model": "qwen", 
                "messages": [{"role": "user", "content": "This is a test."}], 
                "max_tokens": 10, 
                "temperature": 0.7, 
                "top_p": 0.9, 
                "seed": 10
             }'
    

    期待される出力:

    {"id":"cmpl-bbca59499ab244e1aabfe2c354bf6ad5","object":"chat.completion","created":1719303373,"model":"qwen","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What do you want to test?"},"logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":21,"total_tokens":31,"completion_tokens":10}}

    出力は、モデルが与えられた入力 (この例ではテストメッセージ) に基づいて応答を生成できることを示しています。

(任意) ステップ4:環境のクリーンアップ

作成したリソースが不要になった場合は、速やかに削除してください。

  • 次のコマンドを実行して、デプロイされたモデル推論サービスを削除します。

    arena serve delete qwen1
    arena serve delete qwen2
  • 次のコマンドを実行して、作成した PV と PVC を削除します。

    kubectl delete pvc llm-model
    kubectl delete pv llm-model