Как bfloat16 экономит RAM в Google Colab: жмем данные в 2 раза без потери точности на миллионных массивах

Привет, DTF! Пока все гоняются за дорогими видеокартами и плачутся из-за нехватки видеопамяти, я решил упороться в жесткую оптимизацию RAM на обычном бесплатном процессоре в Google Colab.


Когда ворочаешь массивы на десятки миллионов объектов, главная боль — это просадка по оперативной памяти. Обычный float32 жрет слишком много ресурсов, а стандартные типы данных Python превращают RAM в кашу.


Какое решение? Квантование в bfloat16 (Brain Floating Point).

Мы берем компактный 16-битный формат, который сохраняет широкий динамический диапазон огромных чисел, но весит ровно в два раза меньше.


В своем no-CUDA движке на C++20 я реализовал плотную упаковку данных:

• Потребление оперативной памяти упало практически в 3 раза!

• Процессор Intel Xeon в Colab щелкает этот сжатый массив через векторные инструкции AVX2 как орехи.


Никакого оверквотинга и переплат за облачные GPU — чистая математика и низкоуровневый код.


Весь код открыт, готовый шаблон для запуска в одну ячейку лежит в репозитории (все настроено под Colab, компилировать руками на планшете ничего не надо):

👉 https://github.com/nlozkina19-crypto/vector-zero-compute


Залетайте тестировать. Как думаете, стоит дальше ужимать до float8 для еще большего хардкора, или bfloat16 — это идеальный баланс для процессора? Жду ваше мнение в комментах!

И отдельно хочу поблагодарить коментаторо огромное спасибо.

1
2 комментария