GPU Unlock: FP16 и BF16 на NVIDIA RTX 30

GPU Unlock меняет скорость FP16/BF16 на NVIDIA RTX 30. Для RTX 4090 есть отдельная ветка; результат зависит от нагрузки.

GPU Unlock — открытый модуль ядра Linux для видеокарт NVIDIA поколения Ampere. Он меняет скорость выдачи отдельных инструкций FP16 и BF16, которые используются, в частности, в вычислениях для ИИ. Модуль запускается на раннем этапе загрузки системы — до того, как видеокарту займёт штатный драйвер NVIDIA.

Проект не прошивает BIOS и не подменяет драйвер NVIDIA. Но это не обычная программа: для установки нужны права администратора, изменение загрузочной конфигурации и пересборка initramfs — начального образа Linux, из которого загружаются драйверы и модули ядра.

Что именно меняет GPU Unlock

В потребительских видеокартах Ampere некоторые режимы вычислений FP16 и BF16 выполняются с меньшей скоростью выдачи инструкций, чем на профессиональных ускорителях. GPU Unlock меняет соответствующие настройки на поддерживаемых чипах и сбрасывает GPU до привязки штатного драйвера. Сам драйвер после этого продолжает загружаться без модификаций.

Почему это не означает двукратное ускорение любой задачи

Разработчики говорят о повышении скорости выдачи отдельных FP16/BF16-инструкций, а не всей работы видеокарты. Итог зависит от того, какая часть нагрузки использует эти операции и что ограничивает её в остальном: пропускная способность памяти, формат квантования модели, размер пакета запросов и конкретные ядра вычислений.

В опубликованном проектом тесте FP16 вырос примерно на 35%, BF16 — примерно на 80%. Поэтому формулировка «производительность видеокарты удваивается» слишком широкая: отдельные показатели приблизились к удвоению, но другие заметно ниже.

Что показали замеры на RTX 3090 Ti

В README проекта приведены результаты плотного умножения матриц размером 8192 × 8192 × 8192 на RTX 3090 Ti. Измерения сделаны при лимите мощности 450 Вт; в таблице указаны медианы пяти запусков с накоплением FP32.

Режим До После Изменение
FP16 87,46 TFLOPS 118,39 TFLOPS около +35%
BF16 87,50 TFLOPS 157,41 TFLOPS около +80%
TF32 42,58 TFLOPS 82,61 TFLOPS около +94%

Это синтетический вычислительный тест, а не замер скорости ответа чат-бота. В обсуждении проекта также опубликована независимая проверка RTX 3090 Ti со штатным драйвером NVIDIA на другой системе. Она подтверждает работу модуля на этой конфигурации, но сама по себе не гарантирует тот же результат на любой плате и версии Linux. Подробности тестирования и независимая проверка.

Дополнительные результаты RTX 3090 и RTX 4090

Пользовательский тест RTX 3090 при лимите 360 Вт

Отдельно от замера RTX 3090 Ti в README проекта сообщалось о тесте обычной RTX 3090: при ограничении мощности 360 Вт показатель в PyTorch вырос с 75 до 135 TFLOPS — примерно на 80%. Это результат конкретной пользовательской конфигурации, а не универсальная цифра для каждой RTX 3090. В публикации не приведены все настройки измерения, поэтому напрямую сравнить этот результат с тестом 3090 Ti из README нельзя. Публикация с результатом RTX 3090.

RTX 4090: отдельная ветка и отдельные условия

Для RTX 4090 существует отдельный проект gpu-unlock-ada. Это видеокарта поколения Ada, поэтому результаты и совместимость её версии нельзя приписывать основному проекту Zagitta для Ampere. В README ветки для RTX 4090 приводятся значения FP16 с накоплением FP32 от 165,6 до 331,6 TFLOPS и BF16 с накоплением FP32 от 165,5 до 330,6 TFLOPS. Речь идёт о скорости выполнения целевых вычислительных инструкций в тестовых условиях, а не о гарантированном двукратном ускорении любой программы.

Разница видна и в замерах прикладных задач: в одном отчёте владельца ASUS RTX 4090 с этой отдельной веткой умножение матриц в зависимости от режима ускорилось на 10–56%, обработка входного запроса в llama-server — на 2,6%, а генерация токенов оказалась на 7% медленнее. Автор отчёта отмечает, что последнее могло быть следствием шума измерений или нагрева; проверка ограничена одной картой и тремя запусками генерации. Эти цифры показывают, почему пиковую скорость вычислительных блоков нельзя принимать за скорость всей модели. Отчёт о проверке RTX 4090.

Как это влияет на локальный запуск моделей

Рост TFLOPS в умножении матриц не равен такому же ускорению генерации токенов или обработки длинного запроса. Например, в опубликованном тесте vLLM с Qwen 27B, квантованием W4A8 Marlin и шестью параллельными запросами около 29% времени GPU приходилось на затрагиваемые FP16/BF16-операции. Итоговый прирост всего сценария составил около 5% и, по оценке автора теста, оставался в пределах разброса между запусками.

Наибольший смысл модуль может иметь в задачах, где видеокарта действительно ограничена вычислениями соответствующего типа. Если же основная нагрузка приходится на другие операции, прирост может быть небольшим или незаметным. Точные результаты для конкретной модели, драйвера, платы и настроек нужно проверять на своей системе.

Совместимость и установка

Проект ориентирован на Linux и потребительские видеокарты NVIDIA 30-й серии. В README описаны чипы GA102, GA103, GA104 и GA106; точную совместимость конкретной модели и способ установки для своего дистрибутива стоит сверить с текущей документацией проекта.

Что происходит при установке

Установщик собирает модуль и добавляет его в initramfs, чтобы он успел настроить карту до загрузки драйвера NVIDIA. Затем в параметры ядра добавляется явное разрешение на запуск, компьютер перезагружается, а результат проверяется в системном журнале. В README приведены отдельные инструкции для Debian и Ubuntu, Arch, Fedora и других систем, использующих поддерживаемые механизмы сборки initramfs.

Если в компьютере несколько видеокарт, проект позволяет указать конкретные устройства по PCI-адресу. Это помогает не применять изменение ко всем совместимым картам сразу. На системах с Secure Boot неподписанный модуль может быть отклонён: способ загрузки нужно согласовать с политикой подписи модулей в своём дистрибутиве. Отключение Secure Boot не следует считать универсальным требованием проекта.

Кому подойдёт проект

GPU Unlock рассчитан на владельцев поддерживаемых карт Ampere, которые используют Linux и готовы самостоятельно разбираться в загрузке ядра, initramfs и восстановлении системы. Перед установкой стоит сохранить рабочую конфигурацию загрузчика и проверить, как вернуть исходные параметры. Это эксперимент с низкоуровневой настройкой видеокарты, а не официальная функция NVIDIA.

Код и документация

Исходный код, актуальные инструкции по дистрибутивам и список поддерживаемых устройств опубликованы в репозитории GPU Unlock на GitHub. Перед установкой проверьте README и последние обсуждения: совместимость и процедура загрузки зависят от конфигурации Linux.