Найдена причина всплесков в активациях трансформеров (by Qualcomm)



Как же тяжело квантовать трансформеры (fp32→int8). Столько всего придумали, лишь бы спастись от аутлаеров в активациях, которые принимают огромные значения, выходя за пределы машинной точности.



В статье Quantizable Transformers наконец нашли причину этих магических всплесков, которые даже начинали оправдывать "искрами сознания". Всю вину возложили на софтмакс этэншна — когда модель хочет занулить вклад каких-нибудь токенов (или патчей), голове внимания приходится выдавать огромные (по модулю) значения логитов, чтобы получить ~0 после софтмакса. Авторы попробовали добавить clipped softmax и gated attention, после чего все трансформеры стали не только легко квантоваться, но и даже чуть-чуть выиграли в точности.



Главная улика, которая навела авторов на софтмакс — аутлаеры всегда соответствовали "бесполезным" токенам или патчам (см. картинку). Статья очень легко читается и вообще похожа на детектив, всем рекомендую 💁‍♂️



Статья