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

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

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

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

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

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

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

→ Архитектор платформы проектирует службы платформы, которые будут использоваться, и настраивает доступ и управление для каждой используемой облачной службы.

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

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

Примечание.Настройка платформы и развертывание решения по операциям могут выполняться с помощью конвейеров CI/CD. Подробнее о конвейерах мы поговорим в следующих статьях.

В следующих разделах этой статьи мы подробно обсудим варианты «развертывания», доступные для решений ML.

Аналогия с развертыванием веб-приложений

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

Веб-приложения/службы могут размещаться в контейнерах и предоставляться как конечные точки REST. В то время как виртуальная машина действует как физический хост, док-контейнер действует как логический хост. Наличие контейнера Docker рекомендуется для простоты развертывания и миграции, но это необязательно на усмотрение архитектора. Конечная точка HTTPS действует как канал для подключения пользователей приложения к бизнес-логике, включенной в файл WAR, который помещается на сервер приложений.

Типичное развертывание решения ML ничем не отличается от аналога развертывания веб-приложения. В ML основная бизнес-логика или вывод науки о данных объединены в МОДЕЛЬ, упакованную в файл TAR. Файл MODEL должен быть размещен, и необходимо создать канал, чтобы пользователи службы могли получить доступ к модели. В случае ML упакованная модель помещается в веб-фреймворк Python (например, Flask, Django или Tornado), который предоставляет модель как канал конечной точки HTTPS.

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

Типы развертывания

Успех любого современного творения — это когда вы даете потребителям возможность его использовать. Предоставление оптимальной модели для использования называется развертыванием/хостингом. Для развертывания требуются навыки, которые чаще всего встречаются в разработке платформ и DevOps. Развертывание модели машинного обучения можно разделить на два основных типа в зависимости от места размещения модели.

Хостинг серверного уровня – это модели, традиционно размещаемые на серверах (EC2/VM) в облаке или в локальной инфраструктуре. Сервер может быть физической машиной или виртуальной машиной, работающей локально или в облаке. Модель не может быть готова к выводу, поскольку файл модели (TAR) копируется на сервер. Как показано в предыдущем разделе, необходима полная настройка упаковки и обеспечение доступа к каналу через конечные точки. Серверы, на которых размещается модель, могут быть удалены или изолированы от места, где генерируются данные для логического вывода.

Размещение на EDGE означает, что точка, в которой делается вывод, находится очень близко к месту, где генерируются данные для вывода. Устройства EDGE могут быть нескольких типов: устройства IoT, серверы, подключенные к установкам испытательного стенда, серверы, подключенные к камерам, или даже мобильные устройства для облегченных моделей логического вывода.

Варианты развертывания

В этом разделе обсуждаются две разновидности развертывания решения машинного обучения.

Вывод в реальном времени — это один из самых популярных подходов к выводу. Простыми техническими терминами это означает, что вы запускаете свой код Python внутри контейнера докеров и предоставляете интерфейс REST для получения результатов. Потребителями этих конечных точек могут быть клиентские приложения или другие API и службы, взаимодействующие с нашим приложением машинного обучения. Большинство ведущих поставщиков облачных услуг, Tensorflow и многие другие фреймворки машинного обучения имеют библиотеки Python для облегчения обслуживания модели REST из коробки. Вывод в реальном времени требует дополнительных затрат, поскольку базовая инфраструктура должна работать круглосуточно и без выходных.

Когда рассматривать вывод в реальном времени,

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

Пакетный вывод используется для получения прогнозов для всего набора данных. Это процесс генерации прогнозов по серии наблюдений. Пакетные задания обычно генерируются по некоторому повторяющемуся расписанию (например, ежечасно, ежедневно, еженедельно и т. д.). Затем эти прогнозы сохраняются в базе данных и могут быть доступны разработчикам или конечным пользователям. Поскольку пакетный вывод планируется по запросу, разработчики платформы могут сэкономить средства, не имея выделенной инфраструктуры. Но обратная сторона этой разновидности заключается в том, что прогнозы не всегда могут быть доступны для новых/последних данных.

Когда рассматривать пакетный вывод,

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

Варианты ускорения для лучших результатов

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

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

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

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

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

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

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

Ускорение логического вывода — алгоритмы также рассматриваются как выбор платформы, возможно, в качестве виртуальной платформы. Алгоритмы обеспечивают сжатие модели. Сжатая модель может легко поместиться во встроенный кэш SRAM, а не во внешнюю память DRAM. Алгоритмы также могут предоставлять другие преимущества аппаратного уровня, такие как обрезка, метод биннинга и т. д.

Получение и поддержание формы

«Развернуть и забыть» НИКАК не связано с развертыванием ML. Выполнение оптимального вывода требует постоянного пересмотра параметров модели, чтобы решение оставалось в форме. Вот некоторые из аспектов, которые следует учитывать, чтобы оставаться в форме и восстанавливаться, чтобы оставаться ближе к реальности.

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

Вывод

Один из первых вопросов, на который вам нужно будет ответить при выборе архитектуры решений машинного обучения, — как сделать ее доступной для ваших потребителей. Этот выбор в основном определяется факторами продукта: кто использует выводы и как скоро они им потребуются? Если прогнозы не нужно обслуживать немедленно, вы можете выбрать простоту пакетного вывода. Если прогнозы необходимо обслуживать на индивидуальной основе и в течение времени одного веб-запроса, вывод в реальном времени — это то, что нужно.

Развертывание — это архитектурное решение, которое необходимо рассмотреть или принять на этапе проектирования. Определенно НЕ решение или выбор после создания решения ML.

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

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