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

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

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

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

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

Чтобы лучше познакомить вас с цепочкой моделей, вот введение в то, как это работает, основные преимущества и проблемы, а также то, как вы можете оптимизировать цепочку моделей ML на скорости и в масштабе.

Понимание основ цепочки моделей

Цепочки моделей — это, по сути, две или более моделей, которые выполняются последовательно. На простейшем уровне процесс объединения моделей выглядит примерно так:

  • Загрузите две модели ML
  • Привяжите ввод к первой модели
  • Выход первой модели становится входом второй модели.
  • Выход второй модели — это желаемый результат всей цепочки.

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

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

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

Преимущества объединения моделей

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

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

Модульность

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

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

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

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

Оптимизация

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

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

Независимо от языка и фреймворка

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

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

Проблемы объединения моделей

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

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

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

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

Упростите объединение моделей с помощью Wallaroo

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

может превратить ваши данные в бизнес-результаты за секунды, а не недели.

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

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