我在读顶点AMP文献
只有Python的构建省略了:
似乎也有一个"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)。我建议等到合并后再试一试。
这部分解释了这一点。我还有更多问题要问:
内核是什么意思?图层还是优化器?
融合层的概念是否与融合优化器相同?
发布于 2019-06-14 15:28:24
https://stackoverflow.com/questions/56601075
复制相似问题