使用 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?