AMD統合GPUのメモリ不足エラー「CUDA out of memory」の切り分け方ガイド
本記事は、AMDの統合GPU(iGPU)を用いてComfyUIやPyTorchなどのローカルAIアプリケーションを動作させる際に発生する「CUDA out of memory」エラーの具体的な切り分け方法を解説しています。特に、ROCm環境であるにもかかわらず、エラーメッセージが歴史的な経緯から「CUDA」と表示される点や、専用VRAMの増設ができない状況でのメモリ不足の判断に焦点を当てています。統合GPUの最大の特徴であり、混乱の原因となるのが、システムメモリ(RAM)を「GPU用(UMA Frame Buffer)」と「アプリ用」という二つの領域で共有している点です。このため、片方のメモリを増やすと、もう一方の利用可能なメモリが減少するという構造的な制約があります。メモリ不足のパターンは主に三つに分類されます。一つ目は「GPU用不足」で、この場合UMAの増設やモデル・解像度の引き下げが対処法となります。二つ目は「アプリ用不足」で、これはシステム全体が重くなったりクラッシュしたりする症状であり、UMAを減らすか、他のアプリケーションを終了させる必要があります。三つ目は両方が不足する場合で、根本的な同時起動の抑制が求められます。重要なのは、「UMAを最大まで上げれば良い」という誤解を避け、用途に応じて最適なメモリ配分を見極めることです。例えば、画像生成がメインであればUMAを高く設定する出発点(例:SDXLで32GB)が目安となりますが、LLMなど他の用途を考慮すると、UMAを下げてアプリ用の空きRAMを確保する判断も不可欠です。エラー発生時には、まず他の重いアプリの終了、解像度・モデル規模の縮小といった基本的な対策から試み、それでも解決しない場合にのみ、BIOS設定でのUMAの増減を検討することが推奨されています。これにより、単なる「環境の故障」と誤認されがちなメモリ問題を、配分の問題として解決に導く具体的な指針を提供しています。
背景
近年、高性能なAIモデル(画像生成や大規模言語モデルなど)をローカル環境で動かすことが一般化し、高性能なGPUが求められています。しかし、AMDの統合GPU(iGPU)を使用する場合、専用VRAMの増設が難しいため、システムメモリ(RAM)をGPUとOSが共有する「UMA(Unified Memory Architecture)」という仕組みの理解が必須となり、これがトラブルシューティングの前提知識となっています。
重要用語解説
- UMA(Unified Memory Architecture): 統合GPUがシステムメモリ(RAM)をGPU用とアプリ用で共有する仕組み。専用VRAMと異なり、BIOS設定でGPUに予約するメモリ量を調整できるのが特徴です。
- ROCm: AMDが提供する、ディープラーニング計算のためのソフトウェアプラットフォーム。NVIDIAのCUDAに相当し、AMD環境でAIモデルを動かすための基盤技術です。
- CUDA out of memory: GPUのメモリが不足していることを示すエラーメッセージ。ROCm環境でも、PyTorch側の歴史的な表記の慣習により、このメッセージが出ることがあります。
- 影響: 本記事の知識は、ローカルAI環境構築におけるボトルネックの特定に直結します。ユーザーは、単に「メモリが足りない」と諦めるのではなく、UMAの配分という視点から問題を切り分けられるようになり、より安定したAIワークフローを構築することが可能になります。これは、高性能な個人向けAI開発の普及に大きく貢献します。