в токенах контекст у человека не измеряется, это верно, но это не значит, что нет принципиальной возможности этот его контекст токенами описать. Более того - почти наверняка можно. Моделей таких пока нет, но будут.
умение поймать себя на незнании - это выученный скилл. Человеческие "токены" (которых нет) знают, что при определённых сигналах нужно включать reasoning mode, а то и переходить к использованию инструментов (курить мануалы и прочий интернет).
Так что - да, современные модели ещё не достигли уровня человека во всём. Но многие аспекты у них получаются уже очень неплохо, а в тривиальных делах (типа недопущения ошибок типа copy-paste) они человека уже надёжно обошли. Исследования продолжаются и модели лучшают на глазах. Год назад возможность навайбить OS отсутствовала напрочь.
FFN это та часть, которую я описал как "токен спит и видит красочные сны". FFN на схемах обычно рисуют как две трапеции - одна расширяется раструбом, а вторая сразу после неё сужается. Вообще говоря, между ними ещё есть тонюсенькая прослойка - активация, но её рисуют не всегда.
В матричном вычислении есть умножить матрицу размером AxB на матрицу размера BxC то размер результата будет AxC.
Токен - это вектор значений (некоторое количество чисел с плавающей запятой), в моих примерах его размер был 4096. Поэтому его размер можно записать как 1x4096. FFN матрицы имеют размеры 4096x12288 и 12288x4096.
Поэтому цепочка выглядит так: 1. токен @ первая матрица -> результат 1x12288 - красочный сон 2. красочный сон -> притуплённый сон в результате активации (размер сохраняется 1x12288) 3. притуплённый сон @ вторая матрица -> снова 1x4096, готов к следующему этапу Активация на шаге 2 это "ужимание" диапазона в какие-то жёсткие рамки. В результате стольких умножений и сложений каждое из 12288 чисел может иметь очень большие или очень малые значения. После активации это обычно ужато в диапазон -1...+1, а то и ещё меньше. Функций активации много разных, самая простая для понимания - сигмоид, по нему прекрасно видно, как именно сжимается диапазон.
Честно говоря, я бы все три места оставил как есть. Первое кажется мне достаточно очевидным, а я сам не люблю, когда мне предельно "разжёвывают" материал, поэтому предпочту воздержаться от такого. А вот второй и третий пункты просто за рамками. Очень соблазнительно всё это объяснить, но всё таки статья не совсем про это. Поэтому ограничусь ответом на коммент здесь, кому интересно - прочитает. 1. Условность без прямого соответствия? Ну, да, наверное действительно так. "Солёное" - действительно вряд ли, модели не способны ощущать вкус, "зелёное" - тоже, если модель не мультимодальная. А вот грусть они очень даже понимают, поэтому думаю, что такая характеристика там вполне может быть. 2. Если умножить матрицу размером 1x10 на матрицу размером 10x40 то получим новую, 1x40. Получается, что мы нашу "раздули" в 4 раза. После этого можно применить активацию (притупить положительные и отрицательные эмоции) и можно сдувать обратно домножением на матрицу 40x10 3. LLM - это, строго говоря, математическая функция. А от функии можно взять производную. Производная, по смыслу своему - градиент. В процессе обучения мы обновляем веса следуя градиентам и из изначального шума (до обучения вся модель состоит из случайных чисел) постепенно проступают осмысленные веса. Вот только осмыслены они с точки зрения модели, а для человека всё ещё зачастую выглядят случайными, пусть в них и прослеживаются иногда некие паттерны.
Далеко ли у вас ваш внутренний роутер напредсказывает? Предположим, что у вас генерация идёт 20 токенов в секунду (это совсем немного). И какие-то из экспертов используются только 1% времени. Значит примерно раз в пять секунд вам придётся их перегружать в GPU.
Но! Это и есть та причина, по которой MoE настолько заметно быстрее работают в гибридном режиме - когда в GPU влазит не вся сетка, а только её часть, как раз достаточная для просчёта очередного шага. Для посчёта следующего токена вам, может быть, из уже загруженных экспертов нужно 75%, а значит прогрузить надо только одну четвёртую.
в токенах контекст у человека не измеряется, это верно, но это не значит, что нет принципиальной возможности этот его контекст токенами описать. Более того - почти наверняка можно. Моделей таких пока нет, но будут.
умение поймать себя на незнании - это выученный скилл. Человеческие "токены" (которых нет) знают, что при определённых сигналах нужно включать reasoning mode, а то и переходить к использованию инструментов (курить мануалы и прочий интернет).
Так что - да, современные модели ещё не достигли уровня человека во всём. Но многие аспекты у них получаются уже очень неплохо, а в тривиальных делах (типа недопущения ошибок типа copy-paste) они человека уже надёжно обошли.
Исследования продолжаются и модели лучшают на глазах. Год назад возможность навайбить OS отсутствовала напрочь.
FFN это та часть, которую я описал как "токен спит и видит красочные сны". FFN на схемах обычно рисуют как две трапеции - одна расширяется раструбом, а вторая сразу после неё сужается. Вообще говоря, между ними ещё есть тонюсенькая прослойка - активация, но её рисуют не всегда.
В матричном вычислении есть умножить матрицу размером AxB на матрицу размера BxC то размер результата будет AxC.
Токен - это вектор значений (некоторое количество чисел с плавающей запятой), в моих примерах его размер был 4096. Поэтому его размер можно записать как 1x4096.
FFN матрицы имеют размеры 4096x12288 и 12288x4096.
Поэтому цепочка выглядит так:
1. токен @ первая матрица -> результат 1x12288 - красочный сон
2. красочный сон -> притуплённый сон в результате активации (размер сохраняется 1x12288)
3. притуплённый сон @ вторая матрица -> снова 1x4096, готов к следующему этапу
Активация на шаге 2 это "ужимание" диапазона в какие-то жёсткие рамки. В результате стольких умножений и сложений каждое из 12288 чисел может иметь очень большие или очень малые значения. После активации это обычно ужато в диапазон -1...+1, а то и ещё меньше. Функций активации много разных, самая простая для понимания - сигмоид, по нему прекрасно видно, как именно сжимается диапазон.
Честно говоря, я бы все три места оставил как есть. Первое кажется мне достаточно очевидным, а я сам не люблю, когда мне предельно "разжёвывают" материал, поэтому предпочту воздержаться от такого.
А вот второй и третий пункты просто за рамками. Очень соблазнительно всё это объяснить, но всё таки статья не совсем про это. Поэтому ограничусь ответом на коммент здесь, кому интересно - прочитает.
1. Условность без прямого соответствия? Ну, да, наверное действительно так. "Солёное" - действительно вряд ли, модели не способны ощущать вкус, "зелёное" - тоже, если модель не мультимодальная. А вот грусть они очень даже понимают, поэтому думаю, что такая характеристика там вполне может быть.
2. Если умножить матрицу размером 1x10 на матрицу размером 10x40 то получим новую, 1x40. Получается, что мы нашу "раздули" в 4 раза. После этого можно применить активацию (притупить положительные и отрицательные эмоции) и можно сдувать обратно домножением на матрицу 40x10
3. LLM - это, строго говоря, математическая функция. А от функии можно взять производную. Производная, по смыслу своему - градиент. В процессе обучения мы обновляем веса следуя градиентам и из изначального шума (до обучения вся модель состоит из случайных чисел) постепенно проступают осмысленные веса. Вот только осмыслены они с точки зрения модели, а для человека всё ещё зачастую выглядят случайными, пусть в них и прослеживаются иногда некие паттерны.
Ну могу разве что исправить на Output(чтото) = чтото@Output. Ну либо на A(B) = B@A. "Игрек" потому и появился, чтобы не вписывать туда целую формулу.
А насчёт недостаточной глубины - готов ответить на уточняющие вопросы. Почему именно как? Зачем что?
Далеко ли у вас ваш внутренний роутер напредсказывает? Предположим, что у вас генерация идёт 20 токенов в секунду (это совсем немного). И какие-то из экспертов используются только 1% времени. Значит примерно раз в пять секунд вам придётся их перегружать в GPU.
Но! Это и есть та причина, по которой MoE настолько заметно быстрее работают в гибридном режиме - когда в GPU влазит не вся сетка, а только её часть, как раз достаточная для просчёта очередного шага. Для посчёта следующего токена вам, может быть, из уже загруженных экспертов нужно 75%, а значит прогрузить надо только одну четвёртую.