Pull to refresh

Comments 17

Глянь, у тебя в блоке с интерпретациями в одной строчке опечатка затесалась — в дополнительном коде (two's complement).

Во всех соседних строках значения идут строго по порядку битов 00, 01, 10, 11, а тут числа выстроились просто по возрастанию: −2, −1, 0, +1. Из-за этого кажется, будто 00 — это −2, а 10 — это 0.

Где поправить: Было:

дополнительный код (two's complement): −2, −1, 0, +1

Надо:

дополнительный код (two's complement): 0, +1, −2, −1

Потому что по битам там: 00 = 0, 01 = +1, 10 = −2, 11 = −1.

Благодарствую, поправил

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

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

проблема в том что нет троичного железа, даже не массового, а без него внедрение троичной логики быстро скатится к fp2.

Нет никакой проблемы.

Данный конкретный метод квантизации ничего обшего с троичной логикой не имеет.

Это просто способ задания точности, а не логика. Вместо трех значений можно взять, например, пять: -2,-1,0,1,2. Будет чуть точнее, но и больше места занимать.

NVFP4 сделали, и тут можно что‑нибудь придумать. В конце концов, аппаратное ускорение троичной логики поверх двоичной можно сделать за счёт суперскалярности, обрабатывая за раз множество чисел.

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

Проблема в том, что в состоянии 0 транзюк, падла, сильно греется. :)

Лабораторную макету сделать можно, а вот привычные кристаллы на миллионы трит, увы. Нужно что-то городить с внутрикристальным охлаждением.

Как я и написал в статье, не все слои переводятся на низкобитный формат. И по вашей ссылке говорится то же самое:

  • Targeted 2-bit quantization: We heavily compressed (to 2-bit) the specific parts of the model that generate tokens, while keeping the core reasoning layers at higher precision. This saves storage without making the model less smart.

Перевод:

Целевая 2-битная квантизация: мы подвергли сильному сжатию (до 2 бит) конкретные части модели, отвечающие за генерацию токенов, сохранив при этом более высокую точность вычислений в основных слоях, отвечающих за логические рассуждения. Это позволяет сэкономить место в памяти, не снижая при этом интеллектуальные способности модели.

Обучение по прежнему ресурсозатратное, поэтому и был выбран самый “щадящий” корпус, что бы каждый мог попробовать обучить модель на своем железе.

Старый 32-битный телефон armv7 с одноканальной DDR3 у меня есть. Современного AVX2 компа нету, тем более с NPU. Надо статью как получилось портировать претрейн на этот телефончик?

Продолжать статьи на тему НЕпрактического применения ИИ?

Ну как бы да, оно не практично. Хотя... как бы Вы обосновали зачем?

Навскидку 2 ответа на вопрос зачем (ради прагматики и ради эстетики):

1) Смартфоны по отдельности слабее видеокарт, но их несравнимо больше. Если 7 миллиардов устройств заработают одновременно на пределе возможностей, суммарное потребление составит от 23 до 38 гигаватт (дата-центры мира потребляют порядка 40–50 ГВт). Цена плашек DDR3 стала расти вслед за скупкой DDR4 и DDR5, так почему бы не задействовать чипы смартфонов, медленно но верно пропуская через них десятки токенов (вместо тысяч)?

2) Обучение нейросети на смартфоне, использование ретро-авто и «нерентабельной» техники — это разные грани одного явления. Мы не всегда выбираем вещи по критерию максимальной эффективности. Иногда на первый план выходят приватность, эмоции, стиль, экологичность или просто привычка. Старая техника продолжает служить не потому, что она «выгодна» в экономическом смысле, а потому что она ценна по-другому — как хобби, как память, как способ самовыражения или как надёжный инструмент, который просто работает. Каллиграфия зачем, если печатаем на клавиатурах? Ужение на поплавочную удочку зачем, если эффективнее сетями или в магазе рыбу купить? Но на ужин наловить и приготовить вполне достаточно и приятно. Так же и с обучением на своих данных на старом смартфоне.

@virexПопробуйте мой метод слияния для ускорения обучения, будет лучше https://github.com/ShmidtS/HAGI_v2 только не забудьте отсортировать данные по когерентности перед обучением и подобрать минимальный размер модели для максимальной скорости обучения самого маленького элемента.

Хабр торт!

Спасибо за статью)

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

И второе,связанное с первым: частичный отказ от математического градиента при обучении. Некие варианты правила Хэбба, его частичное применение между блоками . Т е обучаем большую сеть поблоково - в выбранном блоке методом градиентного спуска, а все остальные веса квантованы и обучаются эквивалентом хэббовского правила. Затем блок меняется,в первом блоке веса квантуются, а второй доучиваться градиентом. Интересно, будет ли выигрыш на слабом железе, в сравнении со стандартным градиентным спуском на всей сети сразу. Один блок может уместится в памяти одиночного gpu или в оперативной памяти без обращения к диску/сети.

ПС: подписался на вас.Люблю оригинальные идеи.

а пробовали компилировать готовый файл модели в c#?

Сколько получается размер?

Может получится вообще это все через nanoFramework запустить на чистом c# на esp32

Нет не пробовал, но вы можете попробовать сами. У меня была цель реализовать proof of concept.

можно ли использовать модели (обученные вне вашего инференса) с вашим инференсом? как есть или после конвертации

Sign up to leave a comment.

Articles