2021-11-01 17:00:16
Следует ли нам рассматривать ИИ-приложения как проекты разработки обычного ПО? Для разработки стандартного ПО требуются конкретные, узкие входные данные, которые инженер может исчерпывающе и четко смоделировать в коде. По сути, он проектирует и создает изолированный мир, в котором дальше программное обеспечение и функционирует.
А вот приложения на основе ML работают с бОльшим количеством беспорядочных реальных данных, которые слишком сложны для понимания и моделирования вручную.
Грубо говоря, в одном случае всё чётко, продумано и статично. Во втором – полнейший хаос (и в этом вся фишка).
В этом ключевое различие ML-приложений от традиционного ПО. И вот парочка конкретных деталей:
1. ИИ-приложения напрямую подвергаются воздействию постоянно меняющегося реального мира через динамичные данные, тогда как обычное ПО работает в упрощенном, статичном, абстрактном мире, который создается непосредственно девтим.
2. Приложения на основе машинного обучения необходимо разрабатывать с помощью циклов экспериментов. Из-за постоянного доступа к данным мы изучаем поведение таких приложений не с помощью логических рассуждений, а с помощью эмпирических наблюдений.
3. Набор навыков и опыт людей, создающих приложения, перестраиваются. Хотя по-прежнему эффективно выражать приложения в коде, акцент смещается на данные и эксперименты, которые больше похожи на эмпирическую науку, чем на традиционную программную инженерию.
И это не новый подход. Существует многолетняя традиция программирования, ориентированного на данные. Разработчики, которые для моделирования сложных явлений реального мира использовали дата-дривен IDE (RStudio, Matlab или даже Excel), должны понимать, о чем идет речь. Но, опять же, эти инструменты — довольно изолированные среды. Они отлично подходят для создания прототипов, но
их недостаточно для промышленного использования.
Чтобы с самого начала сделать ML-приложения готовыми к производству, разработчики должны придерживаться того же набора стандартов, что и для всех других ПО производственного уровня. Но с некоторыми оговорками, на которые стоит обратить внимание:
1. Масштаб операций увеличивается на два порядка в сравнении с более ранними средами, ориентированными на данные. Больше стали и используемые данные, и сами модели.
2. Современные ML-приложения нуждаются в тщательной оркестровке. Продукты стали в разы сложнее и требуют десятки взаимосвязанных шагов. Разработчикам нужны более усовершенствованные программные парадигмы, такие как первоклассные группы DAG (Directed Acyclic Graph).
3. Нам необходимо надежное управление версиями данных, моделей, кода и, желательно, даже внутреннего состояния приложений. Подумайте, как отвечать на неизбежные вопросы:
Что изменилось? Почему что-то сломалось? Кто, что и когда делал? Как сравнить две итерации?4. Приложения должны быть интегрированы с бизнес-системами, чтобы идеи можно было тестить в реальном мире.
482 views14:00