Разработка программного обеспечения для проектов AI/ML/Data Science

Предисловие

Искусственный интеллект (AI), машинное обучение (ML) и наука о данных (DS) — это модные слова в индустрии информационных технологий (IT). Большинство предприятий переходят от стадии Proof of Concept (POC) к производству и монетизации решений AI/ML/DS. Из-за самого характера работы, связанной с составом команды проектов, требованиями к навыкам и основным навыкам, разработка AI/ML/DS немного отличается от традиционной разработки программного обеспечения. Использование исследования данных, инженерии данных, экспериментов и специализированных инструментов, таких как JupyterNotebook, усложняет процесс. Когда мы переходим от эксперимента к производству и монетизации, важно смотреть на проекты AI/ML с точки зрения разработки программного обеспечения. Мыслительный процесс не является чем-то новым в отрасли. Пионеры отрасли, такие как Google и Microsoft, уже обсудили и опубликовали результаты исследований и точки зрения. Текущая серия статей — это попытка подробно обсудить потребности разработки программного обеспечения в AI/ML.

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

От ноутбуков до развертываемого кода

Специалисты по данным всегда любят строить модели в блокнотах. Большую часть времени записная книжка и связанные с ней артефакты становятся лужей CSV и DataFrames. Да! Мы не забываем о факторе связующего кода и многочисленных графиках matplotlib/seaborn. Третья и самая захватывающая лужа — это соленья, готовый к развертыванию ноутбук, который подается с соленьями!

Различные ИТ-роли увидят это с разных точек зрения. Стандарты кодирования, жестко закодированные значения, отсутствие функции многократного использования, абсолютный нуль документации и отсутствие отслеживаемости. Когда предприятие приближается к зрелости в области AI/ML/DS, важно внедрить практику разработки программного обеспечения. Вопрос в том, кто должен нести за это ответственность: специалист по данным, инженер данных или инженер по машинному обучению? Каковы приоритетные области и контрольные точки высокого уровня для уменьшения или устранения луж?

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

· Чистый и поддерживаемый код

· Разработка через тестирование

· Артефакты с контролем версий

· Инжиниринг данных и конвейеры

· Рекомендации по проектированию и развертыванию API

· Что можно и чего нельзя делать с открытым исходным кодом

· Продолжает интеграцию/доставку

· Интеллектуальная собственность и AI/ML

· Регуляторные проблемы

Предыдущая работа

Одна из наиболее примечательных статей в этой статье написана инженерами Google под названием «Скрытый технический долг в системе машинного обучения» [1]. Статья была опубликована в 2015 году на конференции NIPS. Документ 2019 года инженеров Microsoft — одна из других замечательных работ в этой области. Статья называется «Программная инженерия для машинного обучения: тематическое исследование» [2]. Статья «Новая роль специалистов по данным в командах разработчиков программного обеспечения» [3] также является заметной работой по обсуждению этой темы. Большинство этих работ были частью академических и ограниченных корпоративных дискуссий. Чтобы обеспечить устойчивую поддержку заинтересованным предприятиям, Gartner опубликовала официальные документы с профессиональными рекомендациями [4], «Подготовка и проектирование для машинного обучения».

В последние годы академические учреждения сосредотачиваются на обучении студентов практике разработки программного обеспечения для работы с данными и машинным обучением. Некоторые книги находятся в производстве и издаются, ориентируясь на работающих специалистов. Эти книги посвящены известным паттернам и анти-паттернам, встречающимся в сообществе практиков. Шаблоны проектирования машинного обучения Valliappa Lakshman et.all. Это отличный справочник [5].

Что такое кулинария?

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

Справочник

[1] Скрытый технический долг в системе машинного обучения, https://dl.acm.org/doi/10.5555/2969442.2969519

[2] Программная инженерия для машинного обучения: тематическое исследование, https://dl.acm.org/doi/10.1109/ICSE-SEIP.2019.00042

[3] Новая роль специалистов по данным в командах разработчиков программного обеспечения, https://dl.acm.org/doi/10.1145/2884781.2884783

[4] Подготовка и проектирование для машинного обучения, https://www.gartner.com/en/documents/3573617/preparing-and-architecting-for-machine-learning

[5] Шаблоны проектирования машинного обучения, https://learning.oreilly.com/library/view/machine-learning-design/9781098115777/