@ehevnlem
Программирую с 1975, в интернете с 1993.

Используют ли в нейронных сетях вычисления с пониженной разрядностью?

Разрядность 64 и даже 32 слишком велика для нейронных сетей. Например тензорный вычислитель гугоа имеет разрядность 8. Вопрос состоит из двух:
1) Известны ли вам программы, в которых на cpu или gpu вычисляли бы с разрядностью 8?Т.е. 64-разрядный процессор за раз делает 8 сложений или умножений. Например, интересно было бы знать, используют ли 8-разрядные вычисления в самых распространенных пакетах, типа tensorflow
2) Известны ли вам программы, в которых нейронная сеть обучалась бы с разрядностью 8, а потом коэффициент уточнялись с разрядностью 16 или 32, — нечто похожее на жадный алгоритм?
  • Вопрос задан
  • 222 просмотра
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Библиотека от NVIDIA поддерживает только float(32) и double(64).
Можно конечно велосипедить на байтах, но зачем, точность ведь никакущая?
Ответ написан
@rPman
пот первое же нагугленное исследование использования 8-битных и 16-битных весов на nvidia gpu
5 Conclusions
We have demonstrated DNN training with 8-bit floating point numbers (F P 8) that achieves 2 − 4×
speedup without compromise in accuracy
. The key insight is that reduced-precision additions (used
in partial product accumulations and weight updates) can result in swamping errors causing accuracy
degradation during training. To minimize this error, we propose two new techniques, chunk-based
accumulation and floating point stochastic rounding, that enable a reduction of bit-precision for
additions down to 16 bits – as well as implement them in hardware. Across a wide spectrum of
popular DNN benchmarks and datasets, this mixed precision F P 8 training technique achieves the
same accuracy levels as the F P 32 baseline. Future work aims to further optimize data formats and
computations in order to increase margins as well as study additional benchmarks and datasets.


еще есть огромные нейронные сети, требующие неадекватно большие объемы оперативной памяти, что очень дорого, когда речь идет о нейроннх сетях
Например, те же проекты OpenAI, напомню чтобы запустить тот сберовский ruDALL-e понадобится видеокарта больше 6Gb RAM (можно и с таким но потребуются телодвижения и сильно больше времени), если я верно понял тут используются 16-битные веса, а если переделать на 8-битные, требования к памяти можно еще сильнее понизить.

есть еще разработки по использованию 1битных весов (ума не приложу как это работает), гугл выдает кучу статей
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexSku
не буду отвечать из-за модератора
Вообще-то GPU как раз обрабатывает 4 32-битных (float) чисел за один раз (специальный 128-битный формат при установке спец. флага).
typedef __m128 XMVECTOR
При передаче через параметры функции используются FXMVECTOR, GXMVECTOR, HXMVERCTOR и CXMVECTOR, а сама функция должна иметь тип вызова XM_CALLCONV.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы