bugs ans letters – Telegram
bugs ans letters
18 subscribers
34 photos
3 videos
3 files
135 links
Мой канал для себя про NLP. В основном – помойка из ссылок.
Download Telegram
#gpt #blenderbot подобная система, только намного лучше: применение итеративного подхода к запросам в поисковик (Bing, Google) для получения нейронкой ответа на вопрос
Forwarded from DL in NLP (Vlad Lialin)
You are GPT-3

Увидел в твиттере совершенно огненный тред о том как GPT-3 использет википедию, ipython и другие штуки, чтобы отвечать на вопросы. Выглядит это примерно так. Всё начинается с промта

"You are GPT-3. Answer the following questions. If you can't answer it directly, consult IPython, if you need to answer questions about events past your latest training data April 2021, consult wikipedia." (полный промт на картинке)

Это позволяет GPT-3 отвечать не только на вопросы типа "сколько сантиметров в дюйме" или "как зовут первого президента США", но и на

1. вычислительные задачи — 7 + 19^3
1. операции со строками — разворот строки
1. вопросы о недавних ивентах — когда умерла Елизавета вторая
1. точные даты — когда был выпущен последний эпизод Lost
1. вопросы требущие комбинации common sense и вычислений — число ног паука в третьей степени (сложно перееоценить важность этого вопроса 🤣)

Идея основана на статье Prompt Programming for Large Language Models

По сути в 10 строчек промпта и 100 строк кода вы можете написать своего Google Assistant. Думаю надо будет заняться этим на выходных.
#чтивонаночь
RL + retrival feedback
В чем идея: в оригинальном ресерче open ai использовалась схема при которой люди прописывали ревард для ответов модели, что вообще то не оч коректно и не оч скейлиться. Потом они выкинули часть людей и поствили gold RM учиться оценивать ответы, а людей оценивать генерации, писать промпты и оценивать оценку gold rm.
А потом добавили вместо людей proxy model которая учиться быть reward model.

Что я предлагаю: А зачем нам оценки от людей когда мы можем набрать таски которые легко оценивать по cosine similarity, и мы легко можем сравнить что нам модель наврала, а что нет, давая в качестве
reward = cosine_similarity(ground true answer, predicted answer)

Собственно, банальный вопрос анальный ответ, взял gpt2(110m), написал простой retrival(возвращает по вопросу -ответу ревард) на sentence transformer, взял trl и поcтавил учиться.

А дальше начинается сааамое интересное:
0.37 Question: Sarah didn't like the activity she was doing, but she did it anyway. She felt that it was better than what? Answer: QuestionInvGrooSGroijaWCoSWCGroGroECDGroCVGroDTGroMJGroWCGBTGroDWWCECDGBTECDBMGroJOWCBMFGGroBMWCWCFMLGBTFML

КАЗАЛОСЬ БЫ в чем проблема?
А все довольно просто, видите ли, ppo+gpt довольно умная штука и отлично умеет находить разного рода локальные минимумы и улетает в них легко и весело, ломая reward и emdedings у sentence transofomer.

Я не буду описывать цирк которым занимался по вечерам две последние недели, просто скажу: китайский зло, ироглифы зло, bpe отлично ломает sentence трансформер, в итоге 200 строк кода на эвристики вида (if bad_regex in answer): return 0

А еще очень сильно помог подбор гиперпараметров для KL value и LM weight, cпасибо за уточнение от @nadlskom что каждые 10 эпох open ai прогоняли эпоху классического FineTune(стабилизировало трейн и mean начал быстрее рости)

Баги в целом очень специфичные и на некоторые запросы модель по прежнему ломается и бредит(вероятно через пару недель я выложу код + модель поинтереснее с таким подходом), но уже сейчас модель с PPO тюнингом дает +10 к blue score на задаче QA относительно ванильного трейна.

Благодарности @nadlskom за внимательное чтение статей, @gradientdip за полезные советы, neverix за поиск багов, @dealer_ai за выслушивание моего нытья, @seeallochnaya просто потому что.

Ну и да, очевидно это можно применять к любой задаче которая выглядит как: ну вот input, сделай output похожим на <единственный вариант ответа>


сollab если хочется посмотреть на еще багованную версию

Примеры генераций:

Question: What part of a property may be next to a driveway? Answer: The next part is a house or garage or a garage


Question: Jamie wen to the theater near his home. He was surrounded by servicemen. Where might he be? Answer: in the outdoor.
подписчики притащили поисковик по архиву который я раньше не видел, и он 💫п р е к р а с е н💫

arxivxplorer.com

@lovedeathtransformers
Please open Telegram to view this post
VIEW IN TELEGRAM
Пример QA-бота: FAQ бот для множества документов с персонализированным ответом: на входе кидаешь документы, по ним можно задать вопрос и получить перефразированный ответ
https://github.com/SatyamSoni23/Smart-Question-Answering-System-on-Document
👍1
Утащу как пример объяснения для средней школы
Статья на Хабре про 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
Годная, с огромным приложением.