Сегодня бизнес активно использует машинное обучение (Machine Learning, ML) для решения самых разных задач — от прогнозирования продаж до автоматизации процессов. Однако искусственный интеллект — это не какое-то волшебство, а математика, методы и алгоритмы, которые не будут работать без качественных и подходящих именно им данных. Чем больше качественных данных доступно для анализа, тем более сложные и точные модели можно построить. 

Меня зовут Анна Фенюшина, я ведущий архитектор направления «Дата-сервисы» в VK Tech. В этой статье я разберу, какие поколения ML существуют, какие данные нужны для их реализации и как современные хранилища могут помочь в развитии ИИ. 

Структура ПО с использованием ИИ

На бытовом уровне ИИ часто воспринимается как некая магия. Давайте начнем с того, что поймем, где заканчивается магия и начинается математика и техника.

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

Для того чтобы модель использовалась в ПО, она должна быть развернута/продуктивизирована. Можно использовать готовый сервис, кем-то уже обученный и развернутый на своих вычислительных ресурсах, оплачивая его по подписке (например, сервисы публичных облачных провайдеров), иногда такие модели можно даже дообучить на своих данных. А можно самостоятельно обучить модель и развернуть ее у себя, но тогда вам потребуется собрать данные для обучения и выделить вычислительные ресурсы и под их хранение, и под обучение модели, и под ее развертывание в рамках создаваемого ПО.

В любом случае само ПО, с которым взаимодействует пользователь, лишь «оболочка», «ядром» которой является обученная ML-модель. И качество этой модели зависит уже от техники и математики.

Поколения технологий создания ML-моделей

Можно выделить несколько основных стадий и реализаций моделей искусственного интеллекта:

  • классический ML;

  • нейросети;

  • LLM.

Классический ML

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

Например, для прогноза положительного или отрицательного результата (да/нет) очень упрощенно можно представить себе некую функцию, которая разделяет множество точек в пространстве. Тогда задача машинного обучения — найти ее коэффициенты и построить эту кривую или поверхность (если пространство многомерно) так, чтобы по одну сторону оказались точки с прогнозом «да», а по другую — «нет». Точностью будет как раз процент правильно расположенных точек, и чем их больше, тем выше точность.

Среди наиболее распространенных методов и моделей классического ML: линейные модели (Linear Models), деревья решений (Decision Trees), методы ансамблей (Ensemble), методы на основе ядер (Kernel), байесовские методы (Bayesian Methods), факторизация матриц (Matrix Factorization), градиентный бустинг (Gradient Boosting).

Классические ML-модели могут решать многие бизнес-задачи:

  • прогнозирование продаж и спроса;

  • кредитный скоринг и оценка рисков;

  • сегментация клиентов;

  • рекомендации товаров на основе покупок;

  • увеличение среднего чека (Cross-Selling);

  • анализ и снижение оттока клиентов;

  • персонализация интерфейсов;

  • динамическое ценообразование и другие.

При этом для обучения классических ML-моделей достаточно небольшого объема данных (<100 тыс. примеров / <100 Гб), ограниченного количества признаков (10 – 1 000) и небольших вычислительных ресурсов. Но нужны табличные/структурированные данные с четкими признаками, числовые и категориальные признаки в таблицах, CSV, SQL-базах.

Нейросети / Deep Learning

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

Задача машинного обучения в этом случае сводится к определению весов/коэффициентов на разных уровнях этой сети таким образом, чтобы поступивший сигнал (x1-x4) по самому легкому пути пришел к правильному ответу (y1-y3).

Нейросети подходят и для более сложных сценариев применения. Среди таковых:

  • CV (Computer Vision) — распознавание и анализ визуальной информации (фотографии, видео);

  • NLP (Natural Language Processing) — работа с текстом, понимание и генерация естественной речи;

  • Audio — обработка аудиосигналов, распознавание речи и звуков.

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

  • контроль качества на производстве (дефекты на конвейере), распознавание лиц и документов, анализ медицинских снимков;

  • игры, робототехника (управление движением), автономные автомобили;

  • генеративные задачи (изображения, текст, речь, музыка, видео);

  • продвинутые рекомендательные системы;

  • голосовые помощники и чат-боты;

  • распознавание звуков и речи, аннотирование видео, шумоподавление;

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

Нейросети дали возможность работать с новыми типами данных, со значительно большими объемами данных и учитывать влияние значительно большего количества факторов на результат. Вместе с тем повысились и требования к объемам хранения и вычислительным ресурсам. Нейросети применяются, если:

  • большие объемы (>100 тыс. примеров / 1–100 Тб) неструктурированных (изображения, текст, звук) или табличных данных;

  • >1 000 признаков, сложные нелинейные взаимодействия, сложные пространства признаков, неевклидовы данные, многомерные ряды;

  • значительные вычислительные мощности, в том числе GPU (Graphics Processing Unit) и TPU (Tensor Processing Unit).

Большие языковые модели (LLM)

Большие языковые модели (LLM) — те же нейронные сети, но обученные на огромных объемах данных, специализированные для понимания, анализа и генерации контента. 

К таким, например, относятся ChatGPT, Claude, Gemini, LLaMA. 

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

  • для клиентских сервисов и поддержки;

  • для чат-��отов и виртуальных ассистентов;

  • для генерации контента и маркетинговых материалов;

  • для анализа рынка, финансовых данных; 

  • для анализа документов и контрактов;

  • для суммаризации отчетов и встреч;

  • для HR, рекрутинга и не только. 

Но важно понимать, что обучение собственной LLM оправдано только при наличии:

  • уникальных данных, недоступных другим;

  • существенного бюджета (свыше 1 млн долларов);

  • опытной команды ML-специалистов;

  • длительного горизонта планирования (1–2 года);

  • мощной ИТ-инфраструктуры: High-End GPU, быстрые сети, большое хранилище.

Поэтому для большинства компаний оптимальный путь, позволяющий получить специализированные модели за 1–10% стоимости и времени обучения с нуля:

  • адаптация (Fine-tuning) существующих Open-Source-моделей;

  • использование API (OpenAI, Anthropic, etc.);

  • дистилляция знаний из больших моделей;

  • коллаборативное обучение с другими организациями.

Дополнение, а не замещение

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

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

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

Трансформируются и задачи, решаемые при обучении моделей. Например:

  • ручной Feature Engineering заменяется автоматическим;

  • обучение с нуля заменяется Transfer Learning;

  • изолированные модели заменяются пайплайнами;

  • становятся популярными Foundation Models, то есть универсальные предобученные модели;

  • развивается мультимодальность — работа с разными типами данных;

  • растет востребованность моделей для Edge-устройств (Edge AI), которые позволяют обрабатывать данные с последующим принятием решений непосредственно на устройствах, где они развернуты, без отправки данных в ЦОДы. 

Но остаются и вечные проблемы:

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

  • Компромисс сложности (Bias-variance Tradeoff). Сложность модели должна соответствовать сложности решаемой задачи. Например, для сегментации клиентов достаточно и классического ML, поэтому использовать нейросеть будет избыточно. 

  • Оценка качества — метрики и валидация. Со временем под влиянием разных факторов точность каждой модели может снижаться. Поэтому зачастую нельзя один раз обучить модель и использовать ее постоянно: модель надо контролировать и регулярно дообучать.

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

Инструменты Платформы данных помогут с контролем качества данных, автоматизацией сбора метрик, оценкой качества модели и ее возможного дрейфа, а также с автоматизацией подготовки данных и Feature Engineering, а иногда и переобучения.

Data Lakehouse на базе современного и быстрого объектного хранилища обеспечит не только эффективное хранение больших объемов данных и легкий доступ к историческим данным, но и мультимодальность. В объектном хранилище могут накапливаться петабайты разных по типу данных: структурированные, неструктурированные, полуструктурированные.

Жизненный цикл ML-модели

Любая ML-модель имеет типовой жизненный цикл, который, как правило, состоит из пяти основных этапов.

  1. Накопление данных. Чем больше, полнее и качественнее датасет, тем выше качество модели можно получить. На формирование достаточного датасета нередко требуется от нескольких месяцев до нескольких лет (в зависимости от типа модели и задачи). Отсутствие или плохое качество данных часто становится причиной приостановки или неудачи ML-проектов.

  2. Подготовка данных и Feature Engineering. Огромный пласт работ часто сильно недооценен — как по трудоемкости (до 60–80% времени проекта), так и по важности. Подготовка и очистка данных в большей степени выполняется на уровне хранилища, дата-инженерами. А потом уже данные предоставляются дата-сайентистам для дополнительных очисток, трансформаций и Feature Engineering — создания информативных признаков, которые будут зависеть в том числе и от обучаемой модели. 

  3. (Пере-)Обучение. Обучение или переобучение модели на собранном датасете под решение планируемых задач. Для первичного Feature Engineering и обучения модели нужен Data Scientist, а переобучение и подготовку данных для нег�� можно автоматизировать.

  4. Развертывание (Inference). Каждая обученная модель представляет собой набор артефактов, который можно развернуть вручную или с помощью специальных инструментов на определенной инфраструктуре: контейнеры, виртуальные машины, кластеры. Часто это задача уже DevOps-специалистов.

  5. Контроль качества (дрейфа) моделей. Со временем актуальность и достоверность датасета может снизиться, из-за чего и точность модели может упасть. Поэтому важно отслеживать качество модели и своевременно начинать ее переобучение на датасете, который собирается, пока актуальная версия работает в проде. Таким образом, процесс зацикливается.

Существенная разница между процессами обучения и использованием моделей

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

Обучение:

  1. Данные агрегируются в хранилище (например, в Data Lake, Data Lakehouse, СУБД).

  2. На основе данных из хранилища формируются датасеты (например, с помощью Apache Airflow), зачастую они помещаются в выделенную область хранилища, где будут доступны дата-сайентистам.

  3. Дата-сайентисты проводят множество экспериментов, по-разному подготавливая данные, формируя разные признаки и применяя разные модели/алгоритмы, отслеживая и выбирая (например, при помощи MLFlow) модель с наилучшим качеством

  4. На выходе получаем ML-модель, готовую к использованию, и артефакты для ее продуктивизации.

Отличительные характеристики:

  • Обучение требует больших объемов исторических данных (гигабайты и терабайты данных).

  • Сам процесс обучения требует больших вычислительных ресурсов и сложно разбивается на независимые параллельные процессы, что на сложных моделях приводит к требованию распределенного обучения и кластеризации (GPU, Spark, HPC).

  • Обучение — длительный процесс, один эксперимент может длиться несколько часов или дней.

  • Но переобучение при этом выполняется относительно редко: раз в день, месяц или год.

  • Метрики, которые важны: Accuracy, Loss, F1-score, а мониторится в первую очередь качество получившейся модели для последующего выбора наилучшей.

  • В создании модели в основном задействованы дата-инженеры и дата-сайентисты.

После обучения модели ее можно использовать для решения практических задач. 

Как правило, для этого разворачивается множество экземпляров обученной ML-модели, которые независимо выполняют поставленные задачи. Благодаря такой реализации бэкенд приложения легко горизонтально масштабируется, позволяя гибко адаптироваться при росте запросов со стороны пользователей.

Отличительные особенности:

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

  • Так как для обработки одного запроса надо немного вычислительных ресурсов и запросы поступают независимо друг от друга, то требования к инфраструктуре для одного Inference модели обычно невысокие, а при нагрузке инфраструктуру легко масштабировать.

  • Метрики, которые важны: RPS (количество запросов в секунду) и задержка/время выполнения, а мониторятся в первую очередь сама инфраструктура, ее производительность и доступность.

  • В обслуживании обученной модели в основном задействованы SRE- и DevOps-специалисты.

Старение модели

Отличительная особенность ПО с использованием ИИ в том, что написанное один раз оно не может оставаться статичным, так как жизнь меняется, а значит, и данные меняются. Может поменяться экономическая ситуация — и поведение покупателя изменится, может измениться политическая или эпидемиологическая ситуация, а может просто поменяться ПО, чей кликстрим анализирует модель. И вот уже качество модели упало, а значит, и ПО, ее использующее, потеряло свою эффективность. И надо не упустить момент, когда уже пора обновлять модель.

Старение модели также называется дрейфом (или дрифтом). Мониторинг и выявление дрейфа — важный этап обеспечения жизненного цикла модели.

Возможные проблемы с данными и способы их решения на разных этапах жизни модели

Вернемся к качеству и подготовке данных и рассмотрим, какие действия с данными производятся на разных этапах. 

Наличие качественных, подготовленных данных — ключевое условие для работы с ML. Но чтобы это условие выполнялось, важно обеспечить, чтобы датасеты не содержали ошибки, влияющие на точность работы модели. 

Так, данные могут содержать несколько типовых ошибок: 

  • Пропущенные значения (Missing Values). Такие ошибки возможны, если, например, в части анкет не указан возраст клиента. В результате модель обучается на неполных данных и ее точность падает на 15–30%.

  • Выбросы (Outliers). Выбросами считаются аномальные значения, которые искажают статистику (например, если в данных средняя температура в помещении на протяжении недели — 20°C, а один из дней ошибочно — 50°C). Из-за допуска таких выбросов модель может стать неустойчивой, а количество ошибок — вырасти на 20–40%.

  • Несогласованность данных (Data Inconsistency). Возникает, если в датасете используются разные форматы, единицы измерения, кодировки. Например, даты в форматах "01.01.2024", "2024-01-01", "Jan 1, 2024”. Наличие таких ошибок приводит к тому, что модель не может найти закономерности и ее точность падает на 25–35%.

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

Чтобы исключить или минимизировать подобные ошибки, при построении платформы данных оптимально сразу встроить в ETL-процессы проверки на наличие упомянутых факторов. Причем это поможет не только улучшить качество обучения моделей, но и повысить точность аналитики. 

Но проблемы могут возникать и при выделении признаков — обычно это этап, когда уже дата-сайентист экспериментирует с данными. 

  • Дисбаланс классов (Class Imbalance). То есть если в датасетах один класс представлен значительно больше других. Например, 95% транзакций легальные, 5% — мошеннические. Дисбаланс в датасете может привести к тому, что модель будет просто игнорировать редкий класс.

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

  • Высокая размерность (Curse of Dimensionality). Возможно, если в датасете слишком много признаков относительно количества примеров — например, 1 000 признаков для 100 примеров. В результате модель попросту будет переобучена, то есть заточена под конкретные сценарии.

  • Мультиколлинеарность (Multicollinearity). Проблема характерна для ситуаций, когда признаки сильно коррелируют между собой — например, площадь квартиры и количество комнат. Мультиколлинеарность может привести к нестабильности модели и вызвать трудности интерпретации.

  • Временные зависимости. Если признаки меняются со временем (например, поведение пользователей до и после пандемии), модель будет быстро устаревать, а ее точность — пропорционально снижаться.

После завершения обучения модели дата-сайентистом, проверки на наличие подобных ошибок в датасетах и проведенный Feature Engineering также можно формализовать и встроить в ETL-процессы для упрощения/автоматизации процесса переобучения. 

Роль хранилища и платформы данных

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

В итоге обобщенный пайплайн работы с ML-моделями, включающий этапы обновления датасетов и подготовку данных для переобучения, имеет следующий вид:

Красным на рисунке показан путь «горячих» данных — данных, поступающих в реальном времени. Голубым — то, что относится обычно к хранилищу данных и платформе данных, то есть к инструментам, обычно используемым для обеспечения работы с ним и поддержания его в актуальном состоянии. Зеленым — то, что относится к инструментам ML.

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

Data Lakehouse и S3 позволяют накапливать разнородные данные, эффективно хранить большие объемы исторических данных и обеспечивать легкий и удобный доступ к ним как дата-сайентистам, так и дата-инженерам и аналитикам.

В самом простом варианте на уровне хранилища и ETL/ELT-процессов можно обеспечить подготовку и обновление датасетов для DS-экспериментов (DS — Data Science), чтобы дата-сайентисты могли экспериментировать и первично обучать модели, используя свою экспертизу и опыт. 

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

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

Таким образом мы можем замкнуть цикл жизни модели и обеспечить поддержание ее стабильного качества на длительный период.

Реализация на базе VK Data Platform от VK Tech

Итак, чтобы иметь возможность эффективно работать с ML-моделями разного поколения, нужна современная аналитическая дата-платформа. Для ее построения можно применять разные компоненты или использовать уже готовые реализации. Например:

  • Накопление и хранение данных можно реализовать на базе S3-хранилища и таблиц Iceberg в Data Lakehouse архитектуре. Такая реализация хранилища:

    • позволяет накапливать и эффективно хранить большие объемы данных, постепенно масштабироваться без миграций и изменения технологий;

    • обеспечивает легкий оперативный доступ к историческим данным;

    • обеспечивает мультимодальность данных;

    • может использоваться как площадка для работы дата-сайентистов с данными (Feature Stores, эксперименты, Feature Engineering).

  • Подготовку и очистку данных можно осуществлять, используя ETL-инструменты и Spark. Они позволяют:

    • подготавливать данные так, как необходимо для качественного обучения моделей, и создать качественные датасеты для дата-сайентистов;

    • автоматизировать эти процессы и запускать их по событию или по расписанию;

    • формализовать и автоматизировать результаты работы дата-сайентистов по Feature Engineering и использовать их при автоматизации переобучения моделей.

  • Контроль качества (дрейфа) моделей также можно выполнять с использованием ETL-инструментов. С их помощью можно: 

    • автоматизировать сбор метрик и принятие решения о переобучении модели;

    • встроить эти процессы в регулярные конвейеры пакетной обработки данных.

При этом весь описанный цикл работы с ML можно реализовать с помощью Lakehouse-платформы VK Data Platform.

Выводы

Сейчас бизнесу доступны разные категории ML-моделей, которые способны эффективно решать широкий спектр задач — от прогнозирования, оптимизации и распознавания образов до работы с текстом. Но успех ML-проекта на 80% зависит от качества данных и процессов их обработки: без этого невозможно создать эффективную работоспособную модель. 

Именно поэтому перед стартом проекта с использованием ИИ важно определить стратегию работы с данными (сбор, обработка, подготовка) и выбрать платформу данных, которая не только предоставляет возможности для машинного обучения и обеспечивает накопление необходимых для этого данных, но и станет основой для продуктивизации и мониторинга обученных моделей. Например, к таким относятся VK Data Platform, построенная на базе производительного (адаптирован под аналитические нагрузки) S3-совместимого объектного хранилища VK Object Storage от VK Tech.