Comments 6
Compressing floating-point numbers quickly by converting them to brain floats — Не хватает памяти на большие объемы
double
-ов? Как насчет того, чтобы сжать их до 16 бит (bfloat16)?
Интересно было бы узнать, а для чего это может пригодиться. Гугловые bfloat-то использовались в нейронках и там в принципе не имело смысло использовать double из-за сходимости, что несколько ускоряло обучение, а вот чтобы имеющиеся double пожать - зачем?
Бывает, например, результаты 3D симуляции могут терабайты занимать.
Для научных и вероятно для инженерных симуляций обычно требуется некоторая заданная точность и сжимать данные с погрешностями кажется нельзя. Для развесовки нейронок как писал выше можно сразу использовать короткие флоты. А какие симуляции могут занимать столько места вне этих категорий пока не представляю.
Предположу, что есть случаи, когда допустима погрешность финального результата. Т.е. есть какие-то этапы или промежуточные расчеты, которые используют double для точности, но под конец приводятся в bfloat.
Там когда как. Я вот про симуляции слияний чёрных дыр и нейтронных звёзд знаю, что там каждый шаг хранить очень накладно, но и считать тоже, поэтому сохраняют в полной точности раз в N шагов, а промежуточные жмут для хранения до низкой.
А для java подобная статья имеется? Ну Или C#
C++ Дайджест №8 (2 сентября – 8 сентября 2024)