章 GPUベース環境におけるOS 、Docker、Kubernetesのチューニング
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
高度に最適化されたGPUコードやライブラリがあっても、システムレベルのボトルネックが大規模AIトレーニングの性能を制限することがある。最速のGPUも、データや命令を供給する環境次第で真価を発揮できない。本章では、GPUの性能を最大限に引き出すためのオペレーティングシステムとコンテナランタイムの調整方法を解説する。
まず、GPUソフトウェアスタックの基礎を探る。次に、NUMAアフィニティやヒュージページといった主要なCPUとメモリの最適化に踏み込む。これらは、ストレージからCPUを経てGPUへデータが効率的に流れることを保証する。並行して、パーシステンスモード、マルチプロセスサービス(MPS)、マルチインスタンスGPU(MIG)パーティションといった重要なGPUドライバ設定について議論する。これらはオーバーヘッドを減らし、リソースを効果的に同期させることで、GPUの最大利用率を維持するのに役立つ。
NVIDIA Container Toolkit、Container Runtime、Kubernetes Topology Manager、Kubernetes GPU Operatorといった解決策を活用すれば、GPU環境向けの統一された高度に最適化されたソフトウェアスタックを作成できる。これらの解決策は、単一ノードからマルチノードGPU環境まで、効率的なリソース割り当てとワークロードスケジューリングを実現し、GPU能力を完全に活用することを保証する。
この過程で、これらの最適化が重要な理由に対する直感的な理解が得られる。本質的に、それらは遅延を最小化し、スループットを最大化し、GPUが常にデータで供給されピーク性能で動作することを保証する。その結果、トレーニングと推論の両ワークロードにおいて、大幅な性能向上と高いグッドスループット率を実現する堅牢で拡張性のあるシステムが構築される。
オペレーティングシステム
オペレーティングシステム(OS)は、全てが動作する基盤である。GPUサーバは通常、Ubuntu Server LTSやRed HatなどのLinuxディストリビューションを、最新のGPUハードウェアをサポートする更新済みカーネルと共に実行する。NVIDIAドライバーはカーネルモジュールをインストールし、/dev/nvidia0 、/dev/nvidia1 、/dev/nvidia2といったデバイスファイルを生成する。各GPUごとに1つずつである。ドライバーはまた、ドライバー制御操作用の/dev/nvidiactl 、統一仮想メモリ用の/dev/nvidia-uvm 、モード設定とバッファ管理用の/dev/nvidia-modeset も作成する。
OSはCPUスケジューリング、メモリ、ネットワーク、ストレージを管理する。これらは全てGPUスループット向上のために調整されるべきだ。したがってOSはGPUタスクへの干渉を避けるよう設定される必要がある。例えばGPUノードではスワッピングを無効化するか、vm.swappiness を0に設定し、GPUワークロードを妨げる可能性のあるOS主導のメモリスワッピングを回避すべきだ。パフォーマンスエンジニアの役割の一部は、これらのOS設定を調整しGPUを最大性能で動作させることにある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access