Нейрология LLM
Большие языковые модели (Large Language Models, LLMs) и их мультимодальные родственники без сомнения являются главными виновниками взрывного роста интереса к искусственному интеллекту как со стороны профессионального сообщества, так и со стороны обывателей. Этот интерес чаще всего фокусируется на способностях LLM. Могут ли они решать задачи с международных олимпиад? Как хорошо они воспроизводят факты из Википедии? Достаточно ли они хороши и компетентны как психологи или преподаватели? Оценка способностей, то есть конечного результата работы LLM, важна с практической точки зрения, и в связи с этим несколько в тени остаётся вопрос о том, что же происходит внутри моделей в тот момент, когда они отвечают на наши вопросы. В этом курсе мы постараемся дать ответ на этот вопрос, который будет чуть более глубоким, чем описание трансформерной архитектуры.
Мы рассмотрим четыре группы объектов, относительно которых удобно анализировать внутренние процессы LLM: attention scores, матрицы весов, активации и трансформерные блоки.
Распределение attention scores отличается разнообразием и зависит от рассматриваемой attention head. Чаще всего мы наблюдаем разреженность соответствующей матрицы attention scores, и паттерн разреженности может использоваться как для интерпретации роли данной attention head в генерации следующего токена, так и для ускорения этой генерации.
Матрицы весов также могут обладать разреженностью, что изначально мотивировало использование прунинга для сжатия глубоких нейронных сетей. Более того, оказывается, что LLM до некоторой степени робастны к понижению точности представления весов, что позволяет уменьшать размер моделей и время отклика с помощью квантизации. При такой кажующейся избыточности матриц весом интересным фактом представляется наличие в них буквально нескольких десятов супервесов с аномально большими абсолютными значениями, чья избыточная квантизация полностью разрушает осмысленную генерацию.
Большой прогресс в исследовании активаций трансформерных блоков стал возможен благодаря использованию sparse autoencoders. С их помощью строится разреженное представление активаций, которое может быть использовано для идентификации обобщенных концептов, влияющих на генерацию LLM. Так, например, можно обнаружить разреженные признаки, отвечающие за вежливость. Усиливая их (feature steering), мы динамически меняем генерацию LLM, делая формулировки ответа более вежливыми.
Наконец, можно взглянуть на процессы в LLM в большем масштабе и проанализировать, как меняется внутреннее представление токенов при перехода одного слоя к последующему. С одной стороны, детальный анализ позволяет характеризовать роли слоев в генерации ответа. С другой (более практической) стороны, этот анализ показывает, что декодируемый токен зачастую известен уже в промежуточных блоках, и глубокие слои в таком случае выполняют пассивную роль. Этот факт используется для ускорения LLM путем пропуска вычислений на последних слоях статистическим образом (прунинг) или динамическим образом (спекулятивный декодинг).
