校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解

pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解

熱門標(biāo)簽:河北防封卡電銷卡 400電話辦理哪種 開(kāi)封自動(dòng)外呼系統(tǒng)怎么收費(fèi) 電銷機(jī)器人的風(fēng)險(xiǎn) 手機(jī)網(wǎng)頁(yè)嵌入地圖標(biāo)注位置 天津電話機(jī)器人公司 開(kāi)封語(yǔ)音外呼系統(tǒng)代理商 地圖標(biāo)注線上如何操作 應(yīng)電話機(jī)器人打電話違法嗎

Q:在給Dataloader設(shè)置worker數(shù)量(num_worker)時(shí),到底設(shè)置多少合適?這個(gè)worker到底怎么工作的?

    train_loader = torch.utils.data.DataLoader(train_dataset,
                                               batch_size=batch_size, shuffle=True,
                                               num_workers=4)

參數(shù)詳解:

1、每次dataloader加載數(shù)據(jù)時(shí):dataloader一次性創(chuàng)建num_worker個(gè)worker,(也可以說(shuō)dataloader一次性創(chuàng)建num_worker個(gè)工作進(jìn)程,worker也是普通的工作進(jìn)程),并用batch_sampler將指定batch分配給指定worker,worker將它負(fù)責(zé)的batch加載進(jìn)RAM。

然后,dataloader從RAM中找本輪迭代要用的batch,如果找到了,就使用。如果沒(méi)找到,就要num_worker個(gè)worker繼續(xù)加載batch到內(nèi)存,直到dataloader在RAM中找到目標(biāo)batch。一般情況下都是能找到的,因?yàn)閎atch_sampler指定batch時(shí)當(dāng)然優(yōu)先指定本輪要用的batch。

2、num_worker設(shè)置得大,好處是尋batch速度快,因?yàn)橄乱惠喌腷atch很可能在上一輪/上上一輪...迭代時(shí)已經(jīng)加載好了。壞處是內(nèi)存開(kāi)銷大,也加重了CPU負(fù)擔(dān)(worker加載數(shù)據(jù)到RAM的進(jìn)程是CPU復(fù)制的嘛)。num_workers的經(jīng)驗(yàn)設(shè)置值是自己電腦/服務(wù)器的CPU核心數(shù),如果CPU很強(qiáng)、RAM也很充足,就可以設(shè)置得更大些。

3、如果num_worker設(shè)為0,意味著每一輪迭代時(shí),dataloader不再有自主加載數(shù)據(jù)到RAM這一步驟(因?yàn)闆](méi)有worker了),而是在RAM中找batch,找不到時(shí)再加載相應(yīng)的batch。缺點(diǎn)當(dāng)然是速度更慢。

設(shè)置大小建議:

1、Dataloader的num_worker設(shè)置多少才合適,這個(gè)問(wèn)題是很難有一個(gè)推薦的值。有以下幾個(gè)建議:

2、num_workers=0表示只有主進(jìn)程去加載batch數(shù)據(jù),這個(gè)可能會(huì)是一個(gè)瓶頸。

3、num_workers = 1表示只有一個(gè)worker進(jìn)程用來(lái)加載batch數(shù)據(jù),而主進(jìn)程是不參與數(shù)據(jù)加載的。這樣速度也會(huì)很慢。

num_workers>0 表示只有指定數(shù)量的worker進(jìn)程去加載數(shù)據(jù),主進(jìn)程不參與。增加num_works也同時(shí)會(huì)增加cpu內(nèi)存的消耗。所以num_workers的值依賴于 batch size和機(jī)器性能。

4、一般開(kāi)始是將num_workers設(shè)置為等于計(jì)算機(jī)上的CPU數(shù)量

5、最好的辦法是緩慢增加num_workers,直到訓(xùn)練速度不再提高,就停止增加num_workers的值。

補(bǔ)充:pytorch中Dataloader()中的num_workers設(shè)置問(wèn)題

如果num_workers的值大于0,要在運(yùn)行的部分放進(jìn)__main__()函數(shù)里,才不會(huì)有錯(cuò):

import numpy as np
import torch
from torch.autograd import Variable
import torch.nn.functional
import matplotlib.pyplot as plt
import torch.utils.data as Data 
 
BATCH_SIZE=5
 
x=torch.linspace(1,10,10)
y=torch.linspace(10,1,10)
torch_dataset=Data.TensorDataset(x,y)
loader=Data.DataLoader(
    dataset=torch_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=2,
) 
 
def main():
    for epoch in range(3):
        for step,(batch_x,batch_y) in enumerate(loader):
            # training....
            print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),
                  '| batch y:',batch_y.numpy()) 
 
if __name__=="__main__":
    main() 
 
'''
# 下面這樣直接運(yùn)行會(huì)報(bào)錯(cuò):
 for epoch in range(3):
     for step,(batch_x,batch_y) in enumerate(loader):
         # training....
          print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),
                  '| batch y:',batch_y.numpy()
'''

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)
  • pytorch Dataset,DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例
  • 解決Pytorch dataloader時(shí)報(bào)錯(cuò)每個(gè)tensor維度不一樣的問(wèn)題
  • pytorch中DataLoader()過(guò)程中遇到的一些問(wèn)題
  • Pytorch dataloader在加載最后一個(gè)batch時(shí)卡死的解決
  • Pytorch 如何加速Dataloader提升數(shù)據(jù)讀取速度
  • pytorch 實(shí)現(xiàn)多個(gè)Dataloader同時(shí)訓(xùn)練

標(biāo)簽:宿遷 駐馬店 常州 山東 成都 六盤水 江蘇 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解》,本文關(guān)鍵詞  pytorch,DataLoader,的,num,workers,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 蓬安县| 宽甸| 旺苍县| 左云县| 民权县| 宁陵县| 舟山市| 定边县| 施甸县| 上栗县| 肇州县| 丹寨县| 缙云县| 福安市| 湟中县| 上饶县| 武义县| 南充市| 江北区| 四子王旗| 县级市| 邵武市| 松阳县| 苏尼特左旗| 海门市| 嘉禾县| 威远县| 邵阳县| 随州市| 永城市| 海门市| 屏边| 平果县| 巴中市| 通许县| 桃江县| 桓仁| 永平县| 祥云县| 山西省| 遵义县|