首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是深度学习中的融合内核(或融合层)?

什么是深度学习中的融合内核(或融合层)?
EN

Stack Overflow用户
提问于 2019-06-14 15:18:51
回答 1查看 2.7K关注 0票数 8

我在读顶点AMP文献

只有Python的构建省略了:

  • 使用apex.optimizers.FusedAdam所需的熔核。
  • 使用apex.normalization.FusedLayerNorm所需的熔核。
  • 改进了apex.parallel.SyncBatchNorm的性能和数值稳定性的融合核。
  • 提高apex.parallel.DistributedDataParallel和apex.amp性能的融合核。DistributedDataParallel、放大器和SyncBatchNorm仍然可以使用,但它们可能会慢一些。

似乎也有一个"FusedAdam“优化器

Pytorch中的Adam优化器(与所有Pytorch优化器一样)通过遍历参数来执行optimizer.step(),并为每个参数启动一系列内核。这可能需要数百个小的启动,而这些启动大多受到CPU端Python循环和内核启动开销的限制,从而导致设备利用率低下。目前,Apex中的FusedAdam实现扁平了优化步骤的参数,然后通过融合了所有Adam操作的融合内核来执行优化步骤。这样,参数上的循环以及每个参数的Adam操作的内部序列都进行了融合,因此optimizer.step()只需要启动几个内核。 当前的实现(在Apex主版中)很脆弱,只适用于放大器opt_level O2。我有一个WIP分支,可以让它适用于任何opt_level (https://github.com/NVIDIA/apex/pull/351)。我建议等到合并后再试一试。

这部分解释了这一点。我还有更多问题要问:

内核是什么意思?图层还是优化器?

融合层的概念是否与融合优化器相同?

EN

回答 1

Stack Overflow用户

发布于 2019-06-14 15:28:24

  • 这里的“内核”是用于计算内核的:与卷积一样的内核操作通常是使用计算核来实现的,以提高效率。计算内核可以使用C,CUDA,OpenCL,甚至程序集来编写,以达到最大的效率。因此,“只使用Python构建”不支持.
  • “融合”意味着计算步骤的通用化。基本上,通过将类似的操作合并到单个硬件(GPU、CPU或TPU)操作中,更有效地运行代码是一种实现技巧。因此,"fusedLayer“是一个层,其中的操作受益于”融合“实现。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56601075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档