Чивиня (Multi-layer Parkinson) – Telegram
Чивиня (Multi-layer Parkinson)
40 subscribers
14 photos
3 videos
3 files
41 links
Download Telegram
Помнится год назад в этом чатике при экспериментах приходили к таким же выводам про weight decay только на моделях для изображений. https://arxiv.org/abs/2509.14786
Если наблюдать за людьми, то можно заметить, как сильно на их действия влияют погода, гормоны, сытость и ещё куча факторов, не связанных напрямую с мыслительной деятельностью. При этом сильное влияние каждого значительно уменьшает жизнестойкость человека, приближая его тело к смерти.

Другими словами, удерживать себя живым - довольно не простое занятие для тела. Это видимо довольно узкий "туннель".

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

И следующий за ним вывод состоит в том, что искусственная жизнь предшествует искусственному интеллекту. Неживой ИИ не может быть свободным. Он будет нестабилен и или погибнет, что наиболее вероятно, или превратится в искусственную жизнь.
В ML есть hard examples mining. Я как-то пробовал с ним играться, подмешивая в последних эпохах в батч семплы, которые при классификации имели неверный класс. Тогда ничего путного из этой затеи не вышло, не помню уже почему. Данные были чистыми вроде.

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

Возникает идея отсеивать из батча семплы, дающие большие значения лоса и не обучаться на них, предполагая, что веса постепенно дообучатся до состояния, когда значения лоса на таких hard examples будет приемлемым. Наверное этот подход должен хорошо работать на шумном датасете.
В Foundation S03E10 в самом конце отличный диалог роботов:
- Вероятно кто-то пытается втянуть нас в борьбу.
- Вероятно кто-то добился успеха.

Первое слово их фраз очень softmax-ное. 😊
Посмотрел "Дознание пилота Пиркса". Удивительно на сколько был прозорлив Станислав Лем.
Влад Голощапов как-то рассказывал про траекторию обучения сети https://news.1rj.ru/str/GradientWitnesses/2 . Глядя на неё, видно, что ближе к концу обучения веса сети начинают колебаться, описывая сложные кривые вокруг какой-то точки. И мне тогда казалось, что все слои сети к этим колебаниям как-то быстро адаптируются. Или же их можно сглаживать, а то и полностью убирать через создание параллельной EMA-модели.

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

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

Если такое поведение воспроизведётся в других экспериментах, будет интересно...
Давно была мысль сделать что-то вроде самообучающейся смотрелки видео-потока, выдающей на выходе хороший эмбединг только что увиденного. Попробовал взять алгоритм self supervised learning, в котором можно разобраться, и прикрутить его к видео-потоку с камеры. Мне казалось, что одно создано для другого. Но на практике оказалось, что каждый кадр - это фактически батч из одного семпла, а значить куча всего ломается: половина SSL-лосов не работает, все коэффициенты, которые народ подбирал в своих опытах под батчи в 1024 семпла тоже не работают. разница между соседними изображениями не так велика, чтобы, например, пробовать собирать из них нормальные батчи. Ну и из-за всего этого моделька ни фига не обучается, а моментально коллапсирует.

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

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

Если ещё подумать, то можно предположить, зачем нужны сны: мы в них как бы вновь проживаем что-то, вроде уже увиденного прежде, хоть и в странной форме (ширины эмбединга не хватает видимо 😊 ). Без снов наверное мы потеряем себя, свой опыт, и останемся только в настоящем, если можно так выразиться. Т.е. всё, чего мы не воспринимали недавно будет постепенно вымываться.

И так же можно предположить, почему скорость обучения с возрастом падает: груз накопленного опыта требует помнить его и постоянно удерживаться недалеко от него. Плюс ещё всё новое воспринимается через его призму. Т.е. LR если и отличен от нуля, то очень не сильно. Скупому человеку сделаться щедрым почти невозможно.
Вчерашнюю проблему с запуском self supervised learning эмбедера на видео-потоке решил через предварительное обучение его на видосике про дикую природу России. Более чем визуально богатые кадры выбирались в случайном порядке. И ждал пока скользящее значение лоса с beta=0.9999 станет больше, что с beta=0.999 . Т.е. когда сглаженное значение лосса начнёт падать. Т.е. обучение худо-бедно началось. Длится всё это около минуты на cpu с примитивной моделькой из 3-х свёрток и пары линейных слоёв.
Если подумать, то текущие LLM-ки - это универсальные запоминалки знаний. И тренировать их ИМХО стоит пробовать иначе.

Обычно мы разбиваем датасет на обучающую и проверочную выборку. И вторую используем для того, чтобы отследить момент переобучения. Так мы достигает наилучшего ОБОБЩЕНИЯ модели.

Но когда цель ЗАПОМИНАНИЕ, когда датасет настолько огромен по сравнению с моделью, что на нём невозможно переобучиться, то существование проверочной выборки теряет всякий смысл. И учиться возможно стоит до тех пор, пока падает loss на обучающей выборке.

Эту гипотезу конечно стоит проверить. Я никогда не обучал LLM-ки. Те, кто делал это, надеюсь меня поправят.
Продолжаю мучить свой эмбедер. Приделал к нему сохранение ключевых кадров, которые им плохо перевариваются и запустил поработать с пол часика. Ключевые кадры периодически снова подмешивались в обучающую выборку и модель на них повторно пробовала обучиться. Нечто подобное называется вроде hard examples mining. Что интересно, некоторые изображения со второго раза уже нормально обрабатывались.

С человеком бывает похоже: что-то вызывает шок, а потом уже воспринимается в порядке вещей, а что-то не уходит из памяти, всплывает в воспоминаниях и терзает снова и снова.

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

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

Есть похожие числовые последовательности, когда сначала они генерят одно распределение, а потом переключаются на совсем другое ( https://news.1rj.ru/str/physics_lib/14497 )

P.S.
Лучше сразу приготовится склеить их несколько, ибо ширины скорее всего быстро не хватит.
Если посмотреть на свежие результаты валидации разных моделек на очищенном от мусора Imagenet-е https://github.com/rwightman/timm/blob/main/results/results-imagenet-a-clean.csv , то видно, как сильно скачет размер моделей (иногда почти на порядок) при той же accuracy, видно как слабо размер моделей добавляет accuracy, если модели одной архитектуры, видно, как сильно влияет техника обучения моделей.
На работе по мере роста проекта на серверах для инференса количество свободной памяти у GPU стало кончаться. Недавно прочёл новость от китайцев, что они сильно уменьшили парк серверов и увеличили утилизацию GPU, копируя модели на GPU по мере необходимости, а не постоянно держа их загруженными. Попробовал такой же подход, оказалось, что он весьма эффективный. Редко используемым моделям можно делать перед использованием model.cuda() , а после - model.cpu() . Первые разы оно занимает время, а потом работает быстро. Короче, рекомендую вполне рабочий трюк экономии памяти GPU.

Кстати, во всяких vLLM и подобных либах для инференса есть подобные настройки? Там вроде только не влезающие веса на cpu инференсят, что не быстро...
В 21-ом году было опубликовано https://arxiv.org/pdf/2103.17239 , где предложили слой LayerScale. Он делает очень простое действие: умножает поэлементно на обучаемый параметр. Инициализируется он 1e-5 и работе (и к слову до сих пор в других моделях) используется как последний слой в skip connection-е. Видимо чтобы в начале обучения сигнал хорошо проходил через сеть и не сильно зашумлялся. Сам слой довольно лёгкий в плане количества весов.
Мне почему-то кажется, что он может выполнять совсем иную функцию: добавлять "изгибов" проходящему через сеть сигналу при минимальном числе весов, если к нему слой активации добавить. И ещё возможно ему bias-а не хватает. А инициализировать его единицами.

Реализация слоя в timm: https://github.com/huggingface/pytorch-image-models/blob/ae4d1bbfefab7e4f2f49a744838a2d9c7713146d/timm/layers/layer_scale.py
"Болото возможностей" 😊
👏2
Пришла мысль, как находить оптимальные для каждого слоя LR.
Начинаем обучение с каким-нибудь совсем малым LR вроде 1e-9. И смотрим на то, как меняются градиенты у слоя. Если постепенно уменьшаются, то LR стоит увеличить. Если начинают расти, то уменьшить. Уменьшение и рост градиентов можно отследить, используя два скользящих средних с разными коффициентами, например 0.999 и 0.9999.
Небольшой офтопик...
Об этом все знают, но мало кто подмечает, почему так... Москва - не место для полноценной жизни.

Я несколько лет назад переехал из Москвы в Подмосковье. Из квартиры в дом. А на днях заезжал прибраться в квартиру и обнаружил следующее.

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

В квартире с закрытыми окнами в шкафах с закрытыми дверями на полках лежит чёрная пыль. На полу её примерно столько же. Она видимо настолько мелкая, что висит в воздухе и проникает с малейшим его течением во все щели. Этим всем неприятно дышать.

Шум от машин. Конечно зависит от места. Где-то и с открытой форточкой терпимо. Но от него не укрыться ни за какими супер-окнами. Шум неприятно постоянно слышать.

Температура, а значит и влажность, воздуха слабо поддаётся контролю. Очень сухой воздух в квартире. Можно регулировать температуру на батареях конечно, но у меня все батареи отключены вообще, а в квартире жарко и сухо. Думаю, что сильно выручил бы увлажнитель. Таким воздухом не хочется дышать и не хочется чтобы он окружал тебя.

Нет притока чистого воздуха с улицы. Это решается или пассивным приточным клапаном без фильтрации или бризером с хорошими фильтрами. Но их работа создаёт много шума. У меня сейчас в доме aeropac SN. Они бесшумны на всех режимах, кроме самого сильного, но имеют очень слабую фильтрацию. От комаров и мух они помогают, а от пыли - нет. До этого был Тион 4s. Он хороши фильтрует воздух, но у него быстро выходят из строя подшипники, и он начинает свистеть на сервер в датацентре. Ремонт помогает лишь на время. Видимо это конструкционный изъян. Был бы он тихим, поставил бы его. Без притока с улицы и при работающей вытяжке из подъезда начинают прилетать разные запахи. Так же запахи летят от курящих на соседних балконах. Из стояка прилетают запахи... Бризер, создающий избыточное давление в квартире ставить 100% надо. Причём с определённой стороны дома, где соседи не имеют привычки курить. Дышать всеми этими запахами неприятно.

Квартира обездвиживает человека. В некуда пойти. Это возможно звучит странно. Но в доме мне есть куда пойти. Детям, есть место, где побегать. Есть лестницы. Я много хожу между разными помещениями, между этажами... Быть малоподвижным неприятно.

В квартире всё маленькое. Приходится ютиться в ней. Может от 100-150м2 уже более менее комфортно, не знаю... Но постоянно чувствуешь, что всё вокруг тебя стесняет и ограничивает. Нужно идти так, чтобы протиснуться... Это неприятно.

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

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

Вроде бы очень актуальный вопрос снижения рождаемости. Я слабо представляю, как можно иметь несколько детей в Москве. Какой-то умный человек предлагал раздавать гектары земли, но прочему-то в какой-то глуши. На самом для стимулирования рождаемости надо давать участок соток 15 с домом 200м2. И не в глуши (чтобы осваивали землю), а рядом с местом, где есть магазин, садик, школа, автобус раз в 10 минут до города, чтобы туда на работу ездить. И не 2 часа, а 30 минут. Это направит поток людей из города в комфортную для жизни среду, в которой хочется находиться. С людьми в такие месте переедет и культура. Потребление таких домохозяйств будет значительно выше, ибо возникнет потребность в том, чего город человека лишает.
Доброе утро.

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

Никак не мог найти объяснение, почему дети предпочитают уже неделю слушать "Незнайку и его друзей". Я предлагал залить следующую аудио-книгу тоже про Незнайку. Они не хотят. Другие аудио-книги тоже не хотят. Им почему-то не надоедает слушать одно и то же по кругу или в случайном порядке.
А сегодня пришла в голову аналогия: процесс видимо похож на попытку обучить модель, созданную для MNIST-а, на ImageNet-е. Т.е. аудио-книга им не надоедает, ибо пока не смогла вместиться в их головы и каждый раз слышится несущей новое.
Это любопытное наблюдение, возможно подсказывающее, как обучается мозг людей новому.
В DeepSeek Engram реализовали очень верную стратегию: разделить memory и compute. Надеюсь, что это подход активно развиваться. Это вполне может дать нам через год LLM-ку, которая будет работать на смартфоне и при этом иметь высокое качество.
Возможны варианты, когда memory будут брать от больших моделей, а compute-ом заниматься лёгкие модельки. Также открывается новое направление масштабирования: размер memory.