问题标签 [tfx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
262 浏览

python - 如何在 TensorFlow Serving 之前添加自定义特征转换逻辑?

根据我的研究,TFX 不支持 TFX 管道中的自定义特征转换,因为我的自定义 python 函数无法在图中序列化。因此使所述功能在服务/推理时不可用。

我发现的一种替代方法是通过创建自定义 Servable ( https://www.tensorflow.org/tfx/serving/custom_servable ) 来扩展 TensorFlow Serving,但我还没有找到任何添加特征转换代码的具体示例。

如何围绕 SavedModel 包装特征转换?

0 投票
0 回答
262 浏览

tfx - 如何为 TFX+GPU 支持构建 Docker 映像?

我正在尝试通过 TFX+Kubeflow(管道服务)在 Cloud AI Platform 的训练作业上训练 ML 模型。

每当触发 Trainer 作业时,我都会看到抱怨 CUDA 的日志消息。

2021-02-14 23:39:45.470214:W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 无法加载动态库“libcudart.so.11.0”;dlerror:libcudart.so.11.0:无法打开共享对象文件:没有这样的文件或目录;LD_LIBRARY_PATH:/usr/local/lib

而且我没有看到任何 GPU(加速器)很忙。

scaleTier我认为当我设置为 like时 CUDA 可用BASIC_GPU。但是,我也需要TFX's EntryPoint。我还没有看到任何官方Dockerfile构建 TFX+CUDA 图像。

有什么建议吗?反复试验......我不断失去 GCP 积分......

0 投票
2 回答
861 浏览

apache-spark - 可以使用 spark 配置配置 Beam 便携式跑步者吗?

TLDR;

可以使用 spark 配置配置 Beam 便携式跑步者吗?更准确地说,是否可以spark.driver.host在 Portable Runner 中配置?

动机

目前,我们在 Kubernetes 集群中实现了气流,为了使用 TensorFlow Extended,我们需要使用 Apache Beam。对于我们的用例,Spark 将是合适的运行器,并且由于气流和 TensorFlow 是用 python 编码的,我们需要使用 Apache Beam 的便携式运行器(https://beam.apache.org/documentation/runners/spark/ #便携性)。

问题

便携式运行器在其容器内创建 spark 上下文,并且不会为驱动程序 DNS 配置留出空间,从而使工作 pod 内的执行程序无法与驱动程序(作业服务器)通信。

设置

  1. 根据 beam 文档,job serer 与气流在同一个 pod 中实现,以使用这两个容器之间的本地网络。作业服务器配置:

作业服务器/气流服务:

端口 8097、8098 和 8099 与作业服务器相关,8793 与气流相关,7077 与 spark master 相关。

开发/错误

  1. 从气流容器测试一个简单的光束示例python -m apache_beam.examples.wordcount --output ./data_test/ --runner=PortableRunner --job_endpoint=localhost:8099 --environment_type=LOOPBACK时,我在气流吊舱上得到以下响应:

和工人日志:

正如我们所看到的,执行程序不断退出,据我所知,这个问题是由执行程序和驱动程序(本例中的作业服务器)之间缺少通信造成的。此外,“--driver-url”使用随机端口“-Dspark.driver.port”转换为驱动程序 pod 名称。由于我们无法定义服务的名称,worker 尝试使用驱动程序的原始名称并使用随机生成的端口。由于配置来自驱动程序,因此更改 worker/master 中的默认 conf 文件不会产生任何结果。以这个答案为例,我尝试SPARK_PUBLIC_DNS在作业服务器中使用 env 变量,但这并没有导致工作日志中的任何更改。

观测值

直接在 kubernetes 中使用 kubectl run spark-base --rm -it --labels="app=spark-client" --image bde2020/spark-base:2.4.5-hadoop2.7 -- bash ./spark/bin/pyspark --master spark://spark-master:7077 --conf spark.driver.host=spark-client 具有服务的 spark 作业:

我得到了一个完整的工作 pyspark shell。如果我省略 --conf 参数,我会得到与第一个设置相同的行为(无限期退出执行程序)

0 投票
1 回答
136 浏览

apache-spark - 如何在 kubernetes 中连接 2 个 pod,因为它们位于同一个本地网络中并打开所有端口

TLDR;

是否可以在 Kubernetes 中连接 2 个 pod,因为它们位于同一个本地网络中并且所有端口都打开?

动机

目前,我们在 Kubernetes 集群中实现了气流,为了使用 TensorFlow Extended,我们需要使用 Apache Beam。对于我们的用例,Spark 将是合适的运行器,并且由于气流和 TensorFlow 是用 python 编码的,我们需要使用 Apache Beam 的便携式运行器(https://beam.apache.org/documentation/runners/spark/ #便携性)。

问题

气流 pod 和作业服务器 pod 之间的通信导致传输错误(可能是因为作业服务器使用了一些随机端口)。

设置

为了遵循良好的隔离实践并在 Kubernetes 通用设置中模仿 Spark(在 pod 中使用集群内的驱动程序),作业服务器实现为:

开发/错误

python -m apache_beam.examples.wordcount --output ./data_test/ --runner=PortableRunner --job_endpoint=beam-spark-job-server:8099 --environment_type=LOOPBACK如果我从气流吊舱执行命令,则作业服务器上没有日志,并且在终端上出现此错误:

这表示传输作业时出错。如果我在与气流相同的 pod 中实现作业服务器,我会在这两个容器之间获得完整的工作通信,我希望具有相同的行为,但它们在不同的 pod 中。

0 投票
1 回答
168 浏览

tensorflow - TFX Evaluator 似乎无法识别 ResolverNode 的基线模型输出

我想在 TFX 中使用模型 Evaluator 组件的验证功能(模型差异或模型比较),所以我使用了 TFX 中出租车模板的基本代码来做到这一点。

问题是,当 Evaluator 组件在 GCP 上的 Kubeflow 中运行时,会在日志中引发下一条错误消息:

查看TFX repo 1第 138 行中 Evaluator 组件的执行程序的源代码:

然后在第 141 行输入一个函数:

然后仅在满足下一个条件时才抛出引用的错误消息,来自TFX repo 2

事实上,这就是我在日志中得到的错误,模型被评估但没有与基线进行比较,即使我以示例代码所示的方式提供它,例如:

而且还在继续……

0 投票
0 回答
128 浏览

python - ImportError:无法导入名称“execution_result_pb2”

我正在尝试执行 TFX-Airflow 教程(https://www.tensorflow.org/tfx/tutorials/tfx/airflow_workshop)。当我尝试使用airflow webserver -p 8008它连接到服务器时,出现以下错误

我的系统在 Ubuntu 20.04 上运行,并且我有一个虚拟环境,其中安装了链接教程中列出的所有依赖项。我使用了 8008 端口,因为 8080 端口出现错误(连接正在使用中)。

我读到这可能是因为模块缺少/循环依赖导入,但我不确定哪些包负责。我在我的系统上找不到execution_result_pb2.py文件(假设它是一个文件)。有谁知道如何解决这个问题?

0 投票
0 回答
62 浏览

tfx - TFX:在评估器中使用转换后的数据

TLDR;

我面临着评估者模型的问题。所有使用 Evaluator 组件的示例都使用原始 ExampleGen 数据中的标签作为标签源。但我想给它在管道期间计算的标签。

有没有一种方法可以在将标签提供给评估者之前对标签进行一次热编码?另一种方法是在转换组件中对数据进行一次热编码,然后使用 ImportExampleGen 组件再次加载它,但这对于时间和内存来说非常昂贵。


长版:

我正在运行一个语言建模管道,我有一个文本作为输入,我想训练一个基于 LSTM 的 LM。到目前为止,我的步骤是:

  • 使用 ImportExampleGen 提取文本数据并使用词汇文件对其进行标记
  • 将文本数据转换为 2 个 MAX_LEN 形状的张量(如果需要,可以使用填充)。一个用于模型的输入,一个用于输出(一个移位)。

这是改造后的样子:

  • 在训练过程中,我在模型摄取标签之前对标签进行 one-hot 即时编码(词汇大小为 30K)(与在 Transform 组件中执行此操作相比,这是为了节省空间)。

这是训练代码的那一部分:

  • 评估是我面临问题的地方。所有使用 Evaluator 组件的示例都使用原始 ExampleGen 数据中的标签作为标签源。

有没有一种方法可以在将标签提供给评估者之前对标签进行一次热编码?另一种方法是在转换组件中对数据进行一次热编码,然后使用 ImportExampleGen 组件再次加载它,但这对于时间和内存来说非常昂贵。

0 投票
0 回答
30 浏览

inference - TFX Pushed 模型在 BQML 中使用时工作正常,但与 BulkInferrer 一起使用时出错

按照https://stackoverflow.com/a/65979056/12559246将BulkInferrer的 o/p 获取到数据帧。BulkInferrer 模块中仍然存在错误。

代码片段:- BQExampleGen BulkInferrer

当在 BQML 中使用与上述 BQExampleGen 中使用的完全相同的查询时,由 pusher 在同一管道中创建的模型能够成功执行推理。

但是当将 BulkInferrer 与 Pusher 一起使用时,在 BulkInferrer 组件中遇到错误:- 错误

请让我知道更多细节。任何帮助?

0 投票
0 回答
36 浏览

keras - 没有宽深模型的 TFX 示例

无法将我的用例与广泛深入的示例相匹配。有没有人有一个 github/notebook,他们在其中使用 tfx 概念和顺序模型或其他 keras 模型。

0 投票
0 回答
40 浏览

tensorflow - 使用由 2D 样本制作的张量来馈送 TFX 管道

我在尝试将数据导入 TFX 管道时遇到了一些麻烦,如果有人能指出我正确的方向,我将不胜感激。我有一个 3D Ragged(或 Sparse,如果需要)张量,其中每个 2D 切片都是我想输入管道的示例。每个 2D 张量由可变数量的行组成,但它们共同形成一个示例,而不仅仅是一批示例。对这种结构进行编码的最佳方法是什么,以便 tfx 管道的 ExampleGen 组件可以将其输入管道?到目前为止,我已经尝试了本指南中的说明https://medium.com/mostly-ai/tensorflow-records-what-they-are-and-how-to-use-them-c46bc4bbb564将其转入 tf.train.SequenceExample,使每个特征在 value 字段内都有一个向量,并将结果写入 tf.Record。出于某种原因,我真的很难打开它。

任何帮助将非常感激!

Ps:请注意,张量的第三个暗淡很长,比如 40k,因此将每个示例写入 tf.Record 会生成相同数量的文件,我认为这不切实际、效率低下且不是很优雅,但我我很高兴错了。