西川善司のグラフィックスMANIAC
ためになる3Dグラフィックスの歴史(6)。AI技術の進化にGPGPUがもてはやされる背景
2023年4月17日 06:05
前回は、熟成を極めたDirectX 11と、「別バージョンのDirectX 11」として誕生したDirectX 12を紹介した。そしてこのDirectX 12がDirectX 11と併存することになった経緯、DirectX 12が誕生した時勢などについても解説しつつ、最後は近代GPUの基本技術基盤である「プログラマブルシェーダ」技術が進化していった結果、新概念「GPGPU」技術が誕生したことにも触れた。
今回は、現在このGPGPU技術が、GPUにとって「3Dグラフィックス描画」に優るとも劣らぬほどに「重要なGPUの活用先」となってきている状況について深掘りしていきたい。
実は、昨今の「人工知能ブーム」や「自動運転技術の発展」は、このGPGPUという概念が誕生しなければ、ここまで急速に進歩しなかったかもしれないと言われている。
「ゲームの映像を描画すること」が主な仕事だったGPUが、どのようにして人工知能や自動運転といった技術開発に関係していったのか、その流れを振り返っていくことにしよう。
今回は、かなり話が方々へと脱線していくが、このシリーズのまとめということで、あらかじめご了承いただきたい(笑)。
GPGPUが巻き起こしたマシンラーニング型AIのビックバン現象
その筋の研究者達が、GPGPU技術をマシンラーニング(機械学習)型AIの実現に応用し始めたのは、2010年前後くらいからだとされる。
そして、昨今のAIブームの直接のきっかけは、2012年に起きた「ある象徴的な事件」ではないか、とも言われている。
スタンフォード大学が2010年より立ち上げた大規模な画像データベースに「ImageNet」というものがあり、当時約1,400万枚におよぶ膨大な画像データベースから課題として抽出された約50万枚の画像を学習し、その学習を完了したAIに対して約2万枚の試験画像を見せ、「これがなんであるか」を推論させる画像認識AIの競技「ImageNet Large Scale Visual Recognition Challenge」(ILSVRC)が毎年行なわれていた。
ちなみに、この競技自体は2017年が最後の開催となっている。
この「AIの画像認識力の優劣を競う競技」の2012年大会において、トロント大学のAlex Krizhevsky氏らが、GeForce GTX 580×2基構成のGPGPUマシン(要は2GPU構成のPC)で、平均的な人間の正解率を超える結果をはじき出して優勝した。
なお、優勝したマシンラーニング型AIの実装手法についてまとめた論文は「ImageNet Classification with Deep Convolutional Neural Networks」としてまとめられている。
NVIDIAのCEO、ジェンスン・フアン氏も、後年この2012年の出来事を「マシンラーニング型AIの世界にビッグバンが起きた」と語っている。
この事件以降、マシンラーニング型AIはKrizhevsky氏が行なった実装手法に倣うようになり、進化と発展が一気に加速する。
また、2014年にはスタンフォード大学のAndrej Karpathy氏らが、画像を見せると流暢な英語でその画像の内容を解説する作文生成タイプのマシンラーニング型AIを発表した。これはまさに、昨今大ブームになっている対話型AIの源流に相当する研究だと言える。
AIに鳥が写っている画像を入力すると、単に主題としての「鳥」だけを認識するのではなく、その画像中に描かれているすべてのオブジェクトを認識して、各オブジェクトの関係性を解釈して「鳥が木の枝に止まっています」と作文にまとめることができるAIが発表されたのだ。この論文は以下の動画で紹介されている。
人間に拮抗する人工知性がビジネスになる予感は10年前から?
ChatGPTに代表される、言語処理系AIの「凄み」は、実は今から10年以上前からその片鱗が現れていた。
2011年、アメリカのTVクイズ番組「Jeopardy!」の全米チャンピオン大会に、IBMの研究グループが開発したマシンラーニング型AI「Watson」を出場させたところ、人間の挑戦者達を抑えて優勝したことがある。
とは言っても、当時出題された問題のAIへの入力は、音声認識経由ではなく、人間の手入力によるものだった。そのため、対等な対決ではなかったようだが、「AIが人間にクイズで勝つ」という事象は大きな驚きとして受け止められた。
この「Watson」を開発したIBMの研究グループのリーダーRob High氏(IBM Fellow,VP,CTO)によれば、2010年代の人間は1日あたり2.5エクサバイト(2,500,000テラバイト)のデータをネットワーク上のストレージ上に出力しており、これが2020年代には1日あたり44ゼタバイト(44,000,000,000テラバイト)に突入すると予測している。
また、High氏は、そうなったときに膨大なデータから人間の興味のある事柄を抽出したり、そこから分析を進めたり、あるいはそれらを組み合わせて新たなるコンテンツを創出したりするための手助けをしてくれる存在として、マシンラーニング型AIエージェントはいずれ不可欠な存在となるだろうと述べていた。
2020年代の今は、まさにそんな状況になりつつある。
こうした「AIに支援を受けるコンピューティングパラダイム」をIBMでは「COGNITIVE COMPUTING」と命名し、2013年に新しいジャンルのクラウドサービスとして事業化している(日本でのサービス開始は2016年から)。
現在直近のWatsonの応用事例は、IBMのWatson活用事例のページにまとめられている。
IBM自身も斬新な料理レシピを生成する「シェフ・ワトソン」などを稼動させ、話題を呼んだ。また、Watsonを幼児向けの知育玩具に応用した「CogniToys」などもリリースされた。
ゲーム画面を見てプレイするゲームAIの誕生
2015年にはGoogle系の英国ベンチャーのDeepMind社が開発したAIに、クラシックなゲーム機「Atari 2600」のブロック崩し、インベーダーなど、全49種のゲームをルールを教えずにプレイさせ、以前のプレイよりもスコアが高かったら「そのプレイは良いプレイだった」という評価を与え、反復的にプレイさせて学習させたところ(いわゆる強化学習モデル)、半数以上のゲームにおいて人間のトッププレイヤーの腕前を上回った成果を報告した。
2016年には、このDeepMindの開発したAI「AlphaGo」が、人類最強の囲碁プレイヤーとも言われる韓国人のイ・セドル九段を4勝1敗の戦績で打ち破ったニュースが世界を駆け巡った。
ちなみに、このAlphaGoは、前出のAtari 2600をプレイしたAIと仕組み的には同じで、AlphaGoは基本的には囲碁のルールを知らないという事実も、業界に大きな衝撃を与えた。
実は、AlphaGoは過去の膨大な上級者同士の対戦の棋譜の流れを「白石を白ピクセル」「黒石を黒ピクセル」とした「白黒画像の遷移データ」として学習し、最終局面において「これが勝ち」「これが負け」という「流れの筋」を学習して構築されたAIだった。
なので、囲碁というゲームのルールそのものを深く理解はしていない。セドル九段が唯一勝利を収めた第4局は、中盤でAlphaGoが学習した膨大な過去の棋譜にないと推測される“奇手”を打ったことが勝因につながったと分析されている。
囲碁の基本ルールすら知らなかったAlphaGoの弱点を突いてセドル九段は勝利したというわけである。SF漫画みたいな話でちょっとカッコイイ逸話である。
日本におけるマシンラーニング型AIのゲームへの導入事例
日本においても、コンピュータゲームに対するAIの導入の研究は盛んだ。
2019年に開催されたCEATEC 2019において、バンダイナムコは縦スクロールシューティングゲームの名作「ゼビウス」をプレイするAIロボを発表した。
このAIは、前出のDeepMindが開発したゲームプレイAIとほぼ同方針の「教師なしAI」×「強化学習型AI」として開発されたものになる。
つまり、AIはゲームのルールを一切教えられていない赤子状態でゼビウスをプレイさせられ「良い行動」をしたら「えらいぞ」と褒美を与えて訓練を繰り返し、開発されたものになる。
学習にあたっては「実際のゲーム画面の15fps単位の画像」(一部処理しやすいように画像を低解像度化+鮮鋭化)を入力情報とし、「ゲーム画面に反応したレバー/ボタン操作」を出力情報としていた。
我々がPCやゲーム機で普段プレイしているようなコンピュータゲームに対しても、マシンラーニング型AIの導入の研究は行なわれている。
特に興味深いのは、対人戦を想定したバトルAIの研究で、それらのAIは我々人間が実際に対人戦をプレイするように「その時点での戦局(ゲーム状況)」を理解した上で、AIが的確に方向レバー入力とボタン操作を行なわせて戦うものである。
まず、先陣を切って商品化にまで漕ぎ着けたのがSNKだ。同社が2019年に発売した「サムライスピリッツ」(以下、サムスピ)で、そのAIプレイヤーが実装されている。
サムスピでは、プレイヤーという存在をシンプルな入出力演算器として考えているのが興味深い。
具体的には、プレイヤーについて「1フレーム単位のゲーム状況」を入力情報として与えてやると、「レバー操作とボタン押し」を出力する演算器と見なすのである。
なお、AIが出力する「レバー操作とボタン押し」は、あくまで「そういう操作をした」と見なされるゲーム操作データになる。物理的に実在するコントローラのレバーやボタンをロボットハンドが操作するわけではない。
ここで言う「ゲーム状況」とは具体的には、闘い合う2体の両キャラ位置とモーション状態、両者のゲージ状態、残り時間、現ラウンド数(ラウンド取得状況)などを指す。
サムスピでは、人間がサムスピを遊んだ際の「1フレーム単位のゲーム状況」とそのプレイヤーの「レバー操作とボタン押し」をマシンラーニングさせることで、そのプレイヤーのプレイスタイルを模倣するAI(ゲーム内ではゴーストと呼称)を構築する機能を搭載したのだ。
同年、2019年に開催されたCEDEC 2019では、スクウェア・エニックス傘下の株式会社Luminous Productionsに所属する上段達弘氏が、3DバトルゲームのプレイヤーAIを、サムスピのゴーストAIに近いアプローチで制作した事例を発表している。
AI技術の開発になぜGPGPUが有効なのか
前出のAlphaGoでは、公開されている過去の膨大な数の世界トッププレイヤー同士の対戦棋譜を「畳み込みニューラルネットワーク」(CNN)に入力してマシンラーニングさせ、これを言わば「基礎知識」として持ち、この同じ基礎知識を持ったAI同士で対戦させて、勝敗が付いたら勝った方のゲームの進め方を「良棋譜」として学習結果に加えることで「腕前の強化」が行なわれていった。
CNNは画像認識AIによく使われるニューラルネットワークで、入力した画像の特徴を抽出することに向いている。
たとえば、膨大な「猫」の画像をCNN入力して、その学習結果として猫の特徴を取得すれば、撮りたてほやほやの新たな「猫」写真についても、このCNNはこれを猫として判断できるようになる(実際には入力画像が猫である確率を算出する)。
CNN以外のニューラルネットワークには、たとえば回帰性ニューラルネットワーク(RNN : Recurrent Neural Network)と呼ばれるものもある。このRNNは、当初、音声や文章のような1次元データを取り扱うのに有効だとされていた。
たとえば英語で「I」(私)のあとに続く単語として「am」や「was」が来る確率が高いことが見込まれるが、もし「I」の前に「When」があったとすると「When I」となるので「am」ではなく「was」へ続く可能性がグッと高まる。
このように、データ同士の相関性を学習して動作するAIがRNN型AIである。言語の解読や翻訳、作文といった用途には、RNNが適しているとされる(現在はほかの手法が活用される傾向にあり)。
さて、そもそもこのニューラルネットワークとは何なのか。
和訳すれば「神経回路網」となるが、機能だけに着目して簡潔に説明すれば「複数要素からなるデータを入力してやると何らかの結果を返す関数」のようなものだ。
これまでにさまざまな形態のニューラルネットワークが考案されているが、その多くの根幹演算には畳み込み演算(Convolution)が用いられる。
畳み込み演算とは、与えられた2つの数列(データ)の要素同士を全組み合わせで乗算して加算し合わせる演算のことだ。
ギターなどの楽器音に残響を与えるエフェクター装置などは、この畳み込み演算をもっともシンプルに活用した音響機器である。
マシンラーニング型AIの形成過程(≒学習過程)、そしてそのAIを活用過程(≒推論過程)において、この畳み込み演算を、大量に行なうことになる。
畳み込み演算は、実務的には「行列同士の掛け算」なので、この計算はGPUが内包する膨大な「プログラマブルシェーダ実行ユニット」(つまりはシェーダプログラム実行ユニット)でそのまま演算可能なのだ。
すなわち、GPUをGPGPU的に活用すれば、膨大なデータ量の畳み込み演算が高速に行なえるわけで、だからこそ、AI技術開発にGPUが引っ張りだことなったわけである。
ただ、GPUは、もともと3Dグラフィックスを描画するためのプロセッサだ。畳み込み演算専用機として利用するには、シェーダプログラム実行ユニットには、テクスチャユニットを始めとしたグラフィックス描画支援機能がたくさん接続されている。
NVIDIAは、「GPGPU業界の方々がそこまで熱望するならば」……ということで、シェーダプログラム実行ユニットから余計な機能をバッサリとカットした畳み込み演算実行専用ユニットを、2017年発表のVolta世代のGPU「GV100」から搭載した。
そう、それが言わずと知れた「Tensorコア」である。実は「推論アクセラレータ」の異名を持つTensorコアだが、実際に行なえるのは畳み込み演算(行列の乗算)だけ。
Tensorコアは、1基あたり、最大4×4要素の行列同士の乗算が1クロックで行なえる。具体的には、下図のような64回の乗算と48回の和算を1クロックで行なうことができる。
普通のシェーダプログラム実行ユニットでは、1要素(1データ)が最大32bit浮動小数点(FP32)演算に対応しているが、Tensorコアはここは割り切っており、最大16bit浮動小数点(FP16)までと制限している。
AI技術開発用途では、精度的にはFP16で必要十分過ぎるくらいであり、AIが取り扱う学習テーマによっては8bit以下でも十分とされることも多い。よって、最近のNVIDIA GPUのTensorコアでは8bit整数(Int8)、4bit整数(Int4)、1bit(バイナリ)にまで対応する。
そうそう、最近のスマートフォン製品においては「AIチップ搭載!」というような触れ込みが目立つようになってきている。
AIチップ搭載という魅惑のキーワードに痺れて、つい「オレのスマホちゃんは人工知能搭載だぜ、すげえぜ」と自慢したくなることがあるが、実はそのAIチップとは、ここまでで解説してきた「シンプルな行列演算器の塊」にしか過ぎない。
いずれにせよ、高尚なAIも最小演算単位が畳み込み演算(行列の乗算)から成り立ってるということを考えると、我々の知性も根源自体はシンプルな演算の賜なのかもしれない……と思わされてなんとも感慨深い。
広がりを見せるマシンラーニング型AIの応用先
さて、2012年以降、センセーショナルな発展を見せたマシンラーニング型AIのすべてにおいて、NVIDIAのGPUがGPGPU的に利用されていた。
この事実は、前回紹介した「2010年の世界最速スパコンTOP10のうちの3台がNVIDIAのGPUベースだった」という事象に並ぶほど、NVIDIAにとって「GPGPUに対する強風の追い風」となったことは言うまでもない。
マシンラーニング型AIは、ごくごく簡単にたとえれば「膨大なデータ同士の相関性を計算し、これを学習データにする」「AI利用時には、入力データとその学習データの相関を求めて、その度合いに応じた推論を導く」……というような処理系となっている。
この仕組みは、画像の認識、インベーダーゲームをプレイするAI、囲碁をプレイするAIなどなど、あらゆる分野への応用が利く。
そう、2012年以降、GPGPUベースとなったマシンラーニング型AIは「どんな分野で有効か」の探索フェーズに入り、まさに各産業分野において高効率かつ高精度なAI開発が急ピッチで進められている状況となっていった。
たとえば音声データを取り扱った音声認識や、膨大な言語の文書データを取り扱った翻訳への応用はすでに実用レベルに達している。
意外なところではディズニーやピクサーなどのCGアニメーション映画制作会社が、キャラクターに魅力的な動きを付けるのに、モーションキャプチャではなく、マシンラーニング型AIを応用する研究を始めている。
日本では、塩野義製薬が新薬試薬の臨床試験解析にマシンラーニング型AIの導入を開始したことを発表しているし、レントゲン写真やMRI像から疾患の有無を判断するエキスパートシステムに、マシンラーニング型AIを導入しようとする研究も進められている。
そして、リアルタイムに周囲の情景(映像)を認識して最良の行動を判断するだけでなく、過去の学習データから、今の情景から未来に起こりうる危険なことを確率的に予測できるマシンラーニング型AIもありふれた存在となりつつある。そう、自動車の自動運転向けAIなどはその最たる事例だと言えよう。
GPGPUの世界でも激化が進むGPUメーカー同士の戦い
近年では「NVIDIAは妙にGPGPUに注力している」などと言われることがあるが、むしろ「GPGPUを積極活用している業界の方が金に糸目を付けない勢いで高性能GPUを欲している」状況になっており、今やグラフィックス業界に優るとも劣らぬほどのGPU市場の上客になりつつある。
そんなわけで、企業体であるNVIDIAの行動方針に「GPGPUユーザー重視」の傾向が見られるようになったとしても不思議なことではない。
冒頭で紹介したGH100のような「GPGPU専用のGPU製品をグラフィックス描画向けよりも先行してリリースする」という状況は、こうした背景があるからなのだ。
さて、なぜここまでGPGPUの世界がNVIDIA一強になってしまったのだろうか。これにはいくつかの理由が考えられる。
Radeonブランドを有し、プログラマブルシェーダ技術の進化に大きく貢献したはずのATIは、大手CPUメーカーのAMDに2006年に買収されている。
AMDはCPUメーカーでもあるため、HPC(High Performance Computing : 学術界や産業界が欲する科学技術計算用の超高性能な計算処理系。端的に言えばスパコン)業界にCPUを訴求したいという思惑を捨てきれず、GPGPUの方向へ大きく傾倒した戦略をとることができなかった……と筆者は考えている。
さらに、AMDは「そうしたHPC分野には、CPUとGPUを統合させた新構造のプロセッサが適しているはず」という姿を見出していた。
この着想を元にした新プロセッサは当初「Fusion」というプロジェクトネームで発表されたのち、実際の製品としてはAPU(Accelerated Processing Units)シリーズで展開された。
またAMDは、次世代APUシリーズに向けて、CPU管理下のメモリ空間とGPU管理下のメモリ空間を論理的に共有一体化させたGPGPUプラットフォームとして、HSA(Heterogeneous System Architecture)を提唱。
この流れは非常に有効そうに見えたのだが、初期のAPUはどちらかと言えばエントリークラスからミドルクラスの性能を持った、一般ユーザー向けの普及価格帯PC向けソリューションとして訴求されていため、HPC業界に振り向いてもらえなかった。。
歯に衣着せずに言うと、最初期のAPUはCPU性能もGPU性能もHPCが求めるパフォーマンスに達していなかった……ということである。
このタイミングで、若干時代の流れを読み間違えたAMD(ATI)は、GPGPU向け戦略(≒近代HPC戦略)においては相応の遅れをとってしまった感がある。
ATI買収をきっかけにしてAPU開発に傾倒し、GPGPU環境整備に遅れをとったAMDだったが、このAPUプロジェクトそのものは一定の成功を収めているということだけは付け加えておこう。
そう、PS4、PS5、Xbox One、Xbox Series Xなどの近年の家庭用ゲーム機のメインプロセッサは、すべてAMDのAPUであり、言わばFusionプロジェクトの間接的な産物なのであった。
さて、AMDは、この「遅れ」を取り戻すべく、2015年前後あたりからGPGPU環境整備ヘの取り組みを積極的に行なうようになり、2016年にAMD独自のプラットフォーム「ROCm」(Radeon Open Compute Platform)の推進を開始した。
以降、堅実的な開発と環境整備を続けたことで(まだまだNVIDIAのCUDAプラットフォームほどではないが)、徐々にHPCの世界で存在感を強めつつはある。
近年では、AMDのRyzen CPUと、同社のGPGPU専用GPU製品であるRadeon Instinctの組み合わせで構成されたスパコンが、米国のオークリッジ国立研究所(ORNL)と米国エネルギー省(DoE)に採用されたことが大きく報じられた。
GPUの覇権争いは、今後GPGPUの世界でも続くと見て間違いない。
「ためになる3Dグラフィックスの歴史」シリーズのまとめ
もともとこのシリーズは、編集部から「なぜNVIDIAとAMD、Intelといった異なる半導体メーカーが作るGPUで、同じようなゲームグラフィックスが出せるのでしょうか?」というお題が起点となっていた。
全6回の間、だいぶ脱線することも多かったが、GPUというプロセッサの活用のされ方がここ20年くらいで、まるっきり変貌してしまったので、それも致し方がないといったところ。
今回のシリーズは、本稿でひとまずの終わりとなる。最後に、全6回のまとめを年表的な箇条書きで示し、元々のお題に対する回答のようなものを示そうかと思う。
【1】1990年代初期。もっとも身近なリアルタイム3Dグラフィックスはゲームセンターのゲーム機に存在した。
【2】1990年代中期。PCでリアルタイム3Dグラフィックスを実現する気運が高まるが、それを担当する3Dグラフィックスハードウェアとその制御APIが乱立した。DirectX(Direct3D、以下同)は登場当時は求心力が低かった。
【3】1990年代後期。DirectX7登場とともに、それまでCPUが担当していたジオメトリ演算系までをも、3Dグラフィックスハードウェアが担当可能になる。「GPU」というキーワードの誕生を機に、いくつかあった3DグラフィックスAPIにおいても淘汰が開始され、DirectXの立場が向上する。
【4】2000年代初期。GPUの機能拡張(≒3Dグラフィックスにおける新表現の実装)をソフトウェアの形で行なっていく枠組み「プログラマブルシェーダ技術」が誕生する。これにいち早く対応したDirectX 8がこの技術の進化を牽引していく流れに。
【5】2000年代中期。プログラマブルシェーダ技術の発展とともにGPUの進化が加速。一方で、たくさん存在した3Dグラフィックスハードウェアメーカーの淘汰が進む。
【6】2000年代後期。NVIDIA GeForce対ATI(AMD) Radeonの闘いが激化。この闘いが追い風となってGPUはより高性能化。プログラマブルシェーダ技術のプログラマビリティが一層強化。DirectXもDirectX 11まで進化する。
【7】2010年代初期。高まったGPUのプログラマビリティがGPGPU技術を育み、実用化へと進む。任天堂、ソニー、Microsoftの三大家庭用ゲーム機はすべてプログラマブルシェーダ技術ベースへ。対応最後発は2012年発売の任天堂のWii U。ちなみに、もっとも早く対応したのは2001年発売の初代Xbox。プレイステーション系では2006年発売のPS3が最初となる。
【8】2010年代中期。GPGPUがマシンラーニング型AIの開発に大きく貢献。GPU制御APIの抽象レイヤーを薄型化する流れが発祥した結果、DirectX 12とVulkanが台頭する。ただし、旧来APIのDirectX 11とOpenGLも併存することに。
【9】2010年代後期。GPGPU技術の加速度的な進化で、自動車の自動運転技術開発を始め、GPGPUとAIが切っても切れない関係性へ。GPGPU市場が大規模化する。また、このタイミングでGPUにリアルタイムレイトレーシング機能が搭載される(本シリーズでは未フォロー)。
こんな感じになるだろうか。
「なぜ、NVIDIAとAMD、Intelといった異なる半導体メーカーが作るGPUで、同じようなゲームグラフィックスが出せるのでしょうか?」という問いに対しては、
「プログラマブルシェーダ技術」の規格化によって、3Dグラフィックス表現がソフトウェアの形で行なえるようになり、広範囲な互換性が担保されるようになったから
……ということになろうか。
プログラミング言語的な方言、APIのパラメータの与え方の違い、座標系の違い……といった細かな差異はあれど、同じプログラミングモデルで制作されているため、ほとんどの近代3Dゲームグラフィックスは異機種間に対する相互移植が可能となっている。
また、昨今の発展著しい先進のゲームエンジン技術の台頭により、そうした相互移植性まで面倒を見てくれるようにもなってきている。
ただ、今でもGPUごとに、プログラマブルシェーダ技術の実行時の結果に、微細な差異が出ることはある。
なぜそうしたことが起こりうるのかについては、本シリーズの2回目や3回目で紹介した「緑のたぬきと赤いきつね」の闘いのあたりで触れたエピソードのようなことが、未だに細かい部分で残っているからである。
なお、今回のシリーズでは、レイトレーシング技術に付いては一切触れなかったが、これはまだ進化の途中であり、この後の進化の方向性が定まっていないためだ。また時間が経ったときに、このあたりの話題はお届けすることにしたい。
それではまた。