Обнаружена серьёзная проблема: старые графические карты не поддерживают аппаратный FP8, что ограничивает возможности ускорения глубокого обучения. В ответ команда разработчиков создала Feather — библиотеку, использующую программные методы для симуляции FP8 и повышения скорости работы GPU.
На практике ожидания от FP8 были большими, особенно после анонсов новых чипов с нативной поддержкой. Однако большинство старых устройств, таких как Nvidia RTX 3050, не имеют такой опции. Именно поэтому разработчики решили пойти по пути софтверных методов — используя битовые операции и упаковку данных, чтобы максимально эффективно использовать существующий железо.
Они научились паковать два FP16 или четыре FP8 значений внутри одного FP32, уменьшая объем памяти и снижая задержки. Такой подход похож на технику FlashAttention, где блоки данных сжимают для минимизации обмена. В итоге большинство операций, связанных с памятью, работает быстрее — ведь bottleneck именно в передаче данных, а не в вычислениях.
Технология основана на использовании битовых преобразований и кастинге типов через библиотеку ml_dtypes, что позволяет внедрять поддержку в существующие алгоритмы. В качестве примера, ядро Triton — язык, позволяющий писать GPU-скрипты на Python — демонстрирует, как реализовать загрузку, распаковку и обработку упакованных данных без потери производительности.
Результаты бенчмарков впечатляют: на тесте с GeForce RTX 3050 — базовые операции в FP32 занимали около 5635 микросекунд, а Feather с FP8-E5M2 — всего 1679 мкс, что примерно в 3 раза быстрее. FP8-E4M3 также показывает 2703 мкс, но с чуть лучшей точностью. Теоретический предел — 4-кратное ускорение, заметный прогресс для прошлых поколений GPU.
Дополнительные тесты на таких задачах, как алгоритм FlashAttention, подтверждают эффективность метода. Практика показывает, что при правильной настройке даже старое железо способно добиться скорости, близкой к новым GPU.
Что касается точности — эксперименты с случайными числами показывают, что формат FP8 сохраняет приемлемую числовую точность, достаточную для большинства задач глубокого обучения, но для критичных сферами рекомендуется проводить собственные валидации.
Подходит этот подход для быстрого inference, обучения на старых устройствах, мемориозависимых задач и batch-процессинга. Но не стоит ждать поддержки от новых моделей или при задачах, где важно льготное цифровое качество. В будущем разработчики планируют расширять поддержку форматов и интеграцию.
Проект Feather уже доступен как open-source, и команда активно принимает вклад от сообщества. Это решение для тех, кто хочет получить максимум отдачи от уже существующего железа, не вкладываясь в новое.
