Статья на Хабре про WebGPT: #chatgpt в цикле решения задачи “поискать и отобрать результаты”. Довольно умно сынженерено, на мой взгляд, когда я сам пытался подходить к задаче информационного поиска – делал гораздо тупее, без попытки переформулировать и дополнить результат.
https://habr.com/ru/company/ods/blog/709222/
https://habr.com/ru/company/ods/blog/709222/
Хабр
ChatGPT как инструмент для поиска: решаем основную проблему
Вышедшая чуть больше месяца назад ChatGPT уже успела нашуметь: школьникам в Нью-Йорке запрещают использовать нейросеть в качестве помощника, её же ответы теперь не принимаются на StackOverflow, а...
👍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 в блоге Александра Дьяконова.
(под недавними постами несколько людей спрашивали, что это такое. Плюс, следующий пост тоже будет посвящен модельке для 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
Forwarded from Электросны Погонщика Симулякров
Очень хорошее объяснение, как устроены классические механизмы семплинга в LM: https://docs.cohere.ai/docs/controlling-generation-with-top-k-top-p
#llm #gpt
#llm #gpt
Cohere AI
Top-k & Top-p
Use the API to generate completions, distill text into semantically meaningful vectors, and more. Get state-of-the-art natural language processing without the need for expensive supercomputing infrastructure.
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
Тут даже есть код: https://habr.com/ru/articles/318970 Не зная питона, я скормил его бингу, и бинг (Creative mode) мне сказал, что там используется фиксированный коэффициент обучения для всех параметров, но я подумал денёк и как-то не доверяю)
Нашёл только один материал с визуализацией, где этот вопрос недвусмысленно обсуждается: https://towardsdatascience.com/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c
Denizyuret
Alec Radford's animations for optimization algorithms
Alec Radford has created some great animations comparing optimization algorithms SGD , Momentum , NAG , Adagrad , Adadelta , RMSprop (unfo...
Forwarded from Oleg Ur: (";("
Илья А.
Как ты думаешь, учитывают ли анимации, которые демонстрируют разные методы оптимизации, адаптивность современных методов (раздельный подход к обновлению каждого параметра) по умолчанию, или же просто делается какая-то упрощённая математическая модель? htt…
А это вообще про другое. Как ты подбираешь функцию от многих переменных – зависит от тебя.
https://github.com/AsmaaEssamSultan/Optimization-Techniques-from-scratch/blob/main/NAG.ipynb - вот код для NAG, например, с формулами
Думаю, в большинстве подходов таки да, коэффициенты общие, потому что предполагается, что исходная задача отнормализована
https://github.com/AsmaaEssamSultan/Optimization-Techniques-from-scratch/blob/main/NAG.ipynb - вот код для NAG, например, с формулами
Думаю, в большинстве подходов таки да, коэффициенты общие, потому что предполагается, что исходная задача отнормализована
GitHub
Optimization-Techniques-from-scratch/NAG.ipynb at main · AsmaaEssamSultan/Optimization-Techniques-from-scratch
Contribute to AsmaaEssamSultan/Optimization-Techniques-from-scratch development by creating an account on GitHub.
Forwarded from Voice stuff
Наблюдаю тренд на вкручивание промпта в синтез речи. Все наверняка уже слышали про невероятную просодию (и слабые ударения в русском) в bark:
https://github.com/suno-ai/bark
Коки тоже на месте не стоят и тоже выкатили модель с промптами. Впрочем, пока не опен-сорс.
https://coqui.ai/blog/tts/prompt-to-voice
Хорошие новости:
Звучит всё очень вкусно. Натуральность речи просто нереальная.
Несмотря на то, что модель необычная и большая - уверен что её можно собрать и обучить самому на паре ГПУ. Главные компоненты: кодек и LLM там предобучены.
Так себе новости:
Под капотом модели используют нейрокодек для декодирования аудио. Так что если слышите шумы в записи - это оттуда, и будто бы это нелегко исправить.
Размер модели в 100М. Кажется, будто бы маленькие модели потихоньку отходят на второй план с появлением квантизаций, ЛЛАМа, и RTX 4090.
Некоммерческая лицензия и отстутствие кода для обучения.
https://github.com/suno-ai/bark
Коки тоже на месте не стоят и тоже выкатили модель с промптами. Впрочем, пока не опен-сорс.
https://coqui.ai/blog/tts/prompt-to-voice
Хорошие новости:
Звучит всё очень вкусно. Натуральность речи просто нереальная.
Несмотря на то, что модель необычная и большая - уверен что её можно собрать и обучить самому на паре ГПУ. Главные компоненты: кодек и LLM там предобучены.
Так себе новости:
Под капотом модели используют нейрокодек для декодирования аудио. Так что если слышите шумы в записи - это оттуда, и будто бы это нелегко исправить.
Размер модели в 100М. Кажется, будто бы маленькие модели потихоньку отходят на второй план с появлением квантизаций, ЛЛАМа, и RTX 4090.
Некоммерческая лицензия и отстутствие кода для обучения.
GitHub
GitHub - suno-ai/bark: 🔊 Text-Prompted Generative Audio Model
🔊 Text-Prompted Generative Audio Model. Contribute to suno-ai/bark development by creating an account on GitHub.
Я настолько разленился, что мне проще держать эту ссылку под рукой, чем запоминать аккорды для Universal Hex Input 😕
#math #symbols #typography
#math #symbols #typography
Forwarded from что-то на DL-ском
Обзор на ту самую 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
Ну и в за табличками апгрейда скора можно сходить поглазеть в саму статью, потому что в одно сообщение уже не помещается👏
После того, как как все поныли, что 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. 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 тегов и фильтрацией по рейтингу
(при чем все данные прогоняются одну эпоху за исключением книг и википедии, там две)
Итак, за основу берется архитектура трансформера, но вот те самые уникальные ингридиенты успешной модели:
Ну а теперь немного о 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
GitHub
GitHub - tatsu-lab/stanford_alpaca: Code and documentation to train Stanford's Alpaca models, and generate the data.
Code and documentation to train Stanford's Alpaca models, and generate the data. - tatsu-lab/stanford_alpaca
https://telegra.ph/Enhancing-ChatGPTs-Efficiency--The-Power-of-LangChain-and-Milvus-06-12
Статья про (вполне стандартные: галлюцинации, неумение держать факты, генерация правдоподобных, но битых ссылок) проблемы GPT-подобных моделей, которые пытаются применять в качестве генеративного чатбота и решение от одной из исследовательских групп
Статья про (вполне стандартные: галлюцинации, неумение держать факты, генерация правдоподобных, но битых ссылок) проблемы GPT-подобных моделей, которые пытаются применять в качестве генеративного чатбота и решение от одной из исследовательских групп
Telegraph
Enhancing ChatGPT's Efficiency – The Power of LangChain and Milvus*
In this guest post, the Zilliz team lists the challenges of using ChatGPT and explores how to enhance the intelligence and efficiency of ChatGPT to overcome the obstacles of hallucinations. While ChatGPT has gained significant popularity, with many individuals…
Ладно, раз я уж пытаюсь казаться MLOps-ом-самозванцем – придётся оправдываться.
- Базовая статья про системы управления версиями для программистов, которые полезли в данные
- Настройка DVC + MLFlow (нет, не надо так делать в реальности, через год убьётесь дальше мигрировать, за год наобучать пару терабайт данных – раз плюнуть)
#mlops #лытдыбр
- Базовая статья про системы управления версиями для программистов, которые полезли в данные
- Настройка DVC + MLFlow (нет, не надо так делать в реальности, через год убьётесь дальше мигрировать, за год наобучать пару терабайт данных – раз плюнуть)
#mlops #лытдыбр
W&B
Intro to MLOps: Data and Model Versioning
In this article, we explore why version control in Machine Learning must go beyond source code, and cover datasets and models for traceability and reproducibility. .
Мне очень нравится подход Shazam: у них, по-видимому, есть две модели, онлайновая быстрая и точная медленная. Большинство запросов обрабатывает онлайновая, но если она не распознаёт трек – он отправляется в очередь медленной, которая когда-нибудь отдаёт результат и мы получаем We tried again and found…
Притом база для обучения обеих, кажется, одинаковая, но точная имеет больше информации на входе – вероятно, там меньше жёстких фильтров и больше магии со свёртками.
Притом база для обучения обеих, кажется, одинаковая, но точная имеет больше информации на входе – вероятно, там меньше жёстких фильтров и больше магии со свёртками.
Любителям Generative Fill в Photoshop: Google зарелизил модель, очень достойно справляющуюся с этой задачей.
Обёрнута в JAX, посему завести локально – некоторая возня, впрочем, вполне предсказуемая и однотипная.
Обёрнута в JAX, посему завести локально – некоторая возня, впрочем, вполне предсказуемая и однотипная.
GitHub
GitHub - google-research/magvit: Official JAX implementation of MAGVIT: Masked Generative Video Transformer
Official JAX implementation of MAGVIT: Masked Generative Video Transformer - google-research/magvit
http://www.incompleteideas.net/IncIdeas/BitterLesson.html
https://horace.io/brrr_intro.html
#философия
tl;dr – не один и не два исследователя расстраиваются, что численные методы зачастую лучше работают на больших данных, чем эвристики. На примере NLP-задач – большая модель с правильным токенизатором уже лет десять работает лучше правил и эвристик от лингвистов.
Впрочем, это, возможно, не так плохо: до этого тысячи лет наука дробилась и рождала всё новые направления на стыке технологий, может быть, пора чуть прибраться?
https://horace.io/brrr_intro.html
#философия
tl;dr – не один и не два исследователя расстраиваются, что численные методы зачастую лучше работают на больших данных, чем эвристики. На примере NLP-задач – большая модель с правильным токенизатором уже лет десять работает лучше правил и эвристик от лингвистов.
Впрочем, это, возможно, не так плохо: до этого тысячи лет наука дробилась и рождала всё новые направления на стыке технологий, может быть, пора чуть прибраться?