Лучшие практики для Azure Трубопроводов машинного обучения - PullRequest
2 голосов
/ 23 апреля 2020

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

  1. Когда я смотрю на «пакетный скоринг» примеры, это реализовано как шаг конвейера. Возникает вопрос: означает ли это, что «предсказывающая часть» является частью того же конвейера, что и «обучающая часть», или для этого должны быть два отдельных конвейера? Создание 1 конвейера, который объединяет оба этапа, кажется мне странным, потому что вы не хотите запускать свою предсказывающую часть каждый раз, когда вы меняете что-то на обучающую часть (и наоборот).
  2. Какие части должны быть реализованы как шаг конвейера, а какие части не должны? Следует ли создавать хранилище данных и набор данных в качестве шага? Должна ли регистрация модели осуществляться как шаг?
  3. Что нигде не показано, как обращаться с реестром модели. Я создаю модель на этапе обучения, а затем записываю ее в выходную папку в виде файла маринада. Тогда что? Как мне получить модель на следующем шаге? Должен ли я передать его как объект PipelineData? Должен ли train.py сам отвечать за регистрацию обученной модели?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

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

Однако выполнение обучения и прогнозирования в одном и том же конвейере является допустимым вариантом использования. Используйте параметр allow_reuse и установите значение True, которое будет кэшировать вывод шага в конвейере, чтобы предотвратить ненужные повторы.

Например, выполните шаг обучения модели и рассмотрите следующий вход для этого шага:

  • учебный скрипт
  • входные данные
  • дополнительные параметры шага

Если вы установили allow_reuse=True и свой учебный скрипт, введите данные и другие параметры шага такие же, как в последний раз при запуске конвейера, он не будет повторно запускать этот шаг, он будет использовать кэшированные выходные данные в последний раз, когда работал конвейер. Но допустим, что ваш ввод данных изменился, тогда этот шаг будет выполнен повторно.

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

3 голосов
/ 24 апреля 2020

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

3 Передача модели в последующий шаг

Как получить модель на следующем шаге?

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

На производстве шаг оценки должен использовать ранее зарегистрированную модель.

Наша команда использует PythonScriptStep, который имеет аргумент сценария, позволяющий передавать модель из шага восходящего потока или извлекаться из реестра. На приведенном ниже снимке экрана показан наш шаг оценки партии с использованием PipelineData с именем best_run_data, который содержит лучшую модель (сохраненную как model.pkl) из HyperDriveStep.

enter image description here

Определение нашего batch_score_step имеет логический аргумент '--use_model_registry', который определяет, использовать ли недавно обученную модель или используйте реестр моделей. Мы используем функцию get_model_path() для поворота по сценарию arg. Вот некоторые фрагменты кода из вышеперечисленного.

2 Плоскость управления против плоскости данных

Какие части должны быть реализованы как шаг конвейера, а какие части не должны ' t?

Все преобразования, которые вы делаете с вашими данными (манипуляция, индивидуализация, обучение, подсчет очков), должны выполняться внутри PipelineStep. Входы и выходы которых должны быть PipelineData.

Azure ML-артефакты должны быть: - созданы в плоскости управления конвейера с использованием PipelineData и - зарегистрированы либо: - ad-ho c, в отличие от каждого прогона или - когда вам нужно передать артефакты между конвейерами.

Таким образом PipelineData - это клей, который соединяет шаги конвейера напрямую, а не косвенно, с / 1051 * и .download()

PipelineData - это, в конечном счете, просто эфемерные каталоги, которые также можно использовать в качестве заполнителей перед выполнением шагов по созданию и регистрации артефактов.

Dataset абстракции PipelineData s в том смысле, что они упрощают передачу данных в AutoMLStep и HyperDriveStep и DataDrift

1. Инкапсуляция конвейера

означает ли это, что «Часть прогнозирования» является частью того же конвейера, что и «обучающая часть», или для этого должны быть два отдельных конвейера?

Ваша архитектура конвейера зависит от:

  1. нужно пред ict live (в противном случае пакетное прогнозирование достаточно) и
  2. ваши данные уже преобразованы и готовы к оценке.

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

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