WirelessWire News Technology to implement the future

by Category

高密度GPUクラスタとGPUクラウドのトレードオフ

2017.12.14

Updated by Ryo Shimizu on December 14, 2017, 05:00 am JST

スクリーンショット 2017-12-14 4.10.01

昨日、一昨日の二日間にわたって開催されたNVIDIAのGPU Technology Conferenceで気になるデバイスが発表されていました。

上に掲載した写真のように、びっしりと敷き詰められた組み込み用GPU搭載SoC、通称Jetson TX-2を24個並べたクラスターボードです。

Jetson TX-2のGPUコア数は256しかないので、これを24倍しても6144コアであり、これは普通のGeForce TITAN Xのたかだか二倍程度でしかありません。

ところが、メモリで比較すると、TX-2は一基あたり8GB搭載しているので、192GBという途方もない容量になります。NVIDIAからの説明では、これはGPUとCPUで共有するユニファイドメモリであるとのことですから、全てをニューラルネットワークが使うことはできないにせよ、7割くらいは割り当てられるのではないかと思います。

1Uサイズに収められるGeForce TITAN Xはせいぜい4基で、メモリも一基あたり最大12GB×4ですから48GB、Tesla P100を搭載しても16GBx4で64GBと半分以下になります。

Jetson TX-2は主に推論に使用されますが、推論を高速に行う場合、あまり大きなニューラルネットワークをメモリに載せてもコア数が少ないと計算時間がかかりすぎるので、8GBのメモリ空間を有効に使うには、複数のニューラルネットワークを載せて適宜切り替えるか、もしくはデータを載せておくか、いろいろ活用の幅が出ることになります。

筆者としては、学習にも利用できる可能性があるのではないかと思っています。実は学習におけるGPUとCPUの適切なバランスはまだ分かっていません。実験が十分行われていないからです。

ハイエンドな構成では、1つまたは2つのCPUの下にGPUが4つずつぶら下がるものが多いのですが、果たしてこれで十分なのか。データ転送するバスは一つですし、GPUに対するデータの転送はひとつのボトルネックですから、GPUが増えれば増えるほどCPUの能力が必要とされることになります。実際、学習にかかる時間の多くは、データ転送時間です。データが全部GPUに載ると、劇的に高速になります。

いくら高速な計算を可能にするGPUであっても、肝心の計算に必要なデータが届かなければ真価を発揮することはできません。

であれば、全く逆の発想で、少数の高速なGPUにCPUからデータを供給するよりも、多数の軽量なGPUにデータを供給した方が効率的に学習が終わる可能性についても考慮しなければなりません。

また、本番の学習よりも前にハイパーパラメータの探索を軽量クラスタで行い、得られた初期値とハイパーパラメータの組合せを本格的な学習環境で高速に学習する、というパターンもあり得るでしょう。

どちらにせよ24ノードのクラスタが1Uサイズに収まるのは魅力です。これまでとは根本的に異なる発想でのシステムが想像できるでしょう。

GPUクラスタへの投資は、費用対効果が非常に低いのがひとつの悩みの種です。

たとえばPFNが先日国内1位を達成したGPUクラスタMN-1は、Pascal世代GPUによるクラスタなので、すでに一世代前のGPUになっています。GPUの最新世代はすでにVolta世代に移行しており、NVIDIAではVolta世代では最大12倍程度の性能向上が行われていると主張しています。

TeslaP100は、現行の市場価格で80万円ですから、1024基導入したとなればそれだけで8億円以上も投じたことになります。それが一夜にして前世代となってしまうのでは、穴の開いたバケツで水を汲むようなものです。

この問題はPFNに限ったことではなく、プライベートなGPUクラスターを作ろうとするとき常に降りかかります。同様の悩みはクラウドサービスでGPUノードを提供するMicrosoft AzureやAmazon AWSも抱えていますが、彼らは数十億単位の先行投資を継続的に続けるだけの資金力とビジネスモデルがあります。

たとえばMN-1と完全に同等ではないですが、同じPascal世代で同数の環境をAzureで構築しようとすると、NC24を256基契約すればよく、これは一時間あたりわずか23万7829円で使うことができます。PFNはMN-1ではChainerMNを使うことで15分でImageNetの学習(ILSVRC2012)ができると主張しているので、実際には同じことは5万9457円でできてしまうことになります。もちろん、コトはそんなに簡単ではないでしょうし、仮に24時間365日運用するとすると、年間21億円かかることになりますから、その場合は或いはMN-1はお買い得といえるかもしれません。ただ、上記試算はTeslaP100の価格だけの見積もりで、実際にはCPUやらNVMeやらInfinibandやら膨大な電気代やらがかかりますので、単純に比較することはできませんが。

クラスタを構築する際に重要なのは、バイイングパワーです。この手のマスプロダクトは大量に購入すればするほどコストエフィシェンシーが高いことはよく知られています。するとMicrosoftやAmazonが買うのと同じくらいの量を一気に購入できる顧客でないと同等のディスカウントはなされないということになります。

必要に応じてクラウドを使うようにすれば、お金と労力を節約できます。それがクラウドのそもそものメリットだったわけです。

実際、すでにMicrosoft AzureはVolta世代のインスタンスの運用を開始するとアナウンスしています。もし買い直すとすれば、今のVolta世代のTeslaは市場価格120万円程度ですから、さらに12億2880万円以上の投資が必要になります。

しかしAzureのVoltaインスタンスを契約するのであれば、たとえ二倍の金額であっても、一時間あたり50万円以下で使うことが出来るでしょう。たかだか二倍の金額で額面通りに12倍の学習速度が出せるのなら安いものではないですか。

もちろん、クライアントによっては、クラウドにはどうしてもデータを上げる訳にはいかない、という人も数多くいらっしゃいます。医療系や金融系など、厳し目の業界ではオンプレミス以外は認めない、というところは今も多いです。今やCIAですらAmazon AWSを使っているというのに、CIAよりもレベルの高いセキュリティを必要としているということなのでしょう。

さて、筆者ならどうするか。

最も効率的なのは、手元に小規模のクラスタを持つことです。
だいたい4〜8台くらいのPCサーバを持ち、ここでちゃんとやりたい学習がリニアにスケールしていくかまず確認します。

それが終わったら、クラウドに契約して中規模のクラスタでさらに確認します。

それでも処理が必要とする時間内に終わりそうになく、しかも予算に余裕が有る場合、つまり時間>>>お金になった場合、クラウド上に大規模なクラスタを構築して学習をできるだけ早く終わらせます。

まあそれでも、1時間待てばいいところを15分で終わらせないと死ぬ、という状況はそうそう生まれないでしょうから、普通は半日から一日単位なのではないかと思います。

半日から一日単位で待てるのであれば、そんなに急いで結果を必要としている仕事というのもないのでそれが一週間になってもあまり問題がある感じはしません。

さすがに何ヶ月という単位になると、今すぐ終わらせて欲しい、と思うのが人情ですが、大概の場合、学習時間が1時間で終了するとしても、その学習に掛ける前の段階、たとえば打ち合わせとか方針決定とかの雑事でもっと多くの時間を人間が使ってしまいます。

筆者はその昔、同じGPUでも、3Dグラフィックスの世界に居たので軽いデジャヴを感じています。
2000年ごろ、DreamcastとPlayStation2は一秒間に表示できるポリゴン数で競っていました。Dreamcastが30万ポリゴン程度、Playstation2は6600万ポリゴンという桁違いの性能でしたが、出来上がったゲームの見栄えはDreamcastとPlaystation2でどちらも一長一短という感じでした。

PS2はポリゴン数は多かったものの、VRAMの制約が厳しくてプログラミングが難しく、その性能の真価を発揮した作品はなかなか登場しませんでした。プログラマーがジャギーを自分で処理しなければならないことも初期のタイトルで不評を買った原因になりました。

Dreamcastはプログラミングしやすかったのでユニークな作品が初期からたくさん生まれました。アンチエイリアシングが自動的にかかるPowerVRは美しい描画を実現していて、とてもポリゴン数で1/200の性能とは思えませんでした。

結局、最終的には「ポリゴン数の定義とはなんだ?」ということで決着して、その後、このポリゴン数競争という不毛な戦いは終わり、しばらくGPUの性能指標はピクセルフィルレートだったりテッセレーションだったりに移行しました。

今この瞬間、なんだかGPUの数とかノードの数とかスピードとかを競うよりも、結局どんなことができるか、ということにフォーカスして今一度ディープラーニングの活用法について考えたほうがいいのではないか。

筆者は過去の経験からなんとなくそう思うのです。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG