勝又 第3位は、AMDのRyzen、IntelのCore i9。多コア戦争勃発。ZENマイクロアーキテクチャ採用8コア「Ryzen 7 1800X」、16コア/32スレッド環境を実現する「Ryzen Threadripper 1950X」、18コア/36スレッドの「Core i9-7980XE」などが登場しました。
若杉 今年になって、一気に2桁スレッドのコンシューマ向けCPUが出てきました。基本的な流れとして「AMDが8コアのRyzenを出します」ということから、Intelも焦った雰囲気が感じられるというか、対抗製品を出してきて、多コアのCPUが目立って出てきたという感じです。
後藤 Ryzenはマイクロアーキテクチャを一新して、Bulldozer系よりもクロックあたりの性能がすごく伸びたんですが、それは元の路線に戻った、という話ですね。Intelに匹敵するシングルスレッド性能になったということですが、シングルスレッド性能はこれ以上伸ばすのがかなり難しい。方法がないわけではないですが、電力的に効率よく伸ばすには壁がある。
CPUはかつて、プロセスが縮小すると、トランジスタが2倍乗って、周波数が40%速くなり、自然に性能が上がって、自然にマイクロアーキテクチャが複雑になり、より高速化するサイクルがありました。でも今はそのサイクルを実現できない。なぜなら今は電源の電圧やリーク電流をこれ以上下げるのが難しいからです。それによって、CPUのシングルスレッド性能を引き上げていくことが難しい状態になっています。
コア数を増やしたのは、そこからさらに性能を上げるためです。サーバーでは昔からやっていたことですが、それをコンシューマ向けの製品に持ってきた。やり方としては正攻法ですね。今、CPUの性能を上げるには、コア数を増やすしか方法がないんです。
しかし「アムダールの法則」によって、並列化にも限界があって、性能のボトルネックがきてしまう。今は特定の用途でスレッド数が上がった分だけ性能が上がりますが、ここから先、プロセス技術が伸びていった時代と同じように、さらに性能を上げるためには、別の方策が必要になります。
それはタスクを別のコアに流したり、コアを拡張して、特定のワークロード(作業量)に特化した別のユニットを加えたりする必要があるのです。たとえばディープラーニングのワークロードが増えるのであれば、ディープラーニングのワークロードに特化したユニットを加えるというやり方(ドメインスペシフィック)です。
GPUはこれまで、並列ワークロードに対してGPUを性能を向上させてきました。それと同じことをどんどんやっていかないと、もう性能を上げられないところまできています。
実はRyzenから始まった多コア化の動きは、プロセッサの性能を上げる大きな流れの中の中間地点に過ぎません。ドメインスペシフィックに色んな機能を追加して、性能を上げていかなければならないという宿命がこの先に待っています。
笠原 ぼくらの業界ではそういうのをヘテロジニアスプロセッサと呼んでたんですけど、今はそう呼ばないのかも。
SoCのメーカーなんかを見ているとわかりやすいのですが、後藤さんがおっしゃったように、CPUがあって、GPUがあって、それからNPU(Neural Processing Unit)などなど入れていく。プロセッサ全体で色んなユニットを足していって、総合的な性能を上げていく方向に行きつつある。
後藤 General-purpose(汎用)のプロセッサだと、もう性能を上げようがないんです。上げられなくはないが、上げ幅が小さすぎる。
笠原 General-purposeのプロセッサ自体も変わってきていて、面白いのはNVIDIAがCUDAをGeneral-purposeに使い始めたじゃないですか。
後藤 今話しているGeneral-purposeとはシングルスレッドの話ですね。GPUが今データセンターでどう使われているのかというと、おもには並列コンピューティングです。超並列コンピュータ(Massively parallel computer)+「Volta」でディープラーニングを走らせている。
この先の課題は、GPUをディープラーニングのワークロードにどう対応させていくかですね。今後はディープラーニング専用のプロセッサが繁栄するので、それに対応する必要がある。
笠原 Intelが10月に開催したIntel Shift 2017でNirvana担当CTO(Amir Khosrowshahi氏)は「ディープラーニングをやるには、GPUはもう時代遅れだ」と言ってました。
後藤 ディープラーニングだけやるんだったらそうなんですけど、GPUは汎用的なプロセッサとしても使える点に強みがあるんですよ。NVIDIAもこのままのかたちでGPUを進化させることはできないので、次のステップとしては、GPUをディープラーニング用とグラフィック用の2つに分化させることでしょうね。実際にはもう分化していますが。
ディープラーニングに最適化するといっても難しいところがあって、あまり最適化させすぎても今度は汎用性が失われてしまう。アルゴリズムがどんどん変わっているので、そこにも対応しないといけない。
笠原 プログラマブルにするのか、専用ハードウェアにするのかで毎回議論してますよね。
後藤 それが昔の議論だったんですけど、今は「専用のもの」を汎用的なアーキテクチャの延長で作ろうという、新しい流れができています。クライアントPCには、インファレンス(推論用)のチップが入ってくるでしょう。認識処理とセットでどう作るかが課題です。
笠原 ここでいう推論というのは、たとえば「猫の画像」が入力されたら、「これは猫である」と認識することですね。そういう機能をプロセッサに持たせようという話を業界で議論していて、それを多くの人はNPUと呼んでいるんですけど。
専用のハードウェアにしても、中身がいろいろと違うんですけどね。たとえばSoCがやってるようなのものは、シンプルに、アクセラレータに近いようなものが載っている。
後藤 ニューラル、Neuronと言ってますけど、ニューロンをハードウェア化するものは「Neuromorphic Computing」といって別のカテゴリーなんです。ニューラルネットワークはニューロンの働きをソフトウェアモデル化したもので、それのアクセラレータをプロセッサに入れると言う話ですね。そっちはモバイルの方がはるかに進んでいて、PCでは遅れています。
笠原 PCが遅れているというよりは、今はその必然性がないからですね。でも今はそれも変わりつつあります。
かつてアプリケーションはPC、つまりローカルにあったわけですが、アプリケーションはクラウドに移行する方向で進んでいる。UWPなんかはそれを目指してますよね。
後藤 アルゴリズム自体がどんどん変わっていっちゃうので、推論のやつはみんな特定のアルゴリズムで、特定のネットワークモデルに特化して作ったので、そうするとたとえばCMN(Cepstral Mean Normalization)だけに対応すると、RMN(Robust Mixed-Norm)やLSTM(Long Short-Term Memory)などほかのニューラルネットワークタイプはどうなのか、という話になって、じゃあ対応できないの? ってことになる。GPUは対応できるけど非効率的なので、その中間にあるものが求められてるし、今みんなが作っている。
山田 「18コア36スレッド」なんてものを見たときに、これを使って「秀丸」を使ったらどんだけ速く原稿が書けるようになるのかなって思ったものですけど(笑)。
笠原 いや速くは書けないですよ(笑)。秀丸はシングルスレッドですから。
後藤 でもそれはある意味ですごく正しい。「勝手に原稿を作ってくれるマシン」をディープラーニングで作ることができるからね。
山田 箇条書きにすると勝手に文章にしてくれるとかね。
笠原 話をRyzenに戻しますけど、AMDが頑張ったおかげで、Intelのお尻に火がついて、これでふたたび競争ができたわけじゃないですか。Intelは油断していると「がんばらない」会社なので、ここ数年、PC業界はずっと停滞していた。AMDみたいな人たちがIntelのお尻を押さないと、いいものを出してくれないというところはあると思うんですよ。
実際問題、Penrin以来、ほとんどCPUは変わってないわけじゃないですか。デュアルコアから変わっていなくて、Uプロセッサという枠の中に、もう7~8年新しいものが出てこなかったわけで、やっと今年、Kaby Lake Refreshが出てきた。これってAMDがプッシュしたからですよね。18コアのCore i9が出てきたのも、AMDが16コアのThreadripperを出してきたからでしょう。「やんなきゃいけない」から、やれたわけじゃないですか。それはすごくいいことだと思うんですよね。
山田 生きてるうちに、びっくりするほど速いコンピューターに触ってみたいなぁ。ストレスゼロのコンピューター。
後藤 世の中で増えていくワークロードの中で、ディープラーニングの割り合いが増えていくのであれば、これを速くできるコンピュータが「良いコンピュータ」なんですよ。
笠原 でも祥平さんの言ってる「ストレスフリー」って、フラッシュメモリを速くすれば実現できそうですけどね。
山田 いやいや、RAMに置いたって、びっくりするほど速くはならないじゃない。