Комментарии 15
На самом деле тема животрепещущая, поскольку на каждом углу рассказывают про производительность в FP16, INT8 и других вариантах с плавающей запятой. Думаю надо продолжать развивать эту тему и пустить обзорный материал по каждому из вариантов чисел с плавающей запятой и описать более подробно варианты их практического применения без предисловий.
Интересно, до какого предела можно квантизировать нейронки? И наоборот, до какого предела большие числа будут сказываться на их точности? Можно ли скукожить часть слоёв вообще до bool, где всего 1 бит, на 0, либо 1.
Ну и ещё интересно, будет ли IEEE754 на аппаратном уровне замещён на что-то, что не будет по своей природе неизбежно привносить энтропию в вычисления из-за природы алгоритма по которому формат преобразует числа с плавающей запятой?
В конечном итоге все цифровые процессы сводятся к bool, к нулям и единицам в сумматорах, компараторах и прочем. Интересный вопрос - можно ли перенести всю эту цифровую логику в нейросеть. Т.е. возложить на нейронку функции сложения, умножения и прочего... В результате нейронка будет представлять собой огромную однородную логическую схему.
Есть разнообразные бинарные нейронные сети на FPGA, и теоретически возможно их обучение на самом устройстве (при наличии поддержки dynamic partial reconfiguration), но для этого нужно либо для каждой 1-битной связи хранить градиент, либо обучать стохастически, что даёт намного более медленную сходимость.
По моим (делитанстским) наблюдениям, бОльшее значение чем количество параметров имеет сколько памяти под эти параметры используются.
То есть, при одинаковом объёме используемой памяти модель с малым числом параметров в f16 (float 16 bit) даст такое же качество как Q4 (int 4 bit) с бОльшем количеством.
Многие отзываются, что Llama3 сильно страдает от квантования, например. Лично я замечаю разницу между f16 и Q6К - Q6K намного быстрее теряет когерентность и перестаёт следовать коммандам в длинных чатах.
То ли Intel, то ли IBM уже больше пяти лет назад научились делать бинарные нейронки с очень неплохими характеристиками. Не любую нейросеть можно квантовать до двух значений, но то, что можно, можно запихать супер-быстрые аппаратные реализации.
Жаль только разработка нейросетей не спасла интел от поглощения куалкомом…
Intel феерично зафакапили 13 и 14 поколения процессоров (постепенно в течении 6-24 месяцев выходят из строя из-за проблемного управления питанием, которое запрашивает завышенное напряжение). Им по сути гризит возврат по горантии каждого второго процессора выпущенного за последние 2 года. Я честно говоря не знаю, что и тут может спасти, кроме может быть прямого вмешательства США ("too big to fail").
А что, уже?
После утверждения стандарта IEEE 754 производители процессоров начали активно внедрять аппаратную поддержку операций с числами с плавающей запятой
Ради исторической справедливости. Было немного не так: пока комитет IEEE пытался выработать стандарт (а это были споры, дебаты, бюрократия), Intel без всяких комитетов "выкатила" 8087, индустрия активно подхватила его, и IEEE приняли решение назначить уже готовую реализацию Intel стандартом.
Малые числа, большие возможности: как плавающая запятая ускоряет ИИ и технологии