ついに手元に届いた 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. ビルドツールの準備
ビルドに必要な cmake、ninja、そして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ビルド」を試してみてください。


コメント