NVIDIAの強さはCUDAにある:中島聡が振り返るGPU開発環境の歴史と「学習分野での独占」

YouTubeで開く ↗
概要

中島聡氏は、NVIDIAの最大の武器と呼ばれるCUDAについて、GPUの仕組みからグラフィックスAPIの覇権争い、AlexNetの登場、AppleによるMetalの投入までを自身の経験を交えて解説した。ChatGPTにインタビュアー役をさせる形式で、中島氏はほぼ一人で語っている。中心にある問いは「なぜNVIDIAの一人勝ちが続いているのか」であり、中島氏はAI研究の決定的な転換点でCUDAが選ばれたことと、その後に積み上がった開発資産がNVIDIAの優位を支えていると見ている。そのうえで、少なくとも学習の分野ではこの独占がまだ続くと述べている。

12分で読めます
1:05

GPUはなぜ並列計算に強いのか

中島氏はまず、GPUがもともとゲームのグラフィックス用に作られたものだという点から話を始めた。1000×1000の画面には100万ピクセルがあり、それぞれを処理しなければならない。ただし、たとえば「緑より赤が強いピクセルだけを抜き出す」といった処理は、隣のピクセルとは関係なく実行できる。つまり、多くの処理を並行して進められる。

CPUは基本的に処理を一つずつ順番に行うように作られている。最近のCPUはマルチコアで、CPUに相当するコアを4つや8つ持つため多少は並列処理ができるが、本質的には逐次処理向けだと中島氏は説明する。100万ピクセルを1つずつ処理すれば、1個あたり1マイクロ秒でも合計で1秒かかる。

一方のGPUには、CPUに相当するがはるかに小さい演算器が大量に載っている。仮に1000個あって同時に動かせれば、100万÷1000で1000回の実行で済み、所要時間は1ミリ秒になる。CPUと比べて1000倍の速度が出る、というのが中島氏の示した概算である。

OpenGLとDirectX:グラフィックスAPIの二本立て

GPUのハードウェアを使うためのライブラリとして最初に登場したのが、シリコングラフィックスが発表したOpenGLだった。中島氏によれば、これはオープンな形で公開されたため、一時は業界標準になりそうな勢いがあった。

ところが1995年、MicrosoftはWindows 95と同時にDirectXを発表した。中島氏自身、当時Windows 95のチームにいた。Windows上には多様なグラフィックカードがあり、それまでは各ハードウェアに合わせて直接プログラムを書く必要があった。DirectXはその間にレイヤーを設けて統一するためのものだった、と中島氏は説明する。

DirectXは業界から批判を受けた。シリコングラフィックスがせっかくオープンな標準を出したのだから、MicrosoftもOpenGLを採用すれば世界標準になったはずだ、という批判である。Microsoft側には、OpenGLに技術的に気に入らない部分があったことに加え、Windows用アプリケーションを囲い込みたいという戦略的な理由もあった、と中島氏は語る。

その結果、グラフィックスの分野にはOpenGL路線とDirectX路線の2つができ、今も続いている。UnityやUnreal Engineのようなゲーム開発環境は、Windowsで動かすときはDirectX、ゲーム機などではOpenGLというように、両方をサポートし続けている。さらにiPhoneなどApple製品向けにはMetalも加わったが、これは後で触れるとして話を進めた。

6:04

2007年、NVIDIAがCUDAを発表

OpenGLとDirectXの時代が長く続いたあと、2007年にNVIDIAが独自の開発環境CUDAを発表した。中島氏は、2007年の時点でNVIDIAがAIのことを考えていたとは思いにくいと言う。

中島氏の理解では、CUDAが作られた理由は2つある。1つは、グラフィックスチップを提供する会社の1社として、開発者を自社に囲い込みたかったこと。もう1つは、当時GPGPUと呼ばれた、GPUを科学技術計算に使おうという動きが少しずつ出てきていたことだ。OpenGLやDirectXはグラフィックスには使えても科学技術計算には向かなかったため、それを支えるためにCUDAが作られた。当時はまだ誰もAIのことをきちんと分かっていなかった、というのが中島氏の見方である。CUDAは科学技術計算用の独自規格で、NVIDIAのチップ上でしか動かなかった。

AppleがOpenCLで対抗した理由

翌2008年、AppleはOpenCLを開発して発表した。オープンな形の科学技術計算用の開発環境で、Mac OSの上でも動いた。当時、GPUで科学技術計算をする動きはそれほど大きくはなかったが、一部の研究者、たとえば気象の計算や空気抵抗のシミュレーションをする人たちが使い始めていた。

CUDAはNVIDIA以外のGPUでは動かない。そこでAppleは、NVIDIAだけでなくAMDやIntelを含む様々なGPUの上で、デバイスに依存しない形で科学技術計算ができるプラットフォームとしてOpenCLを作り、非営利団体のKhronos(クロノス)グループに渡して標準化を進めた。

中島氏は、これには政治的な面もあったと見ている。当時AppleはNVIDIAのチップを載せたMacも出していたが、iPhoneも出始めており、一社に依存した形でコンピューターを作り続けることは避けたかった。もし科学技術計算のソフトがCUDAだけで作られてしまえば、そのアプリケーションはNVIDIAのチップを搭載したMacでしか動かなくなる。それを嫌ってOpenCLを作った、というのが中島氏の解釈である。

こうしてCUDAとOpenCLが並び立つ状況がしばらく続いた。中島氏自身、当時はOpenCLの動きを素晴らしいと思い、これが世界標準になるだろうとしばらく考えていたと振り返る。

AlexNetの登場とCUDAの勝利

状況を変えたのが、中島氏が「2011年」と語るAlexNetの登場である。当時は中島氏自身も含めてほとんどの人が気づいていなかったが、AI業界で革命的なことが起きた、と中島氏は言う。

コンピューターによる画像認識のコンテストでは、それまで人間がC++などでアルゴリズムを書いたプログラムが競い合っていた。そこにトロント大学の学生たち(中島氏は、今で言えばイリア氏などがそうだと触れている)が作った、ニューラルネットベースの画像認識ソフトAlexNetが現れ、従来のソフトよりはるかに高い性能をニューラルネットで実現できることを実証した。

中島氏はこれを、GPUやCUDAに限らずAI業界全体にとって画期的な出来事だったと位置づける。それ以前は「AIの冬」と呼ばれ、AIは使い物にならないと思われていた。AIが使えるようになると少なくとも研究者たちに認識させたのがAlexNetであり、中島氏はこれを「AIの冬が終わり、春が来て最初の一輪の花が咲いた」出来事だと表現した。

このときトロント大学の学生たちは、主にCPUで行われてきた計算をGPUで行い、ニューラルネットを使って画像認識をした。GPUの能力を最大限に引き出す必要があり、そこで採用したのがCUDAだった。中島氏は、ここでOpenCLが採用されていたら世の中は全く違った形になっていただろうと言う。CUDAはNVIDIAのハードウェアに特化して作られていたため、その時点でGPUの能力を引き出して画像認識の性能を高めるにはOpenCLよりCUDAのほうが良かった、という事実もあったと中島氏は認めている。AIの冬を春に変えた最初の一輪の花がCUDAの上で作られたことが、今のCUDAの重要性を決め、ある意味でこの時点でNVIDIAの勝利が決まった、というのが中島氏の評価である。

OpenCLにとどめを刺したのはApple自身だった

その後もOpenCLは存在し、Appleもサポートを続けた。しかし中島氏によれば、OpenCLにとどめを刺したのは、OpenCLを作ったApple自身だった。2014年、AppleはNVIDIAのCUDAに相当する独自のプラットフォームMetalを発表した。OpenGLとは全く別物で、科学技術計算とグラフィックスの両方をサポートする。

中島氏はその背景をいくつか挙げる。2014年の時点でAppleはすでにiPhone用のチップを多数作っていたが、グラフィックスにはOpenGLを使うしかなかった。しかしOpenGLは時代遅れのレイヤーになっており、Appleのシリコンの能力を最大限に引き出せなかった。AppleにはOpenGLやOpenCLを進化させてCUDAなどに対抗する選択肢もあったが、そうはせずMetalに移った。

最大の理由として中島氏が挙げるのは、Appleのチップ戦略である。MacのチップをIntelから自社製に切り替えたのは2020年だが、そのロードマップは2014年の時点ですでに決まっていたのではないか、と中島氏は推測する。iPhoneやiPadだけでなくMacも独自のCPUと独自のGPUで勝負するなら、それに最適化した開発環境としてMetalを用意するのは理にかなっていた。

もう1つの理由はユニファイドメモリーである。AppleはCPUとGPUの両方から同時にアクセスできるユニファイドメモリーを持つチップを作り始めていた。これがあるとCPUからGPUへデータを渡すコストが非常に安くなり、効率よく処理できる。しかしOpenCLやOpenGLのような抽象度の高い仕組み、それもユニファイドメモリーを持たないパソコンで動くよう設計されたものでは、Appleシリコンの利点を最大限に生かせないという欠点があった。

中島氏は、Metalへの移行はAppleとしては正しい戦略だったと評価しつつ、それが実質的にOpenCLを殺すことになったと述べる。AlexNetがCUDAを採用した時点でOpenCLの負けはかなり見えていたが、最後の一本の藁どころか、もっと重いレンガのようなものを背中に乗せてOpenCLを終わらせたのがAppleのMetalだった、というのが中島氏の表現である。

Vulkanはなぜ後継になれなかったのか

OpenCLやOpenGLを管理していたKhronosグループは、従来のOpenGLなどよりも低レベルで科学技術計算もできるオープンなプラットフォームとしてVulkanも発表している。しかし中島氏は、これはほとんど皆に無視されていると言う。

UnityやUnreal Engineのようなゲームエンジンは、OpenGLの後継であるVulkanをサポートしているが、それは彼らにとって必須の作業としてやっているにすぎない。ゲームエンジンはDirectX、Metal、Vulkan、OpenGLを並行してサポートし続けているので、Vulkanの存在意義がなくなったわけではない。ただ、少なくとも科学技術計算においてOpenCLの役割を引き継ぐことは、Vulkanには全くできていない、と中島氏は見ている。

結果として、科学技術計算の分野はNVIDIA専用のCUDA、Apple専用のMetal、Khronosグループが推すVulkanの三本立てになっている。しかし中島氏によれば、Vulkanを使っている人はほぼおらず、大半はCUDAである。Mac、iPhone、iPad向けの科学技術計算やAIにはMetalが使われているものの、デファクトスタンダードはCUDAだ、というのが中島氏の整理である。

PyTorchで書いてもCUDAから逃れられない理由

直感的には、AI研究者は好んでC++のような低いレイヤーでプログラムを書きたいわけではなく、PyTorchのようにPythonで高いレベルから書くほうが楽である。そうであればCUDAは関係ないはずだが、中島氏はそうはならない理由を2つ挙げる。

1つ目は、PyTorchの下にある標準ライブラリの問題である。PyTorchも最終的にはGPUを呼び出すが、その下にある行列計算を効率よく行うライブラリなどはCUDAの上に書かれており、最適化が非常によく進んでいる。AMDもそうしたライブラリを提供・改良しているが、NVIDIAの上で開発する研究者や開発者が大量にいるため、PyTorchの下の標準ライブラリですらCUDA版のほうが性能がいい状況がある、と中島氏は言う。

2つ目は、最先端の研究者自身がCUDAを書いていることである。大規模言語モデル、テキストからの画像生成や動画生成など、研究者たちは新しいニューラルネットで様々なことに取り組んでいるが、Pythonで書いてPyTorchのライブラリを呼ぶだけでは十分な性能が出ない。そのため、たとえばメモリーのコピー量を減らすような低レベルのライブラリをCUDAで作り、PyTorchからエクステンションとして呼び出す、といったことが行われている。最前線の研究者たちは、他の研究者より速く、あるいは安く画像や動画を生成する競争をしているので、今もCUDAを書き続けている。この意味で、最先端のAI研究はNVIDIAの圧倒的な勝利だ、と中島氏は述べる。

Macユーザーとしての実感

中島氏は自身の体験も紹介した。現在のメインマシンはMacで、面白い論文が出てソースコードがオープンソースになっていると試してみようと思うが、ほとんどの場合NVIDIAのチップがないと動かず、Mac上では動かない。中島氏自身は本業としてニューラルネットそのものの研究をしているわけではないが、最先端の研究をするならNVIDIAのGPUを載せたマシンを持っていなければ話にならないのが現状だ、と語る。これが、一般に言われるNVIDIAがCUDAで築いた囲い込みであり、一人勝ちが続いている理由だというのが中島氏の説明である。

学習は独走、推論にはまだ余地がある

最後に中島氏は留保を付けた。メルマガでも時々書いていることとして、NVIDIAの圧倒的な勝利は基本的に学習プロセスの部分であり、推論についてはAMD、Qualcomm、あるいはグロックのようなベンチャー企業など、他社にもまだチャンスがあると言う。推論の行方はまだ分からないとしつつも、少なくとも学習プロセスにおけるNVIDIAの独占状態はまだまだ続くと思う、と中島氏は締めくくった。