WSL2×RTX5090でTensorRT-LLMビルド記録と推論時の課題
概要
⚠️ この記事は2025年10月時点での構築記録です。
🚨 重要: この記事はTensorRT-LLM 1.2.0rc1のビルドとエンジン作成には成功しましたが、RTX 5090(SM120)での推論実行には失敗した記録です。推論を実現したい場合は、NGC Docker環境(TensorRT-LLM 1.0.0rc2)またはvLLM 0.11.0の使用を推奨します。
WSL2 Ubuntu 24.04 × RTX 5090環境でTensorRT-LLM 1.2.0rc1をCMakeビルドした実践記録です。PyTorch 2.8.0へのアップデートを試行しましたが、ABI互換性の問題により失敗。最終的にPyTorch 2.6.0でビルドとエンジン作成は成功しましたが、推論実行時にSM120カーネル未実装によりエラーが発生しました。
失敗した試行も含めた記録として、同じような問題に遭遇した方の参考になれば幸いです。Docker利用と比較して手間はかかりますが、より細かいカスタマイズが可能です。
注意: 技術環境は刻々と変化するため、この手順が将来も有効である保証はありません。最新情報は公式ドキュメントを必ず確認してください。
環境仕様
- OS: Windows 11 + WSL2 Ubuntu 24.04
- GPU: NVIDIA GeForce RTX 5090 (32GB VRAM)
- CPU: Intel Core i7-13700
- RAM: 64GB
- CUDA: 12.4
- TensorRT: 10.8.0
- Python: 3.10
事前準備
1. 必要な依存関係のインストール
# 基本パッケージの更新
sudo apt update && sudo apt upgrade -y
# ビルドツールのインストール
sudo apt install -y build-essential cmake git wget curl
# CUDA開発ツール
sudo apt install -y cuda-toolkit-12-4
# Python開発環境
sudo apt install -y python3-dev python3-pip python3-venv
# その他必要なライブラリ
sudo apt install -y libnccl-dev libmpi-dev libopenmpi-dev
※「apt」でCUDA Toolkitをインストールする場合は、Ubuntu標準リポジトリのバージョンが導入されます。NVIDIA公式最新版や公式リポジトリからインストールする場合は、手順やパス等が異なる場合があるのでご注意ください。
2. TensorRTのインストール
# TensorRT 10.8.0をダウンロード(NVIDIA Developer Portalから)
wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/10.8.0/tars/tensorrt-10.8.0.0.linux.x86_64-gnu.cuda-12.4.tar.gz
# 展開
tar -xzf tensorrt-10.8.0.0.linux.x86_64-gnu.cuda-12.4.tar.gz
sudo cp -r TensorRT-10.8.0.0 /opt/tensorrt
※TensorRTのダウンロードにはNVIDIA Developer Portalへのログイン(登録)が必要です。取得にはアカウント作成が必要となります。
3. 環境変数の設定
# ~/.bashrcに追加
echo 'export TENSORRT_DIR=/opt/tensorrt' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$TENSORRT_DIR/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export PATH=$TENSORRT_DIR/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
ビルド手順
1. リポジトリのクローン
git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
# 注意: v1.2.0rc1以降のバージョンではRTX 5090 (SM120)の
# カーネル実装が不完全なため、推論時にエラーが発生します
git checkout v1.2.0rc1 # または main
2. Python仮想環境の作成
python3 -m venv tensorrt_llm_env
source tensorrt_llm_env/bin/activate
pip install --upgrade pip
3. Python依存関係のインストール
pip install torch==2.6.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install transformers datasets accelerate
pip install tensorrt
主要なエラーと解決策
エラー1: UCX設定ファイルのパスエラー
エラーメッセージ:
CMake Error: Imported target "ucx::ucp" includes non-existent path "/usr/lib/include"
原因: UCXライブラリのCMake設定ファイルに存在しないパスが含まれている
解決策:
# UCX設定ファイルを修正
sudo sed -i 's|/usr/lib/include|/usr/include|g' /usr/lib/cmake/ucx/ucx-config.cmake
sudo sed -i 's|/usr/lib/include|/usr/include|g' /usr/lib/cmake/ucx/ucx-targets.cmake
エラー2: PyTorch 2.8.0アップデート試行とダウングレード
初期の試行: RTX 5090の完全サポートのためPyTorch 2.8.0へのアップデートを試行
エラーメッセージ:
CMake Error at CMakeLists.txt:643 (parse_make_options):
Function invoked with incorrect arguments
追加で発生したエラー:
undefined symbol: _ZN3c1019UndefinedTensorImpl10_singletonE
Cannot import extension: xformers/flash-attn unreadable
NVIDIA GeForce RTX 5090 with CUDA capability sm_120 is not compatible
原因:
- PyTorch 2.8.0のABI変更による互換性問題
- CUDA toolkitやTensorRT-LLMのC++バイナリとのABI・連携不一致
- WSL2 Ubuntu 24.04環境での依存関係の競合
解決策(最終的にダウングレード):
# PyTorch 2.6.0にダウングレード(安定版)
pip uninstall torch torchvision torchaudio
pip install torch==2.6.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
判断理由:
- CMake/ABIフラグ(_GLIBCXX_USE_CXX11_ABI)とPyTorchバイナリの合致が最優先
- TensorRT-LLMのバインディング連携とモデル変換・推論が動作
- 現時点(2025年10月)ではPyTorch 2.6.0+cu124が安定オプション
エラー3: NCCLライブラリが見つからない
エラーメッセージ:
Could not find NCCL
解決策:
# NCCL環境変数を設定
export NCCL_ROOT=/usr
export NCCL_INCLUDE_DIR=/usr/include
export NCCL_LIB_DIR=/usr/lib/x86_64-linux-gnu
エラー4: RTX 5090のCompute Capability警告
エラーメッセージ:
NVIDIA GeForce RTX 5090 with CUDA capability sm_120 is not compatible with the current PyTorch installation.
原因: PyTorch 2.6.0はRTX 5090 (Compute Capability 12.0) を完全サポートしていない
対処法:
- この警告は機能制約であり、TensorRT-LLMの本質機能は動作する
- TensorRT-LLMは独自のCUDAカーネルを使用するため、実際の推論には影響しない
- サーバー推論やモデル変換など、主要ユースケースは全て問題なく使用可能
PyTorch 2.8.0への将来のアップグレード:
- RTX 5090を本格的に活用したい場合は、PyTorch 2.8.0+cu128への挑戦を推奨
- ただし、現時点ではWSL2環境での依存関係の競合により、PyTorch 2.6.0+cu124が安定オプション
CMake設定オプション
RTX 5090最適化設定
cd cpp/build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_ARCHITECTURES='90' \
-DTRT_ROOT=$TENSORRT_DIR \
-DTRT_LIB_DIR=$TENSORRT_DIR/lib \
-DTRT_INCLUDE_DIR=$TENSORRT_DIR/include \
-DENABLE_MULTI_DEVICE=OFF \
-DENABLE_MPI=OFF \
-DPYTORCH_DIR=$(python -c "import torch; print(torch.__path__[0])") \
-DTORCH_CUDA_ARCH_LIST="8.0;8.6;8.9;9.0" \
-DCMAKE_CXX_STANDARD=17
重要なポイント:
-
CMAKE_CUDA_ARCHITECTURES='90': RTX 5090のCompute Capability指定 -
ENABLE_MULTI_DEVICE=OFF: 単一GPU環境でのビルド最適化 -
ENABLE_MPI=OFF: MPI不要な場合の無効化
ビルド実行
make -j$(nproc)
Pythonバインディングのビルド
1. build_wheel.pyの実行
cd .. # TensorRT-LLMのルートディレクトリに戻る
python scripts/build_wheel.py \
--trt_root $TENSORRT_DIR \
--cuda_architectures 90 \
--clean
2. 生成されたwheelのインストール
pip install dist/tensorrt_llm-0.19.0-*.whl
動作検証
1. インストール確認
python -c "import tensorrt_llm; print('TensorRT-LLM version:', tensorrt_llm.__version__)"
2. 利用可能なコマンドの確認
# モデル変換コマンド
trtllm-build --help
# 推論サーバー起動コマンド
trtllm-serve --help
3. GPU情報の確認(✅ 成功)
import tensorrt_llm
import torch
# GPU情報の確認
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"GPU count: {torch.cuda.device_count()}")
print(f"Current GPU: {torch.cuda.get_device_name(0)}")
4. 実際の推論実行(❌ 失敗)
エラー内容:
RuntimeError: [TensorRT-LLM][ERROR] Assertion failed: Masked MHA is not supported on Hopper+ (/TensorRT-LLM/cpp/tensorrt_llm/kernels/gptKernels.cu:187)
CUDA ERROR: invalid resource handle
原因:
RTX 5090 (SM120) 向けのCUDAカーネルがTensorRT-LLM 1.2.0rc1では未実装のため、推論時にエラーが発生します。
対処法:
- NGC Docker環境でTensorRT-LLM 1.0.0rc2を使用(公式検証済み)
- TensorRT-LLM v1.3.0以降のリリース待機
- vLLM 0.11.0等の代替フレームワークの使用
ビルド時間とパフォーマンス
ビルド時間
- C++ライブラリ: 約45分(16コア並列ビルド)
- Pythonバインディング: 約15分
- 総時間: 約1時間
メモリ使用量
- ビルド時最大メモリ: 約12GB
- 最終バイナリサイズ: 約2.5GB
トラブルシューティング
よくある問題と解決策
-
プロキシ設定の影響
# プロキシ設定を無効化 unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY -
権限エラー
# ビルドディレクトリの権限確認 sudo chown -R $USER:$USER . -
依存関係の競合
# 仮想環境を再作成 deactivate rm -rf tensorrt_llm_env python3 -m venv tensorrt_llm_env source tensorrt_llm_env/bin/activate※仮想環境の削除は必ず仮想環境のあるディレクトリで「rm -rf ./tensorrt_llm_env」などパスを明示して実行するか、仮想環境はホームディレクトリ等リポジトリ外で作成すると安全です。
参考資料
まとめ
WSL2 Ubuntu 24.04環境でRTX 5090を使用したTensorRT-LLM 1.2.0rc1の自力ビルドとエンジン作成には成功しましたが、推論実行時にSM120(Compute Capability 12.0)非対応によるエラーが発生し、実用レベルの動作は確認できませんでした。
主なポイントは:
- ビルド成功: UCX設定ファイルの修正でビルド完了
- PyTorchバージョンの調整: 2.8.0試行→2.6.0ダウングレードでABI互換性を確保
- エンジン作成成功: Qwen2.5-7Bのエンジンファイル生成完了
- 推論失敗: SM120カーネル未実装により推論時にCUDAエラー発生
推論失敗の詳細
- エラー内容:
invalid resource handle (GPT Attention Plugin)、CUDA ERROR: 35 - 根本原因: TensorRT-LLM 1.2.0rc1はSM120カーネルが未実装
- 回避策: NGC Docker 1.0.0rc2の使用、またはv1.3.0以降のリリース待機
重要な判断ポイント
PyTorch 2.8.0へのアップデート試行とダウングレード:
- 当初はRTX 5090の完全サポートのためPyTorch 2.8.0へのアップデートを試行
- しかし、WSL2環境での依存関係の競合により「undefined symbol」や「xformers/flash-attn unreadable」エラーが発生
- 最終的にPyTorch 2.6.0+cu124へダウングレードし、TensorRT-LLMのバインディング連携とモデル変換・推論が実用レベルで動作
技術的な背景:
- CUDAとPyTorch、TensorRT-LLMバイナリの「ABI完全一致が超重要」
- CMake/ABIフラグ(_GLIBCXX_USE_CXX11_ABI)とPyTorchバイナリの合致が最優先の技術要件
- PyTorch警告(sm_120未サポート等)は「機能制約」であり、TensorRT-LLMの本質機能は動作
今後の展望と推奨事項
現時点での推奨アプローチ(2025年10月)
-
vLLM 0.11.0の使用(推奨)
- RTX 5090で即座に動作(38.40 tokens/sec)
- OpenAI互換API提供
- WSL2環境で安定動作
-
NGC Docker環境の使用
- TensorRT-LLM 1.0.0rc2が公式検証済み
- Qwen2.5-7B推論成功実績あり
- NVFP4量子化対応
-
TensorRT-LLM v1.3.0以降のリリース待機
- SM120完全対応の予定
- ネイティブビルド環境での推論実現
長期的な展望
- PyTorch 2.8.0へのアップグレード: RTX 5090の完全サポート(依存関係の競合解決後)
- NVFP4量子化の活用: より高速な推論(Docker環境で実現可能)
- マルチGPU対応: 複数RTX 5090での分散推論
補足: RTX 5090での推論成功事例
本記事のネイティブビルド環境では推論に失敗しましたが、以下の方法で推論に成功しています:
方法1: vLLM 0.11.0(最も簡単)
- 所要時間: 約1時間
- 推論速度: 38.40 tokens/sec
- VRAM使用量: 27.19GB
- OpenAI互換API対応
方法2: NGC Docker + TensorRT-LLM 1.0.0rc2
- 所要時間: 約3時間(Docker DL含む)
- チェックポイント変換: 1分41秒
- エンジンビルド: 1分5秒
- 推論: 成功(日本語テキスト生成確認)
詳細はこちらの記事を参照してください。
Discussion