疑问二:频繁数据拷贝,训练效率低 在显存足够的状况下,咱们可以间接驳回GPU形式去训练模型,但是让一切的网络层都运转在GPU上就必定最高效吗?其实GPU只对特定义务更快,而CPU长于各种复杂的逻辑运算。框架中有一些OP会自动在CPU上口头,或许有一些OP的输入会被存储在CPU上,由于这些输入往往须要在CPU上访问。这就会造成训练环节中,CPU和GPU之间存在数据拷贝。图2是CPU和GPU数据传输示用意。假定模型的两边层存在下图中的4个算子。其中算子A和算子B都在CPU口头,因此B可以间接经常使用A的输入。算子C和算子D都在GPU上口头,那么算子D也可以间接经常使用C的输入。但是算子B口头完,其输入在CPU上,在算子C口头时,就会将B的输入从CPU拷贝到GPU。 频繁的数据拷贝,也会影响模型的全体性能 。假设能把算子A和B设置在GPU上口头,或许算子C和D设置在CPU上口头,防止数据传输,或许会优化模型性能。那么应该如何愈加正当地为算子调配设施,使得训练环节愈加高效呢?咱们须要更综合地思考,在施展GPU和CPU各自计算长处的前提下,降低数据拷贝带来的期间消耗。
© 版权声明