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

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

最終更新日:Jun 19, 2025

場合によっては、GPU の使用率を向上させるために、複数の推論タスクで同じ GPU を共有することが必要になる場合があります。この例では、Qwen1.5-0.5B-Chat モデルと V100 GPU を使用して、KServe を使用して GPU を共有する推論サービスをデプロイする方法について説明します。

前提条件

手順 1: モデルデータを準備する

OSS バケットまたは File Storage NAS (NAS) を使用して、モデルデータを準備できます。詳細については、「静的にプロビジョニングされた OSS ボリュームをマウントする」または「静的にプロビジョニングされた 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
    git lfs pull
  2. Qwen1.5-0.5B-Chat ファイルを Object Storage Service (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. クラスターの llm-model という名前の永続ボリューム (PV) と llm-model という名前の永続ボリューム要求 (PVC) を設定します。

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

      パラメーター

      説明

      PV タイプ

      OSS

      ボリューム名

      llm-model

      アクセス認証情報

      OSS バケットへのアクセスに使用する AccessKey ID と AccessKey シークレットを指定します。

      バケット ID

      前の手順で作成した OSS バケットを選択します。

      OSS パス

      /Qwen1.5-0.5B-Chat などのモデルのパスを選択します。

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

      パラメーター

      説明

      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. 推論サービスのステータスをクエリします。

    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. 次のコマンドを実行して、推論サービスがデプロイされているポッドにログインし、ポッドに割り当てられている GPU メモリの量を表示します。

    kubectl exec -it qwen1-predictor-856568bdcf-5pfdq -- nvidia-smi # 最初の推論サービスがデプロイされているポッドにログインします。
    kubectl exec -it qwen2-predictor-6b477b587d-dpdnj -- nvidia-smi # 2 番目の推論サービスがデプロイされているポッドにログインします。

    予期される出力:

    • 最初の推論サービスに割り当てられた 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      |
      |=======================================================================================|
      +---------------------------------------------------------------------------------------+

    出力は、各ポッドが最大 6 GB の GPU メモリを使用でき、各ポッドに 6 GB の GPU メモリが割り当てられていることを示しています。したがって、ノードには、2 つの推論サービスがデプロイされているポッドに十分な GPU メモリがあります。

  3. NGINX Ingress の IP アドレスを使用して、いずれかの推論サービスにアクセスします。

    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": "Test"}], 
                "max_tokens": 10, 
                "temperature": 0.7, 
                "top_p": 0.9, 
                "seed": 10
             }'
    

    予期される出力:

    {"id":"cmpl-bbca59499ab244e1aabfe2c354bf6ad5","object":"chat.com pletion","created":1719303373,"model":"qwen","options":[{"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