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

Многие читатели предыдущего поста выразили заинтересованность в том, чтобы узнать больше о принципе «От исследований к производству». Большинство ответов касалось того, как создать единый уровень обслуживания/прогнозирования/вывода при одновременном внедрении множества различных моделей/вариантов использования (например, изображения, NLP, рекомендации и т. д.). Вот инструменты и советы для достижения этой цели:

Базовые образы Docker

Создайте базовый образ докера для сред машинного обучения, которые намерена использовать группа по обработке и анализу данных — TensorFlow, PyTorch, ScikIt-Learn и т. д. Это устанавливает единообразие, централизацию и стандарты для создания базовых образов докеров, одновременно способствуя повторному использованию. Это также позволяет специалистам по данным легко и эффективно запускать свои эксперименты и создавать свои производственные контейнеры.

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

Серверная библиотека Python gRPC

Подключаемые контракты API

Предоставьте серверную библиотеку gRPC, чтобы обеспечить абстракцию API, расширение и освободить специалистов по данным от создания сервера API для каждого варианта использования. Библиотека должна позволять легко подключать контракты protobuf, специфичные для модели/варианта использования — контракт API классификации изображений сильно отличается от контракта API распознавания именованных объектов. Предоставьте классы для расширения и реализации функций предварительной и постобработки ввода/вывода.

Интеграция журналов/показателей

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

Дополнительные функции — динамическая пакетная обработка, управление моделями

Библиотека сервера может быть дополнительно расширена, чтобы добавить такие функции, как динамическое группирование запросов в пакетные запросы на основе идентификатора клиента/модели для повышения производительности. Такие функции, как управление моделями, при которых модели загружаются и удаляются из/в GPU/CPU на основе принципа LRU (наименее недавно использовавшиеся). Эти функции не зависят от используемой платформы машинного обучения.

Примечание. Я специально упомянул сервер Python, поскольку самые популярные и широко используемые фреймворки машинного обучения основаны на Python.

Конвейер развертывания

Создайте конвейер развертывания (может быть скрипт Python), который принимает имя образа докера, версию и требования к ресурсам и развертывает его в рабочей среде. Это можно сделать с помощью параметризованных диаграмм Helm в случае развертывания в кластерах Kubernetes. Для прямого развертывания в общедоступной облачной инфраструктуре (AWS EC2 или Azure VM) оркестрация развертывания может предоставить подход на основе файла конфигурации (yaml или json) для предоставления образа докера и связанных параметров (например, GPU, памяти, ЦП). Это обеспечивает единый интерфейс развертывания независимо от типа развертывания, абстрагируя детали рабочего процесса развертывания.

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

Не стесняйтесь публиковать свои мысли или обращаться через Twitter, Medium или LinkedIn.