Tensorflow:如何在MLMD MetadataStore中的执行对象中添加属性?

v8wbuo2f  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在使用MLMDMetadataStore来管理数据管道,我需要在MLMD中添加一个执行属性,以便稍后获取此属性。
我试着加上这个:

from ml_metadata.proto import metadata_store_pb2
from ml_metadata.metadata_store import metadata_store

def create_mlmd_database_in_memory():
    connection_config = metadata_store_pb2.ConnectionConfig()
    connection_config.fake_database.SetInParent()  # Sets an empty fake database proto.
    store = metadata_store.MetadataStore(connection_config)
    return store

store = create_mlmd_database_in_memory()

# Create an ExecutionType, e.g., Trainer
trainer_type = metadata_store_pb2.ExecutionType()
trainer_type.name = "TrainerTest"
trainer_type_id = store.put_execution_type(trainer_type)

# Register the Execution of a Trainer run
trainer_run = metadata_store_pb2.Execution()
trainer_run.type_id = trainer_type_id
trainer_run.properties["pipeline_name"].string_value = "PIPELINE_NAME"
[run_id] = store.put_executions([trainer_run])

但我得到了这个错误:

InvalidArgumentError: Found unknown property: pipeline_name

有人知道怎么做吗?

fslejnso

fslejnso1#

执行类型中缺少添加属性。
就像这样

# Create an ExecutionType, e.g., Trainer
trainer_type = metadata_store_pb2.ExecutionType()
trainer_type.name = "TrainerTest"
trainer_type.properties["pipeline_name"] = metadata_store_pb2.STRING
trainer_type_id = store.put_execution_type(trainer_type)

# Register the Execution of a Trainer run
trainer_run = metadata_store_pb2.Execution()
trainer_run.type_id = trainer_type_id
trainer_run.properties["pipeline_name"].string_value = "PIPELINE_NAME"
[run_id] = store.put_executions([trainer_run])

参考https://www.tensorflow.org/tfx/guide/mlmd
执行是ML工作流中组件运行或步骤以及运行时参数的记录。执行可以被视为ExecutionType的示例。当您运行ML管道或步骤时,会记录执行。

相关问题