【2020最新版】ディープラーニング用PCを安く作る方法

 ディープラーニングをやろう!と思っても専用マシンを探すと100万円前後。中身を見ると無駄が多い。そこで市販パーツを使って安く作る方法をご紹介する。GPU別で20万円いかない。企業でも買いやすい金額になるはずだ。

 

ディープラーニングPCを自作するメリット

 ディープラーニングをやるために100万円の完成品を導入するとどうなるか。AIを計算するハードは日進月歩のため、2~3年で性能が陳腐化してしまう。企業などで設備導入してしまうと簡単に更新できないから、古いものを使い続けることになってしまう。

 2~3年で陳腐化すると言っても、それはPC構成するパーツの一部である。パーツの賞味期間は次のようになっている(私の主観)。

GPU 2~3年
CPU、マザー 5~6年
メモリ (マザーの規格次第)
電源 10年
ケース 10年以上

GPUは性能の要となる重要部品。ここが2~3年で性能が大幅に向上し陳腐化を早めている。

 そこで、バラバラのパーツを組み合わせて自作する。この場合、陳腐化したらその部分だけアップグレードすればよいので、更新にお金がかからない。毎年少ない予算で最新の状態を維持することが可能。ディープラーニングPCを自作するメリットがここにある。

 

クラウドサービスとの使い分け

 常に最新の実行環境をキープする他の方法に、アマゾンAWSなどのクラウドサービスを利用するやり方がある。企業ではプロキシが邪魔をしたり、データのアップロードやダウンロードに時間がかかったりと使い勝手が悪い。実行環境をイチから作るスキルも身に付かない。

 クラウドサービスが有効なのは、ローカルマシンでは間に合わない(4台以上のGPUを使う)膨大な計算をやらせる用途。それ以外では、やはり手元にマシンを置いて使うのがいいと、私などは思う。

 

GPUの選び方

 計算速度に最も影響する重要部品がGPU。最高峰はTesla V100になるが、1枚100万円以上する高価な代物。この下に、TITAN、RTX、GTXと続く。2019年2月現在の候補は次の通り。

表1 ディープラーニング用GPUの候補(2019年2月調べ)

  CUDAコア
(Tensorコア)
メモリ 消費電力(W) NVLink 価格
TeslaV100 5120
(640)
16GB/32GB 250 100万円以上
TITAN V 5120
(-)
12GB 250 × 42万円
Quadro
RTX8000
4608
(576)
48GB 295 100万円
Quadro
RTX6000
4608
(576)
24GB 295 65万円
TITAN RTX
(内排気のみ)
4608
(576)
24GB 280 32万円
GeForce
RTX2080Ti
4352
(544)
11GB 250 16万円
GeForce
GTX1080Ti
3584
(-)
11GB 250 × 16万円
Quadro
RTX5000
3072
(384)
16GB 265 34万円

 GPUを選ぶとき重要なのは「コア数」と「メモリ容量」。計算速度はこれらに単純比例すると考えてよい。

 メモリ容量が多いほどバッチサイズ(一度に計算するデータの数)を増やせる。物体検出の学習では11GBは欲しい。表にない下位モデルはメモリ容量が少ないので候補外。

 NVLinkは複数のGPUを接続して計算能力を高める機能。メモリ容量も枚数の合計で使えるようだが、活用できるソフトがまだ少ない。

 Tensorコアは新世代(Volta)のGPUで搭載された機能で、一部の計算効率を著しく高めるという。これから買うならTensorコアとNVLinkの付いたモデルをお勧めしたい。

 表ではRTX1080Tiのコストパフォーマンスの高さが際立つ。TeslaV100に比べ値段1/5以下でCUDAコア数は10%くらいしか違わない。物体検出では大量のメモリを使うのでTITAN RTXがいい。

 Quadroはコストパフォーマンスが悪く選ぶ理由がないが、TITAN RTX が内排気なので、これが2枚以上必要な場合、外排気で同じ性能の Quadro RTX6000 を使う形を検討したい。

 

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枚の消費電力は250Wと結構高い。GPU2枚を内排気で使うとケースの冷却を強化しなければならず、自作の難度が高くなる。

いろいろな内排気のGPU 写真はすべて内排気のタイプ。このタイプはオーバークロック(OC)した発熱の大きいモデルが多い。

 2枚以上のGPUをケースに収めるディープラーニングマシンでは外排気のタイプを使うのが正解。

 

 

 RTX2080Tiの外排気モデルは、2020年現在、次の3点のみ。在庫・価格が流動的。同じものを複数使う場合、買える時にまとめて買っておかないと入手困難になることがある。

ASUS TURBO-RTX2080TI-11G
ZOTAC ZTRTX2080Ti-11GGDR6BLOW
ELSA GeForce RTX 2080 Ti ST (中古のみ)

外排気GPUの例

 写真は外排気GPUの例。RTX2080Ti、GTX1080Ti。写真の間にもう1枚入り最大4枚内蔵可能。写真の隙間に1枚入れると吸気の圧損が増えて冷却能力が落ち、温度が90℃近くまであがる。クロックが落ちて計算速度も若干落ちるようだ。

 用途を物体検出に絞るとメモリ容量の多いTITAN RTX 2枚をNVLinkで繋ぐ形が一つの答えだが、冷却の強化が必要。これで足りないときは同じ性能で外排気の Quadro RTX6000 を仕方なく使う形になりそう。

 

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

 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ブリッジが必要

 マルチJobならSLI対応マザーでなくても問題なく使える。

※:2020年3月現在、GPU4枚挿しで使う2slot spacingのNVLinkブリッジが品薄で手に入らない。

 

 

電源の選び方

 電源容量は、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に付属するケーブル

 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を物理的に入れ替える形で構成するのがよい。

<補足>
 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共用 

 

 テスト用パーテーションは、ソフトのインストールや環境構築を試行錯誤するために使う。初期状態への復旧が手早くできるよう、イメージレベルでバックアップ&レストアできる形がよい[2]。レストアのミスを防ぐため、上記のように物理ドライブを独立させておくのがよい。

 テストが完了したら、完成用の領域にそれをデプロイして活用していく。

 共用ドライブには学習に使うデータやスクリプトなどを置く。構成例2のようにext4とNTFSの2つ用意しておくと便利。Swap領域は不要。メインメモリ16GB積んでいれば、Swap領域は必要ない。

 

構成例

1.GPU2枚の例

CPU Corei7 9700 BOX 
マザー ASUS PRIME Z390-A (SLI対応)
メモリ 16G CFD W4U2400CM-16G (DDR4 16G)
ケース Fractal Define R6 (E-ATX対応)
電源 Corsair HX1000i
SSD WD WDS250G2B0A 2台
周辺機器
DVDドライブ、ディスプレイ、キーボード、マウス

2.GPU4枚の例

 上記のマザーとケース、電源を下記に変更する。

マザー ASUS WS Z390 PRO または WS X299 SAGE(4-way SLI対応)
ケース Fractal Define XL R2 FD-CA-DEF-XL-R2 (XL-ATX対応)、もしくはCorsair Carbite Air 540
電源 Corsair AX1600i(GPU4枚に対応)

 どちらもGPU別途。構成例1は、周辺機器を含めゼロから全部買っても20万円未満に収まる。構成例2はマザーが高くなってしまうので、ゼロからだと20万円に収めるのは厳しい。

 LGA2066のWS X299はUSB2.0内部ヘッダがなく、一番下のスロットにGPUを挿すとUSB3の内部ヘッダーが塞がってしまう。

 

GPU(1,2共通)

 RTX2080Tiの外排気モデルを必要な数揃える。候補は2つあるが、NVLinkをうまく機能させるために同じもので統一した方がよい。

ASUS TURBO-RTX2080TI-11G
ZOTAC ZTRTX2080Ti-11GGDR6BLOW

 物体検出の最上位構成はTITAN RTX 2枚挿し。内排気になってしまうのでケースファンを増設して冷却を強化しておきたい。

 GPUを2枚以上使う場合はNVLinkブリッジを追加する。GPUを付けた時の幅によって商品が違うので注意。

 

ソフトのインストール

 ディープラーニングマシンには NVIDIAのDIGITSがインストールされている場合がある。この手順は以下の流れになる。

 

1.Ubuntu16.04LTS[3]のインストール
2.GPUドライバのインストール
3.GithubからDIGITSをダウンロードしてインストール[4]

 

 ここまでやれば、市販のマシンを買った場合と変わらない。

 簡単に見えるが、この手順の実行には根気が要る。試行錯誤とOSインストールからのやり直しが繰り返し発生すると思う。上述した「テスト用」ドライブを利用してトライして、うまくいく方法が見つかったらそれを完成用ドライブで実行し活用していく。

 DIGITSはDockerを使うと簡単に入るが、実行速度がかなり落ちる。ここは何としても、ローカル環境にゼロから入れたい。

 このような作業を自分でできない人がインストール済みマシンを買ったところで使いこなすことはできない。ゼロからインストールできる力を、ぜひ養ってほしい。

 

<参考購入先>
ASUS TURBO-RTX2080TI-11G
ZOTAC ZTRTX2080Ti-11GGDR6BLOW

<関連記事>
2.バックアップソフトを使わなくなった理由
人工知能(AI)って何やねん!?~人工知能を一番わかりやすく説明する
OpenGLが速いグラボの選び方~ハイエンドGTXはローエンドのQuadroより遅い!?
CPUに付いている古いグリスの落とし方~エタノールは間違いだった!
あなたの知らないCPU放熱グリスの選び方~インテルCPUはクーラーと隙間ができる!
あなたの知らないPCファンの選び方~風速計で適正動作を確認する
PCケースの選び方~スイッチ、エアフロー、構造など見るべきポイントを徹底解説!

<参考文献>
1.MBM マルチ・ブート・マネージャー
3.Ubuntu 16.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