инструменты 1 мин

Три бага 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.

Хайп15
Реальная польза65
Заработать50
  • Создать 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 — это уже не оптимизация производительности, а требование корректности. Квадры тут просто проявили баг ярче, но он сидит везде.

Ещё по теме

Комментарии