Как стать автором
Обновить
487.11
Сбер
Технологии, меняющие мир

Генерация синтетических данных для LLM, или Как не «выстрелить» в ногу продакшену. Часть 1

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров821

Доброго вам дня, уважаемые Хабражители! В связи с бурным ростом LLM и просто невероятным, прорывными результатами практически ошеломительного качества, всё острее мы погружаемся в вопросы о дальнейшем развитии: «Куда двигаться дальше с точки зрения данных? Где их брать? Какого качества они должны быть? Как их бесшовно встроить в общую канву текущего конвейера? Сколько их вообще надо генерировать?» Всё это порождает массу тревог, размышлений и проводимых тестов. 

Поскольку мы уже вплотную подошли к тому, что данных начинает не хватать, надо заниматься их «разведением в домашних условиях». Ещё полгода назад прогноз был более оптимистичным, но стремительное развитии ИИ только «подлило масла в огонь». По факту, сейчас мы имеем ситуацию «взращивания» новой реальности и формирования целого многомерного мира вокруг любой технической задачи, любого формата и любой направленности. Более того, ставится вопрос, как сохранить исходные характеристики сырых данных и не подменить распределения и иные статистические параметры, дабы не уйти в сторону при обучении модели. Особенно это касается узкоспециализированных тем в широком социокультурном контексте. Говоря более общими словами, как генерировать «природные», а не «мусорные» данные? Более того, разгорающаяся ИИ-соперничество между США и Китаем принесёт много сюрпризов, гонка поднимется на новую высоту.  

Но обо всём по порядку. По традиции, всех заинтересованных любезно приглашаю под кат. Также приветствуются мнения, обсуждения и свежий взгляд ;) 

Снимок
«Вода всегда точно отражает объект... всё бы ничего... но рябь делает отражение уникальным, а волны лишь усиливают эффект...»

Поставщики данных 

На волне этого всеобщего хайпа возникло множество контор разного формата, толка и направления, предлагающие свои решения по генерированию синтетических данных (синтетики) в самом широком ключе. Беглый взгляд на этот рынок уже сейчас позволяет понять, что ситуация будет усиливаться стремительно, я бы даже сказал скачкообразно. Более того, тенденция эта совершенно ожидаемая и связана она с появлением XAI (Explainable Artificial Intelegence). Кстати, в прошлом году я читал в РАНХиГС подобный курс, в котором основной упор был сделан именно на методе интерпретации результатов и программном подходе к генерированию ответа и принятию решений. Ещё неплохую статью по SMOTE можно почитать здесь.

Почему так происходит на рынке данных? Всё очень просто, фактически мы «движемся» в разных направлениях: чем больше «эволюционируют» нейросети, тем больше мы не доверяем их решениям и данным, которые они используют. А с появлением синтетических данных тенденция будет усиливаться всё больше. Сегодня наиболее ярко представлены следующие компании, торгующие синтетикой: 

  • Gretel AI, Mostly AI, Datavant, Tonic.ai, Infinity AI (генерация синтетических данных с упором на приватность и соблюдение нормативных и законодательных требований);

  • Synthesis AI, SBX Robotics (беспилотные системы, верификация, AR/VR/XR, мода и стиль, урбанистика, робототехника); 

  • DataGen, Aiforia, Epistemix, MediSyn, vAIsual, Nuvanitic (медицина, биотехнологии, здравоохранение, анализ распространения заболеваний, фармацевтика);

  • Hazy (инструменты создания синтетических данных для тестирования и разработки);

  • Sogeti (инжиниринг и облачные данные);

  • Facteus, Statice, Colossyan, FinCrime Dynamics (финансы, биржи, банкинг, борьба с мошенничеством);

  • KroopAI, Dedomena, Omniverse™ Replicator, Scale Synthetic, Datagrid, CNAI (наука и исследования);

  • VAIsual (лицензирование, документооборот).

Как видите, вариантов и градаций решаемых задач уже предостаточно. При этом стили и форматы проверки данных у всех свои.

Мнения и практика

Как у любой продвинутой технологии, при использовании «синтетики» появились как свои адепты, так и противники. При этом с обеих сторон приводят достаточно аргументированные доводы:

  • При генерировании синтетических данных мы видим на множестве итераций деградацию моделей и ухудшение их поведения. Причём это относится не только к моделям NLP, «болезнь» свойственна любому классу моделей.

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

  • Синтетика нужна, так как позволяет расширить границы применимости машинного обучения и смоделировать варианты, в том числе редкие и аномальные, для безопасной «обкатки» технологии, и тем самым проверить модель в «полубоевых» условиях.

  • Использование конфиденциальных данных там, где они крайне необходимы, сопряжено с риском «утечек». Кстати, про утечки конфиденциальных данных я писал вот тут, тут и тут.

  • Проблемы с реальными данными: бывает так, что они не масштабируются; ручная разметка невозможна; данные могут быть не программируемы; модель может иметь низкий скор на реальных данных или низкую креативность; при сложных и трудоёмких технологических процессах бывает дешевле и проще сделать «синтетику».

  • Эрозия разнообразия данных: смещение статистических параметров в данных; предвзятость автоматизированных фильтров; множественное дублирование; быстрое устаревание; унификация и отсутствие разнообразия.

Идеи и решения

Просмотрев достаточно много статей про бенчмарки и метрики при оценке больших языковых моделей, я составил для себя список параметров, на которые обращал бы наибольшее внимание при генерации синтетических данных применительно к LLM:

  • Лексическое разнообразие словаря. Можно использовать слова, вышедшие из употребления. «Фишка» в том, что язык развивается и всегда «впитывает» в себя лексику других языков. Такой подход позволит сохранить этимологию корней и понять их точный смысл без навязанного временем смысла и подмены понятий. Особенно это проявляется, когда заканчивается корпус слов и начинается переход на смежные темы или темы с одинаковыми понятиями.

  • Синтаксическая структура. Упор на создание структур предложений разного качества и количества, с различными речевыми оборотами и стилями. Подход призван сделать ответы более «живыми».

  • Семантическая значимость. Основные моменты связаны с «бесшовным» сохранением структуры текста и плавным переходом смыслов внутри него.

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

  • Шум и ошибки. Ставится задача чтобы научить генеративную модель варьировать степени несоответствия строгим правилам, то есть не всегда следовать чёткой структуре языка, иногда переставлять слова, допускать мелкие ошибки и т. д. Похожую задачу мы решали тут. Сейчас это уже наблюдается, например у ChatGPT, но пока ещё слабо выражено.

  • Диверсификация текста. Нужно разнообразить стиль, тон и манеру речи. Реальные люди не всегда придерживаются декларативного формата повествования и часто переходят от одного формата к другому, причём зачастую неосознанно.

  • Использовать предпосылки для генерации текста. То есть предлагается совершенно новый подход: не сразу выдавать пользователю ответ на его запрос, а для начала накидать ему пару вопросов. По их качеству сразу будет примерно понятен вектор. Таким образом, мы отталкиваемся не от модели, а от клиента, делая генерирование более сбалансированным. Здесь можно уточнить у клиента (2-3 вопроса не больше), какие именно данные вызывают трудность и в чём основная причина их генерирования, что хотелось бы дополнительно учесть. То есть мы делаем генерирование более целевым, так как уже на этом этапе оптимизируем количество генераций.

  • Использовать статистические методы. Метод синтетического контроля, метод событийного анализа, оценка контр-фактического результата, пермутационный тест, апостериорный анализ, синтетический контроль, синтетический метод сравнения разностей, пенализированный синтетический контроль, методы событийного анализа.

Инструменты

Помимо упомянутых выше платформ и больших фреймворков сегодня наиболее популярны GAN (General Adversal Networks), VAE (Variational Auto Encoder) и AR (autoregressive model). Ещё есть производные модели CTGAN, WGAN и WGAN-GP. Совсем недавно «выкатили» неплохой инструмент SmolTalk для обучения языковых моделей с помощью генерирования синтетических данных, его выложили на Huggin Face. Обзор этой модели представлен здесь

Кроме того, есть достаточно много репозиториев, например, этот: здесь представлены наборы данных, инструменты, методики, блоги. Достаточно неплохой обзор представлен здесь. Также есть целая платформа Synthetic Data Vault для лёгкого обучения синтезированию на табличных данных.

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

Одна из самых больших проблем заключается в том, что необходимо рассчитать или примерно прикинуть момент, когда модели начнут деградировать. Вы скажете: «Мы видим только рост, уже решаются олимпиадные задачи, придумываются лекарства и доказываются теоремы». Но я считаю, что это ширма, и первые сигналы уже видны. Крайне скоро во главу угла встанет разнородность синтетических данных, а для этого, как я уже упоминал в предыдущих статьях, потребуется новый генератор псевдослучайных чисел. Один из претендентов — квантовые вычисления.   

Теги:
Хабы:
+8
Комментарии1

Информация

Сайт
www.sber.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия