bugs ans letters – Telegram
bugs ans letters
18 subscribers
34 photos
3 videos
3 files
135 links
Мой канал для себя про NLP. В основном – помойка из ссылок.
Download Telegram
Утащу как пример объяснения для средней школы
Статья на Хабре про WebGPT: #chatgpt в цикле решения задачи “поискать и отобрать результаты”. Довольно умно сынженерено, на мой взгляд, когда я сам пытался подходить к задаче информационного поиска – делал гораздо тупее, без попытки переформулировать и дополнить результат.
https://habr.com/ru/company/ods/blog/709222/
👍1🔥1
Forwarded from DLStories
Краткий ликбез по self-supervised learning (SSL)
(под недавними постами несколько людей спрашивали, что это такое. Плюс, следующий пост тоже будет посвящен модельке для SSL)

В двух словах, self-supervised learning — это когда мы учим модельку понимать что-то о природе данных (или даже решать какие-то осмысленные задачи) на данных без разметки.

Подробнее:
Возьмем задачу классификации картинок. Обычно, чтобы научить модельку решать эту задачу, вам нужны данные вида (картинка, класс). То есть, нужно собрать датасет из кучи картинок, где каждая картинка размечена, т.е. к каждой картинке известен ответ: что на ней изображено. Обучение моделей на таких датасетах с разметкой называется supervised learning .

Собирать датасеты для supervised learning сложно, долго и дорого. Есть разные способы, как это делать. Самые распространенные — такие:
✔️ посадить живых людей размечать данные. Это позволяет получить довольно "чистый" датасет (без явных ошибок в разметке), но очень долгий и дорогой. А если вы хотите сэкономить и мало платить разметчикам, это может вызвать скандал. Вот с OpenAI недавно был: они платили всего $2 в час людям, которые выявляли "неподобающий" контент среди того, что генерирует ChatGPT;
✔️ собрать данные с разметкой из интернета автоматичеки. Например, для той же задачи классификации можно сделать так: вбиваем слово "песик" в гугл и скриптом скачиваем все выданные картинки. Этот подход намного проще и дешевле, чем первый, но у него тоже есть явные недостатки:
- данные получаются довольно "грязные". На запрос "песик" вы можете получить картинки далеко не милых собачек. Например, вот эта картинка выдалась мне на четвертой строке картинок в гугле по запросу "песик" =)
- данные в интернете могут быть защищены авторскими правами. Использование таких данных для обучения моделей, кхм, не приветствуется.
- этот способ подходит не для всех задач. Для классификации или генерации картинок по текстовому описанию понятно, как собрать датасет (см. LAION, на котором обучалась Stable Diffusion). А вот с сегментацией, например, все сильно сложнее.

Короче говоря, собрать датасеты с разметкой сложно. Поэтому активно развиваются исследования в области self-supervised learning. Это когда вы учите нейросеть на данных, к которым разметки нет.

Пример self-supervised learning — обучение языковых моделей типа GPT-3. Для них нужны просто куча текста и никакой разметки. Модель учится предсказывать следующий токен на основе предыдущих.

Надо сказать, что для задач, связанных с картинками, придумать self-supervised подходы довольно сложно. Что-то типа языковой модели не прокатит. Вот примеры SSL-подходов для картинок:
- делаем аугментации картинок из трейн сета (повороты, блюр, закрываем часть картинки и т.п.) и учим нейросеть выдавать одинковые ответы на одни и те же картинки, аугментированные разными способами;
- Masked AE: закрываем рандомные части картинок и учим автоэнкодер(AE) восстанавливать эти части.
При обучении подобным образом нейросеть начинает "понимать" что-то о природе картинок и объектов на них, и затем эти ее знания можно использовать в других задачах. Например, можно дообучить такую сеть на задачу классификации картинок. И для этого понадобится намного меньше размеченных данных, чем для обучения сети на эту задачу "с нуля". Про Masked AE я даже пост писала, вот тут.

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

Ну и, стоит сказать, что есть подходы "между" supervised и self-supervised:
- semi-supervised learning. Это когда часть данных для задачи размечена, а часть — нет;
- weakly-supervised learning. Это когда данные размечены, но разметка очень "грязная" (слабая) или местами неполная.

Как-то так. В завершение рекомендую почитать этот пост про self-supervision в блоге Александра Дьяконова.
Дай нейросети рыбу — она сможет определять рыбу до конца жизни. Дай нейросети удочку — она сможет определять и удочку до конца жизни...
😁2
Запустить быренько одну команду в кубе можно так:

kubectl run --rm -i --tty --restart=Never --image ${IMAGE} ${NAME} -- ${CMD} ${ARGS…}

#notes #k8s #snippet
Forwarded from Илья А.
Как ты думаешь, учитывают ли анимации, которые демонстрируют разные методы оптимизации, адаптивность современных методов (раздельный подход к обновлению каждого параметра) по умолчанию, или же просто делается какая-то упрощённая математическая модель? http://www.denizyuret.com/2015/03/alec-radfords-animations-for.html
Тут даже есть код: https://habr.com/ru/articles/318970 Не зная питона, я скормил его бингу, и бинг (Creative mode) мне сказал, что там используется фиксированный коэффициент обучения для всех параметров, но я подумал денёк и как-то не доверяю)
Нашёл только один материал с визуализацией, где этот вопрос недвусмысленно обсуждается: https://towardsdatascience.com/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c
Forwarded from Voice stuff
Наблюдаю тренд на вкручивание промпта в синтез речи. Все наверняка уже слышали про невероятную просодию (и слабые ударения в русском) в bark:

https://github.com/suno-ai/bark

Коки тоже на месте не стоят и тоже выкатили модель с промптами. Впрочем, пока не опен-сорс.

https://coqui.ai/blog/tts/prompt-to-voice

Хорошие новости:
Звучит всё очень вкусно. Натуральность речи просто нереальная.
Несмотря на то, что модель необычная и большая - уверен что её можно собрать и обучить самому на паре ГПУ. Главные компоненты: кодек и LLM там предобучены.

Так себе новости:
Под капотом модели используют нейрокодек для декодирования аудио. Так что если слышите шумы в записи - это оттуда, и будто бы это нелегко исправить.
Размер модели в 100М. Кажется, будто бы маленькие модели потихоньку отходят на второй план с появлением квантизаций, ЛЛАМа, и RTX 4090.
Некоммерческая лицензия и отстутствие кода для обучения.
Я настолько разленился, что мне проще держать эту ссылку под рукой, чем запоминать аккорды для Universal Hex Input 😕
#math #symbols #typography
Обзор на ту самую LLaMA и на ее fine-tune-ы: Alpaca, Vicuna, gpt4all🤩

После того, как как все поныли, что OpenAI так и не раскрыли подробности апгрейда GPT-4, выпущенной в марте, внимание многих обратилось на LLaMA, выпущенную на несколько недель раньше, и которую Meta AI реально сделали Open and Efficient Foundation Language Model.

Хотелось бы отдельно выделить очень крутой вывод от прошлых работ сообщества, которым руководствовались авторы: если раньше все гнались за количеством параметров модели, в работах Scaling Laws for Neural Language Models опять же от OpenAI были найдены неожиданные свойства. При увеличении количества данных, возникает прирост качества. Именно этот фактор позволил LLaMA-13B аутперформить GPT-3, несмотря на размер в 10!! Раз меньше

В статье ребята дают подробный рецепт сотворения модельки. Вот он:

👨‍🍳 Подготавливаем данные в размере 1.4T токенов:
1. English CommonCrawl – составляющее 67% данных. с использованием CCNet pipeline для удаления дубликатов, фильтрации неанглоязычного и низкокачественного контента, а также отбрасыванием страниц, не относящиеся к ссылкам в Википедии.
2. 15 % C4.
3. 4.5 % Git c вычещением низкокачетсвенных реп и удалением шаблонов с помощью регулярных выражений
4. 4.5% Wikipedia с удалением гиперссылок, комментариев и других элементов форматирования
5. 4.5% датасетов книг с удалением дубликатов
6. 2.5% ArXiv
7. 2% Stack Exchange – сайт вопросов и ответов высокого качества, охватывающий различные области знаний, от компьютерных наук до химии. С удалением HTML тегов и фильтрацией по рейтингу
👨‍🍳Потом обучаем BPE токенайзер с использованием реализации из библиотеки SentencePiece. Для токенизации числа разбиваются на отдельные цифры, а не обрабатываются как единое целое, а для декомпозиции неизвестных символов UTF-8 используются байты.
(при чем все данные прогоняются одну эпоху за исключением книг и википедии, там две)

Итак, за основу берется архитектура трансформера, но вот те самые уникальные ингридиенты успешной модели:
🎹Авторы нормализовали с RMSNorm входные данные для каждого подуровня трансформера. Подход заключается в делении каждого элемента входного вектора на квадратный корень из суммы квадратов всех элементов входного вектора.
🎹Заменили ReLU на SwiGLU
🎹Использовали Rotary positional embeddings. Этот метод заключается в добавлении дополнительных векторов с фиксированными значениями в векторное представление каждого элемента последовательности. Эти векторы имеют свойство поворота, что позволяет модели учитывать не только абсолютную позицию элементов, но и относительное положение друг к другу.
🎹В качесвте оптимайзера взяле AdamW с бетами 0.9 и 0.95.
🎹Добавляли штраф в функцию потерь сети, который пропорционален квадрату весовых коэффициентов каждого слоя сети с Weight decay в размере 0.1
🎹Добавляли gradient clipping – 1.0
🎹Использовали подход для эффективного multi-head attention, в котором мы разбиваем входную последовательность на блоки фиксированной длины и применяем механизм внимания только внутри каждого блока
🎹Для улучшения эффективности обучения уменьшается количество активаций, которые пересчитываются во время backward pass-а, для этого авторы реализуют обратную функцию для слоев трансформера вручную

Ну а теперь немного о ft этой прекрасной модели
Alpacaподход от ребят из Стенфорда. Находчивые люди нагенерировали дополнительного датасета для обучения с помощью ChatGPT, что позволило обучить ее на запросы в стиле instruct. Круто? круто

gpt4allневероятный подход!!! если в Alpaca было всего 54k затравок, то тут уже целых 437k

Ну и на закуску StableVicuna – все пытаются улучшить данные для обучения, и сделать их объем все больше. В связи с этим Stability AI предоставляют ft на их датасете, созданном на основе The Pile ,который содержит 1.5T токенов и является обширным датасетом под множество задач NLP

Ну и в за табличками апгрейда скора можно сходить поглазеть в саму статью, потому что в одно сообщение уже не помещается👏
Please open Telegram to view this post
VIEW IN TELEGRAM
#cv #offtop #image Статья про применение object segmentation прямо при обучении модели и запихивание этого процесса в механизм attention
Годная, с огромным приложением.
https://telegra.ph/Enhancing-ChatGPTs-Efficiency--The-Power-of-LangChain-and-Milvus-06-12
Статья про (вполне стандартные: галлюцинации, неумение держать факты, генерация правдоподобных, но битых ссылок) проблемы GPT-подобных моделей, которые пытаются применять в качестве генеративного чатбота и решение от одной из исследовательских групп
Ладно, раз я уж пытаюсь казаться MLOps-ом-самозванцем – придётся оправдываться.
- Базовая статья про системы управления версиями для программистов, которые полезли в данные
- Настройка DVC + MLFlow (нет, не надо так делать в реальности, через год убьётесь дальше мигрировать, за год наобучать пару терабайт данных – раз плюнуть)
#mlops #лытдыбр
Мне очень нравится подход Shazam: у них, по-видимому, есть две модели, онлайновая быстрая и точная медленная. Большинство запросов обрабатывает онлайновая, но если она не распознаёт трек – он отправляется в очередь медленной, которая когда-нибудь отдаёт результат и мы получаем We tried again and found…
Притом база для обучения обеих, кажется, одинаковая, но точная имеет больше информации на входе – вероятно, там меньше жёстких фильтров и больше магии со свёртками.
Любителям Generative Fill в Photoshop: Google зарелизил модель, очень достойно справляющуюся с этой задачей.
Обёрнута в JAX, посему завести локально – некоторая возня, впрочем, вполне предсказуемая и однотипная.
Forwarded from Dr. Boris
oxml.zip
61.1 MB
украл для вас презы с первых двух дней OxML
http://www.incompleteideas.net/IncIdeas/BitterLesson.html
https://horace.io/brrr_intro.html
#философия
tl;dr – не один и не два исследователя расстраиваются, что численные методы зачастую лучше работают на больших данных, чем эвристики. На примере NLP-задач – большая модель с правильным токенизатором уже лет десять работает лучше правил и эвристик от лингвистов.
Впрочем, это, возможно, не так плохо: до этого тысячи лет наука дробилась и рождала всё новые направления на стыке технологий, может быть, пора чуть прибраться?