Size: a a a

gonzo-обзоры ML статей

2020 October 10
gonzo-обзоры ML статей
Drawing early-bird tickets: Towards more efficient training of deep networks
Haoran You, Chaojian Li, Pengfei Xu, Yonggan Fu, Yue Wang, Xiaohan Chen, Richard G. Baraniuk, Zhangyang Wang, Yingyan Lin
Статья: https://arxiv.org/abs/1909.11957
Код: https://github.com/RICE-EIC/Early-Bird-Tickets

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

Вот, например, работа с ICLR 2020 про перевод всей этой истории про разреженные сети высокого качества в более практическую плоскость — поиск Early-Bird Tickets.

Цель проста — находить качественные разреженные сети с меньшими вычислительными затратами. Классический подход в парадигме Lottery Ticket Hypothesis заключался в итеративной процедуре: обучение-прунинг-повтор. Это долго и требует много ресурсов, особенно начальное полное обучение.

В данной работе авторы фокусируются на быстром нахождении хороших подсетей в начальной фазе обучения, это и есть “ранние пташки”, Early-Bird tickets.

Идея эффективного нахождения ранних пташек в использовании недорогих схем обучения (early stopping, low-precision) с большими learning rates. Но сначала надо показать, что найденное на таких ранних этапах, во-первых, существует, а, во-вторых, достаточно стабильно и полезно.

Про существование. Запускаем классическую процедуру (проверяют VGG16 и PreResNet-101 на CIFAR-10/100) на 160 эпох, и проверяем начиная с ранних эпох, находится ли хороший “билет”. Находится, причём начиная уже с 20-й эпохи. И они даже превосходят по качеству билеты, полученные полной процедурой (а заодно и исходную неотпруненную сеть тоже).

Второй вопрос, получаются ли они при использовании более “дешёвой” процедуры? Получаются, и процедура с более высоким learning rate даёт такие билеты раньше. А обучение с низкой точностью (8 бит) их не разрушает.

Остаётся ещё вопрос, как эти билеты идентифицировать на практике. Для этого авторы вводят mask distance, это хэммингово расстояние между бинарными масками двух билетов (=подсетей), маски показывают какие каналы остались, а какие удалились. Подсети получают структурированным прунингом (это когда удаляют каналы целиком, а не отдельные веса как в неструктурированном, для большинства железа структурированный метод более френдли), выкидывая топ-p% каналов с минимальным “весом”. Вес, что интересно, берётся из масштабирующего множителя из BatchNorm, здесь исходим из интуиции (как-то подтверждённой в других работах), что большее значение этого коэффициента относится к более значимым фильтрам. Эти маски быстро становятся достаточно стабильными и изменения между ними по mask distance уменьшаются. Билет отбирается, когда это расстояние оказывается меньше эпсилон (в работе 0.1). Для пущей стабильности это проверяется по пяти последним маскам.

Итоговый алгоритм называется EB Train (гусары, молчать!).

Алгоритм экспериментально проверяют и сравнивают с дефолтным LT, а также некоторыми другими алгоритмами прунинга типа SNIP, ThiNet, network slimming (NS). Качество EB Train выше.

Есть хорошая находка в плане измерения реальной экономии энергии. FLOPSы показывают не всё, только вычислительные операции, а в реальной работе много энергии уходит также на перемещение данных. Авторы применили классный лайфхак — обучают модели на внешнем Jetson TX2, а энергию измеряют через power meter, к которому он подключен.

С точки зрения вычислений по FLOPS метод требует в пару-тройку раз меньше вычислений, чем стандартный LT, и 1.2-2.5х меньше относительно лучшего из перечисленных конкурентов. По энергии метод ощутимо более экономный — более 10x относительно стандартного LT, в районе 6-7х относительно лучшего конкурента. Достойно. Это на мелких CIFAR-ах. На более серьёзных ResNet18/50 на ImageNet разница не столь велика, но всё равно достойна.

Ещё из позитивных моментов, у проекта на редкость неплохо выглядит репа с кодом и описанием.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2020 October 18
gonzo-обзоры ML статей
Distilled One-Shot Federated Learning
Yanlin Zhou, George Pu, Xiyao Ma, Xiaolin Li, Dapeng Wu
Статья: https://arxiv.org/abs/2009.07999

Прикольная работа с несколькими баззвордами. Пойдём по порядку с конца.

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

Вот вам комикс про FL в тему: https://federated.withgoogle.com/

FL добавляет новых челленджей к процессу, которых нет у классического централизованного подхода. Данная работа фокусируется на двух из них: дорогой коммуникации и статистической гетерогенности данных.

По части коммуникации традиционные варианты FL требуют множества раундов обмена данными, это хочется сократить. Отсюда One-Shot в названии метода — результат получаем всего за один раунд коммуникации. А предлагается заюзать для этого дистилляцию данных (Dataset Distillation, мы писали про него почти год назад, https://t.me/gonzo_ML/143).

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

Итоговая схема Distilled One-Shot Federated Learning (DOSFL) такая:
1. Центральный сервер инициализирует модель и рассылает её клиентам.
2. Клиенты дистиллируют свои датасеты и получают небольшие новые датасеты, не содержащие исходных данных, но хорошо способные обучить имеющуюся модель.
3. Клиенты отсылают дистиллированные датасеты на сервер.
4. Сервер собирает всё вместе и обучает свою модель.
5. Сервер рассылает всем обученную модель.
PROFIT!

Есть ещё тонкость по части гетерогенности, мы можем получить плохую сходимость итоговой модели, более медленную и нестабильную. Для борьбы с этим авторы предлагают две техники: soft resets (когда начальные параметры модели сэмплятся из гауссового распределения вокруг исходных параметров, мы делаем это во время дистилляции, получая более устойчивые примеры) и random masking (случайное маскирование части дистиллированных данных на время итерации и замену их на случайные тензоры).

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

Авторы экспериментируют на картинках (LeNet на MNIST) и текстах (TestCNN на IMDB, BiLSTM на TREC-6), метод работает, получается сносное качество (но пока ниже, чем если обучаться на датасетах напрямую).

Есть и трудности. Дистилляция датасетов всё-таки достаточно требовательный к ресурсам процесс, и не на каждом устройстве его можно провести (но никто не запрещает собрать гибридную схему с более мощным хабом, который занимается дистилляцией внутри контура). Есть также риски model poisoning, когда вам пришлют “отравленные” данные, из-за которых модель деградирует (но оно не ново для DOSFL, в классическом FL тоже можно прислать отравленные градиенты/веса, и даже просто при обмене данными можно прислать испорченные картинки; с дистилляцией наверное это проще сделать незаметно, но не факт, если вспомнить про adversarial examples).
источник
gonzo-обзоры ML статей
В целом это интересное новое направление внутри тоже сравнительно свежего FL. Вокруг этой идеи и её развития могут возникнуть какие-то новые бизнес-модели по части “как делиться данными так, чтобы их не терять” и “как сообща побеждать крупных игроков”.

Хороший момент, чтобы что-нибудь застолбить в этой области! :)
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
Вот это вот прекрасно!
источник
2020 October 19
gonzo-обзоры ML статей
Очередные несколько анонсов/объявлений на случай, если вам это тоже интересно (от @che-shr-cat).

1) В субботу выступил на гугловом GDG DevFest 2020 (https://gdg-russia.com/?#!/tab/235456433-4) с докладом про трансфомеры — ”Transformer Zoo (a deeper dive)”. Это обновлённый по свежим публикациям доклад с семинара NTR. Запись видео и ссылка на слайды тут:
https://www.youtube.com/watch?v=7e4LxIVENZA

2) Записали подкаст с Михаилом, ведущим канал “Стать специалистом по машинному обучению” (https://t.me/toBeAnMLspecialist). Поговорили про AGI и вокруг него.
Эпизод здесь: https://anchor.fm/kmsrus/episodes/008-ML-el7p5u

3) В среду 21 октября в 19:00 планирую быть в прямом эфире в передаче Саркиса Григоряна “Искусство интеллекта”. Обсудим 2020-й год в ИИ.
Больше деталей тут: https://www.facebook.com/sarkis.grigoryan/posts/10223846414296194
источник
gonzo-обзоры ML статей
И ещё одно объявление.

Мы планируем запустить онлайн семинар/журнальный клуб по разбору статей вокруг общего искусственного интеллекта (AGI). Если вам интересно участвовать в этой активности в качестве слушателя или докладчика (или ещё как), ответьте, пожалуйта, на вопросы анкеты:

https://forms.gle/6dx54vmruiSVAv9A8
источник
2020 October 24
gonzo-обзоры ML статей
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby
Статья: https://arxiv.org/abs/2010.11929  
Код: https://github.com/google-research/vision_transformer  
Ещё код: https://paperswithcode.com/paper/an-image-is-worth-16x16-words-transformers-1
Модели: https://console.cloud.google.com/storage/browser/vit_models

Знаковая работа от позавчера.

Можно было бы дать кликбейтовый заголовок “Новый ImageNet moment в распознавании изображений!”, но оставим попсу для других. Свежий Vision Transformer (ViT), предобученный на больших датасетах, демонстрирует SoTA и вообще интересное поведение на картинках и наверняка станет громким аналогом BERT’а в работе с изображениями, потеснив давно уже там доминирующие резнеты. Кажется, это таки знаменует пришествие self-attention’а в работу с изображениями.

Исторически это, конечно, далеко не первый подход к снаряду — было много попыток применить трансформеры к работе с картинками, начиная с Image Transformer и Sparse Transformer, к более поздним Axial Attention и multidimensional transformers (которые в принципе по-прежнему интересны), а также в наличии большой пласт работ, которые не то чтобы делают очередной трансформер, а скорее собирают аналоги свёрточных сетей на блоках с разными вариантами реализации self-attention (которые тоже интересны).

Данная работа выделяется в нескольких моментах:

1) Взята практически стандартная архитектура трансформера, для которой картиночные данные на входе адаптируют в более понятный для трансформера вид. В этом смысле это очень похоже на недавний Image GPT от OpenAI (iGPT, https://openai.com/blog/image-gpt/), также применявший стандартную в NLP архитектуру (языковую модель построенную на декодере трансформера) к последовательности пикселей (ну то есть вообще почти не адаптировали кроме как растянули картинку в строку). Предыдущие упомянутые варианты трансформеров для изображений уходили в более кастомные архитектуры (локальные или разреженные ядра и т.п.). Плюс текущего подхода в том, что в такую модель легко инкорпорировать все другие свежие достижения, показавшие профит на языковых задачах.

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

3). Предобученная модель (ну, одна из) выложена и её можно использовать для своих задач в режиме файнтюнинга. В таком режиме она вполне себе бьёт весь остальной имеющийся на данный момент state-of-the-art даже на старых добрых датасетах типа CIFAR-100. Научные результаты в DL безусловно важны, но часто для прогресса не менее важна трансляция научных результатов в практическую плоскость, и данная модель может стать тем же, чем стал BERT для NLP (и чем лишь очень ограниченно пока стал GPT-x).

Более детально про то, что сделано.

Как я говорил, взята практически стандартная архитектура трансформера. Для того, чтобы она работала с картинками, их специальным образом готовят: нарезают на патчи (например, размера 16x16 пикселей) и для каждого делают flatten, то есть переводят в одномерную последовательность, а затем её переводят в эмбеддинг фиксированной размерности через обучаемое линейное преобразование. Получается последовательность патчей. К ним добавляют позиционные эмбеддинги (в данном случае даже не синусоидальные как в дефолтном трансформере, а простые обучаемые). Ну и дополнительно в начало добавляют дополнительный токен [class] по аналогии с бертовым [CLS]. Эта позиция будет использоваться на выходе энкодера для классификации.

Есть ещё минорная разница с дефолтным трансформером, что слои нормализации стоят до self-attention и ffn, но это в целом мелочи.
источник
gonzo-обзоры ML статей
Также рассматривают гибридную архитектуру, когда трансформер работает поверх feature maps полученных из свёрточной сети. Но сразу скажу, что на большом масштабе это профита не даёт, даёт только на малом.

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

Из датасетов берут старый добрый ImageNet (1.3M картинок, 1k классов), ImageNet-21k (14M картинок, 21k классов), а также JFT (303M картинок и 18k классов). На этом добре предобучают, затем делают fine-tuning на другие датасеты аналогичным берту образом (добавляя feed-forward слой взамен исходного классифицирующего и обучая его). В некоторых случаях репортят метрики даже без файнтюнинга, а простым few-shot learning’ом через линейную регрессию на замороженных эмбеддингах.

Рассматривают несколько вариантов моделей: ViT-Base и ViT-Large (по аналогии с бертом, 12 и 24 слоя), а также ViT-Huge (36 слоёв).

Модели обозначаются так: ViT-L/16, это значит, что взят ViT-Large с размером патча 16x16 пикселей.

Для сравнения взяты сильные бейзлайны на резнетах, которые дают SoTA на ImageNet (Noisy Student) или других датасетах (BiT-L).

Всех побили, причём вычислительных ресурсов потребовалось в разы меньше (но всё равно это сотни и тысячи TPUv3-core дней, так что не рассчитывайте повторить это дома; впрочем с бертом было всё примерно так же, и со временем процесс научились оптимизировать и худо бедно проводить самостоятельно, но всё равно, конечно, дорогая история).

Одно из главных наблюдений, на большом предобучении ViT начинает рулить и бить резнеты. И это очень интересное наблюдение, напоминающее старый добрый The Bitter Lesson Саттона (http://www.incompleteideas.net/IncIdeas/BitterLesson.html). Архитектура без специальных implicit bias (каковы были у свёрточных сетей) на большом обучении выучивает свои паттерны, которые оказываются даже лучше. И по графикам видно, что ViT ещё не насыщается на датасете с 300M картинок, так что можно ожидать дальнейшего масштабирования.

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

В supplementary есть интересное сравнение с Axial Transformer (https://arxiv.org/abs/1912.12180, в двух словах, он делает независимые одномерные внимания по каждой из осей тензора). Сравнивают ViT со специальным вариантом резнета AxialResNet, а также с модифицированным Axial-ViT. Варианты Axial-ViT лучше, но требуют больше вычислений.

В общем, я думаю, теперь от ViT в разные стороны разойдётся большое количество модификаций, будет adaptive radiation (https://en.wikipedia.org/wiki/Adaptive_radiation).
источник
gonzo-обзоры ML статей
источник