首頁>Club>
11
回覆列表
  • 1 # 使用者6587718501976

    遇見這樣的問題,首先要看瓶頸在哪裡,看是CPU、GPU還是硬碟。

    DataLoader 瓶頸(CPU和硬碟的瓶頸)

    根據你的描述,8個執行緒去讀,CPU佔用率只有10%,除非你有40核80執行緒,不然CPU是沒有到瓶頸的,因為在80執行緒的情況下,8個程序跑滿才能到10%。這種情況下應該猜測是否是硬碟限制了圖片讀取速度。

    檢測方法:取所有 CPU 空跑 dataloader,測速,程式碼如下:

    如果CPU能跑到100%,說明硬碟沒毛病,CPU瓶頸,可以檢查dataset裡面是否有耗時長的預處理程式碼,當然也可以買更好的CPU來解決這個問題。如果CPU跑不到100%,那麼就是硬碟瓶頸,你需要換一個更快的SSD。一般來說使用NVME的SSD就已經夠用了。(除了 num_workers 以外,還可以試試 pin_memory)

    GPU 瓶頸(GPU算力、頻寬瓶頸)

    如果這個速度遠大於實際訓練時的速度,那麼瓶頸就在GPU上了。如果GPU利用率是100%,這說明可能是GPU算力的瓶頸,比如使用1060去跑VGG就可能卡算力。瓶頸如果在顯示卡算力上,除非買更好的GPU,不然法提高CPU利用率。

    還有一種可能就是GPU利用率忽上忽下,一會100%,一會0%,這種情況一般是GPU頻寬不夠,比如主機板PCIE插槽速度不是x16的,或者多卡訓練的時候沒有使用ring allreduce去同步梯度。我一般喜歡用horovod去做多卡訓練。

  • 中秋節和大豐收的關聯?
  • 在家自制臭鱖魚怎麼做如何做好吃?