ニュース

【GDC 2014】次世代ゲームはGPUの活用でAIが進化する?

AI Summitで議論されたAI処理のGPGPU演算アプローチ

3月17日~3月21日開催(現地時間)

会場:San Francisco Moscone Convention Center

AI Summitのセッション会場

 チュートリアルデイ定番の注目トラックといえば。AI Summit。今回も各社・各大学でゲームAIを研究する開発者が集まり、最新タイトルのAIポストモーテムやAI処理の新技術についてのトピックが幅広く講演されていた。

 本稿でご紹介するセッション、“Massively Parallel AI on GPGPUs with OpenCL or C++”は、その中でも未来志向の強いセッションだ。ここでは従来CPUで行なわれてきたAI処理をGPUで高速化するアイディアが具体的に披露され、その利点と実装例が紹介された。

 近年のPCに搭載されているビデオカードのGPUや、統合型GPU、あるいはプレイステーション 4やXbox Oneといった次世代機はGPUパワーが大幅に向上したほか、GPUをグラフィックス以外の目的にも幅広く使えるアーキテクチャとなっている。それをAI処理に応用することができれば、次世代ゲームの品質をまたひとまわり高められるかもしれないい。そんな可能性を見せてくれる講演だ。

CPU性能は頭打ち。これからはAIもGPGPUだ!

Alex Champandard氏(左)、Andrew Richards氏(右)
CPUクロックの変遷。PCもゲーム機もスマートデバイスも頭打ちだ

 本セッションで講演を行なったのはAIGameDev.comの代表Alex Champandard氏と、CodeplayのAndrew Richards氏。どちらも一線級のゲームAI研究者で、毎年のAI Summitを引っ張っている人物。今回のセッションでも具体的な実装方法にまで踏み込み、丁寧なチュートリアルを展開した。

 今回のテーマはAI処理のGPGPU化。これまでCPUでやっていた処理をGPU処理に置き換えて高速化しようというアイディアだが、そもそもどうしてGPU処理化が求められるのだろうか?

 それは近年のコンピューター・アーキテクチャの変遷に理由がある。PCやゲーム機は黎明期から2005~~6年頃までの間、CPUクロックの向上によって性能アップが牽引されてきた。ところが3~4GHzのクロックレートが達成されると、それ以上のクロック向上が望めなくなってしまった。モバイルプラットフォームも、2013年~2014年にはCPUクロックの向上が止まりそうな気配だ。

 代わりに性能向上を牽引するようになったのがGPUである。GPUはグラフィックス処理のために生まれたものだが、その本質は超並列プロセッサ。小さくて単純なタスクを膨大に並列処理するのが得意なのだ。ある種のタスクではCPUを大幅に上回る効率を達成できる。CPUの性能向上がこれ以上望めない以上は、AI処理もGPUを活用する方向に進化すべき、というのが議論の発端だ。

デスクトップもスマートフォンも近年はGPUの性能向上がCPUを大きく凌駕してきた
実際の処理よりも命令データの読み取りにより多くのパワーが必要という問題も、GPUでは超並列化で緩和される。
グラフィックス処理は超並列的に行なわれている。ならAIも……

 とはいえ、通常はグラフィックス処理に使われるGPUを、うまくAI処理に使えるのだろうか? その答えは部分的にYES、部分的にNOだ。基本的に、GPU処理では高度に並列化できるタイプのタスクでなければ逆に効率が悪くなってしまうため、アルゴリズムの選択や実装には一工夫が必要だ。

 セッション内ではいくつかの実装例が上げられた。例えばAIの位置評価であったり、視線チェック、経路探索処理の基礎となるA*(エースター)探索アルゴリズムだ。

 ただし、単にGPUでアルゴリズムを走らせれば速くなるというものではなく、同時にたくさん並列処理することがポイント。例えばA*は単にGPUで動かすだけならCPUの73倍も遅いというから驚きだ。しかしこれをきちんと並列化して、同時にたくさん動かせばCPUの2倍以上の効率が達成できるという。

位置評価処理。各点からの距離や視線をチェックする処理は相互の依存関係が少なく、簡単に並列化できる
経路探索の基本的なアルゴリズムであるA*の並列化数と処理速度の関係
視線判定、Line of Sight処理。ボクセルベースで3D空間でも使える

AIのGPGPU化は次世代機でこそ花開く?

データ並列化された経路探索処理のイメージ
各並列ユニットのワークメモリに載るように分割

 このようにAI処理のGPUによる高速化は“並列化できるかどうか”がカギとなるため、広範なAI処理の中でもローレベルな分野での活用に限定されるようだ。既存のアルゴリズムを並列化可能な形に変形することも必要だという。例えば、これまではポリゴン基準でやっていた判定処理を、空間分割が容易なボクセル方式にするなどだ。

 これによる意外なメリットもある。GPUによるAI処理は総当りに近い方法を使うものが多く、その副産物としてCPU向けのAIアルゴリズムでは出てこないような大量のデータを得られることがある。これをうまく使えばAIの精度をさらに向上させられるかもしれない、という。

 本講演を聴講していたとあるAI研究者によれば、AIのGPGPU化は一筋縄ではいかなさそう、とのことだ。

 というのも、近年のゲームAIは多層化が進んでいて、一部をGPU化すると、全体としてはGPUとCPU間で頻繁にデータ転送が発生することになる。これは、CPUとGPUが別々のメモリ空間にある従来のコンピューター・アーキテクチャではメモリバスがボトルネックになってしまう。単純にGPU処理の割合を増やしても、全体としては遅くなってしまう恐れもあるわけだ。

 一方、次世代ゲーム機や近い将来のPCアーキテクチャで採用されるヘテロジニアスなアーキテクチャでは、CPUとGPUがメモリ空間を共有する仕組みのため、AIのCPU処理とGPU処理が混在することになっても、期待通りのパフォーマンスを得られるかもしれない。というわけで、AIのGPGPU化はほとんど純粋に次世代機マターといえそう。

 本セッションではGPGPU化されたAI処理の実例がいくつか紹介された。本格的な応用はまだ先の話としても、精度が上がり、高速化が進めば、前世代のゲームと次世代のゲームを分ける最大のポイントは「AIの質」、ということになるかもしれない。

 いずれにしてもAIの良し悪しはゲームの手応えを大きく変えるものであることは間違いない。この分野でさらなる研究と応用が進むことを期待しよう。

(佐藤カフジ)