Свидетели Градиента – Telegram
Свидетели Градиента
488 subscribers
128 photos
29 files
61 links
Этот канал предназначен для общения и обсуждений среди тех, кто как и я, хочет видеть что происходит под капотом у нейросетей, и старается развивать интуицию об их природе и свойствах.

Для связи: @kraidiky
Download Telegram
Всё чудесатее и чудесатее...
Взял модель, проредил случайным образом на четверть, после чего запустил без дальнейшего отрезания или прирастания весов. Контрольная группа, так сказать.

Учится такая сеть ощутимо медленне, по горизонтали количество батчей. Но что интересно, гроккинг начался когда accuracy на train едва перевалила за половину.
Та же ситуация на прореживании в 50% Для сравнения дам полную сетку у которой все веса на месте, она отучилась быстрее всех. Причём в больших случайно прореженных сетях acc на train до 100% не дотягивается. При постоянной скорости, по крайней мере.

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

Щемящее чувство первооткрывательства!

Картинки: 0%, 25%, 50%, 75%. В последнем случае без манипуляций с коннектомом сеть уже совсем не тянет...
🔥2
На вчерашнем мероприятии в Яндексе придумал для себя новый термин "эта подзадача является llm-оптимизируемой".
По-моему очень хорошо подходит для современных продуктовых рассуждений.
🤣1
Из интересного. В той же задачке из того же ноутбука если lr снизить в три раза train не сумеет достигнуть 100%. Но гроккинг всё равно сумеет запуститься.

Если представлять адаптивный ландшафт как лабиринт лежащий на более или менее гладкой огибающей то у такой ситуации может быть небезинтересная трактовка. И практические выводы для охотящихся за гроккингом тоже.
🤔2
Последние мои заметки про прунинг в трансформерах вызвали лайки только у одного человека, поэтому сейчас будет исследование общественного мнения на тому что не так и как с этим бороться:
Anonymous Poll
45%
По трансформерам пока ничё непонятно и фрагментарно, ждём большого доклада с подробным изложением.
0%
Все эти трансформеры для богатых, а нам их учить не светит.
42%
Слишком синтетическая задача, да ещё и с гроккингом, интересно как это взлетит на чём-то реальном.
9%
Лучше бы что-то более понятное сделал, MobileNetV4 прунанул, например, чтобы там разморозка и т.п.
15%
Интересны более фундаментальные вещи, типа первых докладов, например режим оптимизатора понажёристее
24%
Лучше бы какой-нибудь инструментарий наконец в опенсорс выложил. А то собирался и всё никак.
3%
Нужно формат сменить на более живенький.
9%
Свой ответ в комментариях...
На ODS выложили трэк с моими докладиками, нарезаными в отдельные файлы. Можно ими кидаться в товарищей, которые по каким-то причинам ещё не причастны.
https://ods.ai/tracks/df24-randomdsml
👍5😁1
Из примерно недельного вычислительного эксперимента по подбору гиперпараметров я имею сказать, как мне кажется, очень важное наблюдение. По всей видимости в принципе не существует гиперпараметров, одинаково хорошо подходящих для прорежвания плотной матрицы и матрицы уже прореженой в двадцать раз. Если что-то пруните ставьте отдельные опыты по подбору гиперпараметров в начале в середине сжатия, и когда выдавливаете из сети последние ещё x1.5 и ещё пол капельки
👍3🤔21
Раз уж меня не срослось с выступлением на на хайлоадовской AiConf поделюсь чуть-чуть прогрессом, потому как рассказать неймётся. :)

Тренеруюсь тут подбирать гиперпараметры, на всё том же трансформере с гроккингом, При соблюдении должной аккуратности его даже без перестроения коннектома на уровне слоёв можно пожать ещё в полтора раза сильнее, примерно до 6тысяч весов от начальных 422тысяч, это x73 и на последних этапах сжатия веса модели убавляются уже буквально по одному, то есть 30 штучек удаляется, и 29 штук перспективных кандидатов возвращается обратно.

Всё это прекрасно и весело, но естественно задать вопрос, а на сколько этот трансформер был перепараметризован изначально? Напомню, задача состоит из ~10 тысяч примеров, из которых ровно половина в валидейшене - таблица остатков от деления размером 98*97, трансформер с внутренним эмбедингом 128 из двух слоёв, в общей сложности 422 тыс. весов.

Чисто по формальному математическому критерию перепараметризация наступает когда количество эффективных весов больше, чем количество примеров в выборке, но такое определение хорошо подходит только для доказательства теорем. Поэтому перейдём сразу к практике и начнём запускать бейзлайн уменьшая размер модели. И... если мы уменьшим внутренний эмбединг до 96, то модель ещё справляется и с трейном и с валом через гроккинг, Это ~200тыс весов, а вот 64 уже не вытягивает. Глубину тоже можно уменьшить до одного слоя и при эмбединге 128 она справится с задачей, а на 96 уже нет. Тоесть, как бы и перепараметризованная задачи и одновременно не так, чтобы сильно. Пляшем так или иначе где-то вокруг 200тысяч, меньшего размера плотная модель уже не тянет. А жёмтся при этом до 6 тыс. Грубо говоря в 10 раз по скорости (потому что спарс-матрицы x3 медленнее) и в 15 раз по памяти и шине (потому что индексы для спарсов можно хранить половинного размера как минимум).

P.S. Необходимо буквально тантрическое терпение, чтобы изучать все вот такие свойства разреженного обучения вместо того чтобы сразу броситься писать финальную версию кода... Даже хорошо, что я пока независимый исследователь, потому что никакому начальнику терпения бы не хватило...
P.P.S. Обратите внимания на стратегию прунинга с отращивание новых весов. Мне даёт результаты кратно лучшие чем обычный прунинг.
👍6
Когда телеграм обрезал текст на оценку "Зашибись!"
👍2
Всем привет, у меня вопрос!

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

- У Сбера есть бенчмарк публичный, для экспериментов с разными идеями, но там задача рассчитана на, примерно 200М весов, чтобы готовым результатом померяться это норм, но для быстрых домашних экспериментов многовато.
- Есть тот трансформер с гроккингом, на котором я балуюсь, он хорош тем, что совсем микроскопический время разных экспериментов всего от 4 минут до часа, но эта задача совсем вырожденная, последовательность всего из двух токенов состоит, так что для многих экспериментов она просто непригодна.
👍2
Forwarded from Vlad Goloshchapov
Российские школьники выиграли олимпиаду по искусственному интеллекту. Россияне были единственными людьми, кто выступал без флага "дабы разумением своим не смущать начальства".
🤡2🤔1🤣1
Постоянные читатели канала увидят больше половины доклада ещё до того, как я его до Новосибирска довезу.

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

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

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

Впрочем, на сжатие трансформера это не влияет, и способность при гроккинге обобщить поняв, что многие токены будучи представленными в виде float-ов тоже не так чтобы тривиально.
Forwarded from tsymba❤️
Всем привет! На волне хайпа и по горячим следам написал про первый межнар по ИИ, который прошел в Болгарии буквально позавчера. Мне посчастливилось принимать участие в подготовке и организации; мой основной вклад состоял в разработке трети задач из научного раунда.

Куча постов ниже, а лонгрид — вот тут.
👍2
А помните я говорил, что заглянул в данные, и с удивлением обнаружил, что задачка то симметричная, так что стоит сети об этой симметрии догадаться и выяснится, что половина валидации в трейне присутствует.

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

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

Так вот, выясняется, что если взять в рассмотрение только половину данных, оставив, доступными только сложные обобщения, гроккинг тоже вполне себе заводится, но не так бодро - в четыре раза больше времени у него уходит чтобы распутать эту математику.
👍4🔥4
В Эфире рубрика "очумелые ручки". :)
Если выкрутить weight_decay отрицательный -0.2 например, так чтобы он не уменьшал, а увеличивал веса, то придя домой с работы можно обнаружить, что при train accuracy ~94% loss уползает куда-то в окрестности 6e+7.

Ну то есть 6% неправильно классифицированных семплов убегают куда-то на бесконечность, не сдерживаемые ничем и оставляя своих более удачливых коллег работать в этих зверский условиях.
🔥7🤔1🥴1
Было-Стало

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

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

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

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

Казалось бы мелочь, но очень важная для понимания в некоторых случаях.
👍10
Я думал, что ошибка где-то у меня, но оказалось что PIL и декодер от nvidia, который декодирует JPEG прямо в видиопамяти, доступный через torchvision.io.decode_jpeg, дают чуть-чуть разную картинку. На одну-две единички на байт цвета, но воспроизводимость это руинит начисто.

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