1 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
以下是一些可能導(dǎo)致此行為的原因
隨著數(shù)量的增加 線(xiàn)程數(shù),初始化和釋放每個(gè)線(xiàn)程會(huì)產(chǎn)生明顯的開(kāi)銷(xiāo)。我在i7 7700HQ上運(yùn)行了您的代碼,每次增加時(shí),我都會(huì)看到以下行為
n_job
當(dāng)
n_job=1
與n_job=2
每個(gè)線(xiàn)程的時(shí)間(時(shí)間由每模型GridSearchCV評(píng)價(jià)充分訓(xùn)練模型和測(cè)試)為2.9s(總時(shí)間約2分鐘)時(shí)
n_job=3
,時(shí)間為3.4s(總時(shí)間1.4分鐘)時(shí)
n_job=4
,時(shí)間為3.8S(總時(shí)間58秒)當(dāng)
n_job=5
,時(shí)間為4.2s(總時(shí)間51秒)當(dāng)
n_job=6
,時(shí)間為4.2秒(總時(shí)間約為49秒)當(dāng)
n_job=7
,時(shí)間為4.2秒(總時(shí)間約為49秒)當(dāng)
n_job=8
,時(shí)間為4.2秒(總時(shí)間約為49秒)現(xiàn)在您可以看到,每個(gè)線(xiàn)程的時(shí)間增加了,但總體時(shí)間似乎有所減少(盡管超過(guò)了
n_job=4 the different was not exactly linear) and remained constained with
n_jobs> = 6`,這是由于初始化和釋放線(xiàn)程會(huì)產(chǎn)生成本)。請(qǐng)參見(jiàn)github問(wèn)題和本期。此外,可能還有其他瓶頸,例如數(shù)據(jù)量太大,無(wú)法同時(shí)廣播到所有線(xiàn)程,線(xiàn)程在RAM上搶占(或其他資源等),如何將數(shù)據(jù)推入每個(gè)線(xiàn)程等。
我建議您閱讀有關(guān)Ahmdal定律的信息,該定律指出通過(guò)并行化可以實(shí)現(xiàn)加速的理論界限,該界限由以下公式提供:
Image Source:Ahmdal定律:Wikipedia
最后,這可能是由于數(shù)據(jù)大小以及用于訓(xùn)練的模型的復(fù)雜性所致。
這是一篇博客文章,解釋了有關(guān)多線(xiàn)程的相同問(wèn)題。
添加回答
舉報(bào)