どんな問題が発生するか?
ComfyUIを使用して画像生成ワークフローを実行している際に、プロセスが突然、予期せず途中で停止してしまう問題が発生します。生成プログレスバーが途中で止まり、最終的な画像が出力されない、またはエラーメッセージもなくUIが応答しなくなる状態です。具体的には以下のような症状が見られます。
- ターミナルやコマンドプロンプトにエラーメッセージが表示されず、単に処理が止まる
- 「Executing…」の状態から進まなくなる
- プログレスバーが50%や75%など、特定のポイントで固まる
- 場合によっては、以下のようなエラーメッセージが断片的に表示されることもあります:
# メモリ関連のエラー例 RuntimeError: CUDA out of memory. # または [WARN] ComfyUI execution stopped unexpectedly. - ブラウザのコンソールにネットワークエラーが表示される(WebSocket接続の切断など)
問題の技術的原因
ComfyUIの画像生成が途中で停止する主な原因は、リソース不足とワークフローの構成問題に大別されます。背後にある技術的な要因は以下の通りです。
- GPUメモリ不足: 複数の高解像度モデル、ControlNet、複数のLoRAを同時使用するなど、メモリ要求の高いノードを組み合わせると、GPUのVRAMが枯渇し、プロセスがクラッシュまたは停止します。エラーメッセージが表示されない場合でも、内部的にメモリ割り当てに失敗している可能性があります。
- システムRAM/VRAMの断片化: 長時間ComfyUIを実行し続けたり、大きなモデルを頻繁に読み込んだりすると、メモリが断片化され、大きな連続メモリブロックの確保に失敗することがあります。
- 特定のカスタムノードのバグや互換性問題: コミュニティで配布されているカスタムノードの中には、特定の条件下でデッドロックや無限ループを引き起こすものがあり、これがワークフローの実行停止を招きます。
- Pythonの再帰深度やスタックオーバーフロー: 非常に複雑でネストの深いワークフロー(特にループ構造を持つもの)を実行すると、Pythonの再帰制限に引っかかり、停止することがあります。
- WebSocket/通信タイムアウト
フロントエンド(ブラウザ)とバックエンド(ComfyUIサーバー)間の通信が長時間の生成処理中にタイムアウトし、接続が切断されると、見かけ上処理が停止したように見えます。
具体的な解決手順
解決法1: GPUメモリ使用量の最適化と監視
まずは、最も一般的な原因であるGPUメモリ不足に対処します。以下のコマンドで現在のメモリ使用状況を確認し、設定を調整します。
# NVIDIA GPUの場合、メモリ使用量を監視
nvidia-smi -l 1 # 1秒ごとに更新されるメモリ使用状況を表示
ComfyUIの起動時に、メモリ関連の最適化オプションを追加します。
# ComfyUIの起動コマンドにオプションを追加
python main.py --lowvram --normalvram
# または、より積極的なメモリ節約には
python main.py --lowvram
# 8GB以下のGPUでは、--medvramを試す
python main.py --medvram
さらに、ワークフロー内で以下の対策を実施します:
- 「KSampler」ノードの「steps」数を一時的に減らして試す(例: 20→15)
- 高解像度生成を行う場合は、まず小さな解像度で生成し、「Latent Upscale」や「Image Upscale」ノードで段階的に拡大する
- 複数のControlNetを使用している場合は、一つずつ無効化して原因を特定する
解決法2: 問題のあるノードの特定とワークフローの簡素化
カスタムノードが原因の場合、以下の手順で問題を切り分けます。
# カスタムノードを一時的に無効化して起動する方法
# custom_nodesフォルダ内の疑わしいノードフォルダをリネームまたは別場所に移動
# または、最小構成でComfyUIを起動
python main.py --disable-custom-nodes
ワークフロー側の対処法:
- 現在のワークフローをJSON形式でエクスポートし、バックアップ
- ノードを一つずつ削除またはバイパスしながら、最小限の構成で実行テストを行う
- 特に以下の種類のノードに注意:
- 動画生成関連ノード(VDECoder, AnimateDiffなど)
- 複雑なマスク処理や複数画像の合成ノード
- ループ構造を持つカスタムノード
- 問題が再現しない最小構成を見つけたら、そこからノードを一つずつ追加して原因ノードを特定
解決法3: Python環境と依存関係の健全性確認
Python環境やライブラリの競合が原因で停止する場合があります。
# ComfyUIの依存関係を再インストール
cd ComfyUI
pip install -r requirements.txt --upgrade
# PyTorchとCUDAのバージョン互換性を確認
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'CUDA version: {torch.version.cuda}')"
# キャッシュのクリア(モデルキャッシュなど)
# ComfyUIフォルダ内の以下のキャッシュを削除またはリネーム
# - `comfy` フォルダ内のキャッシュファイル
# - `temp` フォルダ(存在する場合)
仮想環境を使用している場合は、新規に環境を作り直すことも有効です。
# 仮想環境の再作成例(condaの場合)
conda create -n comfyui_new python=3.10
conda activate comfyui_new
cd /path/to/ComfyUI
pip install -r requirements.txt
解決法4: 実行設定とタイムアウト値の調整
長時間実行されるワークフローに対して、各種タイムアウト設定を調整します。
# extra_model_paths.yaml またはコマンドライン引数で設定を調整
# 例: タイムアウト値を延長(該当設定があれば)
# ComfyUIの起動オプションとして、以下のようなものを試す
python main.py --listen 0.0.0.0 --port 8188 --enable-cors-header
# あるいは、直接ソースコードを修正する場合
# ComfyUIの実行エンジンに関するタイムアウト設定を探して調整
ブラウザ側の対策:
- ブラウザの開発者ツールを開き、ネットワークタブでWebSocket接続の状態を確認
- ブラウザのキャッシュをクリアする
- 別のブラウザ(Chrome, Firefox, Edge)で試す
- ブラウザ拡張機能を一時的に無効化して試す
解決法5: システム全体のリソース管理とログの詳細確認
オペレーティングシステムレベルでのリソース制限が原因の場合があります。
# Linuxの場合、メモリとスワップの確認
free -h
# スワップ領域が不足している場合は追加
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Windowsの場合、ページファイルのサイズを自動管理に設定または増加
# (システムのプロパティ → 詳細設定 → パフォーマンス → 詳細設定 → 仮想メモリ)
# ComfyUIの詳細ログを有効化して起動
python main.py --verbose
詳細なログ出力を有効にし、停止直前のメッセージを確認します。
# カスタムのログ設定を追加する場合
# ComfyUIフォルダ内に以下の内容でdebug_log.pyを作成
import sys
import traceback
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('comfyui_debug.log'),
logging.StreamHandler(sys.stdout)
]
)
まとめ
ComfyUIの画像生成が途中で停止する問題は、多くの場合GPUメモリの不足または特定のカスタムノードの不具合に起因しています。確実な解決のためには、以下の手順で体系的にトラブルシューティングを行うことをお勧めします。
- リソース監視:
nvidia-smiやタスクマネージャーでGPU/CPUメモリ使用率を確認 - 最小構成テスト: カスタムノードを無効化した状態で、シンプルなワークフローからテスト開始
- 段階的拡張: 問題が発生しない最小構成から、ノードを一つずつ追加して原因を特定
- 環境整備: Python環境、依存ライブラリ、キャッシュの健全性を確認
- ログ分析: 詳細ログを有効化し、停止直前のエラーメッセージを捕捉
これらの対策を行っても問題が解決しない場合は、ComfyUIのGitHubリポジトリのIssueで同様の問題を検索したり、使用しているカスタムノードのディスカッションページを確認したりすることをお勧めします。また、ワークフローの複雑さを軽減し、大きな画像生成は段階的に行うなど、根本的なワークフロー設計の見直しも有効な予防策となります。
関連するトピックとして、「ComfyUIでOut of Memoryエラーが発生する場合の対処法」や「大規模画像生成のためのComfyUIワークフロー最適化」についても、リソース管理の観点から合わせて学習されることをお勧めします。