2024年以降、NVIDIAのドライバが大きく再構築されました。
特にr560以降では、オープンGPUカーネルモジュールがデフォルトとなり、自動セットアップを簡素化するためのnvidia-driver-assistantユーティリティが登場しました。
本記事はインストール手順書ではなく、機械学習向けのGPUサーバを管理するために、ドライバ構造、「open / server / proprietary」ドライバの違い、そしてFabric Managerが必要となる条件を個人的に整理したものです。 内容に誤りや改善点があれば、コメント等でご指摘いただけると嬉しいです。
ドライバアーキテクチャの概要 #
r580時点で、NVIDIAドライバスタックは「2つのカーネル空間実装」と「1つのユーザー空間コンポーネント」で構成されています。
| 区分 | コンポーネント | 説明 |
|---|---|---|
| カーネル空間 | Open GPU Kernel Modules | Turing以降のGPU向けのオープンソース実装。 MIT/GPLv2デュアルライセンス。 |
| Proprietary GPU Kernel Modules | Maxwell〜Volta向けのクローズドソース実装。 | |
| ユーザー空間 | CUDA Driver / Runtime | CUDA APIやGPU管理機能を提供するプロプライエタリのバイナリ。 |
- GPUの世代に応じて、オープンまたはプロプライエタリのカーネルモジュールを使用。
- CUDAドライバおよびランタイムはユーザー空間で動作し、プロプライエタリ。
nvidia-driver-serverパッケージはNVSwitchベースのシステム向け。NVSwitchを完全にサポートするためには、Fabric ManagerやNSCQといった追加コンポーネントのインストールが必要で、プロプライエタリなカーネルモジュールに依存。
Open / Server / Proprietary パッケージの比較 #
| パッケージ | モジュールタイプ | 用途 | 備考 |
|---|---|---|---|
| nvidia-open | open | 標準環境向け(Turing+) | openに特化 |
| nvidia-driver | open(デフォルト) / proprietary(任意) | 汎用環境向け | --module-flavorで切替可 |
| nvidia-driver-server | proprietary | NVSwitch / HGXシステム向け | Fabric Managerを利用するために必須 |
| cuda-drivers | proprietary | CUDAツールキット含む実行/開発環境 | ドライバ+ツールキットを含む構成 |
| cuda-runtime | proprietary | 計算専用ノード(グラフィックスなし) | グラフィックスなしで実行ライブラリのみ |
CUDAドライバはプロプライエタリ #
CUDAドライバ(cuda-driver)はクローズドソースのコンポーネントです。
カーネルモジュールがオープンソース化されましたが、libcuda.soやlibnvidia-ml.soなどのユーザー空間バイナリはプロプライエタリです。
Fabric Managerが必要となる場合とその理由 #
Fabric ManagerはNVSwitchベースのシステムでのみ必要となります。
Fabric Managerを利用するためには、nvidia-driver-serverの使用が必須となり、nvidia-openや標準のnvidia-driverではFabric Managerがサポートされていません。
PCIe GPU(例:H100 PCIe、L40S)では、Fabric Managerは不要です。
NVLinkとNVSwitchの違い #
| 種別 | 名称 | 機能 |
|---|---|---|
| リンク層 | NVLink | 2〜4 GPU構成で使用されるポイントツーポイント接続 |
| ファブリック層 | NVSwitch | 8 GPU以上を全結合するスイッチ |
NVLinkのみのシステムではFabric Managerは不要ですが、NVSwitchシステムでは必須となります。
nvidia-driver-assistantユーティリティ #
r580で登場したnvidia-driver-assistantは、GPUおよびOSバージョンを自動検出し、適切なドライバ等をインストールします。
sudo apt install nvidia-driver-assistant
nvidia-driver-assistant --install
# プロプライエタリモジュールを明示的に指定する場合:
sudo nvidia-driver-assistant --install --module-flavor closed選定ルール #
NVSwitch ベース(HGX / DGX) #
- nvidia-driver-server
- nvidia-fabricmanager
- cuda-drivers(ML用途では必須)
非 NVSwitch(通常の ML 計算ノード) #
- nvidia-driver(またはnvidia-open)
- cuda-drivers
コンテナ環境(Docker / Kubernetes / Slurm) #
- ホスト
- nvidia-driver(またはnvidia-open)
- cuda-drivers
- コンテナ
- cuda-runtime(またはcuda-drivers)
トラブルシューティング #
CUDA runtime error (802): system not yet initialized #
このエラーが、NVSwitchベースのシステムでFabric Managerサービスがインストールされていない場合に発生することがあります。
NVSwitchインターコネクトの初期化と管理に必要となるので、Fabric Managerが正しくインストールされているか確認してください。
参考文献 #
詳細なインストール手順および最新のパッケージコマンドについては、NVIDIA公式ドキュメントを参照してください。 Driver Installation Guide