自分のための備忘録的なブログです。

Ubuntu14.04LTS を使って、ディープラーニングの勉強をしています。
記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする
python3:
オブジェクト指向プログラミングとは, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,
R lang:
R基本コマンド, Rデータ形式, RStudio文字化け(os), RStudio背景黒,
Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども, 初期設定-3

拡張性を考えてディープラーニング用パソコンを組むとき

拡張性重視で組む時 重視したいポイント。

ネットや書籍で見なかった意見を中心に。

   

 

必要なパーツ 

ケース

E-ATXマザーボード対応

 パソコンパーツを設置する板、マザーボードのサイズは様々。小さな mini-ITX から、micro-ATX, ATX, Extended-ATX (E-ATX)など。大きなボードほど、たくさんのパーツを設置でき、拡張性も高い傾向。

  拡張性重視なら、大きな E-ATX を載せられるケースがベター。ATX も拡張性が高いモデルが多く、E-ATX または ATXマザーボードを選びたい。mini-ITXmicro-ATX は拡張性が劣っている。

静音ケース

 ディープラーニングではパソコンが長時間フル稼働になる。ノイズに配慮した「静音」ケースがベター。

 パソコンの騒音は、主に冷却の「ファン」に由来。「静音」ケースは 1)音漏れを防ぐために開口部が少なく、2)内部に消音材が設置されて、3)ファンコントローラーによってファンノイズをコントロールできる。

長尺電源対応(22.5cmの電源が入ること)

 電源容量が大きい物ほどたくさんのパーツを動かせるけれど、より長い(長尺)傾向がある。長尺電源対応のケースを選びたいところ。

 

 コンセント一本あたりの電流は 15A まで。日本は 電圧 100V なので、電源の最大サイズは 1500W 。

 1500W クラスで各社の電源を見ると、22.5cm のが多い。ただしSilverStone 社が 18cm で 1500W 対応の電源を出している(SST-ST1500-GS/TI)ので、18cm あれば 1500W 電源を設置可能。

 

 18cm が入れば十分とも言えるが、できればいろいろなメーカーの 1500W 電源が選べるよう、22.5 cm 電源対応を選びたい。

水冷対応・五インチベイなし・HDDが分離配置。

 ディープラーニングでは激しく発熱するので、冷却性能が高い「簡易水冷」を選べるケースがベター。

 水冷には 2種類の方法があり、自分で組み立てる「本格水冷」と、ワンセットになった「簡易水冷」。本格水冷は大変なので、初心者はやらない方が言い(本格水冷できる人は、こんなブログ記事を読まずにパーツを剪定しちゃうはず。。。これを読んでる時点で簡易水冷の方が(ry)。

 

 5インチベイは、かつては CD-ROM や DVD-ROM を読み込むために必須だった。5インチベイがあると、「フロント上部」という、簡易水冷を取り付ける「おいしい」ポイントが潰れてしまう。

 

 HDD はフロントの下部に設置することが多いのだけれど、これも 5インチベイ同様、水冷と干渉してしまう。最近では HDD が水冷に干渉しないように分離して配置するケースも増えてきた。

拡張スロット八本(以上)

 ディープラーニングでは GPU を使い、計算を高速化できる。このために「拡張スロット」に GPU を設置するが、一台の GPU を設置すると、二本の拡張スロットが必要になる。そして、一台のマザーボードに は4台までの GPU を設置できる(のが一般的な)ので、4台 x 2スロット = 8本以上の拡張スロットが欲しい。

 

 しかし、GPU 増やすと他のパーツもアップグレードが必要となってくるので、金銭的に大変になる。GPU をたくさん挿さない選択肢もあるが、一度 2本挿しの速さを経験してしまうと、たくさん挿したくなってしまう。

 

結局どれを買うの?

 ケースは安いほうがいい。

 一万円程度の予算で調べ、上記すべてを満たすのは見つからなかった。

 いくつか条件を満たすケースは

 

Antec P110 (長尺電源20cm, EATX対応なし)

Corsair Carbide 600q (長尺電源が 20 cm まで。倒立ケース、1万円超え)

Corsair Carbide 400q (電源 18cm, 拡張スロット 7本)

Corsair Carbide 270R (電源 22.5cm, EATX対応なし、スロット7本)

Fractal Design Define R5 (EATX対応なし、拡張スロット7本、5インチスロットあるが取り外し可能)

Fractal Design Define S(EATX対応なし、拡張スロット7本)

 

 など。ケースは新しいモデルが随時発表されているし、今調べたら他にもあるかも。

 

 条件を十分満たすケースは「でかく」「高く」「重く」なるので、お財布とよく相談。

 

電源

1000 ~ 1500W対応

 ディープラーニングでは大量の電力を消費するため、家庭用コンセントの上限(15A x 100v = 1500W)である 1500W の電源を選択したい。しかし内部のロスがあるため、定格 1500W でも、使えるのは 1200 ~ 1350 W 程度 (1500 * 0.8 ~ 0.9) 。

 

 パソコンの最大消費電力と、この電源のワット(W)数を超えてしまうと、動作が不安定になるので、事前に調べておく必要がある。

 パソコンの最大消費電力は大体

   (CPU の TDP)× 2 + (GPUTDP

 になるらしい。

 

 例えば、 20 万円くらいで CPU/GPUcore i5, GeForce GTX 1070 x 2 台で組むとする。消費電力は

core i5TDP 90W) + GeForce 1070 x2 (TDP 150W x 2)

 で、

90 x 2 + 150 x 2 = 480 W

 

 この場合、最低必要な電源容量は 480 / 0.8 = 600W

 ところで、電源ユニットのロスが最も少なくなるのは負荷が 50 % 程度の時だそう。電力ロスを少なくしたいなら、 480 / 0.5 = 960 W の電源になる。

 ここからスペック上げていくと、消費電力は上がっていく。

 

 たとえば 6800K + 1080ti x 2 なら

(140 x2 + 250 x2) / 0.8 = 975 W が最低限必要。

 1080ti を 3本にして、6800K + 1080ti x3 なら 1287.5 W 。1080ti を 4本にして 6800K + 1080ti x4 なら 1600 W と 1500W を超えてしまう。GPU 4本挿しなら 6800K + 1080ti x3 + 1070 (1475W)または 6800K + 1080ti x2 + 1070 x2(1350 W)が現実的だろう。

 マルチスレッド性能の高い AMD Ryzen ThreadRipper も魅力的だけれど、6800K など high-end intel CPU に比べて消費電力が多い(TDP 180Wで、6800K に比べて 50W 大きな電源ユニットが必要になる)ため、その分、GPU 性能を抑える必要が出てくる。

 

 さておき、少なくとも 1000W くらいの電源は買っておきたい。はじめから最大の 1500W を買えば、後々買い替えの必要は出てこない。

できればフルモジュラー

 モジュラー電源とは、パソコンパーツに電源を供給するケーブルを付け外しできる電源。全てのケーブルを取り外せる「フルモジュラー」と、一部が取り外せない「セミモジュラー」がある

 ディープラーニング用パソコンはパーツが多くなりがち。組み立てやすさ、ケース内換気とか考えると、ケーブルを外せる「モジュラー」電源がいい。

出力側ケーブルの本数

 購入前に電源ユニット出力の確認が大事!

 拡張性重視なら CPU の 4+4 ケーブルが 2本、GPU 用の PCIE ケーブルが 8本欲しい。「ケーブル足りず起動しません」なんて目も当てられない。

 

 例えば前述の、シルバーストーン社から出ているコンパクトな 1500W 電源(SST-1500-ti/gs)には、高価な 「チタン(ti)」モデルと割安の「ゴールド(gs)」モデルがある。「ゴールド」は 1500W の大出力なのに、何故か PCIE の出力が少ないので、拡張性は低い。

 

マザーボード

 4-way SLI 対応

  ディープラーニングGPU で高速化できる。GPU をたくさん使えば、更に高速化が可能なので、GPU をなるべくたくさん挿せるマザーボードを選びたい。GPU を挿せる数はマザーボードにより様々で、一般に 1 から 4 本になる。

 SLI とは、複数の GPU を同期して動作させる規格。SLI を利用することでディープラーニングを高速化できるので、拡張性重視なら、SLI の最上位規格である 4-way SLI 対応を選びたい・・・多分使うことはないだろうけど。

 それでもなぜ 4-way SLI のボードにしたいかというと、拡張スロット 8本のケースで確実に GPU 4本挿せるし、拡張スロット 7本でも 3本挿せるから。初心者のうちはマザーボードを見ても、何本の GPU が挿せるかなんて分からない(自分は分からなかった)けど、○○way SLI と書いてあれば、○○の数だけ GPU を挿せることが分かる。

 一方、3-way SLI 対応のマザーボードには注意が必要! 拡張スロットとの兼ね合いで 2本までしか刺せない場合もある(それでも、確実に 2本は挿せる)。そして 2-way SLI 対応のマザーボードなら(2-way SLI は、2-way が略されて「SLI」とだけ書かれていることも多い)、2本の GPU を挿すことができる。

 

 ただし繰り返しだけれど、GPU を増やすと、その他のパーツも高性能・大容量にアップグレードしていく必要が出てくるのが辛い。

 また、実際に GPU を 4本挿すと、ケース内がキツキツになってしまい、整備がとても大変になる。4本挿しは整備が大変なので、GPU は 2本に限定した方が楽ではある。

wifi, bluetooth 付き

 wifibluetooth は必須の機能ではないが、あると便利。

 

 ただし、Linux OS を使う場合、wifibluetooth のドライバがなくて、動かない場合がある。この機能はそんなにこだわる必要ないと思われ。ただしあると便利。

x99, x299, x399など、RAM 128 GB 対応

 ディープラーニングでは大量のデータを扱うため、パソコン本体の RAM も多いほうがいい。個人のパソコンなら 128GB が上限だろう。それ以上の製品はほとんど売っていないし。

80mm m.2 NVMe スロットが 2本以上 

 ディープラーニングでは大量のデータ読み込み・書き込みが発生し、大量のストレージが必要。現在一般的なストレージのうちで最も速い m.2 NVMe SSD を複数使えるとありがたい。

 実際は一本で良いけど、拡張性を考えると 2本欲しい。1本だけだと足りなくなった時「買い替え」になるけど、複数本あれば「追加」可能なので。

 

 ちなみに現状、チップセットとの絡みでは、

x99: 1本

x299: 2本

x399: 3本

 の製品が多いみたい。

Thunderbolt 3 ポート

 最近、外付け GPU (eGPU)が出てきた。Thunderbolt 3 ポートで接続する。 eGPU は他のパソコンと使い回しできるし、今後のトレンドになるかも。

 

ストレージ

500GB 以上の m.2 NVMe SSD

 ディープラーニングではデータがメモリーを溢れだし、「Swap」を用いる場合がある。Swap 用に高速なストレージを大量に用意したい(自分は Swap に100GB 以上割り当ててる)。

 m.2 NVMe SSD は、今のところ 256-512 GB 程度の製品が割安。500GB が狙い目だと思う。

 

GPU

メモリ量と価格のバランス

 GPU で重視すべきはメモリ(Video RAM, VRAM)量。GPU で計算を行う前に、はじめにデータを VRAM に載せる。データが VRAM に載りきらなかった場合、パソコンのメモリ (RAM) を使って計算する。RAM は VRAM と比べてざっくり10倍遅いため、学習速度も遅くなる。

メモリの種類と速度について表にしてみた【2016秋】 - Qiita

 なるべくたくさんのデータを VRAM に載せられるよう、VRAM 多いモデルを選びたい。 VRAM の大きな GPU

GeForce 1080 ti, VRAM 11GB, 実売 10万円程度

GeForce 1070, VRAM 8GB, 実売 5万円程度

 もちろん 1080ti がいいのだけど、バカみたいに高いので、半額で 2/3 の VRAM を確保できる 1070 も魅力的。

 

 RAM にも載り切らない場合、ストレージの「スワップ」を使用する。スワップはざっくり、RAM の 10 倍以上遅い

プログラマが知っておくべき、メモリ/ディスク/ネットワークの速度まとめ - Qiita

 のだが、GPU も RAM も高いので、「スワップを使う」と諦める(安い GPU を使い、RAM の量も少量に留める)のもありだと思う。 

 

ディスプレイ 

デルの28インチくらいがほしい

 パソコン組み立てには関係ないのだけど、いいディスプレイも仕事に必須。

 

 「デル」と書いたのは、これまで使ったデルのディスプレは機能豊富で使いやすかったから。

 

 具体的には

 1.複数系統の入力

  HDMI, DVI-D, DP, VGA など

 2.高さ調節

 3.マウント部にケーブルホール

  ケーブルがバラバラになるのを防ぐ孔

 4.USB

  ディスプレイ自体が USB ハブ機能を持ってて便利。

 

おわり。

思いついたら追加するかも。 

 

 

 

今回見つけたサイト。

http://timdettmers.com/2015/03/09/deep-learning-hardware-guide/

英語ですが、「CPU はどのようにデータを扱うのか」と言った基本的なことから記載されており、大変参考になります。