невозможно указать master_type в MLEngineTrainingOperator - PullRequest
2 голосов
/ 12 февраля 2020

Я использую поток воздуха для планирования конвейера, который приведет к обучению модели scikitlearn с платформой ai. Я использую этот DAG для обучения

    with models.DAG(JOB_NAME,
                    schedule_interval=None,
                    default_args=default_args) as dag:

        # Tasks definition
        training_op = MLEngineTrainingOperator(
            task_id='submit_job_for_training',
            project_id=PROJECT,
            job_id=job_id,
            package_uris=[os.path.join(TRAINER_BIN)],
            training_python_module=TRAINER_MODULE,
            runtime_version=RUNTIME_VERSION,
            region='europe-west1',
            training_args=[
                '--base-dir={}'.format(BASE_DIR),
                '--event-date=20200212',
            ],
            python_version='3.5')
        training_op

Учебный пакет загружает нужные CSV-файлы и тренирует на нем RandomForestClassifier.

Это работает, пока не увеличится количество и размер файлов. , Затем я получаю эту ошибку:

ERROR - The replica master 0 ran out-of-memory and exited with a non-zero status of 9(SIGKILL). To find out more about why your job exited please check the logs:

Общий размер файлов составляет около 4 Гб. Я не знаю, какая машина используется по умолчанию, но, похоже, этого недостаточно. Надеясь, что это решит проблему потребления памяти, я попытался изменить параметр n_jobs классификатора с -1 на 1, но больше не повезло.

Глядя на код MLEngineTrainingOperator и документацию, которую я добавили пользовательский scale_tier и master_type n1-highmem-8, 8 ЦП и 52 ГБ ОЗУ, например:

with models.DAG(JOB_NAME,
                schedule_interval=None,
                default_args=default_args) as dag:

    # Tasks definition
    training_op = MLEngineTrainingOperator(
        task_id='submit_job_for_training',
        project_id=PROJECT,
        job_id=job_id,
        package_uris=[os.path.join(TRAINER_BIN)],
        training_python_module=TRAINER_MODULE,
        runtime_version=RUNTIME_VERSION,
        region='europe-west1',
        master_type="n1-highmem-8",
        scale_tier="custom",
        training_args=[
            '--base-dir={}'.format(BASE_DIR),
            '--event-date=20200116',
        ],
        python_version='3.5')
    training_op

Это привело к другой ошибке:

ERROR - <HttpError 400 when requesting https://ml.googleapis.com/v1/projects/MY_PROJECT/jobs?alt=json returned "Field: master_type Error: Master type must be specified for the CUSTOM scale tier.">

Я не знаю, что не так, но кажется, что это не способ сделать это.

РЕДАКТИРОВАТЬ: С помощью командной строки мне удается запустить задание:

gcloud ai-platform jobs submit training training_job_name --packages=gs://path/to/package/package.tar.gz --python-version=3.5 --region=europe-west1 --runtime-version=1.14 --module-name=trainer.train --scale-tier=CUSTOM --master-machine-type=n1-highmem-16

Однако я хотел бы сделать это в потоке воздуха.

Любая помощь будет высоко ценится.

EDIT: в моей среде использовалась старая версия apache airflow, 1.10.3, где аргумент master_type отсутствовал. Обновление версии до 1.10.6 решило эту проблему

1 Ответ

1 голос
/ 20 февраля 2020

В моей среде использовалась старая версия apache airflow, 1.10.3, где аргумент master_type отсутствовал. Обновление версии до 1.10.6 решило эту проблему

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