国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工

发布时间:2019/09/17标签:   张量    点击量:

原标题:超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工
呆板进修中,有一个限度速率的环节,那就是从 CPU 到 GPU 之间的张量迁徙。许多盘算只能在 CPU 长进行,而后迁徙到 GPU 停止后续的练习任务,因而迁徙中假如速率太慢,则会连累全部模子的练习效力。克日,有一名开辟者开源了针对 PyTorch 的 CPU->GPU 迁徙东西,比拟原版减速了 110 倍之多。神经收集的练习中每每须要停止许多环节的减速,这就是为甚么咱们逐步应用 GPU 替换 CPU、应用种种百般的算法来减速呆板进修进程。然而,在许多情形下,GPU 并不能实现 CPU 停止的许多操纵。比方练习词嵌入时,盘算是在 CPU 长进行的,而后须要将练习好的词嵌入转移到 GPU 长进行练习。在这一进程中,张量迁徙能够会变得十分迟缓,这成为了呆板进修练习的一个瓶颈。面临如许的成绩,在许多优化方式中,就是将操纵尽能够放在 GPU 上(如间接在 GPU 长进行数据预处置、词嵌入等的操纵),并尽力增加二者之间的数据交互,由于这些环节都很费时。呆板之心就曾报导过如许的一个教程,将数据预处置放在了 GPU 上,增加了很多时光。以上事例阐明,假如可能做好 CPU 和 GPU 之间的迁徙,则能够关心开辟者更好地优化呆板进修模子,使 CPU、GPU 等硬件更好地实现本人的任务。克日,有一名开辟者就开源了一个名为 SpeedTorch 的东西。这一东西库能够完成高达 110 倍的 CPU 到 GPU 迁徙减速。名目地点:https://github.com/Santosh-Gupta/SpeedTorch名目配景作者表现,最后想要创立 SpeedTorch 库是为了关心练习大批的嵌入向量,而 GPU 在 RAM 保留这些嵌入时能够有艰苦。为懂得决这个成绩,他发觉在 CPU 上托管一些此类嵌入有助于在 GPU 上保留它们。嵌入体系采纳稀少练习,只要一局部参数参加前馈/更新操纵,残余参数处于闲置状况。以是作者想到,为甚么不在练习的进程中封闭这些闲置参数呢?这就须要疾速的 CPU→GPU 数据迁徙才能。跟着 CPU→GPU 迁徙速率的放慢,除了减速了 CPU 到 GPU 的张量转移外,开辟者还能够完成许多新的功效。 将 SpeedTorch 库嵌入数据管道中,完成 CPU 和 GPU 之间疾速的双向数据交互; 经过 CPU 存储将模子的练习参数增添近两倍(闲置参数保留在 CPU 中,须要更新时再挪动到 GPU 里,因而能够扩展模子团体的参数目); 在练习稀少嵌入向量中采纳 Adadelta、Adamax、RMSprop、Rprop、ASGD、AdamW 和 Adam 优化器。之前只要 SpraseAdam、Adagrad 和 SGD 合适稀少嵌入练习。那末,可能完成如斯惊人的减速的库是怎样完成的呢?SpeedTorch背地的技巧SpeedTorch 如斯之快的技巧是由于它是基于 Cupy 开辟的。CuPy 是一个借助 CUDA GPU 库在英伟达 GPU 上完成 Numpy 数组的库。基于 Numpy 数组的完成,GPU 本身存在的多个 CUDA 中心能够促进更好的并行减速。

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号