Недавно OpenAI выложили (и действительно прямо в опен-сорс!) модель для распознавания речи Whisper. Подробнее про нее можно прочитать в посте от Мишин Лернинг – если кратко, то кажется, что никакой магии, просто очень большой и хорошо размеченный многоязычный датасет, служебные токены, которые определяют текущую задачу (транскибирование, перевод, таймстемпы и т.д.), и плейн ванилла трансформер
Так вот, Андрей Карпатый не стал терять времени, и затранскрибировал этой сеткой все подкасты Lex Fridman – https://karpathy.ai/lexicap/
До этого он еще убедился, что Whisper достаточно хорошо знает технические и математические термины (типа GPU, LSTM, RNN и все такое прочее), так что при транскрибировании эта информация не коверкается
Ждем теперь записи всех выпусков программы Статус
Так вот, Андрей Карпатый не стал терять времени, и затранскрибировал этой сеткой все подкасты Lex Fridman – https://karpathy.ai/lexicap/
До этого он еще убедился, что Whisper достаточно хорошо знает технические и математические термины (типа GPU, LSTM, RNN и все такое прочее), так что при транскрибировании эта информация не коверкается
Ждем теперь записи всех выпусков программы Статус
❤27👎2👍1
Text Inversion is the next big thing? 🤔
Относительно недавно вышла статья от NVIDIA – An Image is Worth One Word. В ней они показывают, как можно тот или иной концепт преобразовать в псевдо-слово, то есть создать в латентном пространстве эмбеддинг несуществующего токена, который будет максимально точно отражать заданный концепт, основываясь на примерах, которые вы предоставите
Так можно натренировать модель всегда генерить именно тот объект, который вы задумали, при чем в любом сеттинге, стиле и с любыми атрибутами. В пейпере авторы заставляют модель запомнить по нескольким фотографиям определенную фигурку полосатого котенка как некий объект S*, чтобы потом генерить “Banksy art of S∗”, “A S∗ themed lunchbox” и так далее
Подробно пр метод можно почитать в статье, в целом идея такова:
– Берем входное описание ‘A photo of zubabobr’. Здесь zubabobr – несуществующий токен. Параллельно заготавливаем несколько картинок с примерами zubabobr. Слово zubabobr получает эмбеддинг v*, его мы обучаем
– Прогоняем эмбеддинги через трансформер, с помощью них кондишеним генерацию Stable Diffusion из случайного шума. Плюс, на каждом этапе позволяем модели подсматривать примеры картинок с zubabobr
– ???
– Profit, теперь мы можем генерить zubabobr и знаем его эмбеддинг
Идея очень быстро была реализована:
✨На huggingface есть Concepts Library – там можно через их UI по нескольким примерам натренировать свои концепты, а также посмотреть концепты других юзеров в открытом доступе
Что самое прикольное, концепты могут обозначать еще и стиль, так что можно генерить что-то типа «A photo of <my_concepts/zubabobr> in a style of <sd-concepts-library/80s-anime-ai-being>»
✨Или можно по харду – не тюнить свой эмбеддинг, а тюнить всю модель с помощью DreamBooth (смысл тот же, это позволяет создать identifier вашего собственного класса). Более подробный пост про него есть у тоже моушн
Относительно недавно вышла статья от NVIDIA – An Image is Worth One Word. В ней они показывают, как можно тот или иной концепт преобразовать в псевдо-слово, то есть создать в латентном пространстве эмбеддинг несуществующего токена, который будет максимально точно отражать заданный концепт, основываясь на примерах, которые вы предоставите
Так можно натренировать модель всегда генерить именно тот объект, который вы задумали, при чем в любом сеттинге, стиле и с любыми атрибутами. В пейпере авторы заставляют модель запомнить по нескольким фотографиям определенную фигурку полосатого котенка как некий объект S*, чтобы потом генерить “Banksy art of S∗”, “A S∗ themed lunchbox” и так далее
Подробно пр метод можно почитать в статье, в целом идея такова:
– Берем входное описание ‘A photo of zubabobr’. Здесь zubabobr – несуществующий токен. Параллельно заготавливаем несколько картинок с примерами zubabobr. Слово zubabobr получает эмбеддинг v*, его мы обучаем
– Прогоняем эмбеддинги через трансформер, с помощью них кондишеним генерацию Stable Diffusion из случайного шума. Плюс, на каждом этапе позволяем модели подсматривать примеры картинок с zubabobr
– ???
– Profit, теперь мы можем генерить zubabobr и знаем его эмбеддинг
Идея очень быстро была реализована:
✨На huggingface есть Concepts Library – там можно через их UI по нескольким примерам натренировать свои концепты, а также посмотреть концепты других юзеров в открытом доступе
Что самое прикольное, концепты могут обозначать еще и стиль, так что можно генерить что-то типа «A photo of <my_concepts/zubabobr> in a style of <sd-concepts-library/80s-anime-ai-being>»
✨Или можно по харду – не тюнить свой эмбеддинг, а тюнить всю модель с помощью DreamBooth (смысл тот же, это позволяет создать identifier вашего собственного класса). Более подробный пост про него есть у тоже моушн
👍6🔥1🤯1
Forwarded from AbstractDL
🔥Grokking наконец обнаружили на нормальных датасетах! (by MIT)
И для этого даже не пришлось тратить миллиарды GPU-часов и покупать атомную электростанцию.
Чтобы воспроизвести эффект генерализации после оверфиттинга, нужно было всего лишь увеличить норму весов модели при инициализации!
Авторы описывают grokking через простую идею нормированного ландшафта лоссов. Предложенная теория отлично описывает не только этот эффект, но и double descent, и связь weight decay со временем обучения.
Статья
P.S. про grokking я рассказывал тут.
И для этого даже не пришлось тратить миллиарды GPU-часов и покупать атомную электростанцию.
Чтобы воспроизвести эффект генерализации после оверфиттинга, нужно было всего лишь увеличить норму весов модели при инициализации!
Авторы описывают grokking через простую идею нормированного ландшафта лоссов. Предложенная теория отлично описывает не только этот эффект, но и double descent, и связь weight decay со временем обучения.
Статья
P.S. про grokking я рассказывал тут.
❤10🔥5🤯2🌚2👍1
Новый забавный спейс на HF – CLIP Interrogator.
Изначально предполагалось, что его можно юзать, чтобы получить описание картинки как хороший промт, который потом можно отправить в генеративную модель и получить похожие картинки. Но в твиттере очень быстро это приспособили, чтобы получать roast своим фотографиям. Вот например у девушки получилось описание фото «unsettling grin, matlab, portrait of an ai». У кого-то еще в реплаях было описание «covid as a person»
Что странно, SD действительно по описанию генерит что-то очень похожее 🌚
Изначально предполагалось, что его можно юзать, чтобы получить описание картинки как хороший промт, который потом можно отправить в генеративную модель и получить похожие картинки. Но в твиттере очень быстро это приспособили, чтобы получать roast своим фотографиям. Вот например у девушки получилось описание фото «unsettling grin, matlab, portrait of an ai». У кого-то еще в реплаях было описание «covid as a person»
Что странно, SD действительно по описанию генерит что-то очень похожее 🌚
👍8❤3
Google тут выпустил новую модель FLAN. Примечательна она тем, что скейлили ее и up, и down (540B и 3B). FLAN 3B бьет на few-shot и на BIG-Bench GPT 175B, и подходит очень близко к PaLM 62B
Какой-то особой хитрости тут нет, как всегда все упирается в тенировочные данные. Обучали с помощью Chain-of-thought (про это я рассказывала тут) – если попросить модель расписать свой ход размышления или даже просто добавить к промту let’s think step by step, она будет перформить гораздо лучше. Раньше это реализовывали именно post hoc через промтинг, а это первая модель, где тренировали на данных с CoT
Плюс, к этому насобирали еще 1800+ разных задач, типа question answering (включая с привлечением внешних ресурсов, когда модель сама может подсмотреть в ту же Википедию), topic classification, cause effect classification, commonsense reasoning, сode repair и многие другие
В целом мне нравится модель тем, что еще раз доказывает, что scaling is not all you need, качество данных, как показал еще PaLM, очень сильно решает. Чем больше разных задач вы предложите модели, тем лучше она будет генерализоваться, даже на других задачах, которые во время обучения модель не встречала. Авторы специально не включали часть тасков в обучение, чтобы потом проверять на них – туда попали, например, задачки по математике, логике и вопросы по философии
Какой-то особой хитрости тут нет, как всегда все упирается в тенировочные данные. Обучали с помощью Chain-of-thought (про это я рассказывала тут) – если попросить модель расписать свой ход размышления или даже просто добавить к промту let’s think step by step, она будет перформить гораздо лучше. Раньше это реализовывали именно post hoc через промтинг, а это первая модель, где тренировали на данных с CoT
Плюс, к этому насобирали еще 1800+ разных задач, типа question answering (включая с привлечением внешних ресурсов, когда модель сама может подсмотреть в ту же Википедию), topic classification, cause effect classification, commonsense reasoning, сode repair и многие другие
В целом мне нравится модель тем, что еще раз доказывает, что scaling is not all you need, качество данных, как показал еще PaLM, очень сильно решает. Чем больше разных задач вы предложите модели, тем лучше она будет генерализоваться, даже на других задачах, которые во время обучения модель не встречала. Авторы специально не включали часть тасков в обучение, чтобы потом проверять на них – туда попали, например, задачки по математике, логике и вопросы по философии
👍16🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Новый крутой пейпер про дистилляцию RL-алгоритмов от DeepMind. Их Algorithm Distillation позволяет модели во время инференса улучшать свою стратегию решения, самостоятельно исследовать окружающий мир, и это без промтинга и без файнтюна под конкретную задачу. И в целом генерализация гораздо выше, чем у предыдущих методов
Попыток скрестить RL и трансформеры уже было достаточно (например, Gato и Decision Transformer), но это не RL в полном смысле слова. Такие модели могут предсказывать следующее действие актора, но для этого им нужен промт с предыдущими состояниями, действиями и reward’ами, сами они не могут в explore and exploit, а также они не могут самостоятельно на инференсе обучиться под новые задачи. Также они учатся сразу на лучшей стратегии, поэтому не могут ее сами итеративно улучшать
Для обучения Algorithm Distillation брали learning histories RL-алгоритмов (например, DQN) на отдельных задачах. При чем, историю делали достаточно длинной, чтобы в нее попадало несколько эпизодов, и можно было пронаблюдать, как улучшается стратагия –> благодаря этому, AD учится не только предсказывать текущую стратегию, но и сразу улучшенную. Что прикольно, в некоторых задачах был еще и partial observation, то есть когда передается не все состояние игры, а только какая-то его часть, известная игроку
На инференсе AD находит лучшую стратегию даже быстрее, чем исходные алгоритмы, которые были дистилированны (! хотя не побивает их перфоманс в целом), сам исследует пространство и сам генерирует себе контекст. Способность исследовать, кстати, оценивали на задаче Dark Room, где большая часть действий и состояний дают reward = 0, то есть без исследования решить ее не получится
📝 Тред от одного из авторов про модель
Попыток скрестить RL и трансформеры уже было достаточно (например, Gato и Decision Transformer), но это не RL в полном смысле слова. Такие модели могут предсказывать следующее действие актора, но для этого им нужен промт с предыдущими состояниями, действиями и reward’ами, сами они не могут в explore and exploit, а также они не могут самостоятельно на инференсе обучиться под новые задачи. Также они учатся сразу на лучшей стратегии, поэтому не могут ее сами итеративно улучшать
Для обучения Algorithm Distillation брали learning histories RL-алгоритмов (например, DQN) на отдельных задачах. При чем, историю делали достаточно длинной, чтобы в нее попадало несколько эпизодов, и можно было пронаблюдать, как улучшается стратагия –> благодаря этому, AD учится не только предсказывать текущую стратегию, но и сразу улучшенную. Что прикольно, в некоторых задачах был еще и partial observation, то есть когда передается не все состояние игры, а только какая-то его часть, известная игроку
На инференсе AD находит лучшую стратегию даже быстрее, чем исходные алгоритмы, которые были дистилированны (! хотя не побивает их перфоманс в целом), сам исследует пространство и сам генерирует себе контекст. Способность исследовать, кстати, оценивали на задаче Dark Room, где большая часть действий и состояний дают reward = 0, то есть без исследования решить ее не получится
📝 Тред от одного из авторов про модель
👍5
Еще одно из внезапных умений новой Midjourney V4 – очень крутой пиксель-арт
🔥42❤7❤🔥1👍1
я обучала одну модель
Интересный папирус, в котором авторы воспроизводят увиденное человеком изображание по сканам активности мозга • Сначала людям показывают видео нескольких категорий (абстрактные геометрические фигуры, лица людей, эктремальный спорт и тд) • Проводят…
А вот и логичное продолжение идеи про реконструкцию изображений по мозговой активности, про которую тут давно был пост. В статье 2019 года брали сканы ЭЭГ, получали эмбеддинг с помощью LSTM и разворачивали его в картинку с помощью convolutional сетки, а в 2022 для декодинга картинки используют диффьюжн модель
https://news.1rj.ru/str/abstractDL/176
https://news.1rj.ru/str/abstractDL/176
Telegram
AbstractDL
MinD-Vis: диффузия для чтения мыслей
Представлена диффузионная модель, которая умеет декодировать то, что видит человек по его мозговой активности (fMRI).
Сначала авторы обучили self-supervised модель для получения универсальных эмбеддингов мозговой активности…
Представлена диффузионная модель, которая умеет декодировать то, что видит человек по его мозговой активности (fMRI).
Сначала авторы обучили self-supervised модель для получения универсальных эмбеддингов мозговой активности…
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Papers with code x Meta внезапно выпустили свою модель под названием Galactica – LLM, но с уклоном в академию и науку
Она может саммаризировать статьи, генерировать обзоры литературы и выжимки лекций, предлагать цитирования и писать сниппеты кода (и много чего еще)
Секрет успеха, как это часто бывает, в датасете: 48M статей, 2M файлов с кодом, и много энциклопедий, учебников, баз знаний и т.д. Авторы утверждают, что гораздо тщательнее фильтровали и отбирали данные для датасета по сравнению с предыдущими scientific LLM
Одна интересная новация, которую они предалагают в сопровождающей статье, – токен <work> для создания working memory. Чтобы обеспечить возможность chain-of-thought для решений сложных примеров (где нужны промежуточные вычисления для ответа на вопрос) обычно используют промтинг по типу ‘Let’s think step by step’, чтобы модель расписывала свои шаги. Здесь же авторы помещают все входные данные и последовательность вычислений между <work>-токенами, что больше заточено под математические операции, чем описание словами после промта
Потыкать демо можно тут – https://galactica.org/
Только кажется, что там выставлен сильный лимит на длину генерации, и так же впечатляюще, как на их демонстрации, не получится🤡 зато веса публичные!
Она может саммаризировать статьи, генерировать обзоры литературы и выжимки лекций, предлагать цитирования и писать сниппеты кода (и много чего еще)
Секрет успеха, как это часто бывает, в датасете: 48M статей, 2M файлов с кодом, и много энциклопедий, учебников, баз знаний и т.д. Авторы утверждают, что гораздо тщательнее фильтровали и отбирали данные для датасета по сравнению с предыдущими scientific LLM
Одна интересная новация, которую они предалагают в сопровождающей статье, – токен <work> для создания working memory. Чтобы обеспечить возможность chain-of-thought для решений сложных примеров (где нужны промежуточные вычисления для ответа на вопрос) обычно используют промтинг по типу ‘Let’s think step by step’, чтобы модель расписывала свои шаги. Здесь же авторы помещают все входные данные и последовательность вычислений между <work>-токенами, что больше заточено под математические операции, чем описание словами после промта
Потыкать демо можно тут – https://galactica.org/
Только кажется, что там выставлен сильный лимит на длину генерации, и так же впечатляюще, как на их демонстрации, не получится
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👏2
Forwarded from настенька и графики
This media is not supported in your browser
VIEW IN TELEGRAM
PivotTableJS – библиотека для быстрого исследования данных в Jupyter Notebook. Все с drag-n-drop, дата саентисты советуют.
❤16👍5
Как заставить LLM использовать внешние инструменты (например, поиск в гугле, калькулятор, Википедию) при генерации текста
Известная проблема LM в том, что вместо точной информации они зачастую генерят полную отсебятину. Как было и со скоропостижно скончавшейся Galactica, которая выдумывала цитирования или факты. Понятно, что хочется сделать так, чтобы модель ходила за точной инфой в базу данных, поисковый движок или python noscript
Для этого нужно несколько шагов:
1. Специфичный промтинг (как всегда). Про это был пост в канале DL in NLP. Модели на вход подается большой промт, где объясняется, что она может инициировать IPython session (чтобы в том числе импортировать модуль Википедии), чтобы ответить на вопрос. Выглядит промт примерно так:
«If you can answer directly, use this format:
Question: ${Question}
Answer: ${Answer}
You are unable to directly answer any question <…>
In these cases, consult Python. Use this format:
Question: ${Question}
IPython session:
${IPython commands and output needed to find answer}»
+ далее сам вопрос
Важно заметить, что в этом случае никакой код не прогоняется – модель его только генерирует, но это тем не менее уже немного повышает ее фактологичность и способность к вычислениям.
2. Self-ask. Логичное продолжение идеи «let’s think step by step» из этой статьи. Для ответа на сложные вопросы, нужно заставить модель здавать сначала промежуточные. Пример промта выглядит примерно так:
«Question: When was the founder of craigslist born?
Are follow up questions needed here: Yes.
Follow up: Who was the founder of craigslist?
Intermediate answer: Craigslist was founded by Craig Newmark.
Follow up: When was Craig Newmark born?
Intermediate answer: Craig Newmark was born on December 6, 1952.
So the final answer is: December 6, 1952»
+ далее сам вопрос
При ответе на новый вопрос, модель будет имитировать такую структуру ответа, и снова окажется более фактологичной.
3. Почему бы в предыдущем примере вместо того, чтобы дать модели самой отвечать на промежуточные ответы, не отправлять этот запрос в поисковый движок гугла? Или для вычислений – почему бы действительно не прогнать сгенерированный код, подставив в дальнейшую генерацию модели результат его исполнения?
Эту задачу из коробки сейчас стали решать LangChainAI. Вообще их либа в целом помогает строить пайплайны для промтинга, но киллер-фича – это как раз возможность передать задачу поиска и/или вычисления соответствующему агенту, который ее выполнит.
Работает это так, что модель генерирует follow-up вопросы, и для ответа на них может быть выбрано то или иное действие (Search/Calculate). Результат этого действия подставляется как ответ на этот промежуточный вопрос («Intermediate answer»), и с его учетом модель продолжает дальше свою генерацию. Например, после этого она может вызвать какое-то другое следующее действие, как в задании на скрине. Весь тяжелый промтинг, нужный для того, что это работало, происходит на стороне LangChain, и руками это прописывать не нужно (удобно!).
В целом исполнение идеи пока сырое, но безумно радостно видеть, что этот очевидный пробел начали закрывать. Очень много функционала сюда можно накрутить; как уже показывали примеры, с помощью jupyter сессии модель может сделать аналитику по реально существующему датасету; можно подтягивать базы цитирований и предлагать хорошие списки литературы; можно генерить отчеты с реальными показателями фирм, которые можно нагуглить.
Possibilities are endless короче🌈
Известная проблема LM в том, что вместо точной информации они зачастую генерят полную отсебятину. Как было и со скоропостижно скончавшейся Galactica, которая выдумывала цитирования или факты. Понятно, что хочется сделать так, чтобы модель ходила за точной инфой в базу данных, поисковый движок или python noscript
Для этого нужно несколько шагов:
1. Специфичный промтинг (как всегда). Про это был пост в канале DL in NLP. Модели на вход подается большой промт, где объясняется, что она может инициировать IPython session (чтобы в том числе импортировать модуль Википедии), чтобы ответить на вопрос. Выглядит промт примерно так:
«If you can answer directly, use this format:
Question: ${Question}
Answer: ${Answer}
You are unable to directly answer any question <…>
In these cases, consult Python. Use this format:
Question: ${Question}
IPython session:
${IPython commands and output needed to find answer}»
+ далее сам вопрос
Важно заметить, что в этом случае никакой код не прогоняется – модель его только генерирует, но это тем не менее уже немного повышает ее фактологичность и способность к вычислениям.
2. Self-ask. Логичное продолжение идеи «let’s think step by step» из этой статьи. Для ответа на сложные вопросы, нужно заставить модель здавать сначала промежуточные. Пример промта выглядит примерно так:
«Question: When was the founder of craigslist born?
Are follow up questions needed here: Yes.
Follow up: Who was the founder of craigslist?
Intermediate answer: Craigslist was founded by Craig Newmark.
Follow up: When was Craig Newmark born?
Intermediate answer: Craig Newmark was born on December 6, 1952.
So the final answer is: December 6, 1952»
+ далее сам вопрос
При ответе на новый вопрос, модель будет имитировать такую структуру ответа, и снова окажется более фактологичной.
3. Почему бы в предыдущем примере вместо того, чтобы дать модели самой отвечать на промежуточные ответы, не отправлять этот запрос в поисковый движок гугла? Или для вычислений – почему бы действительно не прогнать сгенерированный код, подставив в дальнейшую генерацию модели результат его исполнения?
Эту задачу из коробки сейчас стали решать LangChainAI. Вообще их либа в целом помогает строить пайплайны для промтинга, но киллер-фича – это как раз возможность передать задачу поиска и/или вычисления соответствующему агенту, который ее выполнит.
Работает это так, что модель генерирует follow-up вопросы, и для ответа на них может быть выбрано то или иное действие (Search/Calculate). Результат этого действия подставляется как ответ на этот промежуточный вопрос («Intermediate answer»), и с его учетом модель продолжает дальше свою генерацию. Например, после этого она может вызвать какое-то другое следующее действие, как в задании на скрине. Весь тяжелый промтинг, нужный для того, что это работало, происходит на стороне LangChain, и руками это прописывать не нужно (удобно!).
В целом исполнение идеи пока сырое, но безумно радостно видеть, что этот очевидный пробел начали закрывать. Очень много функционала сюда можно накрутить; как уже показывали примеры, с помощью jupyter сессии модель может сделать аналитику по реально существующему датасету; можно подтягивать базы цитирований и предлагать хорошие списки литературы; можно генерить отчеты с реальными показателями фирм, которые можно нагуглить.
Possibilities are endless короче
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🥰5❤2🥱1
Превратится ли этот канал в постинг мемов из chatgpt? Да, на время
👍14🥴8👏1