AMDがゲーミングアップスケーリングにAIの導入を検討 …… FSR4.0で対応するのかな?
VideoCardz.comとtomshardware.comの記事である。
まず書いておくがこれ、RDNAだけで出来るかは難しいところだ。もし、GPU単体で今のラスタライズ(レンダリング)の性能を維持してやるなら、より高度なAIアップスケーリングにAMDが対応させるならば、RDNAそのものに行列演算をするための演算器(NVIDIA Tensor Core 、Intel Xe Matrix eXtensions)が必要であるからだ。
尚、AMDの場合はRDNA3にWave Matrix Multiply-Accumulateという行列演算機能(命令セット)を備えているがこれはシェーダーのスカラユニットとコンピュートユニット(CU)で処理する構造であり、専用ユニットではない。これはinstinctやRadeon PROでも同じRDNAを使っていて兼用だからこその仕様でもある。
だからIntelのArc Alchemist+がDP4A命令セットをシェーダーで処理しているようにWMMAをCUで行うことは出来る訳で、AIアップスケーリングをする事も出来るというわけだ。ただ、これをやるとラスタライズの性能に影響が出てくるのは間違いない。何故ならシェーダーと兼用になるからだ。それ以上に純粋なCGの処理性能リソースが減ってしまう可能性もあるので、もしこれでやるにしてもいろいろ細かな調整している可能性が高いだろう。
そのように考えると、RDNA3.5という話が出ている時期Ryzen APU辺りが対応の本命になるのかもしれない。既存で対応させるなら、記事にあるように、Ryzen APUに内蔵されるXDNAのNPUを使う方法になるのだろうが……。ただ、XDNA等に搭載されるNPU性能は、NVIDIAのTensorやIntelのXMXほど高性能で大規模ではないし、XDNAにデータを渡して結果を返して貰うまでのwaitをゲームで許容できるほどの先読み方法と、帯域の余裕があるのか?という点でXDNA対応をするというのは微妙な雰囲気がある。もし対応しても長期サポートはしないような気がするし、品質が下手するとあまり安定しない可能性がある。
ちなみに、現在AMDのアップスケーリングは動画や写真のアップスケーリングによるシャープネス補正と時間軸に対する立体(3D)画像補完補正に色マッピング、ディザなどを組み合わせたものだ。 これにフレーム生成をする場合は、動画像に使われるI/Pピクセル補完の技術を組み合わせて移動方向の間に相当する中間のフレームを動的単純生成するのである。この動的単純にというのは、条件が既に決まっているということだ。
A⇒B⇒Cという状態の3フレームのCGに対して、必ず処理はA⇒A’⇒B⇒B'⇒C⇒C'というものを作る方式だ。
これは、パイプライン処理でA'やB'などを作る処理が流れ作業のレーンで一本筋となっている方式だ。だから、ある程度決まった品質でアプスケーリングや、フレーム補間生成の効果を示すことが出来る。但し、パイプ内で処理するのに適さない映像や画像があると、それらは上手く再現できなくなるという欠点を持っている。その代わり、演算は単純であり、処理に対する負荷度が少なく、メモリーリソースの消費が常に一定に保たれるのが特徴だ。ラスタライズを行うシェーダーユニットでも代替出来るので、AMDはこれを使ったのだ。FSR3では多少、Wave Matrix Multiply-Accumulateも流用しているかも知れないが、基本はパイプ処理である。
それに対して、IntelやNVIDIAのそれは、AIによってCGの移動方向を予測して光源から陰影の処理を割り出し、物体や流体の時間移動を予測して、フレームを生成したり、画質や解像度を補完し向上させていく物だ。AIを使って何をしているかというと、
A⇒B⇒Cという状態に対して、Aを分解したA’、A+、A-、A1、A2、A3……AzZ etc...という画像や映像フレームの中にある適応要件をひたすら取り出していく、適応要件とはアップスケーリングする際にそのままドットを増やしてしまうと画質が不鮮明になり悪化したりぼやけたりする部分のことだ。それに対して、前後のフレーム情報や光源位置情報など様々な情報を利用して、アップスケーリングに最適なフレームやドットを割出すのが、AI技術だ。これをTensorやXMXが行っている。そこで出てくる結果を纏めて1つにするとより高精度なアップスケーリング画像やフレーム生成が行える訳だ。これをフレーム毎に行っていく。
もちろん、失敗する予測もあるが、CGソフトの場合はドライバー側またはソフトウェア側のパラメーターを修正することで、ある程度なら改善させることも出来るのが特徴である。
欠点もある。それは、専用の行列エンジンが必要であること、さらに並列で人のニューロン結合のように結果への伝播演算が起きるため、より精密に正確に処理するには大量のメモリーまたは演算リソースが必要となることである。高精細度で短時間に結果を出すには、大量の行列演算器が必要であり、大量のメモリー帯域とメモリーバッファが必要になる。だから、リアルタイムのゲーミングで元々精細度の処理にかなりのリソースを喰ったり、他の処理で行列演算も使っているものだと、DLSSやXeSSで割り振れるリソースが足りなくなり、フレームの画質品質が大きく下がることがある。
話を戻すと、AMDがこれをもしサポートするならFSR4.0だろう。
そして、フル対応には間違いなくGPU内で処理する必要が出てくる。それを何でやるかだ。
既存品でも対応を狙っているなら、RDNA3には先に書いたようにWave Matrix Multiply-Accumulateという命令処理が可能なので、もし既存で使うならそれを使う可能性が高い。ただ、これは専用演算器ではない。あくまでシェーダークラスター(コンピュートユニット)に行列演算の命令セットを追加下だけであり、ラスタライズに使う演算器を一部流用する必要があるというトレードオフがあるのだ。だから適応アップスケーリング(FSR)に使っているシェーダーをほぼそのまま全部使うか多少割増す程度で、Wave Matrix Multiply-Accumulate命令で置き換えてAI手法を馴染ませるか、XDNAを使って遅延が多少あっても影響が出にくい部分だけを重点的にAIに置き換えてみるか……そのどちらかだろう。
既存で対応させずにこれからのハードでやるなら、RDNA3.5でIntelがやったAlchemist+のような対応をする方法もある。これは、既にRadeon PROのLLMやOpenCL向けの高速化ファームでやっていると考えられるので、それほど難しくはないだろう。
ただ、最終的にはRDNA4や5でTensorやXMXのようなシェーダー兼用ではなく専用の演算器(XDNAをGPUに統合する形)を入れる方向にしないと、IntelやNVIDIAと同じ性質のものにすることは出来ないだろう。
まあ、以前から何度も書いているが、AMDのGPU設計思想は、シェーダーの応用にある。専用のユニットを作るのではなく、シェーダーユニットに命令セットを増やしていき、それをどの割合でどう使うかがAMDのGPU設計開発のスタンスだ。全てWMMAに使うものがinstinctのAI処理だとしたら、Shader 6のラスタライズを中心に使うのが、Radeon RXだ。そして、その間でCGでもAIでもOpenCLでもそれなりに使えるようにチューニングしたものがRadeon PROである。これは、役割を完全に分離して使うにはとても効率的である。
古典的なラスタライズで見ればAMDのRadeon RXはGeforceを超えることもあると言われる所以だ。しかし、AIとういものをゲームや一般的なソフトウェア処理まで拡大させたとき、命令セットがあるからとラスタライズ用として使っているShaderにそれも求めると、描画処理そのものが低下する問題が起きる。しかも、AI系は低粒度で1度に大量のメモリー帯域を求める上に、動作サイクルがラスタライズとは異なるため、同じパスで下手に共有すると低下が大きくなるかもしれない。
だから、調整がそれなりに必要なはずで、Intelの場合はXeSSをシェーダーで行えるiGPUは内部コードをかなり緻密に修正したはずだ。AMDはRDNA3なら元々WMMA(Wave Matrix Multiply-Accumulate)があるので、対応はある程度出来るだろうが、性能を維持してアップスケーリングにAI手法を入れるのは、きっと楽じゃないだろう。
即ち、ゲームのアップスケーリングでこの手法を取ることを決めたということは、今後のGPUのいずれかで、XDNAベースの固定機能をGPUにも載せるということなのは間違いない。これは大きな方向転換であり、後発のIntelが既に対応しているなかで、ずっとコンシューマから求められていた転換でもある。