Forwarded from Алексей
Записал функции внимание и MLP через вызовы одной единственной функции - чтение из ассоциативной памяти - mem(q, K, V).
* напоминаю, что это не та какава (QKV), что в формулах трансформера
Сама функция чтения mem, как говорил, - это функция внимания, она же ассоциативная память нейронной машины.
Возвращаемся к рисунку схемы внимания.
Начальное значение вектора запроса q равно вектору последнего токена (входа).
q = X[-1]
Запрос отправляется в постоянную ассоциативную память внимания. Результат чтения из памяти r_ass дополняет через skip connection запрос q.
r_ass = mem(q, K, V)
K и V - матрицы ключей и значений релевантных/ассоциативных связей между токенами.
q = q + r_ass
Расширенный ассоциациями запрос теперь отправляется в оперативную, динамическую контекстную память, которой является контекст/промпт.
У контекстной памяти ключи и значения равны входу.
Аналогично делаем запрос к памяти, ответ прибавляем к запросу.
r_ctx = mem(q, X[0:-1], X[0:-1])
q = q + r_сtx
В этом месте q это выход слоя внимания. Он поступает на вход MLP, который реализован опять же через чтение постоянной ассоциативной памяти, но с рокировкой ключей и значений (см. выше для чего это сделано).
r_mlp = mem(q, V, K)
q = q + r_mlp
Всё, прошли оба слоя: attention и MLP. Далее по необходимости повторяем.
Всё вместе:
Только чтение из двух типов/банков памяти и ничего более.
* напоминаю, что это не та какава (QKV), что в формулах трансформера
Сама функция чтения mem, как говорил, - это функция внимания, она же ассоциативная память нейронной машины.
def mem(q, K, V, temp):
return softmax(q @ K.T / temp) @ V
Возвращаемся к рисунку схемы внимания.
Начальное значение вектора запроса q равно вектору последнего токена (входа).
q = X[-1]
Запрос отправляется в постоянную ассоциативную память внимания. Результат чтения из памяти r_ass дополняет через skip connection запрос q.
r_ass = mem(q, K, V)
K и V - матрицы ключей и значений релевантных/ассоциативных связей между токенами.
q = q + r_ass
Расширенный ассоциациями запрос теперь отправляется в оперативную, динамическую контекстную память, которой является контекст/промпт.
У контекстной памяти ключи и значения равны входу.
Аналогично делаем запрос к памяти, ответ прибавляем к запросу.
r_ctx = mem(q, X[0:-1], X[0:-1])
q = q + r_сtx
В этом месте q это выход слоя внимания. Он поступает на вход MLP, который реализован опять же через чтение постоянной ассоциативной памяти, но с рокировкой ключей и значений (см. выше для чего это сделано).
r_mlp = mem(q, V, K)
q = q + r_mlp
Всё, прошли оба слоя: attention и MLP. Далее по необходимости повторяем.
Всё вместе:
q = X[-1]
q += mem(q, K, V)
q += mem(q, X[0:-1], X[0:-1])
q += mem(q, V, K)
Только чтение из двух типов/банков памяти и ничего более.
Операция Ы, Напарники International - Переведено с ИИ Merlin Clone
https://www.youtube.com/watch?v=0g0ApeG5bW8
https://www.youtube.com/watch?v=0g0ApeG5bW8
YouTube
Операция Ы, Напарники International - Переведено с ИИ Merlin Clone
💡 Отрывок из серии "Напарники" фильма "Операция Ы" представлен в этом захватывающем видео, где он переведен на множество языков благодаря ИИ Merlin Clone.
🎥 От английского до китайского, от испанского до арабского - каждый перевод приоткрывает новые аспекты…
🎥 От английского до китайского, от испанского до арабского - каждый перевод приоткрывает новые аспекты…
An Intuitive Explanation of Sparse Autoencoders for LLM Interpretability
https://adamkarvonen.github.io/machine_learning/2024/06/11/sae-intuitions.html
https://adamkarvonen.github.io/machine_learning/2024/06/11/sae-intuitions.html
❤1
Sparse Autoencoders Reveal Universal Feature Spaces Across Large Language Models
https://arxiv.org/abs/2410.06981
Sparse Autoencoders Find Highly Interpretable Features in Language Models
https://arxiv.org/abs/2309.08600
https://arxiv.org/abs/2410.06981
Sparse Autoencoders Find Highly Interpretable Features in Language Models
https://arxiv.org/abs/2309.08600
🔥2
PIDformer: Transformer Meets Control Theory
https://arxiv.org/abs/2402.15989
Для стабилизации аттеншена добавили в трансформер ПИД-регулятор.
X
https://arxiv.org/abs/2402.15989
Для стабилизации аттеншена добавили в трансформер ПИД-регулятор.
X
🔥2
ZipNN: Lossless Compression for AI Models
https://arxiv.org/abs/2411.05239
Сжимает веса без потерь алгоритмом Хаффмана. Степень сжатия 33%-50%.
https://arxiv.org/abs/2411.05239
Сжимает веса без потерь алгоритмом Хаффмана. Степень сжатия 33%-50%.
Slowing Down Forgetting in Continual Learning
https://arxiv.org/abs/2411.06916
Для борьбы с забыванием на дообучении сети новой задаче по весам реконструируют прошлые тренировочные данные, которые комбинируют с новыми.
X
https://arxiv.org/abs/2411.06916
Для борьбы с забыванием на дообучении сети новой задаче по весам реконструируют прошлые тренировочные данные, которые комбинируют с новыми.
X
LAuReL: Learned Augmented Residual Layer
https://arxiv.org/abs/2411.07501
Обучаемые остаточные связи. В каком-то смысле это вертикально развёрнутое внимание (вдоль стрима), где функция g (см. 2) принимает выходы с предыдущих блоков.
X
https://arxiv.org/abs/2411.07501
Обучаемые остаточные связи. В каком-то смысле это вертикально развёрнутое внимание (вдоль стрима), где функция g (см. 2) принимает выходы с предыдущих блоков.
X
Визуализация "обучения" loss-ом, движение по градиенту в мультивселенной.
https://www.youtube.com/clip/Ugkx-h7PSe5RmOHgiptnROkAkWqnRdFfvcu_
https://www.youtube.com/clip/Ugkx-h7PSe5RmOHgiptnROkAkWqnRdFfvcu_
YouTube
✂️ Loss
17 seconds · Clipped by Алексей Тарасов (4815162342) · Original video "Rick and Morty Death Crystals (SEASON 4)" by Play Frame
👍1
noise_step: Training in 1.58b With No Gradient Memory
https://github.com/wbrickner/noise_step
🧨💥🤯
X
it lets you *train* in 1.58b! could use 97% less energy, 90% less weight memory. leads to a new model format which can store a 175B model in ~20mb. also, no backprop!
критика
https://github.com/wbrickner/noise_step
🧨💥🤯
X
it lets you *train* in 1.58b! could use 97% less energy, 90% less weight memory. leads to a new model format which can store a 175B model in ~20mb. also, no backprop!
критика
GitHub
GitHub - wbrickner/noise_step: noise_step: Training in 1.58b With No Gradient Memory
noise_step: Training in 1.58b With No Gradient Memory - wbrickner/noise_step
Paper page - Mix-LN: Unleashing the Power of Deeper Layers by Combining Pre-LN and Post-LN
https://huggingface.co/papers/2412.13795
Выявлен ключевой недостаток Pre-LN, она ограничивает эффективность более глубоких уровней.
Pre-LN вызывает меньшие градиенты в более глубоких слоях, снижая их эффективность. Post-LN усиливает градиенты более глубоких слоев, но вызывает исчезновение градиента в более ранних слоях.
Предлагается Mix-LN, который сочетает в себе Pre-LN и Post-LN.
https://huggingface.co/papers/2412.13795
Выявлен ключевой недостаток Pre-LN, она ограничивает эффективность более глубоких уровней.
Pre-LN вызывает меньшие градиенты в более глубоких слоях, снижая их эффективность. Post-LN усиливает градиенты более глубоких слоев, но вызывает исчезновение градиента в более ранних слоях.
Предлагается Mix-LN, который сочетает в себе Pre-LN и Post-LN.