【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の候補(2020年9月調べ)

  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万円
RTX3090
(内排気のみ)
10496
(搭載)
24GB 350 19万円~
RTX3080
(内排気のみ)
8704
(搭載)
10GB 320 × 9万円
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の付いたモデルをお勧めしたい。

 2020年にRTX30シリーズが発表された。NVLinkに対応するのは3090のみ。TITAN RTXの代替候補になる。内排気モデルのみであり、カードが3スロット占有することや消費電量からみて単独使用がよさそう。

 現在最もコスパがよいのはRTX2080Tiである。メモリを多用しなければこれを複数使うのが最も良い。

 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の外排気モデルは、在庫・価格が流動的。「とりあえず1枚買っといて、あとでもう1枚買おう」とか考えると欲しい時に入手できないことがある。後述するNVLinkでは2枚同じGPUのペアが無難。最終的に2枚使うなら最初からまとめて買うのがよい。

ASUS TURBO-RTX2080TI-11G
GIGABYTE GeForce RTX 2080 Ti
EVGA GeForce RTX 2080 Ti

GPUを4枚で構成した例

 写真は外排気のGPUを4枚実装した例。上3枚のGPU間の隙間が数ミリしかない。吸気の圧損が増えて冷却能力が落ち温度が90℃近くまであがってしまう。

 後述するNLLinkが2枚までしか対応しないので、RTX2枚(NVLink接続)とするのが現実的かもしれない。

 用途を物体検出に絞るとメモリ容量の多いTITAN RTX 2枚をNVLinkで繋ぐ形が一つの答えだが、内排気なのでケースの冷却強化が必要。メモリ容量の多いGPUを3枚以上要求すると 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ブリッジが必要。

 市販されている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に付属するケーブル

 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接続。コスト、冷却、性能のバランスいい構成。

RTX2080Tiを2枚使ったディープラーニングマシンの例

 

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(1,2共通)

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

ASUS TURBO-RTX2080TI-11G
GIGABYTE GeForce RTX 2080 Ti
EVGA GeForce RTX 2080 Ti

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

 

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.Ubuntu16.04LTS[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 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