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

ENS:エッジクラウド上への QwQ-32B 推論モデルのデプロイ

最終更新日:Mar 01, 2026

本トピックでは、Alibaba Cloud Edge Node Service (ENS) および vLLM を用いた QwQ-32B 推論モデルのデプロイ構成、パフォーマンスベンチマーク、および実行環境のセットアップについて説明します。

QwQ-32B の概要

QwQ-32B は、Qwen2.5-32B を基盤とするオープンソースの推論モデルです。強化学習を活用することで、AIME 2024、AIME 2025、LiveCodeBench などの主要なベンチマークおよび IFEval、LiveBench などの汎用指標において、フルバージョンの DeepSeek-R1 と同等の性能を実現しています。さらに、パラメーター数を削減した設計により、推論ワークロード向けのコスト効率に優れた選択肢となっています。

適用範囲

シナリオ平均入力長(トークン)平均出力長(トークン)代表的な用途
数学的推論0.5K~1.5K0.8~3.6KMATH 問題の解決、LSAT 論理分析
知識ベース型対話検索1K~4K0.2K~1KMMLU 知識評価、医療相談
マルチラウンド対話2K~8K0.5K~2Kカスタマーサポート、心理相談
長文書処理8K~16K1K~4K論文要約、法務文書分析
コード生成およびデバッグ0.3K~2K1K~5K関数実装、デバッグ

パフォーマンス指標のリファレンス

指標説明
モデル精度モデル重みおよび計算における数値精度。精度を低くするとメモリ使用量およびコストが削減されますが、複雑なタスクにおける精度が低下する可能性があります。
同時実行性同時に処理されるユーザー要求の数。同時実行数を増やすと処理能力は向上しますが、GPU メモリおよび帯域幅の使用量も増加します。
入力長ユーザーによるプロンプトのトークン数。入力が長いほど GPU メモリ消費量および TTFT が増加します。
出力長モデル応答のトークン数。過度に長い出力は、出力の切り捨てやメモリ不足(OOM)エラーを引き起こす可能性があります。
TTFT最初のトークンまでの時間。要求送信から最初の出力トークン受信までの遅延。目標値:1 秒未満。最大許容値:2 秒。
TPOT1 トークンあたりの生成時間。最初のトークン以降の各トークンの平均生成時間。目標値:50 ms 未満。最大許容値:100 ms。
要求単位のスループット1 要求あたりのトークン出力レート(トークン/秒)。目標値:10~30 トークン/秒。
GPU メモリ使用率実行時の GPU メモリ使用率(モデルパラメーター、KV キャッシュ、中間アクティベーションを含む)。95 % を超える使用率は OOM エラーを引き起こす可能性があります。

デプロイ構成およびベンチマーク

ENS は、世界中に分散配置されたエッジノード上で異種混合のコンピューティングリソースを提供します。単一 GPU カードのメモリ容量は 12 GB ~ 48 GB です。以下のセクションでは、異なるモデル精度で QwQ-32B をデプロイするための、2 つの検証済み構成について説明します。

FP16 精度:デュアル GPU(48 GB × 2)インスタンス

この構成では、2 枚の 48 GB GPU カードを搭載した仮想マシン(VM)インスタンスを使用します。

環境仕様

パラメーター
CPU96 コア
メモリ384 GB
GPUNVIDIA 48 GB × 2
オペレーティングシステムUbuntu 22.04
Docker バージョン26.1.3
GPU ドライバーDriver Version: 570.124.06、CUDA Version: 12.4
推論フレームワークvLLM 0.7.2

パフォーマンスベンチマーク

シナリオ入力長出力長同時実行数要求単位のスループット(トークン/秒)TTFT(秒)TPOT(ms)GPU メモリ使用率
数学的推論およびコード生成1K4K414.50.667.495 %
数学的推論およびコード生成1K4K813.31.671.395 %
知識ベース型対話検索4K1K214.21.868.695 %
知識ベース型対話検索4K1K4132.772.795 %
マルチラウンド対話および長文書処理4K4K214.641.771.595 %
マルチラウンド対話および長文書処理4K4K413.62.982.395 %

同時実行数の推奨事項

  • 数学的推論およびコード生成(入力が短く、出力が長い:入力 0.3K~2K、出力 0.8K~5K):同時実行数 4 の場合、TTFT が 1 秒未満で約 15 トークン/秒のスループットが得られ、ユーザーエクスペリエンスとコストのバランスが最適化されます。同時実行数 8 では TTFT が増加しますが、許容範囲内です。要求数あたりのコスト削減を目的として、同時実行数を増加させることを推奨します。

  • 知識ベース型対話検索(入力が長く、出力が短い:入力 1K~4K、出力 0.2K~1K):最適な同時実行数は 2 です。同時実行数 4 の場合、TTFT は 2 秒を超えますが、ネットワーク遅延を考慮すると許容範囲内です。

  • マルチラウンド対話および長文書処理(入力・出力ともに長い:入力 2K~16K、出力 1K~4K):入力が長くなると、メモリ消費量および TTFT の両方が増加します。最適な同時実行数は 2 です。ワークロードに応じて入力長および同時実行数を調整してください。

5基の12 GB GPUインスタンスでのINT4精度

この構成では、5 枚の 12 GB GPU カードを搭載したベアメタルインスタンスを使用します。

環境仕様

パラメーター
CPU24 コア × 2、3.0 ~ 4.0 GHz
メモリ256 GB
GPUNVIDIA 12 GB × 5
オペレーティングシステムUbuntu 20.04
Docker バージョン28.0.1
GPU ドライバーDriver Version: 570.124.06、CUDA Version: 12.4
推論フレームワークvLLM 0.7.2

パフォーマンスベンチマーク

5 枚 GPU(12 GB × 5)構成は、要求単位のスループットが非常に高い一方で、カード単位の GPU メモリが小さいため TTFT のパフォーマンスに制限があります。この構成は、数学的推論およびコード生成のシナリオに適しています。知識ベース型対話検索、マルチラウンド対話、および長文書処理には、代わりにデュアル GPU(48 GB × 2)インスタンスをご利用ください。

シナリオ入力長出力長同時実行性要求単位のスループット(トークン/秒)TTFT(秒)TPOT(ms)GPU メモリ使用率
数学的推論およびコード生成1K4K2371.326.496.5 %
数学的推論およびコード生成1K4K432.51.728.796.5 %
数学的推論およびコード生成1K4K824.63.561.596.5 %
知識ベース型対話検索4K1K133.54.725.196.5 %
マルチラウンド対話および長文書処理4K4K135.84.726.696.5 %
マルチラウンド対話および長文書処理8K4K121.99.343.396.5 %

同時実行の推奨

  • 数学的推論およびコード生成:同時実行数 2 の場合、TTFT が 1.3 秒で 37 トークン/秒のスループットが得られ、ユーザーエクスペリエンスとコストのバランスが最適化されます。よりコスト効率の高い運用を実現するには、同時実行数 4 をご採用ください。

  • 知識ベース型対話検索、マルチラウンド対話、および長文書処理:同時実行数 1 の場合、TTFT は約 5 秒に達します。これは本番ワークロードには不適切ですが、概念実証(POC)環境では利用可能です。

テスト環境のセットアップ

本セクションでは、ENS インスタンスの作成、ディスクの初期化、推論環境のインストール、およびベンチマークの実行手順について説明します。手順はデュアル GPU(48 GB × 2)構成に基づいて記述されています。

前提条件

  • ENS へのアクセス権限を持つ Alibaba Cloud アカウント

  • Linux コマンドライン操作に関する知識

  • インスタンスへの接続に使用する SSH クライアント

ステップ 1:ENS インスタンスの作成

ENS コンソールまたは API 呼び出しによりインスタンスを作成します。

オプション A:ENS コンソールを使用する

  1. ENS コンソール にログインします。

  2. 左側ナビゲーションウィンドウで、リソースとイメージ > インスタンス を選択します。

  3. インスタンス ページで、インスタンスの作成 をクリックします。詳細については、「インスタンスの作成」をご参照ください。

  4. 以下の設定でインスタンスを構成します。

    ステップパラメーター推奨値
    基本構成課金方法サブスクリプション
    インスタンスタイプx86 コンピューティング
    インスタンス仕様NVIDIA 48GB × 2。詳細な仕様については、カスタマーマネージャーまでお問い合わせください。
    イメージUbuntu、ubuntu_22_04_x64_20G_alibase_20240926
    ネットワークおよびストレージネットワーク自社構築ネットワーク
    システムディスクUltra Disk、80 GB 以上
    データディスクUltra Disk、1 TB 以上
    システム設定パスワードの設定カスタムキーまたはキーペア
  5. 右下隅の 注文の確認 をクリックし、支払いを完了します。

支払い後、ページは ENS コンソールにリダイレクトされます。インスタンスのステータスが 実行中 に変更された時点で、インスタンスの準備が完了します。

オプション B:RunInstances API を呼び出す

OpenAPI ポータル で RunInstances 操作を呼び出します。以下は参考となる JSON パラメーターです。

{
  "InstanceType": "ens.gnxxxx",                    // インスタンスタイプ
  "InstanceChargeType": "PrePaid",
  "ImageId": "ubuntu_22_04_x64_20G_alibase_20240926",
  "ScheduleAreaLevel": "Region",
  "EnsRegionId": "cn-your-ens-region",             // エッジノード
  "Password": "<YOURPASSWORD>",                    // パスワード
  "InternetChargeType": "95BandwidthByMonth",
  "SystemDisk": {
    "Size": 80,
    "Category": "cloud_efficiency"
  },
  "DataDisk": [
    {
      "Category": "cloud_efficiency",
      "Size": 1024
    }
  ],
  "InternetMaxBandwidthOut": 5000,
  "Amount": 1,
  "NetWorkId": "n-xxxxxxxxxxxxxxx",
  "VSwitchId": "vsw-xxxxxxxxxxxxxxx",
  "InstanceName": "test",
  "HostName": "test",
  "PublicIpIdentification": true,
  "InstanceChargeStrategy": "instance"             // インスタンス単位での課金
}

ステップ 2:インスタンスへのログインおよびディスクの初期化

インスタンスへのログイン

詳細については、「インスタンスへの接続」をご参照ください。

ルートパーティションの拡張

インスタンスの作成またはサイズ変更後に、再起動せずにオンラインでルートパーティションを拡張できます。

# クラウド環境ツールキットをインストールします。
sudo apt-get update
sudo apt-get install -y cloud-guest-utils

# GPT パーティショニングツール sgdisk が存在することを確認します。
type sgdisk || sudo apt-get install -y gdisk

# 物理パーティションを拡張します。
sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 3

# ファイルシステムをリサイズします。
sudo resize2fs /dev/vda3

# 結果を確認します。
df -h
image

データディスクのマウント

データディスクをフォーマットしてマウントします。コマンドはご利用の環境に応じて調整してください。

# 新しいディスクを特定します。
lsblk

# パーティションを分割せずにディスクをフォーマットします。
sudo mkfs -t ext4 /dev/vdb

# マウント設定を行います。
sudo mkdir /data
echo "UUID=$(sudo blkid -s UUID -o value /dev/vdb) /data ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab

# マウントを確認します。
sudo mount -a
df -hT /data

# 権限を変更します。
sudo chown $USER:$USER /data
image
説明

このインスタンスからイメージを作成する場合は、イメージ作成前に ext4 defaults 0 0 行を /etc/fstab から削除してください。削除しない場合、そのイメージから作成されたインスタンスは起動に失敗します。

ステップ 3:vLLM 推論環境のインストール

CUDA のインストール

詳細については、「CUDA Toolkit 12.4 ダウンロード」をご参照ください。

# CUDA Toolkit をダウンロードします。
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_570.124.06_linux.run
chmod +x cuda_12.4.0_570.124.06_linux.run

# インストーラーを実行します。このステップには数分かかり、インタラクティブな入力が必要です。
sudo sh cuda_12.4.0_570.124.06_linux.run

# 環境変数を ~/.bashrc に追加します。
export PATH="$PATH:/usr/local/cuda-12.8/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-12.8/lib64"
source ~/.bashrc

# インストールを確認します。
nvcc -V
nvidia-smi
説明

インストーラーは CUDA 12.4 をダウンロードしますが、環境変数のパスには cuda-12.8 が記載されています。これはソース構成を反映したものです。インストールディレクトリが異なる場合は、パスを適宜調整してください。

補助ソフトウェアのインストール(任意)

uv は Python 仮想環境および依存関係管理ツールであり、複数のモデルを実行するクラスターで有用です。詳細については、「uv のインストール」をご参照ください。

# uv をインストールします。デフォルトでは、uv は ~/.local/bin/ にインストールされます。
curl -LsSf https://astral.sh/uv/install.sh | sh

# ~/.bashrc に uv を PATH に追加します。
export PATH="$PATH:~/.local/bin"
source ~/.bashrc

# 仮想環境を作成します。
uv venv myenv --python 3.12 --seed
source myenv/bin/activate

仮想環境を有効化した後に CUDA の環境変数が無効になる場合(例: nvccnvidia-smi が見つからない)、アクティベーションスクリプトに CUDA のパスを追加してください:

# myenv/bin/activate を編集し、既存の export PATH 文の後に以下の行を追加します:
export PATH="$PATH:/usr/local/cuda-12.8/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-12.8/lib64"

必要なパッケージをインストールします:

# vLLM および ModelScope をインストールします。
uv pip install vllm==0.7.2
uv pip install modelscope

# GPU モニタリングツールをインストールします(任意)。nvidia-smi を使用することもできます。
uv pip install nvitop

QwQ-32B モデルおよびベンチマークスクリプトのダウンロード

# システムディスクの空き容量不足を回避するため、モデルを /data にダウンロードします。
mkdir -p /data/Qwen/QwQ-32B
cd /data/Qwen/QwQ-32B
modelscope download --model Qwen/QwQ-32B --local_dir .

# (任意)データセットをダウンロードします。
wget https://www.modelscope.cn/datasets/gliang1001/ShareGPT_V3_unfiltered_cleaned_split/resolve/master/ShareGPT_V3_unfiltered_cleaned_split.json

# git が未インストールの場合はインストールします。
apt update
apt install git -y

# ベンチマークスクリプト用に vLLM リポジトリをクローンします。
git clone https://github.com/vllm-project/vllm.git

ステップ 4:ベンチマークの実行

vLLM サーバーの起動

vllm serve /data/Qwen/QwQ-32B/ \
  --host 127.0.0.1 \
  --port 8080 \
  --tensor-parallel-size 2 \
  --trust-remote-code \
  --served-model-name qw \
  --gpu-memory-utilization 0.95 \
  --enforce-eager \
  --max-num-batched-tokens 8192 \
  --max-model-len 8192 \
  --enable-prefix-caching

ベンチマークの実行

python3 ./vllm/benchmarks/benchmark_serving.py \
  --backend vllm \
  --served-model-name qw \
  --model /data/Qwen/QwQ-32B \
  --dataset-name random \
  --random-input 1024 \
  --random-output 4096 \
  --random-range-ratio 1 \
  --max-concurrency 4 \
  --num-prompts 10 \
  --host 127.0.0.1 \
  --port 8080 \
  --save-result \
  --result-dir /data/logs/ \
  --result-filename QwQ-32B-4-1-4.log

結果の確認

以下の画像は、ベンチマーク出力の例を示しています。

image