簡體   English   中英

DataLoader num_workers vs torch.set_num_threads

[英]DataLoader num_workers vs torch.set_num_threads

這兩個選項之間發生的並行化之間有區別嗎? 我假設num_workers只關心數據加載的並行化。 但是一般來說是否設置torch.set_num_threads用於訓練? 試圖了解這些選項之間的區別。 謝謝!

DataLoader 的num_workers指定用於加載數據和運行所有轉換的並行工作線程數。 如果您正在加載大型圖像或進行昂貴的轉換,那么您可能會遇到 GPU 處理數據速度快而 DataLoader 太慢而無法連續提供給 GPU 的情況。 在這種情況下,設置更多的工人會有所幫助。 我通常會增加這個數字,直到我的 epoch 步驟足夠快。 另外,一個小提示:如果您使用 docker,通常您希望將 shm 設置為 1X 到 2X 的 GB 工人數,以用於 ImageNet 等大型數據集。

torch.set_num_threads指定用於並行化 CPU 綁定張量操作的線程數。 如果您在大多數張量運算中使用 GPU,那么此設置就沒有太大關系。 但是,如果您有保持在 cpu 上的張量並且您正在對它們進行大量操作,那么您可能會從設置中受益。 不幸的是,Pytorch 文檔沒有指定哪些操作將從中受益,因此請查看您的 CPU 利用率並調整此數字,直到您可以將其最大化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM