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

Container Service for Kubernetes:vLLMによるQwen推論サービスのデプロイ

最終更新日:Jun 16, 2026

vLLM と Arena を使用し、ACK の単一の A10 または T4 GPU ノードに Qwen1.5-4B-Chat を推論サービスとしてデプロイします。

前提条件

以下を確認してください。

  • Kubernetes 1.22 以降を実行し、それぞれが少なくとも 16 GB の GPU メモリを持つ GPU 高速化ノードを備えた ACK Pro クラスター。 詳細については、「ACK マネージドクラスターの作成」をご参照ください。

  • 最新の Arena クライアント。 詳細については、「Arena クライアントの設定」をご参照ください。

説明

GPU ドライバーバージョン 525 を使用します。GPU 高速化ノードにack.aliyun.com/nvidia-driver-version:525.105.17 label を追加します。 詳細については、「ラベルを追加してノードの NVIDIA ドライバーバージョンを指定する」をご参照ください。

背景情報

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat は、Alibaba Cloud が開発した 40億パラメーターの Transformer ベースの LLM で、Web テキスト、ドメイン固有の書籍、コードでトレーニングされています。 詳細については、「Qwen GitHub リポジトリ」をご参照ください。

vLLM

vLLM は、高スループットと低レイテンシーに最適化されたオープンソースの LLM 推論フレームワークです。 Qwen を含む最も広く使用されている LLM のほとんどをサポートし、PagedAttention、継続的バッチ処理、量子化を使用して効率を向上させます。 詳細については、「vLLM GitHub リポジトリ」をご参照ください。

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

Qwen1.5-4B-Chat をダウンロードし、Object Storage Service (OSS) にアップロードして、ACK クラスターに PersistentVolume (PV) と PersistentVolumeClaim (PVC) を作成します。

説明

OSS の代わりに、File Storage NAS にモデルを保存することもできます。 詳細については、「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。

モデルのダウンロード

  1. Git をインストールします。

       # yum install git または apt install git を実行します。
       yum install git
  2. Git Large File Storage (Git LFS) をインストールします。

       # yum install git-lfs または apt install git-lfs を実行します。
       yum install git-lfs
  3. ModelScope から Qwen1.5-4B-Chat をクローンします。

       GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
  4. Qwen1.5-4B-Chat ディレクトリに移動し、Git LFS ファイルをプルします。

       cd Qwen1.5-4B-Chat
       git lfs pull

OSSへのモデルのアップロード

  1. OSSコンソールにログインし、バケット名をメモします。 バケットを作成するには、「バケットの作成」をご参照ください。

  2. ossutil をインストールして設定します。 詳細については、「ossutil のインストール」をご参照ください。

  3. OSS バケットにQwen1.5-4B-Chatディレクトリを作成します。

       ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  4. モデルファイルを OSS にアップロードします。

       ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat

PV と PVC の作成

ACK クラスターに PV と PVC を作成して、OSS からモデルをマウントします。 詳細については、「静的にプロビジョニングされた OSS ボリュームのマウント」をご参照ください。

PV パラメーター:

パラメーター 説明
[PV タイプ] OSS
[ボリューム名] llm-model
[アクセス証明書] OSS バケットの AccessKey ID と AccessKey シークレット
[バケットID] OSS バケットの名前
[OSSパス] モデルへのパス (例: /Qwen1.5-4B-Chat/Qwen1.5-4B-Chat)

PVC パラメーター:

パラメーター 説明
[PVC タイプ] OSS
[ボリューム名] llm-model
[割り当てモード] [既存ボリューム] を選択します
[既存ボリューム] [既存ボリューム] をクリックし、PVを選択します

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

Arena はモデルファイルをデータセットとして扱います。 --data を使用して、モデルをコンテナにマウントします。 この例では、マウントパスは /model/Qwen1.5-4B-Chat です。

--max-model-len パラメーターは、モデルが処理できる最大トークン長を設定します。 値を大きくすると、インタラクションの品質は向上しますが、より多くの GPU メモリを消費します。 利用可能なすべてのパラメーターについては、「GitHub の vLLM コードリポジトリ」をご参照ください。

GPUタイプの選択

GPU ユースケース max-model-len 追加パラメーター
NVIDIA A10 本番環境 (高性能) 16384 なし
NVIDIA T4 テスト環境 (低コスト) 8192 --dtype half

サービスのデプロイ

GPU タイプに基づいてコマンドを選択します。

NVIDIA A10 (本番環境に推奨)

arena serve custom \
    --name=vllm-qwen-4b-chat \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
    --data=llm-model:/model/Qwen1.5-4B-Chat \
    "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 16384"

NVIDIA T4 (テスト用)

arena serve custom \
    --name=vllm-qwen-4b-chat \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
    --data=llm-model:/model/Qwen1.5-4B-Chat \
    "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 8192 --dtype half"
説明

T4 は --max-model-len 8192 (A10 の場合は 16384) を使用し、T4 のメモリ制約に合わせるために --dtype half を追加します。

Arena パラメーター:

パラメーター 説明
--name 推論サービス名
--version 推論サービスバージョン
--gpus レプリカあたりのGPU数
--replicas レプリカ数
--restful-port 推論サービスのポート
--readiness-probe-action readiness プローブのタイプ。 有効値: HttpGetExecgRPC、および tcpSocket
--readiness-probe-action-option readiness プローブの接続方法
--readiness-probe-option readiness プローブの設定
--data 共有 PVC をマウントします。 形式: PVCName:MountPatharena data list を使用して、利用可能な PVC を照会します
--image 推論サービスのコンテナイメージ

期待される出力:

service/vllm-qwen-4b-chat-v1 created
deployment.apps/vllm-qwen-4b-chat-v1-custom-serving created
INFO[0008] The Job vllm-qwen-4b-chat has been submitted successfully
INFO[0008] You can run `arena serve get vllm-qwen-4b-chat --type custom-serving -n default` to check the job status

デプロイの確認

推論サービスのステータスを確認します。

arena serve get vllm-qwen-4b-chat

期待される出力:

Name:       vllm-qwen-4b-chat
Namespace:  default
Type:       Custom
Version:    v1
Desired:    1
Available:  1
Age:        36m
Address:    172.16.XX.XX
Port:       RESTFUL:8000
GPU:        1

Instances:
  NAME                                                  STATUS   AGE  READY  RESTARTS  GPU  NODE
  ----                                                  ------   ---  -----  --------  ---  ----
  vllm-qwen-4b-chat-v1-custom-serving-6d7c786b9f-z6nfk  Running  36m  1/1    0         1    cn-beijing.192.168.XX.XX

AvailableDesired と一致し、インスタンスのステータスが Running になると、サービスの準備は完了です。

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

ポートフォワーディングの設定

重要

kubectl port-forward を使用したポートフォワーディングは、開発およびデバッグ専用です。 本番環境では、Ingress を使用してください。

ポート 8000 をローカルマシンに転送します。

kubectl port-forward svc/vllm-qwen-4b-chat-v1 8000:8000

期待される出力:

Forwarding from 127.0.0.1:8000 -> 8000
Forwarding from [::1]:8000 -> 8000

テストリクエストの送信

新しいターミナルを開き、推論リクエストを送信します。

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json"  -d '{"model": "/model/Qwen1.5-4B-Chat/", "messages": [{"role": "user", "content": "Test"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

期待される出力:

{"id":"cmpl-503270b21fa44db2b6b3c3e0abaa3c02","object":"chat.completion","created":1717141209,"model":"/model/Qwen1.5-4B-Chat/","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What do you want to test?"},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":21,"total_tokens":30,"completion_tokens":9}}

vLLM は、/v1/chat/completions エンドポイントで OpenAI 互換の API を公開します。

(任意) リソースのクリーンアップ

不要なコストを避けるために、未使用のリソースを削除してください。

推論サービスを削除します。

arena serve delete vllm-qwen-4b-chat

PVC と PV を削除します。

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

次のステップ

  • Ingress を設定して、本番環境で推論サービスを公開してください。

  • 他の Qwen モデルをデプロイするには、モデルサイズと GPU メモリに基づいて --max-model-len--gpu-memory-utilization を調整してください。

  • 設定オプションについては、「vLLM GitHub リポジトリ」をご参照ください。