前提:我有很多图片要经过 4 个训练好的模型的测试,然后得出四个结果。
之前是单个进程跑在一个 gpu 上的,跑完一个模型再加载另外一个。
需求:我想要加速这个测试流程,目前想了两个办法,1 并行多进程,2 预加载模型
实现:今天把第一种实现了,我有了 4 个 gpu,我就开了四个进程,每个进程在一格 gpu 上跑一个模型。
问题:但是奇怪的是最后总时间居然和之前差不多。。。我看每张图片的处理速度变慢了。。。
这是为啥
提问人:zhangyichent, 2018-10-18 17:14:55
你可以共享参数直接将四个 train 分配到四个 gpu 上就行,理论上会变快。。。
ViolinSolo 发表于 2018-10-25 14:31:37
是不是数据在不同的设备上复制耽误了时间?
还有流水线不会降低延迟只能增加吞吐。
舟 3332 发表于 2018-11-5 18:03:06
我在创建会话的时候就指定了 gpu 的,还会有数据在不同的设备上复制吗?不太懂。就是设置 gpu_options.visible_device_list 那里我每个进程都设置的不一样。。大佬你最后那句话我就没明白。。。。能否仔细说一下,流水线是说的我开始一个进程一个一个模型执行的意思么
zhangyichent 发表于 2018-11-5 18:34:47