【世界最速級】NVIDIA GB10 (Blackwell) でPyTorchをネイティブ動作させるビルド完全ガイド

ASUS Ascent GX10

ついに手元に届いた NVIDIA GB10 (Blackwellアーキテクチャ) 搭載のモンスターマシン、ASUS Ascent GX10

しかし、この最新鋭GPUを動かそうとした瞬間、大きな壁にぶつかりました。

「PyTorchが動かない」

今回は、まだ世の中にバイナリが存在しない最新GPU「GB10」で、PyTorchをネイティブ動作させるまでの環境構築ログを残します。同じくBlackwell世代のGPU(B100/B200など)を扱うことになったエンジニアの参考になれば幸いです。

直面した問題:No Kernel Image

通常通り pip install torch で環境を作り、GPUを使おうとすると以下のエラーが発生しました。

Python

RuntimeError: CUDA error: no kernel image is available for execution on the device

原因:Compute Capability 12.1 未対応

現在配布されているPyTorch(Nightly版含む)のバイナリは、H100世代(Hopper, CC 9.0)までしか対応していません。

GB10のCompute Capabilityは 「12.1」

PyTorch側に「このGPU用の翻訳機(カーネル)」が入っていないため、GPUを認識しているのに命令が送れないという状態でした。

解決策はただ一つ。「ソースコードからビルドし、GB10専用のPyTorchを作る」 ことです。


環境スペック

  • Server: ASUS Ascent GX10
  • GPU: NVIDIA GB10 (Blackwell Architecture)
  • CPU: Grace CPU (ARM64 / aarch64)
  • OS: Ubuntu LTS
  • CUDA: 12.6

ビルド手順完全ログ

今回は、CPUがARMアーキテクチャであることも考慮し、Intel系ライブラリ(MKL)を回避しつつビルドを行いました。

1. 既存環境のクリーンアップ

まず、中途半端に入っているPyTorch関連を全て削除します。

Bash

pip uninstall -y torch torchvision torchaudio transformers accelerate

2. ビルドツールの準備

ビルドに必要な cmakeninja、そしてARM環境用の数値計算ライブラリ OpenBLAS を導入します。

※ Grace CPUなどのARM環境では、Intel MKLが使えないため OpenBLAS が必須です。

Bash

# システム側へのインストール
sudo apt update
sudo apt install -y libopenblas-dev build-essential python3.12-dev

# Pythonビルドツール
pip install cmake ninja

3. PyTorch本体のビルド

ここが最大の山場です。環境変数 TORCH_CUDA_ARCH_LIST="12.1" を指定することで、Blackwellアーキテクチャへの対応を強制します。

また、リンクエラーを回避するため pip install . ではなく setup.py develop を使用しました。

Bash

# 作業ディレクトリへ移動
mkdir -p ~/models
cd ~/models

# ソースコードの取得(再帰的にサブモジュールも取得)
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch

# 前回のビルド残骸がある場合はクリア
python setup.py clean

# === 環境変数の設定(最重要) ===
# 仮想環境パスの指定
export CMAKE_PREFIX_PATH=$VIRTUAL_ENV

# GB10 (Blackwell) のCompute Capabilityを指定
export TORCH_CUDA_ARCH_LIST="12.1"

# コンパイルオプション(ビルドサイズ圧縮など)
export TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
export REL_WITH_DEB_INFO=1

# ARM環境向け設定(MKLを無効化)
export USE_MKL=0
export USE_MKLDNN=0
export USE_QNNPACK=0

# === ビルド実行 (Develop Mode) ===
python setup.py develop

※マシンスペックによりますが、15分〜30分程度かかります。最後に Finished processing dependencies for torch と出れば成功です。

4. TorchVisionのビルド

PyTorch本体を自前ビルドした場合、それに依存する torchvision も同じ設定でビルドしないとバージョン不整合で動きません。

Bash

cd ~/models

# ソースコード取得
git clone https://github.com/pytorch/vision
cd vision

python setup.py clean

# 環境変数はPyTorchと同じ設定を引き継ぐ(念のため再掲)
export CMAKE_PREFIX_PATH=$VIRTUAL_ENV
export TORCH_CUDA_ARCH_LIST="12.1"
export TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
export REL_WITH_DEB_INFO=1

# ビルド実行
python setup.py develop

5. 周辺ライブラリの復旧

最後に、Hugging Face Transformersなどを入れ直して完了です。

Bash

pip install git+https://github.com/huggingface/transformers.git
pip install accelerate

動作検証

緊張の一瞬です。Pythonを起動し、GPUでテンソル計算を行ってみます。

Python

import torch
print(f"CUDA Available: {torch.cuda.is_available()}")
print(f"Device Name: {torch.cuda.get_device_name(0)}")
# ランダムなテンソルをGPUで生成
print(torch.randn(1).cuda())

実行結果:

Plaintext

CUDA Available: True
Device Name: NVIDIA GB10
tensor([-0.0021], device='cuda:0')

無事、device='cuda:0' での計算に成功しました!

標準バイナリが追いついていない最新ハードウェアでも、適切なアーキテクチャ指定を行えばネイティブ動作させることが可能です。

Blackwell世代のGPUを手にした際は、ぜひこの「CC 12.1ビルド」を試してみてください。

コメント

タイトルとURLをコピーしました