SATAディスクからWebdatasetでデータをロードするときのスループットを確認する
-
概要
- 巷ではこれまでの画像生成DNNを超える品質と多様なタスクをこなすことができるStable Diffusion系DNNが話題だが、個人的にはそれに使われている超大規模データセットLAIONのほうにとりあえず興味がある.
- LAION-400MをDNN学習に役立てられないかということで、先週からDLしているのだが、十数TBもの規模のデータは最大20MB/s程度の弊回線では荷が重く、1, 2ヶ月かかる勢いである.
- 今回は、DLしたデータの一部を使い、学習時にデータをロードする際、HDDがボトルネックになりそうかどうかをチェックした.
- その結果、今のところ想定する環境ではHDDからの読み込み速度はボトルネックにならない(SSDなみ)ことがわかった.
- 詳細は以下の通り.
-
測定結果一覧
- SSDおよびHDDともに、バッチサイズとワーカー数の変動に対して同じように読み込みが変化しており、デバイス間の実効スループットはほぼ同じと言える.
- バッチサイズの増減は読み出し速度にほぼ影響しないが、ワーカー数は多くとった方がパフォーマンスは向上する.
- 実験では、SSD(NVMe, PCIe4.0x4) 一台 と HDD(SATA 6Gbps)四台の2種のストレージにおいて、バッチサイズおよびワーカー数を変えた時の webdatasetの読み込みの所要時間を測定した.
- ハードウェア
- SSD: Crucial CT1000P5PSSD8
- HDD: Western Digital WD80EAZZ
- SSDの方は普通にフォーマットしてマウントしただけだが、HDDの方はLVMのストライピングを4にして4デバイス同時に読み書きできるようにしてある.
- CPU等その他は過去のRTX3090リグのページを参照.
- 所要時間は、所定のバッチサイズで総数12000のデータをすべて読み出すのにかかる時間を表す.
- ストレージからメモリに読み出す処理のみ行い、GPU等学習に用いるデバイスへの転送は行っていない.
- Transformはリサイズと標準化、tensorへの変換のみ.