问题标签 [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 投票
0 回答
47 浏览

tensorflow - 在 TF 中进行批处理时回溯

我有一个模型,我想计算它的梯度 wrt 输入。计算需要内存,因此我想将它分成批次。

由于我关心计算时间,我想将所有内容都包装在tf.function.

这是我会做的一个例子:

如果您运行此代码,您会发现它会在 XLA 编译期间导致回溯,并严重影响性能:

WARNING:tensorflow:5 次调用 <function model at 0x7f945279b9d8> 中的 5 次触发了 tf.function 回溯。跟踪是昂贵的,过多的跟踪可能是由于(1)在循环中重复创建 @tf.function,(2)传递不同形状的张量,(3)传递 Python 对象而不是张量。对于 (1),请在循环之外定义您的 @tf.function。对于 (2),@tf.function 具有 Experimental_relax_shapes=True 选项,可以放宽可以避免不必要的回溯的参数形状。对于(3),更多细节请参考https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_argshttps://www.tensorflow.org/api_docs/python/tf/function

我不明白为什么要在这里进行回溯。遵循警告中提到的几点:1)。我没有tf.function在循环中定义(尽管我在循环中运行它)。2)。输入张量的形状总是相同的,因此我相信编译应该只发生一次。3)。我不使用普通的 Python 对象。

我在这里缺少什么细微差别?如何使这个例子工作?

在进行实验时,我注意到我可以通过将单个批次包装log_prob = compiled_model(batch)成一个琐碎tf.map_fn的内容来消除警告消息,但与非批处理版本的计算相比,我仍然观察到性能下降很大。

0 投票
2 回答
95 浏览

tensorflow - 如何只安装 XLA?

我想使用 XLA 作为我项目的后端。有没有推荐的方法来独立安装它(没有 TensorFlow 的其余部分)。Jax 可能会这样做,但在他们的存储库中查看它并不明显。

更新我为此向TensorFlow提出了一张票

0 投票
1 回答
73 浏览

python-3.x - TF2 IteratorGetNext 中的 XLA:不支持的操作错误

我正在尝试使用 XLA 简单地运行 .pb tensorflow 2 模型。但是,我收到以下错误:

该错误与模型无关,并且在我训练后直接应用模型时也会发生。我认为,我在做一些根本错误的事情,或者 TF2 没有正确支持 XLA。没有运行 TF XLA 的相同代码。有谁知道如何解决这个问题?

我在 Ubuntu 18.04 中使用蟒蛇中的 python 3.8 和 TF 2.4.1 我的代码:

完整的错误:

0 投票
0 回答
40 浏览

tensorflow - 带有 XLA 的 TensorFlow 没有充分利用 CPU 容量

我创建了一个在 Tensorflow 2.5 中实现的 Monte-Carlo 模拟模型。该模型主要由 a 内的向量乘法组成tf.while_loop。我正在对具有 8 个虚拟 CPU 的 Linux 机器上的性能进行基准测试。当我在图形模式下运行模型(没有 XLA 优化)时,模型充分利用了所有 8 个 CPU(使用命令我可以看到 %CPU 接近 800% top)。但是,当我在使用 XLA 编译后运行模型时(通过使用jit_compile=True内部@tf.function装饰器),我可以看到 %CPU 利用率接近 250%。有没有办法强制 TensorFlow 使用 XLA 的所有可用 CPU 容量。

我已经尝试过更改inter_op_parallelismintra_op_parallelism设置。虽然将两个线程设置都设置为 1 会将 CPU 利用率从 250% 降低到 100%,但将它们增加到 8 不会将利用率提高到 250% 以上。

关于可能发生的事情的任何帮助和建议?

0 投票
0 回答
67 浏览

tensorflow - 与 while_loop 和 xla 一起使用时,Tensorflow 梯度计算很慢

我已经使用 Tensorflow 构建了一个 Monte-Carlo 模拟模型,该模型tf.while_loop用于执行迭代,我对使用tf.gradients. 该模型采用四个输入参数,因此tf.gradients返回四个偏导数(每个参数一个)。我正在尝试对tf.gradients计算衍生品的性能进行基准测试,但我的速度明显放缓。原始函数运行tf.gradients大约需要 0.03 秒,而计算导数大约需要 0.45 秒(15 倍减速)。我的期望是使用自动微分的梯度计算应该快得多。tf.gradients底层图表何时有问题tf.while_loop

我正在使用带有 XLA 的 Tensorflow 2.5。

0 投票
0 回答
29 浏览

c++ - 如何使用 TensorFlow 构建安装 XLA C++ API?

如果我想使用 XLA C++ API,我应该如何安装 TensorFlow?一旦我安装了它,我应该如何链接它以在我自己的代码中使用。我看到的唯一提示来自他们拥有的文档

0 投票
0 回答
127 浏览

tensorflow - 在 tensorflow 1.15 中,使用显式 XLA 编译和 Auto-clustering 有什么区别?

我正在尝试学习如何将 XLA 用于我的模型。我在这里查看官方文档:https ://www.tensorflow.org/xla#enable_xla_for_tensorflow_models 。据记载,有两种方法可以启用 XLA: 1) 显式编译,通过使用@tf.function(jit_compile=True)来装饰您的训练函数。2)通过设置环境变量进行自动集群。

因为我使用的是 tensorflow 1.15,而不是 2.x。所以我认为第二种方法与使用此语句相同:

您还可以从这里找到信息:https ://www.tensorflow.org/xla/tutorials/autoclustering_xla 。看来这是他们在 tf2.x 中使用的:

我认为它们是相同的,如果我错了,请纠正我。

好的,所以如果使用第一种方法,我认为在 tf1.15 中,这相当于使用

所以,我的问题是我是否习惯于 tf.xla.experimental.compile(computation)装饰我的整个训练功能。这是否等同于使用

? 有人知道吗?非常感激。

0 投票
0 回答
361 浏览

python - TensorFlow 无法使用 jit compile 运行(XLA 加速)

平台:Windows 10
版本:TensorFlow-gpu 2.5、CUDA 11.2/11.1/11.0、cuDNN 8.1.0/8.1.1、Python 3.8
(我试过上面列出的不同版本的CUDA和cuDNN,每次安装新版本时,我总是卸载以前版本的所有组件,以防止由于多个版本而出现问题)

运行以下代码时:

我得到:

True
True
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

我也确信它在GPU加速下运行成功没有问题
(其实我从2.5发布就一直在使用这个,而在这个发布之前,我曾经使用2.1,并且运行没有问题)。

但是,例如,当我尝试使用XLA 加速时,代码如下:

脚本无法运行并显示以下错误消息:

ptxas 在将 ptx 编译到 sass 期间返回错误:'Internal: ptxas exited with non-zero error code -1, output:' 如果错误消息表明无法写入文件,请验证是否提供了足够的文件系统空间。

我很确定有足够的空间(大约还剩 150GB,希望就足够了)

完整的日志消息如下:

53]成功打开动态库cudnn64_8.dll 2021-08-27 13:57:54.628215:I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871]添加可见gpu设备:0 2021-08-27 13:57: 54.628479:I tensorflow/core/platform/cpu_feature_guard.cc:142] 此 TensorFlow 二进制文件使用 oneAPI 深度神经网络库 (oneDNN) 进行了优化,可在性能关键操作中使用以下 CPU 指令:AVX AVX2 要在其他操作中启用它们,使用适当的编译器标志重建 TensorFlow。2021-08-27 13:57:54.628963: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] 找到具有属性的设备 0:pciBusID:0000:01:00.0 名称:NVIDIA GeForce GTX 1660 Ti 计算能力:7.5 coreClock :1.59GHz coreCount:24 deviceMemorySize:6.00GiB deviceMemoryBandwidth:268.26GiB/s 2021-08-27 13:57:54.629231:169] XLA 服务 0x15d04eef0c0 为平台 CUDA 初始化(这不保证会使用 XLA)。设备:2021-08-27 13:57:55.174743:I tensorflow/compiler/xla/service/service.cc:177] StreamExecutor 设备 (0):NVIDIA GeForce GTX 1660 Ti,计算能力 7.5 2021-08-27 13: 57:55.254238:F tensorflow/compiler/xla/service/gpu/nvptx_compiler.cc:472] ptxas 在将 ptx 编译为 sass 期间返回错误:'内部:ptxas 以非零错误代码 -1 退出,输出:'如果错误消息表明无法写入文件,请验证是否提供了足够的文件系统空间。

进程以退出代码 -1073740791 (0xC0000409) 结束

0 投票
0 回答
18 浏览

python - XLA runnign 不使用它

1.14.0我有python的 tensorflow3.6.8我在 CPU 上运行我的代码并获得以下输出:

我无法调试任何东西,因为它挂起运行。我已经在几台只有 CPU 的本地机器上运行了相同的代码,并且它可以工作。

0 投票
0 回答
82 浏览

python - 在滥用设置中使用 tf.function 时出现罕见错误

我已经编写了一个框架,它以抽象的方式连接不同的(相当复杂的)线性运算符。它覆盖运算符“+、*、@、-”并选择通过函数组合图的路径。至少可以说调试并不容易,但是控制流不依赖于数据本身,当然任何操作都是用 tensorflow 完成的。我希望使用 tf.function 来编译它并通过 XLA 获得(希望更快) tf.function。但是我收到以下错误:

我没有在任何地方使用 tf.init_scope 并且有 8 个(!)关于这个错误的谷歌结果 - 虽然它们都没有为我提供如何调试它的任何线索。

不用说,没有 tf.function 也可以。有没有人偶然发现错误并可以帮助我更好地理解它?还是我尝试的孔设置不适合 tensorflow ?

编辑:

错误是由局部 lambda 隐式捕获线性运算符类中的常量张量引起的。老实说,错误消息暗示了类似的内容,但是很难理解代码中的哪一行导致它,并且最终找到错误并不容易。