在我的项目中,我正在训练许多小图。看到在GPU上如何完成工作,并且GPU的运行率低5%,为提高性能而同时训练许多图形是否有意义?我有点担心,因为我知道JS并不是一种真正的具有线程功能的语言。
我还有什么可以寻找的其他东西来提高训练水平吗?
答案 0 :(得分:0)
从理论上讲,在使用Tensorflow.js在GPU上进行训练时,您拥有许多需要平衡的元素:
当然,GPU的使用量很重要-最终目标是使GPU最大化,以便在时间上尽可能高效地进行训练。
如果看到GPU使用率较低,则瓶颈可能在图片的其他位置-见下文。
您注意到,JavaScript并不是真正的基于线程的语言。为此,必须注意主Javascript线程的CPU使用率。如果要用尽CPU,则可能是瓶颈。可以做一些事情来改善这种情况:
child_process.fork()
(小心在进程之间传输大量数据-这是 slow ),或者也许是threads(尽管我没有亲自尝试过。)在给定的GPU上可以并行训练的模型数量的限制因素是它们使用的内存量。大多数专用GPU使用自己的专用VRAM,这可能会非常有限。请与您的GPU制造商或操作系统提供商联系,以了解如何进行监控。
如果您的CPU和GPU都没有耗尽,则可能是带宽问题。这可以在几个地方:
很抱歉,答案很长。这是我自己的参考,也可以回答您的问题。总之,总结一下: