ディープラーニングをやろう!と思っても専用マシンを探すと100万円前後。中身を見ると無駄が多い。そこで市販パーツを使って安く作る方法をご紹介する。GPU別で20万円いかない。企業でも買いやすい金額になるはずだ。
ディープラーニングPCを自作するメリット
ディープラーニングをやるために100万円の設備PCを導入するとどうなるか。AIを計算するハードは日進月歩、2~3年で性能が陳腐化する。企業などで設備導入してしまうと簡単に更新できないから、古いものを使い続けることになるだろう。
2~3年で陳腐化すると言っても、それはPC構成するパーツの一部。パーツの賞味期間は次のようになっている(私の主観)。
GPU 2~3年
CPU、マザー 5~6年
メモリ (マザーの規格次第)
電源 10年
ケース 10年以上
GPUは性能の要となる重要部品。ここが2~3年ごとに性能が大幅に向上している。陳腐化するこの部分だけ。
そこで、バラバラのパーツを組み合わせて自作する。この場合、陳腐化した部分だけアップグレードすればよいので、更新にお金がかからない。毎年少ない予算で最新の状態を維持することが可能。ディープラーニングPCを自作するメリットがここにある。
クラウドサービスとの使い分け
常に最新の実行環境をキープする他の方法に、アマゾンAWSなどのクラウドサービスを利用するやり方がある。企業ではプロキシが邪魔をしたり、データのアップロードやダウンロードに時間がかかるなど使い勝手が悪い(一人が帯域を占有しないよう、制限されている場合がある)。
クラウドサービスが有効なのは、ローカルマシンでは間に合わない(4台以上のGPUを使う)膨大な計算を仕方なくやる用途。企業のネットワーク環境にも、プロキシや帯域制限などが無いことが必要。それ以外では、やはり手元にマシンを置いて使うのがいいと、私などは思う。
GPUの選び方
2019年年末から2021年にかけての候補は次の通り。
※2021年2月、ビットコインの値上がりに伴ってマイニングの需要が拡大し、GPUが値上がりしています。以前も同じことがありました。台風のような現象なので、価格が落ち着くのを待つといいでしょう。
表1 ディープラーニング用GPUの候補(2020年12月調べ)
CUDAコア (Tensorコア) |
メモリ | 消費電力(W) | NVLink | 価格の目安 | |
RTX A6000 | 10752 (336) |
48GB | 336 | 〇 | 64万円 |
Quadro RTX8000 |
4608 (576) |
48GB | 295 | 〇 | 80万円 |
Quadro RTX6000 |
4608 (576) |
24GB | 295 | 〇 | 59万円 |
Quadro RTX5000 |
3072 (384) |
16GB | 265 | 〇 | 29万円 |
Quadro RTX4000 |
2304 (288) |
8GB | 160 | × | 10万円 |
RTX3090 (内排気のみ) |
10496 (搭載) |
24GB | 350 | 〇 | 21万円~ |
RTX3080 (内排気のみ) |
8704 (搭載) |
10GB | 320 | × | 11万円~ |
GeForce RTX2080Ti |
4352 (544) |
11GB | 250 | 〇 |
22万円 |
GPUを選ぶとき重要なのは「コア数」と「メモリ容量」。計算速度はこれらに単純比例すると考えてよい。メモリ容量が多いほどバッチサイズ(一度に計算するデータの数)を増やせる。物体検出の学習では11GBは欲しい。表にない下位モデルはメモリ容量が少ないので候補外。
Tensorコアは新世代(Volta)のGPUで搭載された機能で、一部の計算効率を著しく高めるという。これから買うならTensorコアとNVLinkの付いたモデルをお勧め。NVLinkは複数のGPUを接続して計算能力を高める機能。2枚挿し以上で使う場合は対応機種を選びたい。
2020年末にQuadroシリーズが充実し、企業向けのディープラーニングPCに使われるようになったが単体購入だとコスパが悪い。これまでコスパがよかったRTX2080Tiの外排気モデルは絶滅しつつあり、今後はRTX3080もしくはRTX3090の2枚挿しが候補になるだろう。
RTX3090はゲーミング用だが、性能はRTX A6000のメモリを半分にしたものとほぼ同等で、値段1/3である。RTX3080はNVLinkが無いことに注意。どちらも内排気のモデルのみ(NVIDIA 純正のFounders Editionは外排気だが高価なので対象外)。2枚挿しの場合はPCの内部換気に相応の注意が要る。
GPUは何枚あればよいか
通常のPCには最大4枚まで実装できる。仕事で使うなら最低2枚は欲しい。複数のGPUがあると並列計算させたり、1つずつ個別に計算を走らせるマルチJobができるようになる。これらは学習に使うソフトによって出来たり出来なかったりするが、学習ツールとして良く使われるDIGITSでは両方できる。
マルチJob
GPUを複数積むメリットはマルチJobにある。ハイパーパラメーターの調整など、いろいろ条件を変えて答えを見つたい場面では並行して複数計算できるメリットは大きい。GPUが2枚あると仕事の効率が単純に2倍になる。4枚あれば4倍になると考えていい。
並列計算
NVLinkを使わなくてもDIGITSなどソフトによっては並列計算できるが、これは計算資源を有効活用しているとはいえない。GPU2枚使っても時間は30%くらいしか短縮しない(小規模な計算では逆に遅くなってしまうともある)。使えるメモリ容量も少し増えるだけで、枚数分の合計にならない。
NVLinkではこのような問題がなく、枚数に比例した速度の向上が期待できるらしい。
GPUは外排気がお勧め
GPUの放熱形態には、大きなファンが沢山ついた内排気のタイプと、シロッコファンが付いた外排気のタイプがある。前者は熱をPCの内部に放散し、後者は外に排出する。
GPU1枚の消費電力は300W近いのでGPU2枚を内排気で使うとケースの冷却を強化しなければならず、自作の難度が高くなる。
写真はすべて内排気のタイプ。このタイプはオーバークロック(OC)した発熱の大きいモデルが多い。
2枚以上のGPUをケースに収めるディープラーニングマシンでは外排気のタイプを使うのが正解。
現在の外排気モデルはQuadroが主流でありコスパが悪い。過去の外排気モデルは以下の通り。
ASUS TURBO-RTX2080TI-11G
GIGABYTE GeForce RTX 2080 Ti
EVGA GeForce RTX 2080 Ti
写真は外排気のGPUを4枚実装した例。上3枚のGPU間の隙間が数ミリしかない。吸気の圧損が増えて冷却能力が落ち温度が90℃近くまであがってしまう。GPUは3枚までとし、間隔をあけて使うのが現実的。
CPUはCorei7またはi9で十分
Xeonを使うとマザーが高価になり、システムの値段がハネあがる。GPUを使ったディープラーニングではCPUはほとんど貢献しないので、i7かi9で十分である。
Scikit-learnなどGPUを利用できない機械学習ツールではCPUの性能がモノをいう。巨大なデータを並列計算させる際はできるだけ多くのコア(スレッド)を搭載したCorei9を選ぶといい。
メインメモリは16GBで十分
学習ソフトにもよるが、DIGITSでは重い学習を実行させても8GBを超えることはほとんどないのでとりあえず16GBみておけば十分。Windowsベースの学習ツール(Darknet)を使うと20GB超えることがあるので、32GB積んでおくといい。
マザーボードの選び方
GPU2枚までなら、2つPCIe×16スロットが付いたごく普通のATXマザーから選べる。4枚挿す場合は、ASUSのWSシリーズが必要。
GPU4枚使うと、一番下がUSBやフロントパネルコネクタと干渉する。ここはAINEXのコネクタ延長ケーブルの頭を短く切ったものを作り、延長する必要がある。
AINEX EX-004 の加工前(左)と加工後(右)の写真。穴にピンを刺して線を抜き、上から2mmくらいカッターナイフで切る。
最初から高さの低い低背型の延長ケーブルがあればよいが、無いので作るしかない。
ちなみにEVGAのマザーは、コネクタのほとんどがL型になっていて干渉の問題が生じない作り。4-Way SLI対応品は151-SX-E299-KR(X299 LGA2066)が候補になるが、国内販売はなくメーカー直販[6]か米アマゾンから購入となる。
SLI、NVLinkについて
これは複数のGPUを1枚のように使うために用意された機能だが、機械学習のライブラリ、ツールでSLIを使うものは無い模様。機械学習ではNVLinkが利用される。
NVLinkはSLIと互換がある。ザー側がSLIに対応していないとNVLinkが使えない可能性がある[4]ので、SLIに対応したマザーを導入しておくのが無難。NVLinkを実際に利用するためには別途NVLinkブリッジが必要。
市販されているNVLinkブリッジは2枚結合しかないから、並列計算はGPU2枚までとなる。
電源の選び方
電源容量は、GPU消費電力×枚数+300W(CPUその他の基礎代謝分)必要。表1の候補にあげたGPU消費電力は、1枚あたり300Wみておく。
するとGPU2枚までなら900W,4枚の場合は1500Wが目安になる。さらに補助電源コード(6+2pinのダブル)がGPUの枚数分必要なことに注意。これら条件を満たす候補に次がある。
Corsair HX1000i(GPU2枚に対応)
Corsair HX1200i(GPU3枚に対応)
Corsair AX1600i(GPU4枚に対応)
Corsairの電源。スペック以上に効率が良いようで、低負荷時だとほとんど熱くならない(ファンも回らない)。AX1600iは電源投入時にファンが一定時間フル回転する。
AX1600iに付属するケーブル。4GPUに十分対応できるものが付属している。
このクラスの電源は候補が限られてくる。もっと安い商品もあるが、いくつか買ってみた結果からするとファンから異音が出たり、発熱が多かったり、付属ケーブルの品質に問題があるなどのトラブルが多かった。Corsairが最も無難な選択肢としてお勧めできる。
ケースの選びの注意点
GPU2枚挿しまでは普通のPC自作と変わらないが、GPUは長さ260㎜を超えることが多いので奥行に注意。E-ATXに対応したケースを選べば安心。
3枚以上挿す場合は最下段のGPUと電源との間に空間が必要。XL-ATXに対応したケースが要るが、選択肢が少ない。キューブタイプのCorsair Carbite Air 540も候補に入れるといい。
冷却強化のためケースにはファンを増設できるが、外排気のGPUを使う前提なら買ってきたものがそのまま使える(標準で付いているファンだけでOK)。
<参考>
マザーは立置きが一般的だがフォームファクタの規格は幅×横で示されている。幅が縦方向、横が奥行方向の寸法に該当する。
記憶デバイスの構成
基本的に、Ubuntuを2つ以上インストールして、環境構築のテストと完成用に分ける。一緒にWindowsをインストールしてマルチOSにしておくと便利。このようなマルチOSを実現できるツールにMBM[1]があったが、現在はリムーバブルケースを使ってSSDを物理的に入れ替える形がよい。
写真はリムーバブルケース(オウルテックOWL-IE5CB)。スイッチが付いているので、2台マウントすればドライブを出し入れしなくても環境のチェンジが可能。
<補足>
MBMは物理ドライブ「2TB以下」&「4台まで」&「BIOSブートでないとダメ」という制約がある。但しブートに使わない(ストレージ専用)なら2TBを超えても使える(正しく認識されないが実用上支障ない)。構成例を以下に紹介する。ブートの仕組みにはBIOSとUEFIがあり、Ubuntu16はインストールの時選択できるが、Ubuntu18以降はUEFIのみのため構成困難になっている。
構成例1(物理ドライブ2台)
SSD1(240GB) Ubuntu1(テスト用)
SSD2(240GB) Ubuntu2(完成用)
構成例2(物理ドライブ4台)
SSD1(240GB) Windows10
SSD2(240GB) Ubuntu1(テスト用)
HDD1(2TB)
PAT1(Ubuntu1完成用)
PAT2(Ubuntu2完成用)
PAT3(Ubuntu3完成用)
PAT4(ext4) 共用ドライブ
HDD2(6TB NTFS) Windows、Ubuntu共用
SSDの容量は240GBあれば十分。複数の環境をスイッチして使うことになるので、容量より数が必要である。
テスト用パーテーションは、ソフトのインストールや環境構築を試行錯誤するために使う。初期状態への復旧が手早くできるよう、イメージレベルでバックアップ&レストアできる形がよい[2]。レストアのミスを防ぐため、上記のように物理ドライブを独立させておくのがよい。
テストが完了したら、完成用の領域にそれをデプロイして活用していく。
共用ドライブには学習に使うデータやスクリプトなどを置く。構成例2のようにext4とNTFSの2つ用意しておくと便利。Swap領域は不要。メインメモリ16GB積んでいれば、Swap領域は必要ない。
構成例(2020/7見直し)
1.GPU2枚の例(LGA2066)
アマチュアは2枚にとどめるのが現実的。4枚挿しは自作の難度が高く、最初から完成品を買った方が良い。
CPU Core i9 10900X
マザー ASUS PRIME X299-A II (SLI対応なら他のものでもよい)
メモリ 16G
ケース Fractal Define R6 (E-ATX対応)
電源 Corsair HX1000i
SSD
周辺機器
DVDドライブ、ディスプレイ、キーボード、マウス
写真は2080Ti×2の例。NVLink接続。コスト、冷却、性能のバランスいい構成。
2.GPU3枚以上の例
上記のマザーとケース、電源を下記に変更する。
マザー WS X299 SAGE(4-way SLI対応)
ケース Fractal Define XL R2 FD-CA-DEF-XL-R2 (XL-ATX対応)、もしくはCorsair Carbite Air 540
電源 Corsair AX1600i(GPU4枚に対応)
Corsair HX1200i(GPU3枚に対応)
どちらもGPU別途。構成例1は、周辺機器を含めゼロから全部買っても20万円未満に収まる。構成例2はマザーが高くなってしまうので、ゼロからだと20万円に収めるのは厳しい。
LGA2066のWS X299はUSB2.0内部ヘッダがなく、一番下のスロットにGPUを挿すとUSB3の内部ヘッダーが塞がるので注意したい。
GPU
RTX3090の1~2枚挿しが妥当。以前はRTX2080Tiの外排気モデルを使って3枚~4枚挿しを構成できたが、現在はRTX3090のマシンを2台に分けたほうが性能的にいい。
RTX3090は発熱の多い内排気モデルなので、PCケース内の換気を徹底的に強化する必要がある。
NVLinkブリッジの注意点
GPUを2枚以上使う場合はNVLinkブリッジを追加する。幅がいろいろあるのでよく調べて買うこと。4枚挿しでは2slot、2枚挿しでは大抵3slotか、4slotのどちらかになる。
メーカーによって次のように表記がいろいろあるので注意。
2slot=0slot Spacing =40mm
3slot=1slot Spacing =60mm
4slot=2slot Spacing =80mm
2slotのブリッジは品薄になりやすく、モノがある時に買っておかないとなかなか入手できない場合がある。
ソフトのインストール
ディープラーニングマシンには NVIDIAのDIGITSがインストールされている場合がある。この手順は以下の流れになる。
1.Ubuntu[3]のインストール
2.GPUドライバのインストール
3.GithubからDIGITSをダウンロードしてインストール[4]
ここまでやれば、市販のマシンを買った場合と変わらない。
簡単に見えるが、この手順の実行には根気が要る。試行錯誤とOSインストールからのやり直しが繰り返し発生すると思う。上述した「テスト用」ドライブを利用してトライして、うまくいく方法が見つかったらそれを完成用ドライブで実行し活用していく。
DIGITSはDockerを使うと簡単に入るが、実行速度がかなり落ちる。ここは何としても、ローカル環境にゼロから入れたい。
このような作業を自分でできない人がインストール済みマシンを買ったところで使いこなすことはできない。ゼロからインストールできる力を、ぜひ養ってほしい。
<参考購入先>
ASUS TURBO-RTX2080TI-11G
GIGABYTE GeForce RTX 2080 Ti
EVGA GeForce RTX 2080 Ti
<関連記事>
2.バックアップソフトを使わなくなった理由
人工知能(AI)って何やねん!?~人工知能を一番わかりやすく説明する
OpenGLが速いグラボの選び方~ハイエンドGTXはローエンドのQuadroより遅い!?
CPUに付いている古いグリスの落とし方~エタノールは間違いだった!
あなたの知らないCPU放熱グリスの選び方~インテルCPUはクーラーと隙間ができる!
あなたの知らないPCファンの選び方~風速計で適正動作を確認する
PCケースの選び方~スイッチ、エアフロー、構造など見るべきポイントを徹底解説!
<参考文献>
1.MBM マルチ・ブート・マネージャー
3.Ubuntu 20.04 LTS 日本語 Remix
4.NVIDIA/DIGITS
5.「NVLink SLI」を検証:RTX 2080 Tiの2枚挿しで2倍の性能?
6.EVGA 151-SX-E299-KR(リンク切れ)
NVIDIA Docker DIGITSのイメージが更新されておらず、古すぎて使えません
NVIDIA TITAN RTX
NVIDIA Tesla V100
NVIDIA RTX2080Ti
NVIDIA Quadro