Pull to refresh

Comments 16

Где однобитное, там сразу в голову приходит что-то низкоуровневое, всякие переключательные функции и карты Карно:) Т.е. от нейросетей как-то незаметно вновь вернулись к основам вычислительной техники... Ну а {-1, 0, +1} это же в чистом виде троичная логика, "триты" и все такое:)

Где-то читал, что человеческий нейроны обмениваются информацией с помощью спайков - пачек импульсов. При этом они могут:
молчат - если распознаваемый паттерн, совсем не то
1 импульс - нейрон как бы говорит, возможно это то
2 импульса - это, скорее всего, то
3 импульса - совершенно точно, это то самое!

Таким образом, похоже, наши мозги четырехбитные. Удивительно, что этот как будто никем не принимается во внимание.

Тоже на уровне что-то где-то слышал:

Обмен информацией между нейронами проще для восприятия рассматривать как музыкальные композиции, как то, группа нейронов с определенными импульсами образуют своего рода аккорд, имеющий тот или иной "оттенок", "интонации" конечного результата на выходе.

никем не принимается во внимание

Может потому что все на много много раз сложнее? Взаимодействие между нейронами в головном мозге происходит электрохимическими импульсами, под капотом которого очень всё сложно.

Нельзя сравнивать нейросети с их нулями и единицами в основе с нейронами в головном мозге. Это разные вселенные.

RTFM как говорится.

Там ещё много химии вокруг, так что 4 модно возвести в какую-то степень.

Где-то читал, что человеческий нейроны обмениваются информацией с помощью спайков - пачек импульсов. При этом они могут:
молчат - если распознаваемый паттерн, совсем не то
1 импульс - нейрон как бы говорит, возможно это то
2 импульса - это, скорее всего, то
3 импульса - совершенно точно, это то самое!

Таким образом, похоже, наши мозги четырехбитные. Удивительно, что этот как будто никем не принимается во внимание.

Конечно такое никем не принимается во внимание) Потому что это полная туфта. Вы ввели в заблуждение многих людей не проверив информацию.

Во-первых, отдельные нейроны не играют особой роли в мозге. Любые функции выполняют ансамбли нейронов. Во-вторых, они постоянно спонтанно активируются, даже когда не выполняют никаких функций. В третьих, есть генераторы активности, которые непрерывно генерируют некоторые паттерны активности. В четвертых, максимальная частота активации нейронов намного больше, до килогерца, хотя обычно считается не больше 200 гц. В пятых, видов кодировок много разных, и до конца этот они не изучены. В шестых, нет никакой постоянной привязки кодировки к функциям, зависит от контекста, где клетка находится в мозге. В седьмых, почти все сказанное выше может поменяться благодаря нейропластичности мозга на всех уровнях.

Да, это вам не формальные нейрончики в ИНС) Более точно свойства биологических нейронов моделируются в импульсный нейросетях с учетом STDP, которые используются в нейроморфных решениях.

В целом мозг не цифровая система, скорее аналоговая. Использующая метастабильные состояния (1, 2) и критические фазовые состояния на грани хаоса (1, 2, на Хабре).

Спасибо, это классный комментари

И как раз, у вас так же, присутствует ассоциация работы группы нейронов с музыкальной композицией.

Т.е. от нейросетей как-то незаметно вновь вернулись к основам вычислительной техники... Ну а {-1, 0, +1} это же в чистом виде троичная логика, "триты" и все такое:)

есть шанс что можно сразу к кубитам [0;1], эмулировав суперпозицию путем представления того что 0 содержит еще и -1.

Все это можно было реализовать ещё давно, но ни один человек или команда людей не смогла бы за всю свою жизнь закодировать таким образом столько информации, сколько знают современные модели, вручную, со всеми вариациями и взаимосвязями, неочевидными для людей.

Появилось достаточно быстрое железо и алгоритмы, что позволило автоматизировать процесс обучения этих систем в виде нейросетей. Сейчас осознают, что так много точности, как у float, в общем-то и не нужно, больше минусов чем плюсов, для производительности, памяти, и интерпретируемости моделей.

Я плох в тонкостях железа, но что-то мне подсказывает, что 1-битные или 1-тритные модели можно будет сильно оптимизировать очень крутыми трюками и хитростями.

И это поверх выигрыша от использования в ~10 раз меньше памяти/пропускной способности, замены float на int, умножения на сложение, или даже битовые операции, а точности с 16 до 1 бита или трита (будут пока нет оборудования паковать в бОльшие типы данных, или использовать 2 бита на вес).

Чую выигрыш в производительности на ватт для инференса в 100-10 000 раз :D

А ведь ещё подходы есть, что его ускоряют, куча исследований вышла за последние полгода. Уход от трансформеров к Mamba и другим архитектурам, или ещё лучше к гибрида архитектур, сочетающим в себе лучшие их части и при этом более быстрым чем стандартные трансформеры, особенно за счёт ухода от квадратичной стоимости контекста.

Сжатие KV кэша.

Mixture of Experts

Sparse activation

И многое другое.

Там столько исследований выходит, что ни внимания ни вычислительных мощностей не хватит у команд за всем уследить и все проверить для своих задач.

Жаль только пока так сильно обучение ускорить не могут, все таки там более аналоговый, постепенный процесс, то есть нужна точность и float-ы. На физических процессах в аналоговым оборудовании можно бы наверное было гораздо эффективнее, в плане потребления энергии, их тренировать, чем эмулировать аналоговость на двоичном оборудовании, но его, аналоговое, универсальное и удобное, ещё пойди сделай.

Где однобитное, там сразу в голову приходит что-то низкоуровневое

У меня первая ассоциация с дельта-сигмой и способом получить любое качество сигнала из однобитного ЦАП/АЦП.

Я немного далек от темы обучений нейронок. Может кто подробней объяснить, каким образом [-1, 0, 1] могут предоставить такую же точность вычислений, как и числа в 4 или 8 байт (int, double)?

Рекомендую почитать про современные способы квантования: https://habr.com/ru/companies/yandex/articles/800945/

В крадце, выделяются области похожих по масштабу значений (а это феном llm, что где-то рядом расположены числа, условно 1,2,3,5 а где-то 100,250,500, ещё есть выбросы - единичные значения типа 8 166 852, но их сохраняют отдельно) и квантуют области, уменьшая их точность, но при этом при инференсе все значения области умножаются на некую сохраненную константу, свою для каждой области, грубо восстанавливая масштаб. Кроме того, отдельно тренируют LoRA с полной точностью, которая восполняет точность вычислений там, где квантование ухудшило модель.

Таким образом, фактически, точность понижается только там где это не влияет или не сильно влияет на качество работы модели.

Кроме того, речь ещё может идти о том, что числе с низкой точностью может быть больше, при этом точность вычислений будет такой-же, а скорость расчетов выше, т.к. для 2-х битных чисел умножение по сложности не отличается от сложения, хоть самих сложений нужно делать больше.

Спасибо за «в крадце» ). В копилку

Вот вам еще "в крадце :)"
Не успел сразу ответить, 3 дня назад. Только начал использовать Habr (давно читал без входа в аккаунт), пока проверили 1 комментарий модераторы, пока сам про это вновь вспомнил.

https://habr.com/ru/articles/822141/comments/#comment_26959030

https://habr.com/ru/articles/822141/comments/#comment_26959006

Вы хорошо расписали о лучших приемах квантования, прямо в точку, и понятно.
Но это не совсем то квантование, о чем идет речь в статье. Это Post-Training Quantization.
Что так или иначе, наносит некоторый урон "мозгу" квантуемых моделей (чем больше нейронов и лучше алгоритм квантования, тем меньше урон).

А там начали использовать Quantization-Aware Training.
Обучают модель в высокой точности, но для прямого прохода, инференса, веса приводятся в диапазон -1, 0, 1.
И модель в процессе обучения учится под это ограничение подстраиваться!
Получается хорошо.

Я подробнее это расписал в своем ответе этому человеку ниже, вот тут:
https://habr.com/ru/articles/822141/comments/#comment_26959006

+ мои рассуждения на тему ближайшего будущего нейросетей/ИИ, и их текущих ограничений :)

Возможно где-то не совсем правильно, где-то это займет больше времени/имеет непреодолимые барьеры, через которые исследователи/инженеры не смогут пройти (надеюсь, что нет), но таково мое текущее усредненное видение.

Нейросетям не нужна такая избыточная большая точность, как минимум для уже обученных весов. Начинали вообще с 32-битных float-ов, но по сути, потому, что начали использовать видеокарты, что оказались для обучения и выполнения нейросетей эффективнее чем процессоры. Но видеокарты не были предназначены для расчетов в низкой точности, да и к тому же, в низкой точности их нельзя было стабильно обучать.
Так оно и тянулось годами, где-то делали свои эксперименты с меньшей точностью, но массово оно не применялось, потому что железо все равно не позволяло снять с этого все сливки, + инерция индустрии и подходов.

Постепенно начали переходить к обучению в 16 битных bfloat.

Потом к квантованию весов уже после обучения модели, что по сути "повреждает им мозг", но чем больше у них параметров и грамотнее квантование, тем меньше негативный эффект.

Потом начали задумываться о 8-битных float или int для тренировки, пока не знаю какой там прогресс и стабильно ли это.

И вот задумались, что можно обучать модели с весами сразу ограниченными очень низкой точностью, в данном случае - 1 бит или 1 трит (1.58 бит). Тренируют их все равно с помощью чисел высокой точности, но для прямого прохода, инференса (и при релизе модели) их уже упаковывают в более эффективную форму (для однобитных 8 весов на байт наверное запихнут, для 1.58 битных (тритных) - 5 или 1 значение на 2 байта чтобы не распаковывать потом.

Нейросеть во время обучения учится подстраиваться под это ограничение, и строить свои структуры с учетом этого. И получается хорошо.

А получается хорошо, наверное, потому что обнаружили, что у современных моделей в любом случае вмещается не более 2 бит на вес. Как обнаружили - не знаю, я недостаточно силен чтобы осилить подобные статьи, но вывод понял ;)
https://arxiv.org/abs/2404.05405

Даже если производительность будет немного хуже, чуть-чуть увеличат число нейронов-синапсов, и отыграют эффект. А выигрыш в эффективности инференса все перекроет.

Обучение правда, пока не понятно, можно ли будет сильно ускорить. Похоже, что немного - да. Но в любом случае с 10-100+ раз более быстрым инференсом можно поднять качество моделей на новый уровень, давая им мыслить "за кулисами", перед тем как дать финальный ответ.

Вот связанные интересные исследования:

1.58-битные (тритные) модели:
https://arxiv.org/abs/2402.17764
(до этого от них еще 1-битные были, но те чуть хуже себя показывали.

Вот еще более интересное:
https://arxiv.org/abs/2406.02528
Продолжение этой идеи от других авторов, совмещение с другими и собственными идеями, и результатат - модели без умножения матриц (формально вроде с ним, но когда матрицы состоят из -1, 0, 1, для умножения достаточно сложения или даже битовых операций), без float (вроде?), которые показывают +- такую же производительность, что и модели, натренированные в 16-битной точности.
И к тому же, предложенный ими вариант еще и имеет линейное или более близкое к линейному скалирование сложности расчетов при увеличении размера контекста.

Если я правильно понимаю, эти подходы сами по себе даже на текущем железе раз в 10-100 могут ускорить/снизить задержки/увеличить энергоэффективность моделей, обученных подобным способом.

Но когда еще начнут проектировать специализированные чипы под это, можно ожидать прироста еще раз в 100.

А как на трехмерные многослойные системы на чипе перейдут, + на новые материалы, так еще раз в ~100, в том числе для обычного, универсального железа.

А еще за последний год, и особенно пол года, повыходило множество других способов оптимизации инференса, производительности (качества) модели, умещения больших возможностей в меньшее количество параметров, ускорения обучения.
Сжатие KV кэша, новые подходы для Mixture of Experts, улучшенная разряженность + новые функции активации, You Only Cache Once от авторов 1.58 битного исследования (они вообще большие молодцы!), Multi-Token Prediction, и многое другое.

Часть этого выигрыша направят на улучшение ответов моделей за счет предоставления им возможности думать и корректировать себя (System 2 thinking) собирать информацию, анализировать, и только потом давать финальный ответ.
Часть - на то, чтобы обучать более крупные модели, у которых лучше прокачана картина мира, "интуиция", знания, меньше галлюцинаций. Что должно открыть им больше возможностей для самокоррекции ошибок, рассуждений, и в целом повысить их надежность для применения System 2 thinking.
Часть - на оптимизацию затрат на датацентры.
Часть - на применение наконец новых подходов вроде тренировки моделей не на токенах, что ухудшают их возможности и заставляют их тупить или тратить кучу параметров при обучении на преодоление ограничений токенизации. А сразу на байтах! Это должно их еще больше интегрировать в цифровой мир и открыть их дорогу к огромной мультимодальности скажем так, без промежуточных звеньев и потери информации, но будет стоить сильно больше производительности железа. Хотя, обучаясь на байтах, они обучаются эффективнее, требуется меньше параметров, как минимум в какой-то степени, может смогут этим компенсировать потери в скорости.
Вот одно из релевантных исследований:
https://arxiv.org/abs/2404.19737

Как я понимаю, сейчас начинается позитивная обратная связь, добродетельный цикл.
Одна достаточно хорошая, важно,-надежная, знающая хотя бы в целом критерии что есть правильно а что нет, для многих вещей; топовая модель обучает новые более мелкие модели на своих глубоких рассуждениях на темы, или дообучает сама себя с добавленными параметрами, для построения более эффективных "нейронных" связей, более рафинированной картины мира (хоть и часто без такого же огромного объема знаний-фактов).
Учится учиться, так сказать.
Иногда это разбавлять скармливанием всего интернета (желательно более качественных его частей) и она еще и в целом знания-факты забывать не будет.

До этого, их обучали как, по аналогии с человеком: по сути это как будто ученик с очень хорошей памятью имеет задачу сдать какой-то более-менее простой экзамен, и читает миллионы книг, на самые разные темы, самого разного качества (качество в последний год стали поправлять, как пример, серия моделей Phi), вперемешку, одну за другой, много раз перечитывает их с первой, когда дойдет до последней. При этом не давая себе ни секунды на то чтобы остановиться и подумать о том, что он только что прочел, как это ложится на его уже имеющиеся знания, как их дополняет/изменяет (хотя в какой-то мере текущий подход все-же это делает, за счет самого алгоритма обратного распространения ошибки).
Получается такой зубрила-всезнайка, но не умеющий глубоко думать, рассуждать, знающий очень много, но со слабоватой связью между темами, слабым усреднением и обобщением информации, как минимум на интуитивном уровне. Знающий подходы к рассуждению, но чужие, сам их не поняв и не адаптировав под себя, под то, как его структура мозга выстраивается и какие знания-понимания-факты в нем уже есть, с какими связями...

Выше я упомянул, "слабым усреднением и обобщением информации, как минимум на интуитивном уровне."
А ведь они сейчас чисто интуицией и оперируют, будто печатая эссе на тему вашего запроса под дулом пистолета, без секунды на подумать. Что в голову пришло, то и напишут следующим словом/предложением, и если это будет ошибочно, очень редко могут сами тут же исправить себя, это их сильно отвлекает, и да и не обучены они так себя исправлять во время ответа, а удалить предыдущее слово/предложение, которое их сбивает-отвлекает, из своего контекста, они и вовсе не могут.

Это как я это вижу. Увы, не имею отношения к этой сфере, но месяцев 8 назад заинтересовался, стало очень интересно. Но не потяну математику/нет железа/ни-че-го, депрессия уже много лет, да и ИИ это последняя моя надежда что люди потянут все кризисы что уже начинаются, разом, и все более сложный, для обычного, сломанного, с детства кормленного конфликтующей информацией, среднестатистического человека, технологический мир и общество.

Sign up to leave a comment.

Articles