Полезная статья: unify.ai/blog/model-quantization
Перепощу в качестве ликбеза, для тех, кто желает врубиться в тему.
Перепощу в качестве ликбеза, для тех, кто желает врубиться в тему.
Квантование — это метод сжатия модели, который снижает точность весовых коэффициентов и активаций нейронной сети. Другими словами, он включает в себя представление весов и активаций нейронной сети с использованием меньшего количества битов, чем их исходная точность. Например, вместо использования 32-разрядных чисел с плавающей запятой квантование может использовать 8-разрядные целые числа. Такое преобразование значительно снижает требования к памяти и сложность вычислений. Несмотря на то, что некоторая потеря точности неизбежна, тщательные методы квантования могут обеспечить существенное сжатие модели с минимальным снижением точности.
По сути, квантование включает в себя отображение из непрерывного пространства в дискретное пространство таким образом, что значения полной точности преобразуются в новые значения с меньшей разрядностью, называемые уровнями квантования, с помощью функции отображения квантования.
В идеале квантование следует использовать, когда размер модели и требования к вычислительным ресурсам являются проблемой, а также когда снижение точности может быть допустимым без существенной потери производительности. Это часто случается с LLM в таких задачах, как классификация текста, анализ тональности и других задачах NLP, где модели являются массивными и ресурсоемкими. Квантование также лучше всего использовать при развертывании на устройствах с ограниченными ресурсами, таких как мобильные телефоны, Интернет вещей и периферийные устройства. За счет снижения точности весовых коэффициентов и активаций квантование может значительно уменьшить объем памяти и вычислительные требования нейронной сети, что делает ее работу на этих устройствах более эффективной.

no subject
Date: 2024-05-12 05:44 (UTC)no subject
Date: 2024-05-12 23:38 (UTC)no subject
Date: 2024-06-02 21:58 (UTC)no subject
Date: 2024-05-12 06:28 (UTC)Хорошая идейка, хотя и очевидная.
no subject
Date: 2024-05-13 00:41 (UTC)no subject
Date: 2024-05-12 11:01 (UTC)no subject
Date: 2024-05-12 13:30 (UTC)Чтобы точный ответ получить, надо знать точные коэффициенты. Квантование делается как раз для того, чтобы не тащить точные коэффициенты, потому что они занимают слишком много места.
no subject
Date: 2024-05-13 00:44 (UTC)no subject
Date: 2024-05-12 13:36 (UTC)Откуда потеря производительности? Количество умножений и сложений же не меняется, превращение 8-битных int в 32-битные не должно занимать много времени, операции над 8-битными целыми тоже не должны быть дольше, чем над 32-битными.
no subject
Date: 2024-05-12 20:14 (UTC)no subject
Date: 2024-05-12 21:10 (UTC)По контексту от квантизации происходит и снижение точности, и потеря производительности. Вы описываете увеличение производительности от того, что можно параллельно обрабатывать несколько коротких чисел вместо одного длинного.
no subject
Date: 2024-05-12 23:01 (UTC)no subject
Date: 2024-05-13 00:47 (UTC)no subject
Date: 2024-05-13 01:36 (UTC)Это мне как раз понятно. Но утверждение "снижение точности может быть допустимым без существенной потери производительности" намекает на то, что с точностью ниже производительность тоже ниже, а кажется, что должно быть наоборот.
Тридцатидвухбитный процессор за один такт может произвести одно 32-битное сложение или четыре 8-битных (переносами для простоты пренебрежём). Если мы уменьшили точность и вместо 32-битных сложений делаем 8-битные, то производительность должна учетвериться.