使用 Airflow 运算符将运行时版本传递给 CMLE

Posted

技术标签:

【中文标题】使用 Airflow 运算符将运行时版本传递给 CMLE【英文标题】:Passing runtime version using Airflow operator to CMLE 【发布时间】:2019-02-05 23:37:18 【问题描述】:

我正在使用MLEngine operator in contrib(在无贡献中找不到一个)。日志中的问题是运行时错误,未正确设置,然后默认为 1.0。

文件“/root/.local/lib/python2.7/site-packages/trainer/model.py”,行 210,在 train_and_evaluate 估计器 = tf.estimator.Estimator(model_fn = image_classifier, AttributeError: 'module' 对象没有属性 'estimator'

我认为这表明我应该使用 TF 1.8,正如触发器中所指示的那样:

MLEngineTrainingOperator(
    task_id='ml_engine_training_op1',
    project_id=PROJECT_ID,
    job_id=job_id,
    package_uris=["gs://us-central1-ml-engine-deplo-0bf17ff3-bucket/trainer-0.1.tar.gz"],
    training_python_module=MODULE_NAME,
    training_args=training_args,
    region=REGION,
    scale_tier='BASIC',
    runtime_version = '1.8',
    dag=dag
)

在 Airflow 日志中:

PendingDeprecationWarning:无效的参数被传递给 MLEngineTrainingOperator。支持传递此类论点将是 在 Airflow 2.0 中下降。无效的参数是: *参数:() **kwargs: 'runtime_version': '1.8'

Cloud Composer 运行的气流版本是 1.9。

我的问题是使用运算符将​​运行时版本传递给 CMLE 的正确方法是什么?

【问题讨论】:

您使用的是哪个气流版本? 1.9.0-composer - cloud.google.com/composer/docs/release-notes 【参考方案1】:

Airflow v1.9.0 中的 MLEngineTrainingOperator 不支持 runtime_version 作为参数。

但是,Airflow v1.10.0 中确实存在 runtime_version 参数。您可以使用 Composer Beta 创建 Airflow v.1.10.0,方法是选中 Composer UI 右上角的Enable Beta Features

参考:

Airflow v1.9.0 mlengine_operator.py

Airflow v1.10.0 mlengine_operator.py

【讨论】:

以上是关于使用 Airflow 运算符将运行时版本传递给 CMLE的主要内容,如果未能解决你的问题,请参考以下文章

将 xcom 值传递给 Airflow 中的 JiraOperator

如何通过 BigQuery 连接将 use_legacy_sql=False 传递给 Airflow DAG 中的 SqlSensor?

对于 Apache Airflow,如何通过 CLI 手动触发 DAG 时传递参数?

Airflow 中的动态任务定义

使用 Airflow 进行集成测试

Airflow踩坑XCom大数据传递反序列化失败