- BrainTools - https://www.braintools.ru -

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

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

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

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

Снимок

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

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

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

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

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

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

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

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

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

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

  • KroopAI [29], Dedomena [30], Omniverse™ Replicator [31], Scale Synthetic [32], Datagrid [33], CNAI [34] (наука [35] и исследования);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Инструменты

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

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

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

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

Автор: Sber

Источник [69]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/14303

URLs in this post:

[1] зрения: http://www.braintools.ru/article/6238

[2] не хватать: https://habr.com/ru/companies/bothub/news/872594/

[3] взращивания: https://habr.com/ru/articles/735358/

[4] уйти в сторону: https://habr.com/ru/articles/694690/

[5] обучении: http://www.braintools.ru/article/5125

[6] соперничество: https://t.me/DenoiseLAB/2445

[7] Explainable Artificial Intelegence: https://arxiv.org/abs/2409.00265

[8] РАНХиГС: https://www.ranepa.ru/?utm_source=google.com&utm_medium=organic&utm_campaign=google.com&utm_referrer=google.com

[9] SMOTE: https://habr.com/ru/companies/otus/articles/782668/

[10] Gretel AI: https://gretel.ai/

[11] Mostly AI: https://mostly.ai/

[12] Datavant: https://www.datavant.com/

[13] Tonic.ai: http://Tonic.ai

[14] Infinity AI: https://infinity.ai/

[15] Synthesis AI: https://synthesis.ai/

[16] SBX Robotics: https://github.com/sbxrobotics

[17] DataGen: https://datagen.in/

[18] Aiforia: https://www.aiforia.com/

[19] Epistemix: https://epistemix.com/

[20] MediSyn: https://medisyn.ai/

[21] vAIsual: https://vaisual.com/

[22] Nuvanitic: https://nuvanitic.com/

[23] Hazy: https://hazy.com/

[24] Sogeti: https://www.sogeti.com/services/ai/

[25] Facteus: https://www.facteus.com/mimic

[26] Statice: https://www.wattx.io/portfolio/statice

[27] Colossyan: https://www.colossyan.com/

[28] FinCrime Dynamics: https://fincrimedynamics.com/

[29] KroopAI: https://kroop.ai/

[30] Dedomena: https://dedomena.ai/synthetic_data

[31] Omniverse™ Replicator: https://developer.nvidia.com/nvidia-omniverse-platform/replicator

[32] Scale Synthetic: https://scale.com/synthetic

[33] Datagrid: https://datagrid.co.jp/technology/

[34] CNAI: https://cnai.ai/en/home

[35] наука: http://www.braintools.ru/article/7634

[36] VAIsual: https://vaisual.com/newsletter-thank-you/

[37] свои: https://habr.com/ru/articles/873610/

[38] деградацию моделей: https://habr.com/ru/articles/841928/

[39] ухудшение: https://habr.com/ru/companies/bothub/news/869526/

[40] поведения: http://www.braintools.ru/article/9372

[41] внимание: http://www.braintools.ru/article/7595

[42] гибридный подход: https://habr.com/ru/articles/443478/

[43] границы: https://habr.com/ru/articles/725810/

[44] обкатки: https://habr.com/ru/companies/itelma/articles/525180/

[45] полубоевых: https://habr.com/ru/companies/itelma/articles/525470/

[46] тут: https://habr.com/ru/companies/sberbank/articles/834468/

[47] тут: https://habr.com/ru/companies/sberbank/articles/826202/

[48] тут: https://habr.com/ru/companies/sberbank/articles/821615/

[49] Семантическая значимость: https://habr.com/ru/companies/oleg-bunin/articles/835910/

[50] сбалансированы: https://habr.com/ru/companies/otus/articles/769242/

[51] ошибки: http://www.braintools.ru/article/4192

[52] тут: https://habr.com/ru/articles/839016/

[53] статистические: https://habr.com/ru/companies/skillfactory/articles/700260/

[54] синтетический контроль: https://www.cambridge.org/core/journals/political-analysis/article/generalized-synthetic-control-method-causal-inference-with-interactive-fixed-effects-models/B63A8BD7C239DD4141C67DA10CD0E4F3

[55] синтетический метод сравнения разностей: https://arxiv.org/pdf/1610.07748

[56] пенализированный синтетический контроль: https://www.tandfonline.com/doi/full/10.1080/01621459.2021.1971535

[57] GAN: https://arxiv.org/pdf/1406.2661

[58] VAE: https://arxiv.org/pdf/1906.02691

[59] AR: https://arxiv.org/pdf/2411.05902

[60] CTGAN: https://github.com/sdv-dev/CTGAN#:~:text=CTGAN%20is%20a%20collection%20of,synthetic%20clones%20with%20high%20fidelity.

[61] WGAN: https://arxiv.org/abs/1701.07875v3

[62] WGAN-GP: https://arxiv.org/abs/1704.00028v3

[63] SmolTalk: https://huggingface.co/datasets/HuggingFaceTB/smoltalk

[64] Huggin Face: https://huggingface.co/

[65] здесь: https://habr.com/ru/news/861780/

[66] этот: https://github.com/wasiahmad/Awesome-LLM-Synthetic-Data

[67] здесь: https://arxiv.org/html/2406.15126v1

[68] Synthetic Data Vault: https://sdv.dev/

[69] Источник: https://habr.com/ru/companies/sberbank/articles/901222/?utm_campaign=901222&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100