ディープラーニング用PCの作り方 安く作る方法 2019年版

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

 

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

 PCを構成するパーツの賞味期間はパーツによってかなり違う。具遺体的には次が目安になる。

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

 GPUは演算の要となる重要部品。今この開発が精力的で頻繁に商品が更新されている。そのため100万円のマシンを買っても数年で陳腐化してしまう。

 そこで、バラバラのパーツを組み合わせて自作する。この場合、陳腐化した部分だけアップグレードすればよいので、お金もあまりかからない。ディープラーニングPCは自作し、少ない予算で最新の状態を維持していくのが、最もよい運用法の一つだ。

 

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 18万円
GeForce
GTX1080Ti
3584
(-)
11GB 250 × 16万円
Quadro
RTX5000
3072
(384)
16GB 265 34万円

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

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

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

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

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

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

 

GPUは何枚あればよいか

 仕事で使うなら最低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の外排気モデルは、2019年2月現在、次の2点のみ。

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

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

 

CPUはCorei7で十分

 Xeonを使うとマザーが高価になり、システムの値段がハネあがる。GPUを使ったディープラーニングではCPUはほとんど貢献しないので、安価なi7で十分である。

 Scikit-learnなどGPUを利用できない機械学習ツールではCPUの性能がモノをいう。巨大なデータを並列計算させる際はできるだけ多くのコア(スレッド)を搭載したものを選ぶべきである。

 

メインメモリは16GBで十分

 学習ソフトにもよるが、DIGITSでは重い学習を実行させても8GBを超えることはほとんどないので16GBみておけば十分。Windowsベースの学習ツールでは16GB使うことがある。ここは足らなかったら後から追加で良い。

 

マザーボードの選び方

 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対応マザーでなくても問題なく使える。

 

電源の選び方

 電源容量は、GPU消費電力×枚数+300W(CPUその他の基礎代謝分)必要。表1の候補にあげたGPU消費電力は、1枚あたり300Wみておく。

 するとGPU2枚までなら900W,4枚の場合は1500Wが目安になる。さらに補助電源コード(6+2pinのダブル)がGPUの枚数分必要なことに注意。これら条件を満たす候補に次がある。

Corsair HX1000i(GPU2枚に対応)

Corsair AX1500i(GPU4枚に対応)

Silver Stone SST-ST1500-TI 1500W(GPU4枚に対応)

 

ケースの選びの注意点

 GPU2枚挿しまでは普通のPC自作と変わらないが、GPUは長さ260㎜を超えることが多いので奥行に余裕のあるE-ATXに対応したケースを選ぶ。

 3枚以上挿す場合は最下段のGPUと電源との間に空間が必要であり、XL-ATXに対応したケース(フルタワー)を選ぶ。

 冷却強化のためケースにはファンを増設できるが、外排気のGPUを使う前提なら買ってきたものがそのまま使える(標準で付いているファンだけでOK)。

<参考>
 マザーは立置きが一般的だがフォームファクタの規格は幅×横で示されている。幅が縦方向、横が奥行方向の寸法に該当する。

 

記憶デバイスの構成

 基本的に、Ubuntuを2つ以上インストールして、環境構築のテストと完成用に分ける。一緒にWindowsをインストールしてマルチOSにしておくと便利。

 このようなマルチOSを実現できるツールにMBM[1]がある。但し、物理ドライブは「2TB以下」&「4台まで」という制約がある。但しブートに使わない(ストレージ専用)なら2TBを超えても使える(正しく認識されないが実用上支障ない)。構成例を以下に紹介する。

 

構成例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 8700 BOX (Coffe Lake-S) 
マザー 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 (4-way SLI対応)
ケース Fractal Define XL R2 FD-CA-DEF-XL-R2 (XL-ATX対応)
電源 Silver Stone SST-ST1500-TI 1500W(GPU4枚に対応)

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

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ドライバのインストール
 Ubuntuのシステム設定→ソフトウェアのアップデートから普通に切り替えるだけ。 
3.GithubからDIGITSをダウンロードしてインストール[4]

 

 ここまでやれば、市販のマシンを買った場合と変わらない。3の部分は、NVIDIA Docker[7]を入れてDIGITSのイメージを引っ張ってくる方法がある。環境をゼロから構築する必要がないので、初心者はこちらの方が簡単かもしれない。

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

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

 

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

<関連記事>
2.バックアップソフトはなぜ役に立たないのか
人工知能(AI)って何やねん!?~人工知能を一番わかりやすく説明する

<参考文献>
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
7.NVIDIA Docker
NVIDIA TITAN RTX
NVIDIA Tesla V100
NVIDIA RTX2080Ti
NVIDIA Quadro