7

据我了解,TensorFlow 使用MLMD来记录和检索与工作流相关的元数据。这可能包括:

  1. 管道组件的结果
  2. 关于通过管道组件生成的工件的元数据
  3. 有关这些组件执行的元数据
  4. 关于管道和相关沿袭信息的元数据

特征:

以上(例如#1 aka“组件的结果”)是否暗示 MLMD 存储实际数据?(例如,用于 ML 训练的输入特征?)。如果不是,那么管道组件的结果是什么意思?

编排和管道历史:

此外,当将 TFX 与例如 AirFlow 一起使用时,它使用自己的元存储(例如有关 DAG、它们的运行和其他 Airflow 配置(如用户、角色和连接)的元数据),MLMD 是否存储冗余信息?它会取代它吗?

4

2 回答 2

1

想象一下磁盘驱动器的文件系统。文件的内容存储在磁盘中,但索引和指向这些数据的指针称为文件系统。该元数据为用户带来价值,用户可以在需要时通过搜索或浏览文件系统找到相关数据。

与 MLMD 类似,它存储 ML 管道的元数据,例如您在执行中使用了哪些超参数、训练数据的版本、特征的分布情况等。但它不仅仅是运行的注册表. 这些元数据可用于增强ML 管道工具的两个杀手级功能

  1. 其组件的异步执行,例如在有新数据时重新训练模型,而无需生成新的词汇表
  2. 重用以前运行的结果,或步骤级输出缓存。例如,如果输入参数未更改,则不要运行步骤,而是重用缓存中上一次运行的输出来提供下一个组件。

所以,是的,实际数据确实存储在存储中,也许是云存储桶,以跨转换的镶木地板文件的形式,或模型文件和模式 protobufs 的形式。并且 MLMD 将这些数据的 uri 与一些元信息一起存储。例如,保存的模型存储在 中s3://mymodels/1,它在 MLMD 表中有一个条目,与表中的运行及其参数Artifacts有关系。TrainerTrainArgsContextProperty

如果不是,那么管道组件的结果是什么意思?

它是指指向组件运行所产生的数据的指针,包括输入参数。在我们之前的示例中,如果输入数据以及组件的数据TrainArgsTrainer运行中没有发生变化,那么它不应该再次运行那个昂贵的组件,而是重用缓存中的模型文件。

连续 ML 管道的这种要求使得工作流管理器的使用与TektonMLMDArgo相比更相关Airflow,而 MLMD 与后者相比成为更集中的元数据存储。

于 2021-11-05T15:05:53.787 回答
1

TFX 是一个 ML 管道/工作流,因此当您编写 TFX 应用程序时,您所做的实际上是构建工作流的结构并准备 WF 以接受一组特定的数据并处理或使用它(转换、模型构建、推理、部署等)。所以在这方面它从不存储实际数据,它存储信息(元数据)以便处理或使用数据。因此,例如在检查异常的情况下,它需要记住以前的数据模式/统计信息(而不是实际数据),因此它将该信息作为元数据保存在 MLMD 中;除了实际运行的元数据。就 Airflow 而言,它还将保存运行元数据。这可以看作是所有元数据的一个子集,与保存在 MLMD 中的元数据相比非常有限。不过会涉及到冗余。控制器是定义和使用底层 Airflow 编排的 TFX。它不会取代,但如果发生冲突,它肯定会失败。

于 2020-11-19T10:14:42.877 回答