Яндекс технологии
Другой подход, который активно развивает NVIDIA в своем фреймворке Megatron-LM, называется Tensor parallelism. Его идея состоит в том, чтобы распиливать модель не поперек слоев, а вдоль. Предположим, у нас есть какой-то большой слой (на картинке ниже для примера взят простой линейный слой — умножение на матрицу весов B). Давайте поместим его часть на одну карточку, другую часть — на другую карточку.
Ранжирование сниппетов для быстрых ответов
Наконец, поскольку мы используем в том числе Data parallelism, то обучение идет с большим батчем (т.е. с большим количеством примеров на каждом шаге). Из-за этого самый популярный в задачах NLP оптимизатор Adam работает плохо. Для такого обучения нужен оптимизатор, который хорошо умеет работать с большим батчем, например LAMB.
Может прозвучать необычно, но генеративную модель необязательно использовать для генерации текста. Она может помочь и в задаче классификации. Если вы возьмете вероятности входных токенов из этой модели, то получите достаточно хорошие сильные фичи для последующих моделей. Расскажем на примере.
Именно этот подход мы применили в нашем семействе языковых моделей YaLM. Старшая из них насчитывает 13 млрд параметров, младшая — 1 млрд. Обучить и внедрить подобные гигантские модели — нетривиальная задача. Об этом и поговорим.
Ещё несколько слов про экономию ресурсов. Может показаться, что отличный способ сэкономить память и время — это хранить параметры и производить вычисления во float16. Но делайте это с большой осторожностью: некоторые параметры модели очень капризны и при уменьшении точности вызывают расхождение модели.
ТНТ — российский федеральный телеканал. По данным на 2019 год занимает седьмое место по популярности среди телеканалов России. Целевая аудитория телеканала — телезрители от 14 до 44 лет, ядро составляет молодёжь — зрители 18–30 лет.
6 сен. 2024
Для этого мы используем комбинацию эвристических и машиннообученных методов и в результате фильтруем сырые тексты из интернета так, что в комбинации с чистыми источниками получаем несколько терабайтов текста, чего уже достаточно для моделей на миллиарды параметров.
Когда ваша модель влезает в память одной карточки, то просто вспоминаем стандартный способ распараллелить обучение. Так называемый Data parallelism.
Создание подзаголовков для объектных ответов
Если проделать все это, то у вас, как и у нас, получатся большие модельки. А дальше возникает вопрос: как же их применять?
Сейчас поиск Яндекса показывает более 130 млн уникальных быстрых ответов в месяц. Это такой текст, который отвечает на запрос пользователя, он показывается в самом вверху выдачи. Этот же текст умеет зачитывать Алиса. Часть этих ответов получается из следующего механизма: на каждый запрос пользователя мы с каждого сайта берем какой-то короткий текстовый сниппет. А затем CatBoost выбирает лучшие из них.
Когда человек вводит запрос в поисковик, он ищет информацию или способ решения своей задачи. Наша глобальная цель — помогать находить такие ответы, причём сразу в наиболее ёмком виде, чтобы сэкономить людям время. Этот тренд на ускорение решения пользовательских задач особенно заметен в последние годы. К примеру, теперь многие пользователи задают свои вопросы не текстом в поиске, а голосовому помощнику. И тут нам на помощь пришли огромные генеративные нейросети, которые способны перерабатывать, суммаризировать и представлять в ёмком виде тексты на естественном языке. Пожалуй, самой неожиданной особенностью таких сетей стала возможность быстро обучаться на всё новые задачи без необходимости собирать большие датасеты.
На практике все эти способы хорошо комбинируются между собой. У себя мы именно так и поступаем. Причем под разные модели и разные наборы хостов используем разные комбинации. Простой совет: всегда пробуйте разные варианты! И не забывайте про важность выбора гиперпараметров, потому что большие модели очень чувствительны и при малейших отклонениях от хороших параметров начинают расходиться.
Короче, ТНТ — это телеканал.
С сегодняшнего дня группы и каналы могут раздавать Звёзды Telegram в качестве призов в розыгрышах. Кроме того, в браузере Telegram теперь можно открыть любую статью в режиме быстрого…
Самый простой способ получить тексты для обучения языковой модели — это взять какие-то хорошие тексты из Википедии, книг, новостей и подобных источников. К ним можно добавить открытые обсуждения из соцсетей и форумов, которые далеко не всегда высокого качества (с точки зрения языка), но зато из них модель узнает, как вообще поддерживать диалог.
К сожалению, таких чистых текстов не всегда много. Не больше нескольких сотен гигабайт. И они не покрывают полностью весь диапазон возможных тем. Чтобы решить эту проблему, к ним добавляются относительно грязные тексты, собранные из интернета. К слову, можно было бы учить модель вообще на всем интернете, но текстов в интернете так много, что модель не смогла бы их пройти даже один раз за несколько лет. Поэтому всё лишнее выбрасывается: всякие неестественные тексты, дубликаты, объявления о продаже и тому подобное.
Как применяли модели
Описанный метод с разделением параметров модели между несколькими карточками в терминологии исследователей из Microsoft называется ZeRO stage 3, а его «младшие братья» отличаются тем, что распределяются между картами не параметры модели, а только состояния оптимизатора или посчитанные при обратном проходе градиенты. Эти варианты проще реализуются и дают меньше накладных расходов на пересылку параметров туда-сюда, но, естественно, за это приходится платить меньшим максимальным размером модели.
Теперь, в новой версии Поиска, в качестве одной из фич в этом классификаторе выступают вероятности слов из нашей генеративной модели YaLM. Это существенно повысило полезность таких ответов и сэкономило ещё больше времени пользователям.
Итог прост: FinTech необходим всем. Пора признать, что букмекеры уже стоят на полочке с общепринятыми банковскими FinTech компаниями. Технологии ежедневно идут вперед, а нам как обывателям остается достать попкорн и с интересом наблюдать какое будущее ждет нас завтра.
Наконец, ещё один способ, который развивает Microsoft в своем фреймворке DeepSpeed, называется ZeRO. Его идея состоит в том, чтобы вернуться к исходному Data parallelism, где каждая карточка применяет модель целиком на своем куске данных. Но поскольку параметры модели не умещаются в память одной карты, то на каждой карте хранится лишь часть весов модели, а недостающие веса карта в фоне запрашивает с других карточек и забывает сразу после использования. То есть во время применения первого слоя, например, карта запрашивает второй слой с соседней карточки, применяет его и после удаляет для экономии места. Такой способ тоже лучше работает в пределах одного хоста, потому что требует большого числа взаимодействий между карточками.
Дальше мы пишем уже не размеченный новый объект, например описание сайта Booking.com из Википедии. В конце пишем: «Короче, Booking.com — это. » Модель нас подхватывает и продолжает «… сайт бронирования отелей». И всё.
Другие доклады о применении трансформеров вы можете посмотреть в треке Яндекса на ods.ai или сразу на YouTube:
За последние три года трансформеры стали главной архитектурой нейросетей в задачах NLP. А в последнее время — так и не только в NLP. Модели становятся всё больше. Они решают всё новые задачи. Наверняка, если в ближайшем будущем вы захотите решить задачу с текстами, то будете использовать именно трансформеры. Самым ярким представителем этого тренда стала модель GPT-3. И, что примечательно, эта модель не только очень большая и очень умная — она еще умеет решать новые задачи без дополнительного обучения. Это так называемый Few-shot learning.
Задача языкового моделирования формулируется достаточно просто. У вас есть какой-то текст, и вы заставляете модель его продолжить. Модель, обучаясь генерировать слово за словом, сначала запоминает, как устроен язык, а потом и еще какие-то реальные факты о внешнем мире. Для обучения модели, которая на это способна, требуется очень много разнообразных данных.
Генерация ответов для Алисы
Сегодня мы поделимся опытом создания и внедрения технологии YaLM (Yet another Language Model), которая теперь готовит ответы для Поиска и Алисы. В этом мне помогут её создатели — Алексей Петров petrovlesha и Николай Зинов nzinov. Эта история основана на их докладе с Data Fest 2021 и описывает опыт внедрения модели в реальные продукты, поэтому будет полезна и другим специалистам в области NLP. Передаю слово Алексею и Николаю.
Блокчейн — технология, разработанная для борьбы с нелегальным оборотом денег при финансовых преступлениях, работорговлей, коррупцией и с другими незаконными действиями. Суть заключается в том, что данные передаются с помощью цепи блоков, связанных друг с другом ключами, каждый из которых содержит информацию о предыдущем. Блокчейн позволяет защитить данные от фальсификации, т.к. изменить данные в блоке нужно на всех компьютерах, которые входят в блокчейн сеть, а их может быть очень много.
Мы применили этот подход для того, чтобы адаптировать наши модели к задаче поддержания диалога в Алисе. Напомним, что Алиса умеет не только делать полезные вещи, но и просто болтать. И эта задача хорошо формулируется в рамках языкового моделирования.
Кроме того, существует недавно предложенная техника, которая называется Prompt tuning или P-tuning. Она позволяет вообще не писать эти подводки руками. Напомню, что в трансформерах текст представляется в виде некоторого набора числовых эмбеддингов. Идея состоит в том, чтобы вместо текстовой подводки выучить на 30–40 примерах сразу её эмбеддинг, который и передавать модели. У такого эмбеддинга не будет текстового представления, но работать он может даже лучше.
После того, как мы собрали датасет, дело доходит до запуска обучения. При этом мы не хотим состариться, пока идёт обучение. Значит, задачу нужно распараллелить на достаточно большом кластере видеокарточек с хорошей сетью. К примеру, мы пользуемся кластером, состоящим из карточек NVIDIA Ampere.
Взлет FinTech начался с 2010-х, когда мир увидел мобильные приложения банков, блокчейн и криптовалюты. Каждый из нас сейчас пользуется возможностью перевести деньги с одной карты на другую через приложение банков, но здесь хотелось бы поговорить об актуальных трендах в FinTech, и как они применяются в компаниях.
Как обучали модель
Каждая из карточек полностью прогоняет модель на своем куске данных. А между собой они обмениваются только градиентами для того, чтобы каждая карта могла получить у себя состояние модели, обновленное с учетом всех данных.
Блокчейн позволил использовать криптовалюты — средство платежа, которое нельзя потрогать и увидеть, оно все переведено в цифровой вид. Криптовалюты могут использовать для хранения сбережений при высокой инфляции, как способ заработка, как способ инвестиций. Существует целый мир майнинг ферм (англ. mining farm), где люди могут добывать криптовалюты. Далеко не все страны законодательно позволяют пользоваться такими валютами, поэтому распространяются они медленно, но кто-то видит в этом перспективы и активно использует.
На вход модель получает контекст диалога, а на выходе она должна напечатать следующую реплику Алисы. Чтобы этого достичь, мы дообучили наши модели на датасете диалогов людей из соцсетей, а после этого дообучили их на специальном датасете ответов, которые написали редакторы специально для Алисы, чтобы обучить модель характеру персонажу.
Но у такого подхода есть очевидный минус: если вы написали плохую подводку, то ничего у вас работать не будет. При этом гарантированного способа написать хорошую подводку, к сожалению, сейчас не существует. Однако есть ряд советов, которые могут упростить работу с ними. Например, подводки лучше писать в стиле естественного текста на русском языке, без хитрой структуры, тегов и так далее. Кроме того, стоит обращать внимание на то, как именно выбираются примеры в подводку. Если в вашей задаче есть естественное разделение примеров на категории, то можно брать в подводку примеры из той же категории, что и тот, на котором вы применяете модель. Например, в задаче генерации коротких описаний, о которой шла речь выше, мы добавляли в подводку примеры описаний магазинов, если неразмеченным примером был магазин и т. п. В случае если у вас есть какой-то датасет примеров, вы можете не выбирать из них фиксированную подводку, а на каждый неразмеченный новый запрос взять несколько наборов примеров. Применить модель с каждой из получившихся подводок и агрегировать результаты, например, голосованием — взять наиболее частый. Если считать подводку частью модели, то такой метод можно представить в виде ансамбля моделей, отличающихся лишь примерами в подводке.
Только что мы представили новую версию поиска Y1. Она включает в себя комплекс технологических изменений. В том числе улучшения в ранжировании за счёт более глубокого применения трансформеров. Подробнее об этом направлении мой коллега Саша Готманов уже рассказывал в нашем блоге. В новой версии модель стала мощнее: количество параметров возросло в 4 раза. Но сегодня мы поговорим о других изменениях.
Мы привыкли, что финансы в любых проявлениях относятся к банкам, вкладам, кредитам и др. В этой статье поговорим и о неочевидном участнике этого рынка — букмекерских компаниях, о том как они применяют FinTech в своей деятельности.
Что дальше
Но на больших моделях всё куда сложнее. Даже наша младшая модель на 1 млрд параметров во время обучения, когда нужно хранить не только параметры модели, но и градиенты и состояние оптимизатора, уже не умещается в памяти одной карточки. Её нужно распиливать. Для этого есть несколько различных техник. Наверное, самый интуитивный и понятный способ это Pipeline parallelism. Первая карточка применит несколько первых слоев модели. Полученный промежуточный результат перешлет второй карточке, которая хранит следующие слои модели и применяет их. И так далее.
Вот и получается: оформишь ли ты вклад или сделаешь ставку в криптовалюте — в любом случае это будет интересно банкам и букмекерам. Рынок меняется не только в стоимости валют, но и в появлении новых, под это необходимо подстраиваться, чтобы приобретать клиентов и поддерживать их лояльность.
Эта проблема является частным случаем более глобальной проблемы. Часто сложно или даже невозможно собрать идеальный датасет. Какой-то аспект задачи в нём отражен хорошо, но другие — слабо. И сильная модель, которая хорошо адаптируется к любым обучающим данным, может выучить все аспекты датасета, в том числе его слабые стороны. Проще говоря, неидеальный датасет отупляет модель. Как же с этим бороться?
Конечно, такие модели можно использовать и в классическом подходе Transfer Learning. Обычно это делается так: вы берете предобученный BERT, дообучаете его на каком-то своем датасете для своей задачи — и получаете какое-то качество. Такой подход хорошо работает, когда у вас есть достаточно много железа и большой датасет для обучения.
Такой способ очень хорошо работает в случае, когда вам нужно просто применить модель, но во время обучения такое последовательное применение слоев вызывает простой вычислительных ресурсов, потому что карты с первыми слоями будут ждать, пока следующие карты завершат forward- и backward-проходы. Если модель у вас очень большая и распилена на большое число карточек, то простои могут очень сильно замедлить обучение.
Одним из первых ярких проявлений технологий в банкинге стали онлайн банки и системы платежей, например, созданный в 1998 году PayPal, который позволяет оплачивать покупки и отправлять деньги онлайн, стал открытием своего времени.
Источники:
https://habr.com/ru/companies/ligastavok/articles/847186/&rut=852f7c44eb2af9348569aed55cde018ba3f0f7223a753922c6235e905064a7e4
https://habr.com/ru/companies/yandex/articles/561924/&rut=eae6bb61c66e59b96bbe9f7a60e318addfa9ccf670f89a31a4e26cc37d841667
https://www.youtube.com/@yandex/featured&rut=029c03c0258853d4add600b491f87c99f6da4f6d755af018eebbdf9e030608e8
https://habr.com/ru/companies/yandex/profile/&rut=9968d6a33d2e4d8bfd16d90d1a088cd3c3166a31f14afbad0cd1124241b3ccdc
https://habr.com/ru/companies/yandex/&rut=9418ab950b0e11b9f1fe20d244eae15e454e2bac35419f3c6eb3700719be5997
https://t.me/techno_yandex&rut=c41c25a9fbecf892f8ff9dbce6d64672e659f0ad5a60a5e85a438092b73f2e90