Три бага PyTorch убили ComfyUI на Quadro RTX 6000. Разбор с кодом и фиксами
Разработчик восемь часов искал, почему ComfyUI выдаёт чёрные картинки на Quadro RTX 6000. Нашёл три независимых бага: переполнение FP16 в torch.mm() (PyTorch 2.12+), несовместимость аллокатора памяти на Turing и физический дефект VRAM. Выложил фиксы и диагностические скрипты на GitHub.
Если вы запускаете ComfyUI/Stable Diffusion на Quadro RTX или планируете апгрейд PyTorch — столкнётесь с этими же багами. Готовое решение с кодом экономит дни отладки и показывает, как правильно диагностировать низкоуровневые проблемы GPU.
Что произошло
Пользователь Reddit провёл восемь часов в отладке ComfyUI на профессиональной GPU Quadro RTX 6000 (24 ГБ, архитектура Turing). Симптомы: вместо изображений — чёрные файлы по 10 КБ, ошибки NaN в консоли, сломанная генерация аудио. На RTX 3070 Ti (Ampere) те же модели и воркфлоу работали идеально.
Найдены три независимых бага:
Баг 1: переполнение FP16 в torch.mm() — главный виновник. PyTorch 2.12+cu126 при матричном умножении в половинной точности (.half()) переполняется в бесконечность, если входные значения превышают ~44. Три строки кода воспроизводят проблему: матрица 2048×2048 с диапазоном [-127, 127] даёт >3 млн бесконечностей. Замена .half() на .bfloat16() решает проблему. Баг воспроизводится одинаково на Turing и Ampere — это софтварная ошибка, не железо.
Баг 2: краш cudaMallocAsync — ComfyUI не запускается на Turing с ошибкой cudaMallocAsync != native. Фикс: переменная окружения PYTORCH_CUDA_ALLOC_CONF=backend:cudaMallocAsync.
Баг 3: физический дефект VRAM — на конкретной карте застрявший-в-нуле чип на отметке 1.7 ГБ с 259 ECC-ошибками. Автор написал скрипт nan_trap.py, который ловит момент повреждения с полным стеком вызовов.
Автор выложил на GitHub готовое решение: два файла для папки ComfyUI, лаунчеры с правильными переменными окружения, патчи для torch.mm/bmm/matmul/linear/conv2d/attention. После фикса протестированы SD1.5 (8.6 сек), SDXL Turbo (6.4 сек), ACE Step 1.5 (359 сек), Hunyuan3Dv2 (175 сек) — всё работает.
Автор: Павел Заславский · Источник: reddit.com
Разработчикам. Готовый патч для PyTorch 2.12+: обёртки над torch.mm/bmm/matmul с автопереводом half→bfloat16, nan_trap с полным стеком для отладки переполнений, переменные окружения для Turing. Копируешь два файла в site-packages — и ComfyUI работает на Quadro. Исходники и воспроизводимый тест на GitHub.
Бизнесу. Если у вас студия на Quadro RTX или серверы с Turing — можете столкнуться с такими же симптомами на последних версиях PyTorch. Фикс бесплатный и open-source, экономит часы простоя и диагностики. Вопрос стабильности inference на проде.
Инвесторам. Показывает хрупкость стека ML-инфраструктуры: три несвязанных бага (PyTorch, CUDA runtime, железо) ломают продакшн на профессиональных GPU за $4000+. Растёт спрос на tooling для диагностики и патчинга таких проблем — ниша для DevOps-решений в ML.
- Создать SaaS-платформу для автодиагностики GPU-конфликтов в ML-стеках: автоматические тесты на FP16/BF16 overflow, ECC-мониторинг, патчи для PyTorch/CUDA
- Консалтинг для студий на профессиональных GPU: аудит инфраструктуры ComfyUI/Stable Diffusion, миграция на bfloat16, настройка окружения для Turing/Ampere
- Форкнуть ComfyUI с встроенной поддержкой Quadro RTX и автопатчингом известных багов — продавать как enterprise-версию с гарантией стабильности
- Разработать CLI-тул для ML-DevOps: one-click диагностика GPU (overflow-тесты, ECC-проверка, CUDA config), генерация отчётов для CI/CD
- Обучающий курс для ML-инженеров: отладка низкоуровневых проблем PyTorch/CUDA, работа с профессиональными GPU, миграция FP16→BF16 в продакшене
- Баг может быть исправлен в следующих версиях PyTorch — тогда патч станет ненужным (хотя bfloat16 всё равно предпочтительнее half для стабильности)
- Quadro RTX 6000 — старая архитектура (2018), основной рынок уже на Ampere/Ada/Hopper — узкая целевая аудитория для специализированных фиксов
- Физический дефект VRAM (баг 3) — индивидуальная проблема конкретной карты, не массовая
- Решение требует ручной установки файлов в site-packages — может отпугнуть нетехнических пользователей ComfyUI
Это образцовый пример того, как нужно документировать баги: воспроизводимый тест на три строки, готовое решение, объяснение причин. Главное открытие тут не про Quadro — а про то, что PyTorch 2.12+ имеет критический баг переполнения FP16 в матричных операциях, который затрагивает ВСЕ GPU. Автор потратил восемь часов на отладку, потому что искал проблему в железе, а она была в софте. Это классическая ловушка: симптомы указывают на GPU, а корень — в библиотеке.
Реальная ценность поста — в диагностическом подходе и nan_trap.py. Если вы деплоите ML-модели в прод, такой инструмент должен быть в вашем арсенале по умолчанию. А переход с half на bfloat16 — это уже не оптимизация производительности, а требование корректности. Квадры тут просто проявили баг ярче, но он сидит везде.
Комментарии