Сегодня выпустили на хабре обзор нашего решения для проекта “AI Да Пушкин» (можно сгенерировать стих с заданной начальной строчкой)
Всё ещё можно попробовать здесь.
Всё ещё можно попробовать здесь.
👏3
Советую посетить ютуб-канал Joel Grus-а (ex-google, ex-allen-ai).
Это автор книги Data Science from Scratch, отец-основатель библиотеки AllenNLP (про которую я расскажу позже), главный хейтер jupyter ноутбуков, человек, который придумал название для архитектуры ELMo (видимо, из-за него BERT и называется бертом)
На его видосах я учился писать правильный код на питоне.
Из интересного
1) Как написать свою либу с автоматическим дифференцированием (в стиле PyTorch)
2) Ежегодный стриминг решения Advent of Livecoding (задачи по алгоритмам)
3) Знаменитая лекция, почему не стоит использовать юпитер-ноутбуки (выступал на jupytercon-е, лол)
Это автор книги Data Science from Scratch, отец-основатель библиотеки AllenNLP (про которую я расскажу позже), главный хейтер jupyter ноутбуков, человек, который придумал название для архитектуры ELMo (видимо, из-за него BERT и называется бертом)
На его видосах я учился писать правильный код на питоне.
Из интересного
1) Как написать свою либу с автоматическим дифференцированием (в стиле PyTorch)
2) Ежегодный стриминг решения Advent of Livecoding (задачи по алгоритмам)
3) Знаменитая лекция, почему не стоит использовать юпитер-ноутбуки (выступал на jupytercon-е, лол)
🔥6
Посмотрите мою лекцию по генерации текста! Узнаете базовые алгоритмы декодирования (beam search, nucleus sampling, top-k, greedy) и способы оценки качества ваших искусственных текстов 🤓
https://youtu.be/2NExUHpXVF0
https://youtu.be/2NExUHpXVF0
👏5
Кстати, слышали про курс Full Stack Deep Learning?
От Сергея Караева (UC Berkeley). Там введение в дип ленинг (если забыли, куда там нейроны ползут) и лекции о том, что делать с нейронными сетями в продакшене: как тестировать, где и как хранить данные, как настраивать мониторинг и как выкатывать.
От Сергея Караева (UC Berkeley). Там введение в дип ленинг (если забыли, куда там нейроны ползут) и лекции о том, что делать с нейронными сетями в продакшене: как тестировать, где и как хранить данные, как настраивать мониторинг и как выкатывать.
Fullstackdeeplearning
The Full Stack - Lecture 1: DL Fundamentals
News, community, and courses for people building AI-powered products.
👍6👏1
Хватит использовать
Даже в госконторах уже все давно используют Typer для создания CLI приложений. Чем плох argparse?
1. Много лишнего кода
2. Not pythonic
3. Порождает bad practices в стиле "а давайте будем передавать args в качестве аргументов" (из-за этого вообще не понятно, что за объект перед нами, и как его потом использовать)
Чем хорош typer?
1. От создателя FastAPI (да, поэтому круто)
2. Pythonic: пишешь функцию, указываешь типы и всё
3. Прост в использовании: пару строчек к существующему коду
4. Много фичей: можно делать сложные приложения, использовать нативный typing, автодополнения и многое другое
argparse! Даже в госконторах уже все давно используют Typer для создания CLI приложений. Чем плох argparse?
1. Много лишнего кода
2. Not pythonic
3. Порождает bad practices в стиле "а давайте будем передавать args в качестве аргументов" (из-за этого вообще не понятно, что за объект перед нами, и как его потом использовать)
Чем хорош typer?
1. От создателя FastAPI (да, поэтому круто)
2. Pythonic: пишешь функцию, указываешь типы и всё
3. Прост в использовании: пару строчек к существующему коду
4. Много фичей: можно делать сложные приложения, использовать нативный typing, автодополнения и многое другое
👍12🔥3
Как использовать open source модели (GPT, T5, BART) от разных компаний (google, Meta, Sber, allenai, etc)?
Если вы всё ещё не знаете, как работать с библиотекой
1. Как работать с моделями huggingface transformers
2. Процесс декодирования в генеративных авторегрессионных моделях
3. Promt engineering
4. Обучение и инференс GPT2
🖥 Код
📹 Видео
Если вы всё ещё не знаете, как работать с библиотекой
transformers, то предлагаю ознакомиться с моим объяснением, какие кнопки жать, чтоб всё работало.1. Как работать с моделями huggingface transformers
2. Процесс декодирования в генеративных авторегрессионных моделях
3. Promt engineering
4. Обучение и инференс GPT2
🖥 Код
📹 Видео
👍6
Казалось бы, какие еще способы декодирования для языковых моделей можно придумать, кроме greedy, top-k, top-p, beam search?
В статье Typical Decoding for Natural Language Generation (также разбор от Yannic) предлагается посмотреть на задачу с точки зрения теории информации. Мы (люди) стараемся передавать друг другу информацию эффективно, но также стараемся избежать риск недопонимания.
По сути, две стороны медали: я могу говорить (писать), максимизируя вероятность следующего слова (токена) или вероятность всего предложения, но тогда в моем сообщении будет мало информации (так как всё, что я говорю, вы и так ожидаете). Но для вас ведь интереснее (=больше информации) читать то, что вы не ожидаете, верно? Например, ожидали ли вы услышать словосочетание БАХЧЕВЫЕ КУЛЬТУРЫ? 🍉
Так вот, а почему тогда мы в декодировании всегда ориентируемся на максимизацию вероятностей (даже когда сэмплируем, ведь более вероятным токенам мы ставим бОльший вес)? В статье предлагается выбирать токены, информационный контент которых близок к ожидаемому инфомрационному контенту (прочитайте статью, там просто).
Что-то подобное заметили в статье про Nucleus sampling. Люди не максимизируют вероятности! (см. скрин)
P.S.
Новый метод уже доступен в
В статье Typical Decoding for Natural Language Generation (также разбор от Yannic) предлагается посмотреть на задачу с точки зрения теории информации. Мы (люди) стараемся передавать друг другу информацию эффективно, но также стараемся избежать риск недопонимания.
По сути, две стороны медали: я могу говорить (писать), максимизируя вероятность следующего слова (токена) или вероятность всего предложения, но тогда в моем сообщении будет мало информации (так как всё, что я говорю, вы и так ожидаете). Но для вас ведь интереснее (=больше информации) читать то, что вы не ожидаете, верно? Например, ожидали ли вы услышать словосочетание БАХЧЕВЫЕ КУЛЬТУРЫ? 🍉
Так вот, а почему тогда мы в декодировании всегда ориентируемся на максимизацию вероятностей (даже когда сэмплируем, ведь более вероятным токенам мы ставим бОльший вес)? В статье предлагается выбирать токены, информационный контент которых близок к ожидаемому инфомрационному контенту (прочитайте статью, там просто).
Что-то подобное заметили в статье про Nucleus sampling. Люди не максимизируют вероятности! (см. скрин)
P.S.
Новый метод уже доступен в
transformers — model.generate(..., typical_p=0.95)👍3
Пару лет назад столкнулся с тем, что какая-то модель (уже забыл какая) принимала список тензоров разной длины.
Так не хотелось это все дело падить, чтобы получить единый тензор, и в то же время не хотелось работать с
Недавно появился торчевый объект torch.nested, поэтому теперь можно тензоры разной длины хранить без питона 🤡
Так не хотелось это все дело падить, чтобы получить единый тензор, и в то же время не хотелось работать с
List[torch.Tensor]Недавно появился торчевый объект torch.nested, поэтому теперь можно тензоры разной длины хранить без питона 🤡
a, b = torch.arange(3), torch.arange(5)
nt = torch.nested_tensor([a, b])
👍4
Как оценивать качество разговорных ботов? 🤖
Допустим, у нас есть датасет, состоящий из диалогов людей. Мы на этих данных обучаем генеративную модель по истории диалога (контексту) предсказывать следующую реплику (ответ бота). Можно ли на валидационном датасете понять, хорош ли наш бот?
Первое, что приходит на ум, — использовать метрики из перевода или speech-to-text (BLEU, Word Error Rate, etc). В чем их проблема?
Оказывается, это плохая идея, так как на один и тот же вопрос можно ответить совершенно по-разному и все равно быть "правым" 🤷♀️
— Ты любишь огурцы?
— Да, люблю
vs.
— Ты любишь огурцы?
— Нет, ненавижу
Оба ответа имеют право на существование, поэтому любые метрики похожести между ответом бота и реальным ответом человека использовать не стоит! Хоть синтаксические (любые текстовые близости, в том числе расстояния между bag-of-words, tf-idf представлениями), хоть семантические (векторные расстояния над представлениями fasttext/bert/muse/etc).
Так что же делать? Одно из предложений — использовать разметку (читай в следующем выпуске журнала).
Допустим, у нас есть датасет, состоящий из диалогов людей. Мы на этих данных обучаем генеративную модель по истории диалога (контексту) предсказывать следующую реплику (ответ бота). Можно ли на валидационном датасете понять, хорош ли наш бот?
Первое, что приходит на ум, — использовать метрики из перевода или speech-to-text (BLEU, Word Error Rate, etc). В чем их проблема?
Оказывается, это плохая идея, так как на один и тот же вопрос можно ответить совершенно по-разному и все равно быть "правым" 🤷♀️
— Ты любишь огурцы?
— Да, люблю
vs.
— Ты любишь огурцы?
— Нет, ненавижу
Оба ответа имеют право на существование, поэтому любые метрики похожести между ответом бота и реальным ответом человека использовать не стоит! Хоть синтаксические (любые текстовые близости, в том числе расстояния между bag-of-words, tf-idf представлениями), хоть семантические (векторные расстояния над представлениями fasttext/bert/muse/etc).
Так что же делать? Одно из предложений — использовать разметку (читай в следующем выпуске журнала).
👍5😱1
Долгий путь к разметке ответов генеративной модели 🧑🦯
Перед тем, как приступать к разметке, не забудьте посчитать unsupervised метрики — они могут дать понимание, как работает ваш чатбот через косвенные признаки.
• Распределение длин ответов — Ответы могут быть очень короткие, соответственно, неинтересные. Или наоборот, ответы — телега текста, которую никто читать не будет.
• Количество уникальных n-gram (Dist-n) — может, бот использует одинаковые слова и конструкции? — это достаточно скучно.
• Количество повторений (REP) — полезно следить за одной из главных проблем языковых моделей — повторения (формулы тут)
• Perplexity (ppl) — оценка "правдоподобности/человечности" текста с помощью языковых моделей (если забыли, что это такое, — читайте тут)
Только я вас прошу, не используйте ту же самую модель для оценки ppl! Это типичная ошибка: любые методы декодирования так или иначе максимизируют вероятность возникновения следующего токена (да, даже сэмплирование), поэтому и перплексия будет занижена. Берите самую большую (другую) модель, до которой можете дотянуться (gpt-4 без активаций 🤦♂️)
Еще один из секретов готовки перплексии — это посчитать её на референсных текстах и сравнивать с этим значением, а не стремиться достичь нуля (перплексия на человеческих текстах не минимальна, скорее, находится в определенных промежутках)
Перед тем, как приступать к разметке, не забудьте посчитать unsupervised метрики — они могут дать понимание, как работает ваш чатбот через косвенные признаки.
• Распределение длин ответов — Ответы могут быть очень короткие, соответственно, неинтересные. Или наоборот, ответы — телега текста, которую никто читать не будет.
• Количество уникальных n-gram (Dist-n) — может, бот использует одинаковые слова и конструкции? — это достаточно скучно.
• Количество повторений (REP) — полезно следить за одной из главных проблем языковых моделей — повторения (формулы тут)
• Perplexity (ppl) — оценка "правдоподобности/человечности" текста с помощью языковых моделей (если забыли, что это такое, — читайте тут)
Только я вас прошу, не используйте ту же самую модель для оценки ppl! Это типичная ошибка: любые методы декодирования так или иначе максимизируют вероятность возникновения следующего токена (да, даже сэмплирование), поэтому и перплексия будет занижена. Берите самую большую (другую) модель, до которой можете дотянуться (gpt-4 без активаций 🤦♂️)
Еще один из секретов готовки перплексии — это посчитать её на референсных текстах и сравнивать с этим значением, а не стремиться достичь нуля (перплексия на человеческих текстах не минимальна, скорее, находится в определенных промежутках)
👍5
Позиционные эмбединги не нужны 😱
Намедни обучали модель машинного перевода. Обучали 5 дней на 8GPU v100. Посмотрели метрики, потыкали и потестировали модель. Она нам понравилась (!).
Через некоторое время я через косвенные признаки заметил, что позиционные эмбединги отсутствуют — просто нет таких весов в чекпоинтах. Не поверил себе, — перепроверил. Действительно нет.
И тогда я подумал "так мы потеряли 10-20пп в метрике!", ведь отцы мультхэд атеншена учили нас, что в архитектуре transformer не учитывается порядок токенов, поэтому позиционные эмбединги must have. Пошел читать ablation study в оригинальной статье (там как раз перевод), но там сравнивается только "обучаемые эмбединги" vs. "синусоидные".
Пошел гуглить. Оказывается, механизм внимания сам выучивает позиционную информацию, так как в masked attention мы ограничваем количество токенов, которые attendable (типа на каждой позиции смотрим только на определенное количество токенов).
WARNING: такой трюк не прокатит с бертом, так как у него "полный" (bidirectional) attention.
В общем, поставили обучаться с позиционными, посмотрим, какой будет прирост.
Намедни обучали модель машинного перевода. Обучали 5 дней на 8GPU v100. Посмотрели метрики, потыкали и потестировали модель. Она нам понравилась (!).
Через некоторое время я через косвенные признаки заметил, что позиционные эмбединги отсутствуют — просто нет таких весов в чекпоинтах. Не поверил себе, — перепроверил. Действительно нет.
И тогда я подумал "так мы потеряли 10-20пп в метрике!", ведь отцы мультхэд атеншена учили нас, что в архитектуре transformer не учитывается порядок токенов, поэтому позиционные эмбединги must have. Пошел читать ablation study в оригинальной статье (там как раз перевод), но там сравнивается только "обучаемые эмбединги" vs. "синусоидные".
Пошел гуглить. Оказывается, механизм внимания сам выучивает позиционную информацию, так как в masked attention мы ограничваем количество токенов, которые attendable (типа на каждой позиции смотрим только на определенное количество токенов).
WARNING: такой трюк не прокатит с бертом, так как у него "полный" (bidirectional) attention.
В общем, поставили обучаться с позиционными, посмотрим, какой будет прирост.
😱8👍5
tl;dr из статьи: без позиционных эмбедингов ОК, но лучше с ними, конечно. И лучше не застревать в 2к17 и использовать современные способы передачи информации о позициях в модель.
👍6
Forwarded from PyCon Russia
Немного подробностей о мастер-классе «Как создать собеседника мечты на основе машинного обучения за 3 часа», который на PyCon Russia 2022 проведут Денис Разбицкий, Александр Марков и Даниил Цимерман из Тинькофф.
Мастер-класс рассчитан на ML инженеров, которые смогут разобраться с технологиями NLP. Участники воспользуются oпенсорсной генеративной моделью, обсудят, что такое языковая модель и как ее использовать для conversational AI и приступят к практике:
– Поборются с генерацией токсичных ответов;
– Повысят качество ответов болталки с помощью классификаторов;
– Улучшая качество с помощью промт-тюнинга;
– Найдут топовый алгоритм декодирования, чтобы ответы были длинные и кайфовые;
– Обернут модель в сервис и телеграм бота.
В конце у каждого участника МК останется бот, с которым можно будет поболтать в любой момент.
Мастер-класс рассчитан на ML инженеров, которые смогут разобраться с технологиями NLP. Участники воспользуются oпенсорсной генеративной моделью, обсудят, что такое языковая модель и как ее использовать для conversational AI и приступят к практике:
– Поборются с генерацией токсичных ответов;
– Повысят качество ответов болталки с помощью классификаторов;
– Улучшая качество с помощью промт-тюнинга;
– Найдут топовый алгоритм декодирования, чтобы ответы были длинные и кайфовые;
– Обернут модель в сервис и телеграм бота.
В конце у каждого участника МК останется бот, с которым можно будет поболтать в любой момент.
👍7🔥5
Forwarded from РБК. Новости. Главное
Власти США проинформировали компанию Nvidia о введении новых лицензий на экспорт в отношении Китая и России: теперь ее продукцию запрещено продавать в эти страны.
Согласно новым лицензионным требованиям ограничения распространяются на ускорители вычислений на базе GPU (graphics processing unit, графический процессор), соответствующие определенным критериями производительности, в частности изделия серии A100 и H100. Такие модели используются для работы с искусственным интеллектом и повышают производительность вычислений в разы.
Еще в июне Nvidia подчеркивала, что несмотря на ограничения поставок в Россию уходить полностью с российского рынка не намерена.
Согласно новым лицензионным требованиям ограничения распространяются на ускорители вычислений на базе GPU (graphics processing unit, графический процессор), соответствующие определенным критериями производительности, в частности изделия серии A100 и H100. Такие модели используются для работы с искусственным интеллектом и повышают производительность вычислений в разы.
Еще в июне Nvidia подчеркивала, что несмотря на ограничения поставок в Россию уходить полностью с российского рынка не намерена.
