Использование искусственного интеллекта в бизнесе - это путь, требующий вложений и настойчивости. Хотя преимущества использования ИИ могут быть очевидны для всех, перенести его от обучения к производству - огромная проблема. Путешествие ставит архитекторов приложений перед множеством препятствий. Им нужно задуматься над:
1. Как интегрировать модель ИИ (возможно, с другим технологическим стеком) в существующее бизнес-приложение.
2. Приведите в действие его с помощью беспрепятственного развертывания, управляя частыми обновлениями модели искусственного интеллекта, тем самым решая проблемы управления версиями.
3. Обеспечение высокой производительности и масштабируемости.
Учитывая, что все взоры прикованы к модели искусственного интеллекта, чтобы продолжать учиться и со временем становиться лучше (самообучение), это непростая задача для дизайнеров любыми способами и вполне разумно.
Углубляясь в проблемы
Большинство команд начинают с экспериментов в исследовательских лабораториях, работая над решением бизнес-задачи с определенным набором данных. Обычно они используют записные книжки Jupyter, работающие на Python. После того, как доказательство концепции (POC) готово и подписано, его нужно отправлять в производство. Здесь начинается настоящая проблема, и складывается общая картина.
Проблемы с данными
Данные могут поступать из потокового конвейера, базы данных или из файлов в различных форматах. Он может быть структурированным или неструктурированным. Это требует итеративного процесса для анализа и обработки данных перед их передачей в AI-модели для обучения (или настройки). Если качество данных плохое, это может значительно снизить производительность или точность модели ИИ. Поскольку всегда удивительно, как модель ИИ будет работать в реальном мире в производственных системах, поэтому необходимо разработать стратегию для регулярной оценки качества данных и производительности модели ИИ, работающей в производственной среде.
Проблемы интеграции
Наиболее предпочтительный вариант для команды инженеров ИИ - это обучение и разработка модели ИИ с использованием python с расширениями C ++, но существует множество конкурирующих платформ и технологий для различных целей в области науки о данных. Унаследованное бизнес-приложение может работать в другом техническом стеке (например, Java). Это создает проблему для архитекторов, чтобы должным образом интегрировать оба (программное обеспечение AI с программным обеспечением, отличным от AI). Это также вызывает споры о том, следует ли развертывать модель ИИ отдельно или во встроенном режиме в бизнес-приложении. Есть несколько вариантов выполнения всего кода в одной JVM, встроенной в бизнес-приложение. Однако многие это не предпочитают из-за связанных с этим ограничений масштабируемости. Раздельное развертывание моделей искусственного интеллекта также предпочтительнее встроенного режима, чтобы использовать вычислительную мощность через графические процессоры для сценариев использования с интенсивным обучением. Более того, никто не хочет обучать модель искусственного интеллекта, в то время как бизнес-приложение обслуживает потребности своих пользователей, поскольку это создаст большую нагрузку на системные ресурсы. Запуск python во встроенном режиме также частично ограничивает независимость от платформы, поскольку скрипты должны быть предварительно скомпилированы в соответствии с архитектурой целевой среды. Встроенный режим может быть достаточным в высокопроизводительных случаях использования только вывода, только когда масштабируемость не может быть проблемой.
Частое обновление модели ИИ
Могут возникнуть более деликатные проблемы, связанные с конкретными вариантами использования ИИ. Иногда необходимо, чтобы недавно обученные (или настроенные) модели ИИ работали вместе со старой версией, чтобы оценить, как она работает в реальном мире, прежде чем принимать решение о прекращении работы старой версии или повторном обучении новой для повышения точности, пока она не будет готова. заменить старую. Для этого требуется удобный способ обслуживания модели ИИ, не влияя на бизнес-приложение. Также называется «затенение».
В дополнение к вышесказанному, интеграция программного обеспечения ИИ как есть требует особого внимания к следующему:
- Поддержание нескольких сред Python. Это титаническая задача - поддерживать несколько сред Python для всех задействованных систем от разработки до производства.
- Необходимо решить очевидный вопрос, связанный с масштабируемостью и производительностью узких мест из-за механизма блокировки GIL в Python, который позволяет обрабатывать только один поток за раз, а другие вынуждены ждать. единственный экземпляр Python.
- Доступ к данным: бизнес-приложение может обрабатывать данные в масштабе. Таким образом, ожидается, что модель ИИ будет быстро адаптироваться и извлекать уроки из меняющихся тенденций, отражаемых данными. Это требует, чтобы последние данные передавались в модель ИИ в масштабе для периодического обучения.
Требуется хорошо продуманное решение, чтобы программное обеспечение ИИ было хорошо интегрировано, масштабировалось по мере необходимости, а также для более быстрой разработки и обновлений.
Введите микросервисы ..
Архитектура микросервисов обеспечивает гибкость выбора языка или технологии для быстрой и независимой разработки, тестирования и развертывания. Благодаря поддержке контейнеризации можно создавать контейнеры на основе Docker со встроенной в них средой Python. Каждый контейнер может запускать отдельный экземпляр Python с доступом к данным, необходимым для повторного обучения или настройки модели ИИ по мере необходимости. Каждый контейнер может получать данные через асинхронный канал обмена сообщениями и хранить их индивидуально. В качестве альтернативы, в некоторых случаях предпочтительно создать отдельную микрослужбу упаковки данных для обработки данных для всех контейнеров и предоставления их им по запросу. Часто предпочтительным вариантом является развертывание микросервисов AI в управляемом кластере Kubernetes для масштабирования по мере необходимости.
Для программного обеспечения ИИ может потребоваться несколько задач, которые могут выполняться независимо как отдельные микросервисы для выполнения различных операций, таких как прием данных, предварительная обработка, обучение и прогнозирование. Для сценария использования с интенсивным поездом можно развернуть больше контейнеров, чтобы сбалансировать нагрузку на обучающую часть. Обычно это хорошая практика, если используется более одной модели ИИ. Обучение для каждой модели может выполняться разными микросервисами, развернутыми в отдельных контейнерах. Некоторые из этих операций могут быть общими для нескольких вариантов использования, таких как предварительная обработка данных, и, следовательно, имеет смысл развертывать их независимо и масштабировать по мере необходимости.
Восстание модельных серверов
Высокопроизводительные обслуживающие системы, называемые «модельными серверами», помогают развертывать модели искусственного интеллекта, которые можно масштабировать на несколько машин. В основном они соответствуют архитектуре микросервисов и обеспечивают доступ через REST или gRPC API, что упрощает интеграцию с бизнес-приложением. Они также предоставляют возможности для автоматического масштабирования, выделения оборудования, инструментов тестирования, развертывания, мониторинга, управления версиями моделей и т. Д. Некоторыми примерами являются обслуживание Tensorflow от Google, сервер моделей для MXNet Apache и т. Д.
Резюме: Собираем все вместе
Для любого предприятия крайне важно иметь возможность беспрепятственно добавлять и удалять службы, не влияя на другие службы. При работе с моделями ИИ становится еще сложнее ускорить создание таких сценариев использования. Большинство команд начинают свою деятельность в исследовательской среде. Необходимо настроить несколько конвейеров машинного обучения и управлять рабочими нагрузками. Архитектура микросервисов, безусловно, помогает ввести в действие и обеспечить большую гибкость для разработчиков и архитекторов систем, особенно когда дело доходит до масштабного развертывания моделей ИИ в качестве сервисов в производственной среде.
Функции на базе искусственного интеллекта, подключенные к существующим унаследованным приложениям с помощью решений на основе микросервисов, могут помочь в создании гораздо более эффективных платформ, чем раньше. Вот почему все больше и больше компаний начали внедрять ИИ в существующие приложения. Разумно преодолеть начальные препятствия и не обращать внимания на них, чтобы сделать путешествие ИИ стоящим. Платформы будущего, как можно себе представить, будут состоять из нескольких движков на базе искусственного интеллекта, инкапсулированных в виде микросервисов.
Присоединяйтесь к FAUN: Веб-сайт 💻 | Подкаст 🎙️ | Twitter 🐦 | Facebook 👥 | Instagram 📷 | Группа Facebook 🗣️ | Группа Linkedin 💬 | Slack 📱 | Cloud Native Новости 📰 | Еще .
Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇