
Устранение ошибки RuntimeError: comfy-aimdo device is not initialize в comfyui
Для решения проблем с нехваткой памяти при работе с нейросетями и платформой PyTorch часто используется модуль AIMDO (AI Model Dynamic Offloader), который автоматически выгружает часть модели искусственного интеллекта в системную память при переполнении VRAM. Благодаря этому даже на компьютерах с относительно слабыми видеокартами с малым объемом памяти можно запускать крупные модели AI.
В окружении comfyui распределитель памяти AIMDO можно командой:
python -m pip install --upgrade comfy-aimdo
К сожалению, при запуске AI-моделей в comfyui с одновременным использованием AIMDO и ноды MultiGPU (например, для загрузки CLIPTextEncoder в память другой видеокарты) может появляться ошибка RuntimeError: comfy-aimdo device is not initialize:

Она появляется из-за того, что модуль динамической памяти AIMDO при загрузке окружения comfyui инициализирует только одну видеокарту (например, cuda:0), а остальные GPU остаются незарегистрированными.

Для устранения этой ошибки на github-репозитории Comfy-Org рекомендуется использовать один из следующих способов:
- отключить AIMDO, запуская comfyui с ключом disable-dynamic-vram, или highvram, или gpu-only, например:
python main.py --disable-dynamic-vram
python main.py --highvram
python main.py --gpu-only
При этом отключается опция DynamicVRAM, но зато ModelPatcher работает с узлом MultiGPU.
- запускать все вычисления исключительно на видеокарте cuda:0, иначе говоря исключить из workflow узел multi-GPU;
- ждать исправления бага разработчиками;
- пропатчить файл main.py таким образом, чтобы при запуске comfyui определялись все GPUs. Для этого в нем нужно отредактировать раздел, включающий код init_device(…) to init_devices([x, y]), где x, y — номер инициализируемых видеокарт, например, так:
# AIMDO MultiGPU
try:
comfy_aimdo.control.init_devices(visible_ids)
print("✅ comfy-aimdo: init_devices() called successfully for all GPUs")
except AttributeError:
print("init_devices() not available, using fallback...")
for gpu_id in visible_ids:
try:
comfy_aimdo.control.init_device(gpu_id)
print(f"[GPU {gpu_id}] aimdo initialized")
except Exception as e:
print(f"[GPU {gpu_id}] failed: {e}")
except Exception as e:
print(f"init_devices error: {e}")
comfy_aimdo.control.init()
# === Logging ===
try:
if args.verbose == 'DEBUG':
comfy_aimdo.control.set_log_debug()
elif args.verbose in ('CRITICAL', 'ERROR'):
comfy_aimdo.control.set_log_error()
else:
comfy_aimdo.control.set_log_info()
print("✅ aimdo logging level set")
except Exception as e:
print(f"Warning: Could not set aimdo log level: {e} (non-critical)")

При запуске comfyui с таким патчем нужно использовать переменную окружения, настраивающую аллокатор памяти CUDA в PyTorch:
export PYTORCH_CUDA_ALLOC_CONF="backend:cudaMallocAsync,expandable_segments:True"
Благодаря использованию этих параметров увеличивается скорость работы и уменьшается фрагментация VRAM.

Благодаря модификации кода в файле main.py окружения comfyui происходит инициализация всех видеокарт Nvidia:

MultiGPU Core Patching работает:

Правда, в некоторых случаях, вместо картинки генерируется цветовой шум, например, такой:

В скрипт запуска comfyui можно включить и другие параметры для оптимизации работы с видеокартами и их разгона. Для удобства лучше создать отдельный скрипт запуска, например такой (для linux):
python3 -m venv venv && source venv/bin/activate &&
export GPU_MAX_HEAP_SIZE=100
export GPU_MAX_USE_SYNC_OBJECTS=1
export GPU_SINGLE_ALLOC_PERCENT=100
export GPU_MAX_ALLOC_PERCENT=100
export GPU_MAX_SINGLE_ALLOC_PERCENT=100
export GPU_ENABLE_LARGE_ALLOCATION=100
export PYTORCH_CUDA_ALLOC_CONF="backend:cudaMallocAsync,expandable_segments:True,garbage_collection_threshold:0.9"
export CUDA_LAUNCH_BLOCKING=0
export TORCH_USE_CUDA_DSA=0
export CUDA_VISIBLE_DEVICES=0,1,2
export CUDA_MODULE_LOADING=LAZY
sudo nvidia-smi -pm 1
sudo nvidia-smi -i 0 -pl 130
sudo nvidia-smi -i 1 -pl 190
sudo nvidia-smi -i 2 -pl 130
sudo nvidia-settings -a '[gpu:0]/GPUFanControlState=1';
sudo nvidia-settings -a '[gpu:1]/GPUFanControlState=1';
sudo nvidia-settings -a '[gpu:2]/GPUFanControlState=1';
sudo nvidia-settings -a '[fan:0]/GPUTargetFanSpeed=20';
sudo nvidia-settings -a '[fan:1]/GPUTargetFanSpeed=20';
sudo nvidia-settings -a '[fan:2]/GPUTargetFanSpeed=20';
sudo nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1';
sudo nvidia-settings -a '[gpu:1]/GPUPowerMizerMode=1';
sudo nvidia-settings -a '[gpu:2]/GPUPowerMizerMode=1';
python main.py --enable-manager


