Флешка ускорила ИИ-вычисления на GeForce RTX до 65% в обход скрытого ограничения Nvidia
Энтузиасты выпустили опенсорс-инструмент nv-uefi-unlocker, который снимает программное ограничение тензорных ядер на видеокартах GeForce RTX 20, 30 и 40-й серий. Утилита запускается с USB-накопителя до загрузки Windows или Linux. Прошивать VBIOS или ставить модифицированный драйвер не требуется. На ноутбучной RTX 4060 самого разработчика производительность в FP16-вычислениях выросла на 65%.
У потребительских GeForce RTX матричные операции в FP16 с накоплением результата в FP32 выполняются вдвое медленнее, чем у профессиональных карт Nvidia на тех же чипах. Аппаратно тензорные ядра способны работать на полной скорости, но ограничение задано через регистры и защищено подписанной прошивкой. Сообщество предполагает, что так Nvidia разводит игровую и профессиональную линейки, хотя официально производитель этого не объяснял.
Взлом этого ограничения уже давал заметные результаты. Ранее пиковая тензорная производительность RTX 4090 выросла вдвое, а матричные вычисления на RTX 3090 Ti ускорились до 80%. Но прежние методы работали в основном через вручную установленные модули ядра Linux, а поддержка Windows оставалась экспериментальной.
Как работает разблокировка
Инструмент использует так называемую полезную нагрузку V67, созданную сообществом. Она заставляет подписанную прошивку Booter от Nvidia снять блокировку записи с двух регистров, которые отвечают за скорость тензорных блоков. После этого тензорные ядра работают на полной частоте. Новая версия дополнительно проверяет результат обратным чтением регистров – в ранних экспериментальных билдах надёжность была под вопросом.
В релиз входят только скрипты и самостоятельно собранные бинарные файлы, без прошивок Nvidia. Один из скриптов сам скачивает публичные пакеты драйвера версии 610.43.03, проверяет их и локально пересобирает нужные файлы прошивки. Основой для порта послужил gpu-unlock от разработчика под ником Zagitta. Также использованы наработки форка gpu-unlock-ada для RTX 40-й серии и более ранней EFI-утилиты для Windows.
Подготовка занимает несколько шагов:
скачать релиз с GitHub
запустить скрипт, который загрузит драйвер Nvidia и пересоберёт прошивку
скопировать полученные файлы и загрузчик BOOTX64.EFI на флешку, отформатированную в FAT32
выбрать флешку в меню разовой загрузки и в течение 30 секунд подтвердить запуск пробелом
После разблокировки управление передаётся загрузчику операционной системы. Утилита срабатывает до того, как система загрузит драйвер Nvidia, поэтому прошивать видеокарту или вмешиваться в драйвер не нужно. Минус подхода в том, что эффект пропадает после отключения питания, и процедуру приходится повторять при каждом запуске компьютера.
Требования и ограничения
Система должна загружаться в режиме UEFI. Secure Boot нужно либо отключить, либо настроить так, чтобы он доверял самоподписанному EFI-файлу. Для геймеров это проблема, ведь античиты некоторых игр требуют включённого Secure Boot. Один из участников команды разработчиков прямо написал на Reddit, что инструмент "НЕ МОЖЕТ обойти это требование".
Владельцам RTX 20-й серии нужно один раз запустить прилагаемый скрипт. Он переключает драйвер Nvidia для Windows в режим работы с прошивкой GSP, после чего компьютер следует перезагрузить.
Ноутбуки поддерживали и прежние разработки, но здесь одна из тестовых карт самого создателя мобильная, и результаты для ноутбуков записаны по каждой модели отдельно. На момент запуска утилиты дискретная видеокарта должна быть включена. Рекомендуется режим работы только через дискретный GPU или MUX-переключение.
В дистрибутивах Linux вроде Ubuntu есть ещё одна сложность. Система управления питанием может отключить простаивающую видеокарту, и разблокировка незаметно сбросится. Способы обойти это описаны в англоязычном FAQ, там же есть инструкции для других нестандартных ситуаций.
Совместимость распределена по семействам чипов:
RTX 20-я серия "полностью совместима, у некоторых моделей есть известные проблемы"
RTX 30-я серия "полностью совместима"
RTX 40-я серия "полностью совместима на ноутбуках и настольных ПК"
GTX 16-я серия "теоретически совместима", но проверка ещё не завершена
карты до архитектуры Turing, GA100 и RTX 50-й серии не поддерживаются
Поддержка по семейству чипов не означает, что конкретную модель уже тестировали. Разработчики ведут отдельную таблицу видеокарт, проверенных в Windows. Каждая карта сравнивается до и после разблокировки в одном и том же тесте, но сами тесты для разных моделей отличаются, поэтому сопоставлять результаты между картами некорректно.
Настольная RTX 2070 разработчика в FP16-перемножении матриц размером 8192 выдавала около 34 терафлопс. После разблокировки результат вырос примерно до 62 терафлопс.
Оговорок пока хватает. Zagitta, чей gpu-unlock запустил всю волну разблокировок GeForce, теперь пишет в своём FAQ:
Я не пользуюсь Windows и не планирую её поддерживать.
Windows-пользователей Zagitta отправляет к отдельному порту и советует осторожнее с неофициальными установщиками. Итоговый прирост зависит ещё и от лимитов питания и температуры. Новый инструмент можно совместить с nvoc, который снимает ограничение энергопотребления, но создатели предупреждают, что такая связка "может выйти за пределы заводских ограничений по питанию и нагреву".
Проверка хеша ROM для каждой отдельной карты, которую требуют собственные правила безопасности разработчиков, ещё не реализована. Сохранение разблокировки на внешних видеокартах, подключённых через Thunderbolt, "не гарантируется".
RTX 2080 и RTX 2080 Ti пока на проверке, сроки не называются. Команда также готовит опцию загрузки с внутреннего диска, чтобы обходиться без флешки.
Владельцам RTX 50-й серии придётся подождать – по словам разработчиков, у новых карт оказалось "намного больше защиты", чем ожидалось, и взломать её пока не удалось.