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への変換のみ.
RTX3090リグをAMD EPYCプラットフォームに換装する(ベンチマーク編)
- OSやライブラリ等のセットアップはネット上に公式含めいくらでもあるので省略することにしたが、いくつか気になった点についてはベンチマーク結果に行く前にここについでに記しておく.
- ベースシステムはこちら. GPUはRTX3090 を4台.
- セットアップ時に気になった点についてのメモ
- ベンチマーク結果
- CPUのみ
- CPUは概ね期待通りの性能になっており、全コア使用率100%でも温度は80度を超えることはほぼなく安定している.
- GPUメインの処理でも、CPUはその使用率から考えればまずボトルネックにはなっていないと言える.
- マルチGPU性能もほぼ期待通り.
- Object Detectionタスクでの4GPU構成でパフォーマンスが落ちているのが若干気になるが、バグというか不具合ではなさそう.
- メモリ使用量は記録を取るのを失念してしまったが、少なくともGPUメインのタスクでは最大でも60GB程度だったと思う.
- とりあえずこれでひと通り作業は完了
RTX3090リグをAMD EPYCプラットフォームに換装する(組み立て編その2)
- 前回は電子部品の構成を中心に述べた.
- 今回はそれらをリグフレームに組み込み、全体を(物理的に)完成させるところまで述べたい.
- 実は部品としてはマイニングに用いていたときとほぼ同じであり、去年の時点で揃っていた.
- が、本来の用途を考えたときのリグフレームの構造、特に段組みやファン配置など中身がかなり異なるため、結局ほとんどバラして組み替えることになった.
- GPUとしてブロワーファンのA5000やA6000が使えるならリグフレームの構造とか面倒なことを(比較的)考えなくても良いのだが、コストの関係上RTX3090にせざるを得ないため、やむなくリグフレームの方で対応することになった.
方針
- 要求仕様
- 上記のような仕様の一般的なPCケースが見当たらないため、スチールラック部品での自作とする.
設計
- ざっくりだが、基本構造は下図のようになった.
- ラックの外形としては、幅600高さ450奥行き450[mm]とした.
- GPU固定金具から、下方のマザーボード設置台までは最短(垂直)距離で200とし、ライザーケーブルもこの距離をカバーするものを用意した.
- 200でないと横置きするPSUとの間隔が非常に狭くなるのでこれ以上下げたくなかった.
- 今回はPCIeブラケットとスロットの2箇所のみに荷重が掛かることをかなり重視したので、この金具の構造が全体を決めたと言っても過言ではない.
- 空冷ファン取り付けのため、フレームはバカ穴が一定間隔で開いているものにした.
- パーツリストは次の通り*2
組み立て
- 文字より写真の方が想像しやすいと思うので完成時の様子をまず示す.
- リグフレームの構築
- リグフレームを前述の仕様に沿って組む
- GPU固定金具を4セット(=GPU台数分)作る
- ライザーケーブルをGPU固定金具に固定する
- ライザーケーブルつきGPU固定金具をフレームの所定の位置にフラットバーと共じめする.
- 下にこれらの部材を設置した時の写真を示す. 右下は同じものを真上から撮った写真である.
-
- このPCIeブラケットは、市販のPCケースの水平PCIeブラケットに固定するためのネジ穴が側面に開いており、それを利用してLアングルと締結する.
- そして、写真のようにPCIeブラケット+Lアングルをフラットバーの上にくるようにフレームに固定すると、なかなかいい感じの強度になる.
- ただ、構造上、PCIeブラケットの底面とフラットバーの間に隙間が開いてしまうので、写真で炭のようなブロックがこの隙間に入っているのが見えると思うが、今回は家に転がっていた10mmのゴム板をスペーサーとすることでぐらつきを防止した.
- 空冷ファンを取り付ける
-
-
- 後から気づいたのだが、偶然にも、140mmファンがGPU間スペースと理想的にフィットするようにな配置で取り付けられた.
-
- 以上で完成
RTX3090リグをAMD EPYCプラットフォームに換装する(組み立て編その1)
- RTX3090x4台をEPYCプラットフォームへ載せ替えたので記録していこうと思う.
- パーツはほぼ予定通り先週末に揃ったのだが、リグフレームの組み替え、OSの調整、そもそも作業時間が取れないなどで全体を組み上げるのに時間がかかってしまった.
- 本稿ではマザーボードへの組み付けと動作確認の一部についてのみ述べ、リグフレームと、性能確認のためのベンチマークについては次の回以降にまとめることにする.
パーツの調達について
- 基本動作のためのパーツリストは前回に載せた通り. 気になったパーツについて少し述べたい.
- CPU: AMD EPYC 7443P
- M/B: Supermicro H12SSL-i
- これ以外のパーツについては特に変わったところは無かったので省略する.
組み立て
- 作業自体はThreadripperと全く同じであり、公式オンラインマニュアルを参考にすれば特に引っかかったりすることはないと思う.
- ただ、Threadripperと違ってEPYCにはCPUをソケットに固定するためのトルクドライバが付属しないので、もっていない場合は買う必要がある.
- 流れ
- 完成
- 動作確認
- とりあえずUbuntu 20.04 LTSを入れてみた
-
- 動作は正常のよう.
-
- 温度も概ね良好だが、SSDは温度センサーがないのか温度が読み取れず.
次の作業
- 下記のように、リグフレームに組み込んで電源の配線やらを行うわけだが、これはリグフレームの構造とともに次回に述べる.
RTX3090リグをAMD EPYCプラットフォームに換装する(計画編)
- 背景
- パーツリスト
- シングルソケット24C, 48T, 256GBメモリ.
- 1GPUあたり10スレッドもあればCPU処理がボトルネックになることはほぼないのではないかという期待.
- デュアルCPUあるいはより多いコア数を必要とするような純粋にCPUだけを使う重い処理はたぶん少なくとも5, 6年は無いと思うし、必要になったときにまた考えればよい.
- ということでCPUクーラーも小さめの空冷にした. Noctua によると冷却は問題ないらしい. あとはこれも参考にした.
- メモリも多分使い切ることはないだろうが、念の為モジュールを64GBにして4スロットを開けることにした. Supermicroによると、8スロットを全て埋めた方がパフォーマンスは良いとのことだが、4と8ではそれほど変わらないのではないかと思っている.
- 一つだけ桁が違う価格のパーツがあるが、まさにこれが昨年からOut of Stock および価格高騰によって私を悩ませた元凶である.
- 別にAMDにこだわりは無いが、Xeonも同水準であればそれほど価格に違いはないし*3、なによりPCIeレーンの充実と電力効率が圧倒的に優れているので今回はEPYCにした.
- 電源は使い回し*5、それ以外は4月末の価格であることに注意.
- CPU以外は比較的入手性がよく、国内のショップから入手できる.
- その他
- 組み付けるためのフレームは改装完了後にまとめる.
- 来週には完成すると思うので性能等はそのときにレポートしたい.
RTX3090のマイニング設定のチューニング
- リグの電源の配線を調整*1したのだが、そのときついでにminerのオプションをいじってみたところ通常より若干高いハッシュレートおよび高効率になったのでここに記録しておく.
-
-
- 画像左はこれまで、右は今回における各ステータスを示す.
-
- 以前ネットで探索したときには、最適な設定として、コアクロック-300〜-200、メモリクロック+900〜+1200といったパラメータを多くみかけたので、この範囲または少し前後するくらいのパラメータしか試してなかった.
- 実際、これまでの記事にあるとおり十分なハッシュレートが出ていたので満足していたが、メモリクロックはまだ上げる余地があることがわかった*2.
- 以前、1300を超えるメモリクロックを試したときは逆にレートが下がった気がするので(はっきり覚えていないのだが)、もしかするとサーマルパッド交換によって特性が良くなったのかもしれない.
- さらに上げてもいいのだが、リグの内側にあるGPUの温度は上がる傾向になっており、これ以上の温度上昇で不安定化するのは避けたい*3のでここまでにする.
- 室温22℃湿度20%未満の環境でこれなので、5月以降はより抑えた設定にする必要がありそう.
*1:分岐ブレーカーごとに実測消費電力が1000w以下になるようにした. 電源周りの話は改めて別の回にまとめたい.
*2:ただしハッシュレートの限界値や最適設定値はメーカーによって異なるので MSI GeForce RTX 3090 GAMING X TRIO 24G 独自の特性かもしれない
*3:その都度細かいパラメータ調整に時間を取られたくない
GPU周辺環境の違いとハッシュレートの関係
- 先日RTX3090のサーマルパッド交換を行なったが、メモリ温度はサーマルスロットリングが生じていない通常の水準以下になっているにもかかわらず、ハッシュレートが明らかに通常レベルを下回っていたことが気になり、少し調べてみた.
- 主にGPU設置場所と周辺温度の変化に対してハッシュレートがどのように変わるかを記録し、次のようにハッシュレートについて昇順にした表にまとめた.
-
- 記録日時はこの4例で全て別々.
- Miner およびオプションは全て共通.(前回のものと同じ)
- テストベンチとリグともにそれぞれほぼ隣り合った固定の場所に設置してあり、記録時には動かしていない.
- テストベンチはファン無し、リグは常時稼働の140mmファンあり.