グラフィックボード

DFガチ勢が教えるグラボの選び方

 今回はグラフィックボード(以下グラボ)の選び方についてDFガチ勢の独自の目線で解説していきます。初めての記事ですのでお手柔らかにお願いします。

 機械学習において演算処理は主にGPUで行われるためグラボ選びはとても重要です。しかし、PCに慣れていない方はもちろん、自作PCを組んだことがある方でもディープフェイク(以下DF)目的において何を重視すればいいかわからない方がほとんどだと思います。この記事では開発者目線でのグラボの選び方を解説させていただきます(※この記事はうちのソフトだけでなく、これからDFLfaceswapを使おうと考えている方も対象にしております。)

Points

 さて、グラボにはいろいろな種類がありますが、候補を絞るためには以下の3つを知る必要があります。

 ①Nvidia製とAMD製どっちがいい?

 ②DFではどの性能を重視する?

 ③新品と中古はどっちがいい?

特に②は他では解説していないので参考になればと思います。

結論だけ知りたい方はこちら

①Nvidia製とAMD製どっちがいい?

 これはNvidia一択です。うちのソフトではNvidiaのグラフィックボードしか対応していません
理由は機械学習用のフレームワークがCUDAというNVIDIAのGPU向けのプラットフォームをメインストリームにしているからです。シェアが圧倒的のためGithubで開発者が公開する機械学習用のコードはほぼすべてCUDA前提で書かれています。公式がAMDをサポートしてくれていないことが多いためあらゆる場面で不便な状況に陥りやすいです。
 一応DFLではradeonで動くDirectX12というバージョンがあったり、最近ではfaceswapでm1に対応する動きがありますので、サポートなしでご自分でいろいろできる方でRadeonやm1をすでに所有している方は試すのもありです。ただエラーであったり、パフォーマンスを十分に発揮できなかったり、サポートが受けにくかったりするので普通の人には難しいです。AMD製はおすすめしません。

②どの性能を重視する?

 2つ見るべきポイントがあります。
FP32のTFLOPSと、VRAM(ビデオメモリ)です。

FP32(TFLOPS)

 TFLOPSとは、処理速度の指標FLOPSにT(テラ)=1兆がついたもので、ここではFP32の計算を実際に毎秒何回できるかという指標になります。つまり、この数値が大きいほど処理速度が速くなります。
 FP32は小数点以下をどこまで表すかの定義だと思ってください。FP32は単精度と呼ばれ、他にも半精度(=FP16)、倍精度(=FP64)があります。

例えば小数がない世界で0.4 x 3という計算をするとどうなるでしょうか?
・小数がある世界
 0.4 x 3=1.2
・小数がない世界
 0(0.4) x 3 = 0
小数がない世界では0.4は四捨五入して0になってしまい精度が下がってしまいます。
ここで整数にするメリットは計算が簡単になるので処理速度が速くなることと書くスペースを抑えられることです。
 同様に、機械学習でも精度を下げれば処理速度は速くなりメモリを抑えられるのでより大きなサイズのモデルや入力画像での学習が可能になります。しかしDFのモデル(DFL)ではFP16は使われておりません。なぜかというと画像の学習では精度を下げてしまうと細かい情報が発散してしまい、特徴が失われてしまうからです。
 他にも混合精度といってFP16とFP32を組み合わせて精度が低くても大丈夫なところはFP16、ダメなところはFP32という様に使い分ける手法もあり、DFLの開発者さんがこれを試した形跡もあります。私も実装して試してみたりもしたのですが、DFにおいては特徴がなくなってしまいうまくいきませんでした。

GTX10xx vs RTX20xx

 ここでマニアックな話を一つ。
GTX(~GTX10xx)になくてRTX(RTX20xx~)にあるものが二つあります。
RTコアとTENSORコアです。
RTコアは主にリアルタイムレイトソーシングのための計算用コアで、TENSORコアはFP16の計算に特化したコアです。
 RTXの2000番台が出た当時、GTXから乗り換えたディープフェイカーは価格差ほど処理速度の速さを実感できなかったと思います。理由は2000番台はレイトソーシングやFP16に特化した改良だったためです。
 その後RTX3000番台のTENSORコアの数は減少傾向にあります。

gtx vs rtx

VRAM(ビデオメモリ)について

 DFにおいてビデオメモリの制限は悩みの種の一つです。
 現在うちのソフトでは256×256(ピクセル)サイズでの学習がデフォルトで、VRAMは8GBでもギリギリです。(DFLのtオプションを使うと学習サイズはあげられますが理由があって古いものを使っています。この話は機会があればまたさせていただきます。)これを512×512で学習したいとなると、単純に4倍の32GBのVRAMが必要となります。現在の最上位のRTX3090でも24GBです。いかにVRAMが必要かがわかるかと思います。VRAMは大きいに越したことはありません。
 また、VRAMが大きいと学習サイズの他にバッチサイズを上げられるメリットもあります。
バッチサイズとは正式にはミニバッチサイズといい、一度に学習する入力画像の枚数のことを言います。単純に4枚ずつ学習するより10枚ずつ学習した方が遥かに効率がいいです。
 VRAMはなるべく大きいもの、最低でも8GB以上を選んでください

③中古 vs 新品

 ここまででNvidiaの最低でも8GB以上のグラボがいいとわかったわけですが、ご存知の通りマイニングブームとも重なり、グラボは慢性的に在庫がない状況が続いておりました。1000番台(16xxは除く)や2000番台の新品はほとんど売られていません。3000番台は在庫が復活してきており執筆のタイミングでは値段も下がってきていてグラボを購入するにはめちゃくちゃいいタイミングだと思います。しかし、LHRがクラックされたり(↑)、円安(↑)もあったり、また、仮想通貨の価格が少し下がったり(↓)といろいろな要素があり、これからまたあがってしまうかもしれません。
 そして、執筆時点では4000番台がこれから発売されるタイミングです。過去の事例を見るとRTX2000番台が出たあとに中古市場でGTX1000番台が安くなったかというとむしろ値段は上がっています。RTX3000番台が出た後も2000番台の値段が下がることはありませんでした。もちろん仮想通貨の相場に連動しているのが一番大きな要因だとは思いますが、他にも理由があるのではないかなと考えています。(後述
 
 そんな中、グラボの中古はありなのかという話なのですが、結論から言うと私はあり派です
ただし、マイニングやオーバークロックされていないものに限ります。グラボは無理な使い方をしなければそうそう壊れません。しかし中古市場にはたくさんのマイニング落ちのグラボが出回っていますので目利きに自信がない方は新品を購入してください。
 間違ってもマイニング落ちやオーバークロックなどの無理な使い方、それを扱う業者のもの、ジャンク品、動作未確認品などは買わないでください。
 メルカリやヤフオクで買うときはライトなゲーマーから買ってください。(過去の評価、出品物で大体判断できます。※説明文は疑ってかかってください。)また、メルカリは商品説明と違う等の不備があった場合に、出品者が返金に応じない場合運営が対応してくれますが、ヤフオクの運営は対応してくれない(壊れていた場合は最高1万円のお見舞金のみ)ので高額なグラボを買うときは注意が必要です。中古ショップで買うときはどれくらい保証があるかしっかり確認してください。

ムーアの法則は終わった!?

 ムーアの法則というのは知っている方も多いと思いますがCPUの性能が18か月で2倍よくなるという法則です。
 NvidiaのCEOが「ムーアの法則は終わった」と発言していますが、GPUでも処理能力がグンとあがることはない(処理能力の分だけ価格も上がる)ため、グラボは価値が下がるペースが遅い傾向にあります。不良品さえ掴まずに売るタイミングを間違えなければ損することも少ないのかなと思います。

3000番台を買うタイミングは4000番台の発売前がBEST!?

 基本的にグラボの価格はマイニング業者が採算の取れるギリギリのラインまであがります。Nvidiaが小売価格を安めに設定しても市場価格は処理能力に見合ったものにあがってしまいます。例えばプレイヤーがゲーマーだけなら新製品が出るときに古いグラボを売ろうとするので中古市場の価格は下がるはずです。しかしグラボは慢性的に不足しているのでその中古のお下がりを狙っている人も多いです。そして、何も知らない人はメーカー小売価格を見てそれに近い価格で買えると信じます。また、旧製品狙いの人は新製品が出れば価格は安くなると考えるので新製品が出た後を狙います。

 そのような思惑が交錯する中、新製品が発売されたあとどうなるかというと、まず、新製品の市場価格は処理能力相応の価格になるのでお得ではなくなります。そして、マイニング業者は売らずに買い増します。(※日本で採算がとれないのになんで需要があるのか疑問に思う人もいると思うんですけど、海外の業者が買い漁ります。)結果的に価格は下がらず、価格が下がると信じていた人の購入時期が重なってしまい値段は上がってしまうのかなと考察します。というわけで、3000番台を狙っている人は中古を買うにしても新品を買うにしても、4000番台が出る前までのタイミングで購入した方が逆に賢いのではないでしょうか。(仮想通貨のバブルがはじけてグラボの価格が落ちる可能性は慢性的にありますがそれを言い出したらいつまでも買えないので)

総評

以上を踏まえたうえで、実際にどのグラボがいいか見ていきます。

High Vram Video Cards List of Nvidia(価格は2022/4月時点)

 おすすめのグラボはRTX3060(12GB)です。VRAMに余裕があり、現時点では5万円代で購入できる上にTFLOPSはRTX2080tiに迫る勢いでコスパがめちゃくちゃいいです。BTOで全て揃えても15万円以下で買えます。
 また、目利きは必要ですが、中古で構わないのでなるべく安く抑えたいという方にはGTX1080tiがおすすめです。さすが当時の最強グラボだけあってまだまだ現役で使えます。DFではGPUの演算性能と読み書きの処理速度以外はそこまで重要ではないので、型落ちの周辺パーツが安く手に入るのがメリットです。全部込みでも中古で10万円以下で買えます。お金が余ったらSSDやM.2等のストレージを増設するといいと思います。
 予算に余裕がある方はRTX3090(24GB)を狙いたいです。2022年のはじめには30万円まで上がっていましたが現在では23万円(23%↓)まで落ちこんでいます。

RTX3090価格推移 価格.comより引用

最後に

 価格に関しては、あくまで現時点(2022/05)のものですのでご覧になったタイミングによっては全くあてにならないということもあると思います。先に謝っておきます。ごめんなさい。
 すぐに古くなってしまいますので正直書こうか迷ったのですが、なかなかこんなに安く買えるタイミングは他にないと思ったので書きました。それではまた次回5000番台が出る前に~