gpt4 book ai didi

python-3.x - 从面向 Graphcore IPU 的 TensorFlow 程序转储 XLA 图时,哪些转储文件包含该图,名称是什么意思?

转载 作者:行者123 更新时间:2023-12-03 20:25:47 27 4
gpt4 key购买 nike

我有一个 TensorFlow 模型,它被编译为 XLA,用于一些 Graphcore IPU。出于调试目的,我试图将 XLA 图转储到 .dot 文件中,以便在我的浏览器中将其可视化。

为此,我使用以下标志:


--xla_dump_to=/mnt/data/perf_prof_5/xla_dump --xla_dump_hlo_as_dot --xla_dump_hlo_pass_re=forward-allocation --xla_hlo_graph_sharding_color


但是,我得到了多个输出文件,我不确定哪一个是正确的。它们的名称和编号也因我是否编译图形而异(使用 ipu.compile 指令)。

哪个文件包含图表,名称是什么意思?

最佳答案

XLA 转储是 TensorFlow 原生功能。它为每个图转储一个文件。生成的图表数量取决于生成的 TensorFlow 到 XLA 到 HLO 模块的数量。这一般可以从sess.run的数量来预测。调用您制作的不同图表。例如,如果您的程序包含变量初始化,那么该初始化将被编译为单独的 XLA 图,并在转储时显示为单独的图。如果您的程序创建了一个报告操作,那么它也将被编译为一个单独的 XLA 图。

通常,ipu_compiler.compile强制编译成单个 XLA 图。如果你不使用 ipu_compiler.compile , native XLA 调度程序将在其认为合适的时候组合或拆分 TensorFlow 图的各个部分,创建许多 XLA 图 - 这就是为什么在不使用 ipu_compiler.compile 时会看到更多图被转储的原因。 .

注意 :不能保证您编译的操作只会生成一个 XLA 图。有时,其他人会被制造出来,例如用于类型转换。

至于命名,可以分解如下:
module_XXXX.YYYY.IPU.after_allocation-finder.before_forward-allocation.dot
我们总是有一个 module_ 前缀,这只是为了表明这是一个 HLO 模块的图。

第一个 XXXX 是 HLO 模块的唯一 ID。不能保证 ID 之间的间距,只是它们是唯一的并且是递增的。

要理解名称的其余部分 - YYYY.IPU.......dot - 我们需要了解 XLA 图由多个不同的 HLO channel 操作,每个 channel 通过优化、改组或以其他方式重写 XLA 图来修改它.在这些通过之后,该图然后降低到杨树。有一些 TensorFlow 原生的 HLO 通行证,还有一些 IPU 特定的通行证。转储 XLA 图时,我们可以通过提供参数 -- xla_dump_hlo_pass_re=XXX 在任何 HLO 传递之前和之后渲染 XLA 图(例如,查看传递对图的影响)。 ,其中 XXX 是正则表达式,描述了您想要的通行证。然后,TensorFlow 将在每次匹配该正则表达式(按其名称)之前和之后渲染 XLA 图。例如,如果您想查看涉及 while 循环的每个 XLA HLO IPU 传递的效果,您可以使用 xla_dump_hlo_pass_re=*While* .最后,数字 YYYY 是与生成这些图的顺序相关的 ID,并且在呈现图时,图“介于”之间的 channel 被附加到文件名中。
如果转储 XLA,则始终呈现“before_optimizations”图。

不幸的是,没有正式的方法可以知道哪个 XLA 图是您的主程序,因为唯一 id 有点随意,每个 XLA 图内容的重要性是用户的默认知识。可能最接近的近似值可能是文件或视觉尺寸 - 主程序 XLA 图形应该比其他图形大得多。作为一种粗略的方式,您可以在主图中包含一个非常具体的操作并在 XLA 图中搜索它。

关于python-3.x - 从面向 Graphcore IPU 的 TensorFlow 程序转储 XLA 图时,哪些转储文件包含该图,名称是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61504515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com