2023年7月3日发(作者:)
pytorch中神经⽹络的多线程数设置:_num_threads(N)实验室的同学⼀直都是在服务器上既⽤CPU训练神经⽹络也有使⽤GPU的,最近才发现原来在pytorch中可以通过设置 _num_threads() 来限制CPU上进⾏深度学习训练的线程数。
_num_threads() 在使⽤时的⼀个注意事项就是如果不设置则默认使⽤物理CPU核⼼数的线程进⾏训练,⽽往往默认设置是可以保证运算效率最⾼的,因此该设置线程数是需要⼩于物理CPU核⼼数的,否则会造成效率下降。
既然默认设置既可以保证最⾼的运算效率那么这个设置的意义在哪呢,这个设置的意义就是在多⼈使⽤计算资源时限制你个⼈的改应⽤的计算资源占⽤情况,否则很可能你⼀个进程跑起来开了太多的线程直接把CPU占⽤率搞到50%或者直接奔100%去了。
总的说,该设置是为了在多⼈共享计算资源的时候防⽌⼀个进程抢占过⾼CPU使⽤率的。
给⼀个⾃⼰的设置代码:(实现了pytorch的最⼤可能性的确定性可复现性,并设置训练、推理时最⼤的线程数)
# pytorch的运⾏设备device = Nonedef context_config(args): global device seed = (seed) (seed) _seed(seed) _seed(seed) _seed_all(seed) _num_threads() # 设置pytorch并⾏线程数 if _available() and >= 0: ark = False inistic = True device = ('cuda:' + str()) else: device = ('cpu')
================================
运⾏DQN2013算法,CPU运⾏,CPU为Intel 10700k, 8核⼼16线程:
默认设置:
设置20线程: _num_threads(20)
结果:发现如果线程设置过多,超过CPU的物理线程数运⾏效率不仅没有提升反⽽下降,正常默认设置即可。
===================================
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688328918a121031.html
评论列表(0条)