Как 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 — это идеальный баланс для процессора? Жду ваше мнение в комментах!
И отдельно хочу поблагодарить коментаторо огромное спасибо.