Приближаем сингулярность
963 subscribers
79 photos
2 videos
57 links
Про AI, стартапы, и не только

По всем вопросам писать @leshanbog
Download Telegram
Интерпретируемые текстовые эмбеддинги

Типичная модель для текстовых эмбеддингов считает близкими предложения типа "Два человека поют" и "Три человека поют". Это конечно верно для некоторых приложений, но, например, для оценки правдивости это совсем не так. Квантификаторы (все, некоторые, никто, ...), отрицания, числительные, собственные имена - здесь критически важны.

Авторы предложили обучать эмбеддинги через декомпозицию на интерпретируемые признаки (и неинтерпретируемый residual). В итоге можно вычислять близость текстов как по понятным аспектам, так и в целом. На рисунке 1 результат модели на примере "Два человека поют" и "Три человека поют" (в твиттер посте их ещё больше)

Как они это сделали?

Есть всякие меры близости текстов, которые используют парсеры предложений и последующее сравнение получившихся семантических графов. Они медленные и качество в целом не на уровне нейросетевых моделей близости. Авторы предложили взять 15 таких интерпретируемых функций и разделить финальный эмбеддинг на 16 частей: 15 под каждый из аспектов и 1 для всего остального, что осталось не представленно. Каждую аспектную часть они обучают приближать соответствующий долговычислимый graph-based признак (Score Decomposition), а в residual дистиллируют обычный sentence transformer (Score Consistency)

В итоге получается модель, эмбеддинги которой и быстро вычисляются, и могут быть интерпретируемы, и без просадки в качестве (рисунок 2)


Код для обучения, инференса и веса модели выложены на гитхаб 👍
Статья с ACL: Decomposing Sentence Embeddings into Explainable Semantic Features
Twitter post
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥61
SparseGPT: сжатие 175B модели в 2 раза без потери в качестве

Для широкого распространения моделей и последующих инноваций важно, чтобы модель можно было запустить на любом чайнике не имея 8xA100 GPU. Ещё желательно, чтобы эта сжатая модель работала так же хорошо, как и исходная.

Типичные способы достигнуть этого: дистилляция в меньшую модель-ученика, квантизация (например, преобразование весов и активаций в int8), прунинг (выкидывание части весов)

В статье предлагают метод прунинга, который
- работает на очень больших моделях
- позволяет сжать в 2 раза без потери в perplexity (левый график)
- не требует дообучения
- локальный, то есть работает с отдельными матрицами весов
- за 4 часа сжимает 175B модель

Также их метод умеет в structural sparsity - когда зануляются не произвольные веса, а согласно некоторому правилу. Например, 2:4 паттерн - в последовательных блоках из 4 элементов 2 элемента нули. Тензорные ядра в A100 работают с такими матрицами в 2 раза быстрее.

На правом графике видно, что чем больше модель, тем лучше она сжимается. Интересно, какая настоящая размерность числа параметров у этих сетей, если отбросить все лишнее 🤔

Подробности в статье
🔥10👍51
Тяжелое будущее промпт инженеров

Несколько раз слышал мнение, что в будущем промпт инженеры будут очень важны и нужны. Объясняю, почему мне так не кажется

Для понимания контекста: промпт - текст, который подается на вход в модель и сообщает ей, какую картинку или текст хочется получить на выходе. От него может сильно зависеть качество и типичная ситуация, когда добавление десятка слов типа trending on artstation, 4k, sharp focus и тд сильно улучшают привлекательность картинки. И это очень тупо, в иделе так быть не должно

Сейчас существуют сервисы, чтобы промпт инженеры могли зарабатывать. Вот, например, маркетплейс для промптов: https://promptbase.com/

Но ещё года полтора назад промпты для текстовых моделей выглядели так: надо было придумать несколько примеров, да ещё и
- либо очень хорошо понимать распределение, на котором нейросеть обучалась, и формулировать примеры в таком же стиле
- либо использовать язык шаблонов (как в этой статье про zero-shot трансфер стиля)

А сейчас научили текстовые модели следовать инструкциям и добиться желаемого ответа от них стало заметно проще. Что-нибудь анлогичное произойдет и с text-to-image моделями. И в принципе, работа по облегчению использования любых моделей (будущих text-to-video, например) вряд ли остановится. Такие вот дела :)
👍9🔥6
Эффективный формат чисел для нейросетей

Недавно узнал про существование Block Floating Point формата чисел. Его прикол в том, что он хорошо подходит для перемножения матриц. Значит, и для применения нейросетей. Реализация BlockFP на уровне железа должна ускорить инференс на порядки (и разработка такого железа сейчас уже ведется).

Напоминание про обычный Floating Point формат. Каждый элемент представлен
- экспонентой (range): насколько большие числа могут быть представлены (~ длина линейки)
- мантиссой (precision): точность (~ плотность и количество засечек на линейке)

Существует ещё Fixed Point формат, в котором только мантисса, а коэффициент масштабирования фиксирован для всех элементов.

Грубо говоря, Floating Point формат это гибко, точно, медленно, а Fixed Point - не гибко, но очень эффективно. Так вот BlockFP это нечто среднее: одна экспонента используется для блока элементов (последняя строчка на картинке). Получается и динамический range, и эффективное умножение на fixed point процессорах.

Для матричного перемножения двух блоков нужно только
- вычислить новую экспоненту за одну операцию перемножения
- матрично умножить fixed-point числа

А ещё у нейросетей внутри линейных слоев числа чаще всего как раз одного порядка, что делает этот формат ещё более подходящим 👍

Статья от Microsoft про аналогичный формат данных
🔥9👍6
🤖 🧮 🟰🚀

11-13 апреля в Стенфорде прошел 2023 Annual Affiliates Meeting с разными интересными лекциями. В первый день было про новые направления исследований, во второй - про Generative AI и Foundational models, в третий - безопасность (не только про AI). Смотреть можно здесь.

Посмотрел keynote про LLMки. Очень попсово, но вот одна из мыслей.

Пара существенных проблем LLMок (не исчерпывающий список) - выдумывание фактов и рассуждений, которые выглядят очень правдоподобно. Это может быть особенно опасно в каких-нибудь медицинских консультациях от ИИ (а заменить дорогостоящего врача очень хочется, и спрос на них большой).

И встает вопрос: можно ли вложить ещё больше ресурсов в текущие подходы и получить более надежные модели? Ответ да означает
- больше модели
- больше контекст
- дольше обучать
- добавлять новые модальности (картинки, звук, видео, …)
- больше RLHF
- retrieval-augmented модели
- улучшение методов промптинга (CoT, иерархичный, и т.д.)

Но кажется, что из нейронной сети в принципе никогда не получится надежный калькулятор. Поэтому ставка делается на нейросимвольный подход: скрестить LLM и модули калькулятора, конвертера валют, похода в базу данных, …. Статья с описанием подобной модульной архитектуры: тык. Плагины в OpenAI, кстати, как раз про это 😱

Подписывайтесь: https://t.iss.one/building_singularity. Здесь больше интересных постов про AI 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍51🤔1
Assisted Generation: оригинальный способ ускорить генерацию

Прикольный пост на Huggingface про ускорение генерации больших LMок. Реализация уже в 🤗, можно использовать 👍

One sentence summary: маленькая модель генерирует последовательности токенов, большая проверяет

🔹 Как происходит генерация?
- последовательно, токен за токеном
- 1 forward pass на 1 токен
- предыдущие внутренние состояния кешируются
- вычисления скрытого состояния для нового токена идут послойно

🔹 Основной ботлнек и что с этим делать?
Для больших языковых моделей ботлнек это пропускная способность памяти GPU во время матричного умножения. То есть, основное время уходит не на вычисления, а на трансфер весов из памяти к вычислительным ядрам 🤔

Отсюда получается
- INT8 квантизация, Flash Attention и другие техники, учитывающие факт выше, помогают заметно снизить латенси
- Увеличение размера батча увеличивает пропускную способность модели, так как один раз загруженные в вычислительные ядра веса, используются для нескольких примеров (латенси при этом немного возрастает)
- Tensor Parallelism (если есть > 1 GPU) параллелит трансфер весов (и вычисления), что позволяет уменьшить латенси

🔹 Их метод (в посте есть понятная визуализация)
1. Генерируем маленькой assistant моделью несколько последующих токенов (жадно)
2. Большой моделью делаем один forward и получаем логиты для этих сгенерированных токенов
3. Берем от логитов argmax и отбрасываем предложенные assistant моделью токены, начиная с первого несовпадения
4. goto 1.

Для семплинга тоже придумали, но быстрее работает с жадной генерацией

Интересный подход. Получатся разные латенси для разных текстов: легкие (ожидаемые) будут генерироваться быстрее. Типа роутинга запросов, только внутри одного метода генерации 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4🤯21
Open Source vs Big Tech

Недавно в сеть утек внутренний пост сотрудника из Гугла. Как и с любым утекшим документом достоверность факта утечки не 100%, это не позиция компании и прочие предупреждения. Тем не менее, пост интересный)

В нем есть занимательные рассуждения про open source vs big tech, и подробный таймлайн успехов open source коммьюнити начиная с релиза LLaMA.

Но вот одно утверждение, которое слишком уж преувеличено, как мне кажется: гуглу нужен опенсорс больше, чем опенсорсу гугл (OpenAI, Meta, …).

Коммьюнити сделало реально много крутых штук, но часто это что то типа
- как дообучить / инферить большую модель на карте с 4 гб
- как впихнуть большую модель в любой чайник
- воспроизведение того, что уже открыто, исследовано и доказано (эмпирически) работает у Big Tech

Но чтобы понять, какие подходы работают и как надо делать, компании потратили кучу денег и времени. В общем, респект и тем, и тем 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍41
Конкуренция AI продуктов🏆

Альтернатива ChatGPT от гугла: Bard

Бесплатный
С доступом к поиску под капотом, то есть можно спрашивать про свежие события
Быстрее, чем ChatGPT
Чаще выводит результат в удобно читаемой табличке (мне такое нравится 🙂)
Только на английском

Смелый шаг от гугла. Такой новый поиск пока не понятно как монетизировать. То есть это угроза их основному бизнесу (рекламе). Плюс, теперь их бренд в какой то степени будет ассоциироваться с галлюцинациями, которые иногда выдают все LMки (и Bard не исключение). И наверняка будет достаточно желающих засудить гугл за неверные факты в ответах

Ну а пользователям больше опций только лучше) Конкуренция - хорошо и весело 🥔

(только если эти компании станут сильно меньше публиковать информации про свои открытия, это не так весело 👎)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍31👎1🤔1
Безопасный Искусственный Интеллект 🤖

Последнее время много обсуждается про возможные опасности ИИ и как он уничтожит человечество. В связи с этим, популярней становятся исследования про AI Safety. Вот некоторые направления в этой области, если вдруг захочется сделать вклад 😉

Интерпретируемость. Нейросеть - черный ящик, перемножение и складывания чиселок миллиарды раз. Но есть разные подходы, чтобы понимать на какие части входного текста модель опиралась больше, или за что отвечает отдельно взятый нейрон, и так далее

Робастность. Если подать на вход нетипичные данные, которые модель не видела во время обучения, она может выдать полный бред. Робастность это как раз про то, чтобы на широком спектре входных данных отвечать адекватно

Честность. LLMки способны генерировать очень правдоподобный вымысел. Какой нибудь медицинский совет от ChatGPT может звучать очень научно и классно, но следовать ему без дополнительного факт чекинга - плохая идея

Определение награды. Как донести до нейросети человеческие ценности, предпочтения? Самый популярный подход сейчас: Reward modeling на попарных сравнениях, сделанных людьми, и последующий RL

Оценка качества. Перед тем как выпускать свежеобученную нейросеть в мир, было бы хорошо оценить её способности на разнообразных тестах, и заранее обнаружить её слабые и сильные стороны
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6🤔31
SLiC-HF - убийца 🔪 RLHF?

RLHF, которым обучались ChatGPT и GPT-4, обладает следующим недостатком: сложное, долгое и нестабильное RL дообучение, с большими требованиями по памяти; ведь во время него нужно оценивать генерации с помощью Reward модели и считать вероятности изначальной моделью для KL члена (на рисунке 3 более подробное сравнение).

Так вот, чуваки из гугла показали, что есть более эффективный и простой способ дообучаться на сложный недифференцируемый сигнал типа Human Feedback'а. По human evaluation их метод статзначимо выигрывает у RLHF 💪

Коротко про метод (Sequence Likelihood Calibration):

1️⃣ Обучить нейронку моделировать Human Feedback. Они экспериментировали с pair-wise (контрастив) и point-wise обучениями

2️⃣ Создать датасет (x, y+, y-, y_ref):
a. сгенерировать n кандидатов, проранжировать их моделью с 1 шага, выбрать лучший в качестве y_ref, и ещё пару для y+ и y-
b. либо взять непосредственно датасет попарных сравнений в качестве y+ и y-; а в качестве y_ref - написанные людьми суммаризации
c. микс a и b

3️⃣ Дообучить на нем с лоссом с рисунка 1

Что круто, они сравнились с более простым и очевидным способом улучшения модели: простой supervised finetuning на y_ref (рисунок 2)

Подробности читайте в статье, очень годная 🔥

Подписывайтесь на мой канал, чтобы читать про интересные штуки в AI: https://t.iss.one/building_singularity :)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍72🎉1
Улучшение качества 📈 за счет оптимального выбора весов для обучающих датасетов 📚

Датасеты бывают из разных доменов: интернет новости, википедия, код, диалоги, инструкции... И применяться одна и та же модель может на разных задачах: например это могут быть chit-chat диалоги, диалоги с детьми, диалоги, склоняющие к целевому действию - в зависимости от пользователя. В каких пропорциях брать датасеты в финальный трейн сет?

Авторы статьи (из Гугла и Стенфорда) предлагают способ выбора весов для каждого домена, который в их экспериментах:

🔹 Уменьшил лосс на каждом домене относительно бейзлайна (эвристически подобранные веса датасета Pile) - без трейдоффа, просто улучшение (рисунок 1)

🔹 Обученная их методом модель улучшила среднюю точность One-Shot’а в 5 разных задачах (рисунок 2)


Метод (рисунок 3):

1️⃣ Обучить небольшую reference Langauage Model

2️⃣ Обучить прокси модель (используя Group Distributionally Robust Optimization), чтобы получить новые веса для доменов

3️⃣ Обучить финальную большую LM с этими весами


❗️Group DRO: минимизация наибольшего лосса по всем доменам. То есть ищем модель, которая работает как можно лучше в самых тяжелых случаях.

На самом деле Group DRO не просто лосс минимизирует, а разницу лосса прокси и референс моделей (но получилось бы слишком тяжелое для понимания предложение 😁). Сам процесс обучения: поочередное изменение весов доменов и весов прокси LM’ки для решения минимакс задачи (алгоритм на рисунке 4)

В итоге:
🔸 качество строго лучше и достигается оно быстрее - относительно эвристически подобранных весов
🔸 качество такое же, но эксперименты дешевле - относительно оптимизации весов доменов под целевые задачи сразу с большой LM’кой

Статья: DoReMi: Optimizing Data Mixtures Speeds Up Language Model Pretraining
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍41🤔1