imagenet 資料集讀取資料速度記錄
技術標籤:神經網路技術
電腦配置是固態硬碟,i7cpu,不進行計算,只讀資料,不做資料增廣,只做resize
目錄:
1,最初級版
1,最初級版
DataLoader(train_dataset, batch_size=16, shuffle=True,
num_workers=0, pin_memory=True, drop_last=True, )
2020-12-23 11:20:06
0
2020-12-23 11:21:53
10000
讀取了一萬張圖片花費時間107秒,採用的程式是最直接的pytorch的data loader結構,
全部圖片大約130W張,讀取全部資料預計花費13000秒,除以3600即是3.61小時。
將batch size從16變為256看是否有關係?
DataLoader(train_dataset, batch_size=256, shuffle=True,
num_workers=0, pin_memory=True, drop_last=True, )
2020-12-23 11:26:53
0
2020-12-23 11:28:40
10240
也是107秒,沒任何關係
worker數量調為4
2020-12-23 11:30:30
0
2020-12-23 11:31:14
10240
花費44秒,全部讀完 130W /10000 *44 /3600=1.59小時
速度大約快了一倍
worker 8
2020-12-23 11:36:04
0
2020-12-23 11:36:45
10240
41秒,沒怎麼快 1.48 小時
感覺那個key每次生成一個keylist會很慢,將其加到記憶體試試
self.keys=list(self.truth.keys()) def __len__(self): return len(self.keys) # 返回的box為xmin,ymin,xmax,ymax絕對座標,影象為未白化的float32影象 def __getitem__(self, index): img_path = self.keys[index]
train_loader = DataLoader(train_dataset, batch_size=256, shuffle=True,
num_workers=4, pin_memory=True, drop_last=True, )
2020-12-23 11:45:51
0
2020-12-23 11:46:11
10240
花費20秒,這個讀全部圖片大約花費54分鐘
3,這一次使用lmdb來加速
train_loader = DataLoader(train_dataset, batch_size=256, shuffle=True,
num_workers=0, pin_memory=True, drop_last=True, )
2020-12-23 14:46:37
0
2020-12-23 14:47:19
10240
花費40秒,大約1.48小時讀完
workers調成4報錯。。但是就算調成4的話,快一倍多一點,也就是小於但接近20秒,似乎提升不大。
改進
看教程https://www.cnblogs.com/jiangkejie/p/13192518.html
似乎要修改下,修改後
2020-12-23 14:58:15
0
2020-12-23 14:58:59
10240
沒啥卵用啊,44秒,還慢了。而且workers 4就報錯。
再改進
2020-12-23 15:04:22
env
env
env
env
0
2020-12-23 15:04:37
10240
把env放到類的外面,變成全域性變數,就可以4worker了,速度為15秒,快了一丟丟。
2020-12-23 15:11:24
10240
2020-12-23 15:11:35
20480
2020-12-23 15:11:50
30720
129024
2020-12-23 15:13:49
15*320/3600 =0.54 這次大約半小時就可以讀完全部資料。就這樣吧
2020-12-23 15:21:04
env
env
env
env
0
2020-12-23 15:21:20
10240
2020-12-23 15:21:32
20480
2020-12-23 15:21:59
43008
殘差網路訓練了118個epoch,因此我們需要訓練至少118*0.5小時,也即是59小時。
放棄!