问题标签 [tensorflow-xla]

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 回答
782 浏览

python - TensorFlow:XLA 未运行并出现“无效参数:无 _XlaCompile”错误

我正在尝试此处描述的 XLA 教程:https ://www.tensorflow.org/performance/xla/jit

我使用以下选项mnist_softmax_xla.pyhttps://raw.githubusercontent.com/tensorflow/tensorflow/r1.1/tensorflow/examples/tutorials/mnist/mnist_softmax_xla.py运行:

TF_CPP_MIN_VLOG_LEVEL=2 TF_XLA_FLAGS='--xla_generate_hlo_graph=.*' python mnist_softmax_xla.py

不幸的是,我在输出中收到一堆“自定义创建者错误:无效参数:没有 _XlaCompile for Const”错误(对于所有其他类型的操作也是如此)。此外,没有创建 hlo_graph_xx.dot 文件(正如教程所说的那样)。

我的 python 安装是 Ubuntu 16.04 LTS 上的 Anaconda 4.3.1 (Anaconda3-4.3.1-Linux-x86_64.sh)。

TensorFlow 是使用以下命令从源代码编译的 1.1.0 版本:

为什么 XLA 不适用于此设置?

如何使用有效的 XLA 安装 TensorFlow?

0 投票
3 回答
1360 浏览

tensorflow - 如何在张量流中使用 xla 和 c++ api

Tensorflow 提供了一种通过 XLA 运行 tensorflow 图的方法,但是它没有提到如何使用 c++ api 通过 XLA 运行 tensorflow 图。有人可以给我一些建议吗?

0 投票
1 回答
100 浏览

tensorflow - 是添加维度广播吗?

给定

以下所有内容都是等效的

并生产

我知道这是对(此处)bb对应的值的“广播bbb” 。是增加了一个维度,转化为所有广播的价值,还是别的什么?tf.add+bbbb

0 投票
0 回答
117 浏览

tensorflow - Tensorflow XLA“ComputeConstant 的操作数取决于参数。”

我正在尝试使用 XLA 通过 JIT 编译运行我的 Tensorflow 程序。我想了解它产生的编译计算图。但是,当它无法运行时,使用:

在文档中它说“如果无法编译运算符,TensorFlow 将默默地退回到正常的实现。” 那么为什么这次运行失败了呢?什么时候不能使用 XLA 编译?

作为参考,我在 OS X 上并从启用 XLA 的源代码编译了 Tensorflow r1.1。

我正在尝试编译的文件可在此处获得

0 投票
0 回答
468 浏览

tensorflow - 在启用 XLA 且没有 GPU 的情况下运行从源代码构建的 Tensorflow 时出错

我在启用 XLA 和禁用 GPU 的情况下从源代码构建并安装了 tensorflow(基本上我在通过 ./config 配置时选择了 N,除了 XLA 启用为 Y)。在构建时有很多关于不推荐使用的语法的警告。但构建成功。我能够导入 tensorflow 并在会话中运行基本打印命令。但是,当我尝试进行一些计算(例如简单的加法)时,它给了我以下错误:

2017-06-28 15:09:22.366052: F tensorflow/compiler/xla/statusor.cc:41] 尝试获取值而不是处理错误未找到:找不到平台执行器的注册计算放置器 - 检查目标链接已中止

我做了一些调试,这个错误发生在从 client/sessions.py:1262 到 pywrap_tensorflow 的调用之后:

tf_session.TF_Run(会话,选项,feed_dict,fetch_list,target_list,状态,run_metadata)

所以我相信这是因为它无法链接到 _pywrap_tensorflow_internal.so。您能否对此提供任何解决方案,或者这里有什么问题吗?这阻碍了我的进一步任务,因此感谢您提供任何帮助!

感谢和问候

0 投票
1 回答
1720 浏览

tensorflow - TFR记录读取变慢

我已将数据集划分为 10 个 tfrecords 文件,我想从每个文件中读取 100 个数据点,以创建一批 10 个 100 个数据点的序列。我使用以下函数来做到这一点。来自 tfrecords 的数据加载时间开始缓慢,然后达到大约 0.65 秒,在 100-200 sess.run 调用后增加到大约 10 秒。您能否指出任何可能有助于减少阅读时间的错误或建议?此外,我提到的行为有时会变得更加不稳定。

即使我按如下方式从单个文件中提取,我也观察到相同的行为。此外,增加 num_threads 也无济于事。

0 投票
1 回答
6928 浏览

tensorflow - 第一次 tf.session.run() 的执行与后来的运行截然不同。为什么?

这里有一个例子来说明我的意思:
First session.run():
First run of a TensorFlow session

later session.run():
TensorFlow session 的后续运行

我知道 TensorFlow 在这里进行了一些初始化,但我想知道它在源代码中的哪个位置。这发生在 CPU 和 GPU 上,但在 GPU 上效果更突出。例如,在显式 Conv2D 操作的情况下,第一次运行在 GPU 流中具有大量的 Conv2D 操作。事实上,如果我改变 Conv2D 的输入大小,它可以从几十到几百个流 Conv2D 操作。然而,在以后的运行中,GPU 流中始终只有五个 Conv2D 操作(无论输入大小如何)。在 CPU 上运行时,我们在第一次运行时保留了与以后运行相同的操作列表,但我们确实看到了相同的时间差异。

TensorFlow 源代码的哪一部分是造成这种行为的原因?GPU 操作在哪里“拆分”?

谢谢您的帮助!

0 投票
0 回答
294 浏览

security - 张量流 - XLA | 在运行时将张量传递给外部函数

我正在测试一个将某些敏感计算卸载到安全环境中的库。Tensorflow 是我和我的团队有兴趣移植的一个应用程序,特别是与 XLA 一起工作。我的团队没有成功添加执行卸载的 TF 操作。

为了让它与 XLA 一起工作,我需要通过库提供的 API 插入向该库发送和接收数据的 XLA 操作。我的理解是这些XLA ops必须添加到tensorflow/compiler/tf2xla/下TF ops到XLA ops的翻译中。我猜 ComputationBuilder 定义中列出的操作是可用的 XLA 操作,调用外部函数目前不是其中之一。

是否可以添加这样一个可以降低到 llvm 调用指令的 XLA 操作?还是可以通过其他方式?

请分享你的想法。

谢谢 !

PS:请注意,我使用 LLVM 的经验比使用 tensorflow 的经验要多。

0 投票
1 回答
588 浏览

tensorflow - 张量流 - XLA | TF ops 如何降低到 XLA 进行训练

在训练期间如何将 tensorflow 操作降低到 XLA 操作?

tensorflow/compiler/tf2xla/kernels 下的文件仅根据 ComputationBuilder 中的操作定义前向传递/推理。

这个问题与“ Tensorflow - XLA | 在运行时将张量传递给外部函数”有关,因为我需要降低到 XLA 操作的 TF 操作在训练和推理期间传递张量。也请分享您对另一个问题的看法。

谢谢

0 投票
1 回答
441 浏览

python - 虚拟批范数的两种实现导致两种不同的结果

入门问题:

两个示例代码都应该导致不同的训练行为(任何损失/任何优化器)吗?

我的真实案例场景:

我正在尝试实现虚拟批处理规范,我有两个实现方式不同,它们的行为方式受到改进的 gan repository的广泛启发。此处显示的两种实现都进行了简化,以保留它们之间的主要差异。

第一次实现:

一切似乎都正常,验证和训练准确率收敛,损失下降。

第二次实施

这里只有训练收敛(但曲线与第一次实现略有不同),而验证损失增加并且准确性保持在随机猜测。

作为细节问题,我使用的是 GPU,启用了 XLA 的 tensorflow 1.2.1。任何线索我做错了什么?

编辑:

所以我尝试比较两个输出模型,并查看梯度(使用compute_gradients),以避免权重(然后是梯度)共享我在两个不同的范围内构建模型并分别加载相同的权重(来自先前训练的模型)在这两种型号上。

如果我只使用,我有相同的输出:

但是如果我同时使用以下方法查看梯度(每个元组的第一个元素由 Optimizer.compute_gradients(loss) 返回):

突然模型输出不同了......模型输出如何仅通过查看梯度而不使用 apply_gradients 来改变?此外,它似乎没有改变权重,因为如果我正在跑步:

模型输出仍然相同......