studylog/北の雲

chainer/python/nlp

低火力ディープラーニングのための環境(自作ハード編)

昨日こんなプレスリリースが話題になっていました。
www.sakura.ad.jp

高火力ですって。強そう。
ちょっと前にはこんなのも話題に。

ディープラーニング専用GPUサーバファーム「紅莉栖(くりす)」を構築|ニュース|広報情報|株式会社ドワンゴ
現時点で世界最高性能となるMaxwell世代のCUDAコアを搭載したGPUサーバー100台程度で構成

凄い。強そう。

こういう記事を読んだ後に自分の足下で動いている機械をまじまじと眺めてみると、あまりの低火力に恥ずかしさすら覚えます。ワットチェッカーで測ってみると500Wにも満たないそうで、安物電子レンジレベル。まさに低火力。

低火力ディープラーニングのための自作ハード

企業や研究室にTitan4枚指し環境が整っているような人にとってはおもちゃみたいな環境かもしれませんが、私が使っている環境を晒しつつ、個人の趣味レベルで(プチ)ディープラーニングやるにはどういう環境を揃えればいいのか、どのくらいお金を出せば遊べるのかの目安になればと思って書いてます。誰の役にたつのかわかりませんが…。

重要度は1~5でつけてます。

NvidiaGPU(ビデオカード) 重要度:5

GPUはディープラーニングに必要なモノの中でも花形中の花形、ハード面では最重要パーツです。いかにこいつにお金をつぎ込めるかが勝負みたいなところがあります。

使っているパソコンのGPUNvidiaならそれをそのまま使えるのですが、インテルCPU内蔵グラフィックスだったりAMDGPUの場合はNvidiaのを買う必要があります。私が普段使っているiMacNvidiaじゃなかったので新しくGPUを買ってきてUbuntuが動いているマザーボードに取り付けてディープラーニング入門しました(当時は750ti)。

GPUが無いと駄目なのか?CPUはかなりいいの積んでるぞ」と思った方、やる処理にもよりますが、現在最高価格のCPUをもってしても1万円程度のGPUの足下にも及ばないです。そのくらいGPUは速いです。大雑把に言ってこのFLOPSの値が高ければ高いほど速い。
FLOPS - Wikipedia
CPUの代表格Core i7 5960X(13万円)は0.4TFLOPS、それに対して1万円程度のGPU(750ti)は4倍近くの1.3TFLOPSです。もしCore i7 5960Xと同じ金額をGPUに出すならTitanXの6TFLOPSになりますから、CPUに対して価格性能比は15倍にものぼります。

GPUの選び方

とにかく計算の大部分はGPUがやるので、ここに一番重点的にお金投資するべきです。

選ぶ時に大事なパラメータとしては

  • TFLOPS…計算速度
  • メモリ量…どれだけデータをのせられるか

の2つ。

FLOPSは先ほど説明したように高ければ高いほど計算が速く終わります。CUDAコア数 * クロック周波数 = FLOPSみたいな感じ。
TitanX(6TFLOPS)が1日で終わる処理なら、750ti(1.3TFLOPS)は4~5日かかるイメージ。

何気に大事なのがメモリです。これはマザーボードに指すメモリとは別のGPU専用のメモリです。↓これではありません。
f:id:kitanokumo:20160126223741p:plain
GPU買ったら内蔵されてるものと思ってください。

FLOPSが低い、つまり計算速度が遅いのはぶっちゃげた話ひたすら計算が終わるのを待てばいいんですが、メモリが少なすぎるとそもそも計算を始められません。例えるならFLOPSは足の速さ、メモリは手で運べる重さの限界、みたいなもの。

幼稚園児の足は遅いけど、時間さえかければゴールにたどり着けます。
でも20kgの米袋を幼稚園児が運ぶのは無理ですよね。そもそもスタートできません。

FLOPSとメモリはこんな感じのイメージ。
お財布が許す範囲でTFLOPSとメモリのバランスが取れたものを選びたいところです。

現行品の代表的なGPUを以下にあげておきます。価格はうろ覚え。

GPU TFLOPS メモリ 価格
750ti 1.3 2GB 12,000円
960 2.3 2GB 24,000円
970 3.5 4GB(3.5GB) 45,000円
980ti 5.6 6GB 90,000円
TitanX 6.1 12GB 130,000円


入門用にお勧めなのは安価な750tiです。私もこれで始めました。上位クラスと比べると遅いしメモリも少ないですが、それでもCPUに比べれば十分高速ですし、消費電力も少なく手軽に遊ぶのには十分です。

現在一番売れているのは970。メモリ4GBのはずが色々ありまして実質的には3.5GBしか無かったという騒動を発売直後に引き起こしつつも価格と性能バランスが取れた名機としてかなり売れているようです。一番人気のMSI GAMINGは長らく40,000円台だったんですが最近5000円ほど値上がりしてしまいました。残念。

980tiは今私が使ってるものです。TFLOPSは上位のTitanXに迫るものがあります。

TitanXは現在最高峰のGPUの一つ。12GBという破格のメモリを積んでます。13万程度。高い。リッチな研究室や企業にはこれが4枚刺さってる計算機がたくさんあるそうです。なかなかの火力。

さらにこの上にTeslaというGPUもあるのですが、一般人には手が出るレベルでは無いのでここでは割愛します。普通のPCパーツ屋さんには売ってないです。

同じ型番なのに色んなメーカーが違うパッケージで販売してるけど、何が違うの?

使ってるGPU自体はNvidiaが作ったものでどこのメーカーから出てるものも同じ物です。それを各社が工夫してさらに性能(クロック)を上げたり、冷やすためのファンを取り付けたりしてパッケージングしたものが、私たちが手に取る「ビデオカード」です。

GPUNvidiaが作った各社共通のもの これだけ買う事はできない 売ってない
ビデオカードGPU + ファン + メモリ これを買う MSIASUSGigabyteというメーカーが販売している

よくわからなかったら970~980tiでは今のところMSIのGAMINGシリーズが優秀で人気なのでお勧め。

次期Pascalは凄いらしい

今年の半ば以降に発売される予定の次期Pascalはかなりの性能アップが見込まれていて、ディープラーニングに特化した処理では10倍速くなるとかいう話も。当面はCPUで遊んでPascalが出たら一番良いのを買うという手もあります。多分最初は15万ぐらいしますけど。

CPU 重要度:3

ディープラーニグの大半の計算はGPUが処理しますが、GPUに渡すデータの準備などはこのCPUが処理しますので、あまり足を引っ張らない程度のものを積んでおきたいです。いわゆるメインストリーム向けの4コア8スレッドCPUで十分で、6コア〜8コアクラスを積むぐらいならそのお金をGPUに回した方がいいです。私は3770Kという2012年当時の4コア最高クラスのを使ってます。4コア8スレッドですが、計算中は1スレッドしか使わないのであまり4コアの意味が無い。もっと下位のCPUでも処理時間には影響無さそう。

ただMecabやCabochaなど自然言語の前処理をする時に並列8スレッド全部使って時間短縮などはできるので、4コア8スレッドに越した事はありません。

マザーボード 重要度:2

f:id:kitanokumo:20160126230838p:plain(wikipediaより)
マザーボードによってはGPUを1枚だけではなくて複数枚刺せるものがあります。もし将来的にガチでやろうという方はPCI-Express 16Xという端子が複数あるものを選んでください。私のマザーは1枚しか刺せないのでちょっと後悔してます。

メモリ 重要度:2

f:id:kitanokumo:20160126223741p:plain(wikipediaより)
↑今度はこれです。こっちのメモリです。
マザーボードの限界32GB積んでますが使い切る事はまず無いです。

ストレージ(HDD or SSD) 重要度:2

もしストレージに保存しているデータを逐次読み込んで処理するような場合はSSDに越した事はありません。ランダムアクセス(細かいデータを読む能力)に長けてます。ただ基本的には最初に全部メモリに乗っけてから処理を開始すると思うのでHDDだからといって必ずしも足を引っ張るわけではありません。

電源 重要度:1

上位クラスのGPUは消費電力が250Wなどかなり電力を必要とします。よくわからない人はショップ店員さんに構成を伝えてアドバイスをウケてください。よく初心者がやりがちなのは「システム全体で380Wに収まるはずだから400Wでいこう」みたいにギリギリのを買ってしまったり、逆に1200Wなど過剰なのを揃えてしまうパターン。システム全体で350Wぐらいだったら550~700Wが無難です。店員さんによっては電源効率のいいもの(高い)を進めてきますがBlonzeで十分だと個人的には思ってます。

電気代に注意

仮に500Wのハードを24時間30日動かし続けるとそれだけでだいたい月8000円の電気代がかかります。夜寝ている間にもずっと計算し続けていると翌月の電気代に驚きます。
私は単身で通常5~6000円程度に収まっていた電気代ですが、低火力とはいえディープラーニングで遊びだしてからは2万円に迫る勢い。ご利用は計画的に…。

まとめ

以上自宅で低火力ディープラーニングをやるために必要なハードについて書いてみました。とにかく大事なのはGPUの性能と、GPUの計算の足を引っ張らない程度の他構成という感じでしょうか。いくらGPUが凄くてもCPUやストレージ側で足を引っ張ってしまい、GPUが待機している時間が長くなってしまっては宝の持ち腐れになってしまいます。

今時は自作する人も少なくなっているようですが自分で組んだ方がお金の節約になりますし、徐々に各構成をパワーアップしていく感覚はドラクエみたいなRPGに通じるものがあって楽しいです。また、まずはAmazonGPUインスタンスで遊んでみて、もっと本格的にやりたいと思ったら自作するという手もありますね。g2.2xlargeインスタンスなら1日1500円~で性能的には970クラスです。

本当はOSとかライブラリの事も書く予定だったんですがハードの話だけで力尽きました。いつかソフト編も書きたいところ。おしまい。