Традиционно ИТ-специалисты решают бизнес-кейсы, используя разработку программного обеспечения и запросы к базам данных. За последние десятилетия популярность приобрели объектно-ориентированные языки, такие как C++, Java и язык структурированных запросов (SQL). ИТ-команды используют эти языки для проектирования объектов, определения их свойств, функций и методов, а также управления отношениями между объектами для эффективного решения бизнес-кейсов.

В последнее время в мире ИТ произошли два изменения:

  1. Поскольку данные занимают центральное место практически во всех аспектах бизнеса, для удовлетворения различных требований появилось множество различных типов хранилищ данных, схем и запросов для эффективного извлечения информации из данных. В результате вычисления, ориентированные на данные, привлекли значительное внимание и стали модным словом.
  2. Технологии AI/ML быстро развиваются. Их использование и обсуждение стали распространены в различных областях. Публичное испытание ChatGPT еще больше ускорило эту тенденцию. Сегодня кажется, что машинное обучение стало неотъемлемой частью почти каждого ИТ-решения, и люди стремятся включить модели машинного обучения в свои приложения. Такое ощущение, что ни одно приложение не обходится без интеграции моделей машинного обучения.

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

  1. Вычисления, ориентированные на данные — архитектурные шаблоны
  2. Пример успеха: гибридная архитектура с Data Fabric и Data Mesh
  3. Архитектурные соображения при создании программных решений

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

Что говорит ChatGPT

Что ж, просто чтобы остыть, давайте спросим у ChatGPT.

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

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

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

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

Некоторые факты о запросах данных, моделях машинного обучения и программной инженерии

О бизнесе и вариантах использования для решения

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

В последнее время появилось несколько новых технологий хранения данных для удовлетворения потребностей в аналитике и анализе бизнес-данных:

  1. Озеро данных, сочетающее в себе преимущества озера данных и хранилища. Его запросы будут более мощными, чтобы помочь расширить некоторые бизнес-кейсы.
  2. График знаний и его язык запросов, граф знаний очень близок к отношениям данных в реальном мире, его запрос может генерировать более полезные результаты для конечных пользователей.
  3. Векторная база данных, тесно интегрированная с генеративными моделями ML. Вот несколько хороших вводных из разделов бизнес и технологии.

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

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

Относительно надежности бизнес-результатов:

Запросы данных и разработка программного обеспечения основаны на логике и могут иметь четкие и предсказуемые результаты.

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

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

О жизненном цикле решения и стоимости:

Как правило, запросы данных предлагают быстрый подход к реализации для получения бизнес-результатов. Например, используя запрос к базе данных SQL или создавая макросы для таблиц Excel для создания бизнес-отчетов.

Приложения для разработки программного обеспечения должны пройти цикл выпуска, который занимает больше времени. Даже с внедрением автоматизации Agile, CICD и DevOps в разработку Cloud Native типичный цикл выпуска программного обеспечения может составлять от нескольких часов до нескольких дней или даже недель.

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

Некоторые правила, которые следует учитывать

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

  1. Если простой бизнес-кейс можно эффективно решить с помощью запросов к данным, используя запросы к данным для решения.
  2. Если точность и надежность не являются серьезной проблемой, и/или ваш сценарий предполагает значительные изменения данных, использование моделей машинного обучения может быть приемлемым вариантом.
  3. В противном случае с помощью программной инженерии.
  4. Для сложных бизнес-решений общий подход заключается в использовании программных кодов для интеграции моделей машинного обучения, запросов данных и бизнес-логики в общий бизнес-процесс. Эта интеграция обеспечивает беспрепятственную координацию и взаимодействие между этими компонентами, позволяя решению использовать сильные стороны каждого подхода.

Хотите попробовать некоторые кейсы?

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

Дело 1:

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

В этом случае SQL-запросы будут достаточно быстрыми и качественными.

Случай 2:

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

Для этого случая лучше всего подойдет программное решение.

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

Случай 3:

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

Архитектура решения может быть следующей:

При рассмотрении вышеприведенного потока выясняется, что для простых сценариев с ограниченным количеством текстовых сообщений Модель 2 можно заменить логикой разработки программного обеспечения. Если это так, становится необходимым включение обработки нечеткого поиска для сопоставления текста конечного пользователя с конкретными объектами или запросами базы данных.

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

Обсуждения и выводы

Как я уже говорил, общепризнано, что генеративные модели, такие как ChatGPT, могут генерировать запросы данных или коды. Это приводит к вопросу о том, заменят ли модели машинного обучения в конечном итоге полностью запросы данных и программные коды?

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

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

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