電通総研 テックブログ

電通総研が運営する技術ブログ

DGX Spark互換機(Dell Pro Max with GB10)でvLLMを構築してみた!

こんにちは、クロスイノベーション本部リーディングエッジテクノロジーセンターの山下です。

先日、会社でDGX Sparkの互換機である Dell Pro Max with GB10 を購入しました。

128GBのユニファイドメモリ(CPU/GPU共有)を搭載したこのマシンは、LLMサーバの性能評価に最適な環境を提供してくれます。
今回はこのマシンにvLLMサーバを構築し、OpenAI互換のAPIサーバとして動作させてみました。

初回セットアップ

まず電源を入れるとOSのインストール、ファームウェアのアップデートなどが行われます。
その後DGX OSが起動しました。使用感としては、通常のUbuntuに近い感じで、特に違和感なく使用できました。

デスクトップ画面はこんな感じです。
DGXデスクトップ
ただ、インストールの際に何か失敗していたようで、aptが上手く動かないので以下のコマンドを実施しました。

sudo dpkg --configure -a
sudo apt update
sudo apt full-upgrade

これで、aptも動くようになりました。
今回は環境要因で何か失敗していただけだと思いますが、もし同様の症状が出た場合は試してみてください。

miseとuvのインストール

今回は環境構築にmiseを使用しました。miseは、各種開発関連ツールの管理を行うツールで、複数のプロジェクトで異なる環境を簡単に切り替えることができます。
またグローバル環境も管理できるため、今回のような環境構築にも便利です。

curl https://mise.run | sh
echo "eval \"\$(~/.local/bin/mise activate bash)\"" >> ~/.bashrc

以降の作業では、uvも使用するため、以下のコマンドでuvもインストールしておきます。

mise use uv

vLLMのインストール

vLLMは並列分散処理に対応したLLMサーバです。同時アクセスなどを行っても性能の劣化が比較的少ないのが特徴です。
今回はuvを使用して、vLLMをインストールします。

事前インストール

vLLMをインストールする前に、必要なパッケージをインストールしておきます。

sudo apt update
sudo apt-get install -y cuda-cudart-12-5
sudo apt-get install -y python3.12-dev build-essential

venv環境作成

uvを使用して、venv環境を作成します。以降のコマンドは、ここで作成したvenv環境で実行してください。

mkdir ~/vllm
cd ~/vllm
uv venv -p 3.12 ~/vllm/.vllm
source .vllm/bin/activate

vLLMのインストール

次に、vLLMをインストールします。今回は、GB10に対応したvLLMを使用するため、パッチの適用も行います。
UV_REQUEST_TIMEOUTは、vLLMのインストール時にタイムアウトが発生するのを防ぐために設定しています。

export UV_REQUEST_TIMEOUT=6000
uv pip install vllm \
       --extra-index-url https://wheels.vllm.ai/0.17.1/cu130 \
       --extra-index-url https://download.pytorch.org/whl/cu130 \
       --index-strategy unsafe-best-match
uv pip install 'nvidia-nccl-cu13>=2.29.2' fastsafetensors

vLLMは現在(2026/04/07)DGX SparkのGPU GB10には一部未対応な部分があります。
そこでこちらのパッチを適用して、GB10に対応しているvLLMに修正します。
このパッチは有志の方が作成した非公式のものとなっておりますので利用の際にはご注意ください。

cd ~/vllm/
git clone https://github.com/namake-taro/vllm-custom.git
SITE=$(python3 -c "import site; print(site.getsitepackages()[0])")
cd "$SITE"
patch -p0 < ~/vllm/vllm-custom/patches/vllm_all.patch
patch -p0 < ~/vllm/vllm-custom/patches/flashinfer_cutlass_sfb_layout_fix.patch

パッチ適用後にキャッシュを削除します。

rm -rf ~/.cache/flashinfer
rm -rf ~/.cache/vllm/torch_compile_cache
rm -rf ~/.cache/vllm/torch_aot_compile
rm -rf /tmp/torchinductor_$(whoami)

gpt-oss-120bのvLLMでの実行

次に、gpt-oss-120bをvLLMで実行してみます。gpt-oss-120bはOpenAIが公開しているオープンモデルです。
事前にモデルをダウンロードしておきます。

pip install -U huggingface-hub
mkdir ~/model
cd ~/model
hf auth login
hf download openai/gpt-oss-120b --local-dir .

vocabファイル

gpt-oss-120bを実行するには、vocabファイルが必要になります。
以下のコマンドで、tiktokenのvocabファイルをダウンロードして、環境変数TIKTOKEN_ENCODINGS_BASEにパスを指定します。

mkdir tiktoken_encodings
wget -O tiktoken_encodings/o200k_base.tiktoken "https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken"
wget -O tiktoken_encodings/cl100k_base.tiktoken "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"
export TIKTOKEN_ENCODINGS_BASE=<tiktoken_encodingsのパス>

gpt-oss向けのパッチ

gpt-oss-120bをvLLMで実行していると動いてるように見えるのですが、ログを見ると実際にはエラーが発生しています。
公式にもIssueが報告されています

以下のリポジトリにこの問題を修正するためのパッチが公開されているので、これを適用します。こちらの内容についても有志の方の作成したものとなっておりますので、適用の際には十分に注意をして適用を行ってください。

wget https://raw.githubusercontent.com/sriganesh123/vllm/refs/heads/docker/gptoss-fix-images/docker/gptoss-fix/apply_fix.py
python3 apply_fix.py

また同様の内容が公式へもPull Requestとして提出されています
このPull Requestがマージされるまでは、上記のパッチを適用してgpt-oss-120bをvLLMで実行する必要があります。

gpt-oss-120bをvLLMで実行

export VLLM_MXFP4_BACKEND=marlin
export VLLM_FASTSAFETENSORS_NOGDS=1
export VLLM_MARLIN_USE_ATOMIC_ADD=1
export CUDA_DEVICE_MAX_CONNECTIONS=1
export PYTORCH_ALLOC_CONF=expandable_segments:True
export CUDA_VISIBLE_DEVICES=0

# 先ほどDLしたvocabファイルのパスを指定する
export TIKTOKEN_ENCODINGS_BASE=<tiktoken_encodingsのパス>

# vLLM実行
vllm serve --model <モデルの存在しているパス>  \
           --served-model-name local-vllm  \
           --host 0.0.0.0 \
           --quantization mxfp4 \
           --enable-auto-tool-choice \
           --tool-call-parser openai \
           --reasoning-parser openai_gptoss \
           --load-format fastsafetensors \
           --gpu-memory-utilization 0.80 \
           --kv-cache-dtype fp8 \
           --enable-prefix-caching \
           --max-model-len 131072 \
           --max-num-batched-tokens 32768\
           --max-num-seqs 16 \
           --max-cudagraph-capture-size 32

Open WebUIなどから、OpenAI互換のAPIサーバとして動作しているvLLMにアクセスしてみます。
Open WebUIの画面
問題なく動作していることが確認できました。

まとめ

今回は、DGX Sparkの互換機であるDell Pro Max with GB10にvLLMサーバを構築してみました。
GB10はまだ新しいGPUで、vLLMもまだ完全に対応しているわけではないため、パッチの適用などが必要でしたが、無事に動作させることができました。
今後は、他にも色々なモデルを試してみたり、性能評価を行ってみたいと思います。

私たちは一緒に働いてくれる仲間を募集しています!

電通総研 キャリア採用サイト 電通総研 新卒採用サイト

執筆:@yamashita.tsuyoshi
レビュー:@sato.taichi
Shodoで執筆されました