SATAディスクからWebdatasetでデータをロードするときのスループットを確認する

  • 概要

  • 巷ではこれまでの画像生成DNNを超える品質と多様なタスクをこなすことができるStable Diffusion系DNNが話題だが、個人的にはそれに使われている超大規模データセットLAIONのほうにとりあえず興味がある.
  • LAION-400MをDNN学習に役立てられないかということで、先週からDLしているのだが、十数TBもの規模のデータは最大20MB/s程度の弊回線では荷が重く、1, 2ヶ月かかる勢いである.
  • 今回は、DLしたデータの一部を使い、学習時にデータをロードする際、HDDがボトルネックになりそうかどうかをチェックした.
  • その結果、今のところ想定する環境ではHDDからの読み込み速度はボトルネックにならない(SSDなみ)ことがわかった.
  • 詳細は以下の通り.

 

  • 測定結果一覧

 

ディスク種 SSD SATA 6Gbps x4
バッチサイズ [image] 64 128 64 128
ワーカー数 読み込み所要時間[s]
2 53.36 52.20 54.24 52.77
4 36.21 35.86 36.47 35.90
8 19.50 19.72 19.66 19.48

 

  • 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への変換のみ.