NVIDIAの強さはCUDAにある:中島聡が振り返るGPU開発環境の歴史と「学習分野での独占」
中島聡のLife is Beautiful中島聡氏は、NVIDIAの最大の武器と呼ばれるCUDAについて、GPUの仕組みからグラフィックスAPIの覇権争い、AlexNetの登場、AppleによるMetalの投入までを自身の経験を交えて解説した。ChatGPTにインタビュアー役をさせる形式で、中島氏はほぼ一人で語っている。中心にある問いは「なぜNVIDIAの一人勝ちが続いているのか」であり、中島氏はAI研究の決定的な転換点でCUDAが選ばれたことと、その後に積み上がった開発資産がNVIDIAの優位を支えていると見ている。そのうえで、少なくとも学習の分野ではこの独占がまだ続くと述べている。
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も加わったが、これは後で触れるとして話を進めた。
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の独占状態はまだまだ続くと思う、と中島氏は締めくくった。
はい、こんにちは。中島です。今日は、皆さんの大好きなNVIDIAの最大の武器と呼ばれてるCUDAの話をしたいと思います。今日は珍しくスライドも1枚ですけど、用意してちゃんと準備してますんで、例によってChatGPT君にインタビューをしてもらおうと思います。はい、インタビューを開始してください。
それではインタビューを始めましょう。CUDAはNVIDIAが開発した並列コンピューティングプラットフォームで、GPUのパワーを活用して科学技術計算やディープラーニングなど様々な分野での高速な処理を可能にしています。中島さん、CUDAの登場によってソフトウェア開発や研究分野でどのような変化があったのか、またご自身の経験を踏まえてその影響や可能性についてお聞かせいただけますでしょうか?
GPUっていうのは元々はゲーム用に作られて、ゲームのグラフィックス用に作られて。ゲームのグラフィックスってのは結局、例えば1000×1000の画面があった時に、1000×1000だから100万ピクセルの画素を処理しなきゃいけないんだけど、結構な処理が独立して行えるんですよ。ピクセルごとの、例えば1000×1000のドット画像があった時に、その中で緑よりも赤いピクセルだけを抜き出すみたいな作業っていうのは、実は隣の色は関係ないので並行してできるじゃないですか。
実はCPUってのは結構その並行作業が得意じゃなくて、最近のCPUになるとマルチコアで、CPUに相当するコアって呼ばれるものが4つとか8つとかあったりするから、多少は並行処理ができるんだけど、基本的にはCPUっていうのは順番に処理する、1つ1つのピクセルを順番に処理するために作られたものなので、例えば100万個のピクセルがあると100万回動かなきゃいけないので、たとえ1個あたりの処理時間が例えば1マイクロセカンドだったとしても、計算合ってるかな、100万個あると1秒かかっちゃうわけですよ。
それに対してGPUっていうのはグラフィックス用に作られてるので、ある意味CPUに相当するっていうか、CPUよりすごく、はるかに小さいものがたくさん載ってるんですよ。例えばCPUに相当するものが1000個載ってれば、たとえ100万個のピクセルを処理しなきゃいけなくても、1000個同時に動かすことができれば、100万÷1000なので1000回実行すればいいじゃないですか。そうすると1個あたりの処理が1マイクロセカンドだとしても、その1000倍なので1ms。要はCPUがやるのと比べて1000倍のスピードでできるっていうのがGPUなんですよ。
元々はグラフィックス用にできていて、GPUのハードウェアを使うためのライブラリーとして、最初にOpenGLっていうものがシリコングラフィックスっていう会社から発表されました。これがオープンソースとして公開されたので、一時はこれが業界標準になりそうな勢いがあったんですよ。
ところが1995年に、私もWindows 95のチームに入ってたからあれなんだけど、Windows 95と同時にDirectXっていうのをMicrosoftが発表して。これは、わざわざというよりも、Windows上にもいろんなグラフィックスのカードがあったので、その様々なグラフィックカード用に、それぞれのハードウェアに、それまでは結構直接プログラムを書かなきゃいけなかったのを、DirectXっていうレイヤーを設けることによって統一しますっていうことで発表したのがDirectXなんですよ。
ただ結構これは業界からは批判を受けて、せっかくOpenGLっていう標準、オープンソースの標準をシリコングラフィックスが出したんだから、MicrosoftもOpenGLを採用すれば、それが世界標準になったはずなのにって結構批判されたんですけど、MicrosoftとしてはOpenGLが技術的に気に入らない部分もあったし、それからWindows用に作ったアプリケーションを囲い込みたかったっていう戦略的な理由もあったので、DirectXというものを出しましたっていうことで、その時期、今もそうだけど、OpenGL路線とDirectX路線っていうのがグラフィックスに関しては2つできてしまったんですよ。
それは実は今でも続いていて、例えばUnityとかUnreal Engineとかっていう、ゲーム用の開発環境を作ってる会社は、実は未だにOpenGLとDirectXの両方をサポートしていて。要はWindowsマシンで動く時はDirectX、そうじゃない、例えばゲームマシンだったりで動く時はOpenGLで動かす。ちょっと複雑なのは、今度はAppleマシンで動かす、iPhoneとかで動かす時はMetalっていうのも出てきちゃったんだけど、その話は少し後でします。っていう歴史がありました。
今まで、CPUとちょっと違う、並列計算が得意なGPUを使いこなすための開発環境として、OpenGLっていうのとDirectXができましたと。その時代が長らく続いてたんですが、2007年にNVIDIAがCUDAっていう独自の開発環境を発表したんですよね。
これに関してはいろんな意見があって、NVIDIA自身がその時点で、2007年ですよ、その時点でAIのことを考えていたとは思いにくいんだけど、NVIDIAとしては、NVIDIAはグラフィックチップを提供する会社の1つだったので、自分たちのところに囲い込みをしたいっていう思いもあったし、それからその頃少しずつ、まだAIじゃなくて、どっちかって言うとGPGPUとか言われてたけど、その汎用GPUを科学技術計算に使おうっていう動きが出てきてたので、それをしやすくするため。要はOpenGLとかDirectXを使うとグラフィックスはできるんだけど、科学技術計算には向かなかったのがあって、それをサポートするためにNVIDIAがCUDAというのを作ったと、私はその時点では理解してます。まだAIのことは誰もちゃんと分かってなかったので。
科学技術計算用の独自の規格をNVIDIAが出してきて、それはNVIDIAのチップの上でしか動かない状況だったんですよね。それが2007年で、2008年にAppleが今度はOpenCLっていう、オープンな形の科学技術計算用の開発環境を開発して発表したんですよ。それはmacOSの上でも動いて、それを使って科学技術計算をしましょうってことで。
要は、そもそもGPUで科学技術計算をしようってのは、それほど動きとしては大きくなかったけど、一部の研究者がね、科学技術の研究をしてる人として、AIじゃなくて、例えば気象の計算だとか、それから空気抵抗のシミュレーションとかってやってる人たちが使い始めたところで、Appleが、NVIDIA独自のものだと他のGPUで動かないので、OpenCLっていう規格を作って。これを使えばNVIDIAのGPUだけじゃなくて、他のAMDとかIntelを含めて、そのGPUの上での科学計算がオープンな形で、要はデバイスに依存しない形で作れますよっていうプラットフォームをAppleが作り、それをKhronosっていう非営利団体に渡して、標準化を進めましたと。
ここは結構大きな動きで、要はNVIDIAがCUDAっていう科学技術計算用のプラットフォームを発表し、それに対してAppleが、いや、NVIDIA独自は嫌だよ、OpenCLにしようって言ったところの政治的な動きでもあるんだけど、AppleとしてはNVIDIAに対する依存度を減らしたかったっていうのもあるとは思いますよね。
そもそもその頃Appleは、NVIDIAのチップを載せたMacも発表してたけど、その頃になるとiPhoneも出始めてたし、それからAppleとしてはNVIDIAみたいな一社に依存した形でコンピューターを作り続けるってことはしたくなかったので、例えばCUDAが標準になってしまうと、例えばMac用のゲームを作ってる人がCUDAだったり、ゲームの場合は別か、科学技術計算とかがCUDAだけで作られてしまうと、Appleとしてはそのアプリケーションは、要はNVIDIAのチップを搭載したMacでしか動かないってことになってしまうから、それはけしからんってことでOpenCLを作ったわけですよ。
っていう状況で、その瞬間、一瞬、CUDAというNVIDIA独自のものと、Appleが提唱した、作ってオープンにしたOpenCLが並列する形が少し続いてたんですよね。僕なんかその時は、OpenCLの動きは素晴らしいなと思って、それが世界標準になるんだろうなと思っていて、結構それもしばらく思ってたんですけど。
実は2011年に、この頃はまだ僕も含めてほとんどの人が知らなかったんだけど、AI業界である革新的なことが起こったんですよ。これがそのALXと呼ばれる、要は画像認識のコンテスト、コンピューターを使った画像認識のコンテストで、それまで人間が書いたアルゴリズムで書いた、C++とかでゴリゴリ書いたプログラムで戦っていた時代に、トロント大学の学生、今で言うイリヤさんとかはそうなんだけど、たちが作ったAlexNetっていうニューラルネットベースの画像認識ソフトが、突如、その他の今までの画像認識ソフトよりもはるかに性能のいいものをニューラルネットを使ってできるっていうことを証明したんですよ。
それはものすごく画期的で、これはもう単にGPUとかCUDAの話じゃなくて、AI業界全体で言うと、今すごくAIブームになってますけど、2011年以前はAIの冬って言われてて、AIなんか使い物にならないと思っていたところ、実はAIが使えるようになるっていうことを、少なくとも研究者たちの間に認識させたのがAlexNetで、これが2011年でものすごく重要な転換なんですよ。だからAIの冬が終わり、そこから春が来たと。最初の一輪の花が咲いたのが2011年のAlexNetなので、これはもう本当に今のAIブームのきっかけを作ったっていう意味で非常に重要なイベントなんだけど。
その時にトロント大学の学生たちがGPUを使ってね、今までは主にCPUしか使って計算してこなかったんだけど、GPUを使って画像認識をしました。それもニューラルネットを活用して。その時に彼らはニューラルネットを活用するには、GPUの能力を最大に引き出さなきゃいけないのでっていうことで採用したのがCUDAなんですよ。
ここは結構重要な話で、この時に彼らがOpenCLをもし採用してたら、世の中全然違った形になると思うんだけど、CUDAなんですよ。ここにはいろんな理由があるんだけど、ある意味CUDAの方が、要はNVIDIAのハードウェアに特化されて作られていたので、その時点であるGPUの能力を最大に引き出して画像認識の能力を高めるには、OpenCLよりCUDAの方が良かったっていう事実もあるので。
要はAIの冬を春に変えるという最初の一輪の花、AlexNetが実はCUDAの上で作られたっていうことが、今のCUDAの重要性を決めることになり、要はある意味でこの時点でNVIDIAの勝利が決まったみたいな、ものすごく大きなイベントが起こったんですよ。その後もOpenCLはあり、Appleはサポートしてたんだけど、とにかくAlexNetがどんどん伸び始めましたっていう状況で。
1つ言うと、OpenCLにとどめを刺したのが、実はそのOpenCLを作ったAppleだったっていうイベントが起こったのが2014年で。この時点でAppleがMetalっていう、独自の、要はNVIDIAのCUDAに相当するようなものを発表したんですよ。これはもうOpenGLと全然違うもので、独自のもので、科学技術計算とグラフィックスを両方サポートする。
ここはAppleの中にはいろんな戦略があったんだけど、まずAppleは、もう2014年なので、iPhone用のチップはもう散々作っていて、それ用のグラフィックスをやるとなったらOpenGLを使うしかなかったんだけど、OpenGLはかなりもう時代遅れなレイヤーになってたので、もっと新しいものを作らなきゃいけなくて。OpenGLも徐々に進化はしてたけど、Appleのシリコンの能力を最大限に引き出すことはできなかったんですよね。っていう意味でAppleとしては、OpenGLを進化させる、もしくはOpenCLを進化させるっていう形でCUDAとかに対抗することもできたんだけど、それはせずにMetalに移行しました。
ここは多分一番の理由は、その時点でAppleは、僕の方に、その、AppleがMac側のチップもIntelから変えたのは2020年だけど、その辺のロードマップはもうこの時点で決まってたんじゃないかなと僕は思いますよね。そうすると、要はiPhone、iPadだけじゃなくて、Macに関しても独自のCPU、独自のGPUで勝負するっていうことを考えると、それに最適化された開発環境を提供する、Metalを提供するっていうのはとてもいい話だったし。
あとAppleは1つ大きなイノベーションを起こしてて、それはCPUとGPUと両方から同時にアクセスできる、ユニファイドメモリーっていうのを持つチップを作り始めていて。それがあると、要はCPUからGPUに対してデータを渡すコストがものすごく安いので、すごく効率よくできるんだけど、例えばOpenCLとかOpenGLみたいな割と抽象化されたもの、それもユニファイドメモリーを持たないパソコンとかで動くように設計されたものだと、そこの部分の抽象度が高すぎて、Appleシリコンの最大限のメリットを生かすことができないという欠点もあったので、Metalに走ったっていうことはあります。
これはAppleとしては正しい戦略だったんだけど、これが実質的にOpenCLを殺すことになり。科学技術計算用のオープンプラットフォームとしてできていたOpenCL、そもそもAlexNetがCUDAを採用したせいでもうかなり負けが見えていたけど、最後の最後の1本の藁を、1本の藁っていうか、もっと重い、ずっしりしたレンガかなんかを背中に載せて、OpenCLを殺してしまったのがAppleのMetalっていうところですよね。
ちなみにOpenCLをマネージしてた、OpenGLもそうだけど、Khronos Groupっていうのが、Vulkanっていう、もう少し今までのOpenGLとかよりもローレベルで科学技術計算もできるっていう、オープンなプラットフォームも発表してますけど、ほとんどここはみんなに無視されちゃってますよね。
ゲーム用のエンジンを作ってる、要はUnityとかUnrealは、当然だけどOpenGLの後継であるVulkanをサポートして、グラフィックス、ゲームをサポートしてるけど、それはもう彼らとしては必須のこととしてやってて。基本的にはだからDirectX、Metal、VulkanプラスOpenGLっていうのをサポートし続けるってことが起こってるから、Vulkanの存在の意味がなくなってるわけじゃないけど、でも少なくとも科学技術計算においてOpenCLの後を引き継ぐという役割は、全然Vulkanにはできていない。
さっき言ったようにAppleがMetalを出してしまったために、今のところ大きく分けると、科学技術計算に関してはNVIDIA専用のCUDAと、Apple専用のMetalと、Khronos Groupが推してるVulkan。それ以外にも色々Khronos Groupはやってるんだけど、っていう3本立てになってるけど、基本的にはほぼVulkanを使ってる人はいなくて、大半がCUDA。Appleデバイス向け、Mac向けとかiPhone向け、iPad向けだけには、科学技術計算かAIに関してはMetalを使うっていうことが起こってはいるけど、デファクトスタンダードはCUDAなんですよ。
直感的にね、長くなったからそろそろ締めなきゃいけないけど、直感的に考えると、AIの研究者って別にわざわざC++とか低いレイヤーでプログラムを書きたいわけじゃなくて、本当はPyTorchとか、要はPythonとかで割とハイレベルなところで書いてやった方が楽なわけじゃないですか。楽だから、それであればCUDAは関係ないはずなんだけど。
まずそもそもPyTorchも最終的には下の方でGPUを呼ぶんだけど、PyTorchの下にある標準ライブラリー、例えばマトリックス計算、行列計算を効率よくやるとかっていうライブラリーはCUDAの上に書かれてて、そこに関しての最適化がものすごくよく進んでるんですよ。当然だけどAMDとかも頑張って、その辺のライブラリーを提供したり作ったり改良したりしてるんだけど、もうとにかくNVIDIAの上で開発してる研究者、開発者が大量にいるために、PyTorchの下の標準ライブラリーですら、CUDA版の方が性能がいいっていう状況がある上に。
それから今どんどんAIの研究者が新しいニューラルネットを使って大規模言語モデルを作るとか、テキストから画像を作るとか、テキストからビデオを生成するとか、いろんなことをやってる中で、単にPyTorchのライブラリーを呼んでるだけだと、PyTorchか、Pythonで書いてるだけだと十分なパフォーマンスが出ないので、結局CUDAですごくローレベルの、例えばメモリーのコピーの量を減らすライブラリーみたいなのを作って、それをPyTorchからエクステンションとして呼び出すみたいなことをして。とにかく最先端の人たちなので、他の研究者よりも早く、もしくは安く画像を生成する、動画を生成するみたいな競争が起こってるので、結局そこの部分では最先端の研究者たちがCUDAを書くっていうことが未だに起こってるので、そこの部分、要は最先端のAI研究に関しては、もうNVIDIAの圧倒的な勝利なんですよ。
僕も今メインのマシンがMacなので、時々面白い論文が出てね。論文が出てるだけじゃなくて、そこがオープンソースになってて、じゃあ試してみようと思うんだけど、ほとんどの場合NVIDIAのチップがないと動かないので、Mac上で動かないんですよという状況があるので。僕は別に本業としてAIそのもののニューラルネットの研究をしてるわけじゃないけど、ニューラルネットの本当の最先端の研究をするんだったら、もうNVIDIAのGPUが載ったマシンを持ってなきゃ話にならないっていうのが現状なので、それぐらいNVIDIAは強いんですよ。
それがみんなが言うところの、NVIDIAがCUDAを使って持っている囲い込み状況なので、NVIDIAの一人勝ち状態が続いてると。ただ、時々僕もメルマガで語ってるけど、このNVIDIAの圧倒的な勝利の部分は、基本的には学習プロセスの部分で、推論に関してはまだまだその他の会社、AMDだったりQualcommだったり、もしくはベンチャー企業みたいな、Groqとかそういうところにもチャンスがあるので、まだまだ分からないですけど、少なくとも学習プロセスにとってのNVIDIAの独占状態っていうのは、まだまだ続くなと思っています。
なんかこんなに一気に喋っちゃうと、もうAIは喋れなくなるので、そもそも聞いてないんじゃないかな。この白い丸になっちゃってるし。ちょっと1回これ閉じて、コネクションフェールドとかになってるから、もう喋れないかもしんないね。もう1回話しかけてみようか。もしもし。
聞いてなかったかもしれないけど、もう結構喋ったので、そろそろ締めようと思うので、締めのご挨拶をお願いします。もちろんです。本日は色々なお話を聞かせていただいて、本当にありがとうございました。とても楽しく有意義な時間でした。また次回もぜひ色々なお話を伺えるのを楽しみにしています。それではまたお会いしましょう。ありがとうございました。
はい、ありがとうございました。では。
記事公開 · 更新
