Ограничьте количество узлов, используемых конвейером машинного обучения Azure - PullRequest
2 голосов
/ 16 июня 2020

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

Есть ли способ ограничить количество узлов, которые конвейер использует в кластере? По умолчанию он будет использовать все узлы, доступные для кластера, и я хотел бы ограничить его, чтобы он использовал только заранее определенный максимум. Это позволяет мне оставить остальную часть кластера свободной для других пользователей.

Мой текущий код для запуска конвейера выглядит следующим образом:

# Setup the pipeline
steps = [data_import_step] # Contains PythonScriptStep
pipeline = Pipeline(workspace=ws, steps=steps)
pipeline.validate()

# Big long list of historical dates that I want to process data for
dts = pd.date_range('2019-01-01', '2020-01-01', freq='6H', closed='left')
# Submit the pipeline job
for dt in dts:
    pipeline_run = Experiment(ws, 'my-pipeline-run').submit(
        pipeline,
        pipeline_parameters={
            'import_datetime': dt.strftime('%Y-%m-%dT%H:00'),
        }
    )

1 Ответ

1 голос
/ 19 июня 2020

Для меня самая важная особенность Azure ML - это не беспокоиться о балансировке нагрузки, подобной этой. У нашей команды есть цель вычислений с max_nodes=100 для каждой функциональной ветки, и у нас есть Hyperdrive конвейеров, которые приводят к 130 запускам для каждого конвейера.

Мы можем отправить несколько PipelineRun s друг за другом и оркестратор выполняет тяжелую работу по организации очереди, отправке и всем запускам, чтобы PipelineRun выполнялись в последовательном порядке, который я их отправил, и чтобы кластер никогда не перегружался. Это работает без проблем для нас в 99% случаев.

Если то, что вы ищете, это то, что вы хотите, чтобы PipelineRun выполнялись параллельно, вам следует проверить ParallelRunStep.

Другой вариант - изолировать ваши компьютеры. У вас может быть до 200 ComputeTarget с на одно рабочее пространство. Стоимость двух 50 узлов ComputeTarget равна стоимости одного 100 узлов ComputeTarget.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...