99行のコードでアナと雪の女王の特殊効果の太極拳の進化を実現

99行のコードでアナと雪の女王の特殊効果の太極拳の進化を実現

コンピュータシミュレーション技術の継続的な発展のおかげで、ますますリアルな現実世界をコンピュータで再現し、「アナと雪の女王」のような優れた特殊効果映画を制作できるようになりました。

しかし、リアルなシーンや豊かなディテールは超高精度の物理シミュレーションなしでは実現できないため、特殊効果のほぼすべてのフレームは多額の資金をかけて制作されています。

現代のアニメーション映画(「アナと雪の女王」を含む)では、特殊効果を生み出し、感覚体験を豊かにするために、物理ベースのアニメーションがよく使用されます。粒子ベースの表現は一般的に使用されるアプローチです。シーンが大きくなればなるほど、パーティクルの数も多くなります。たとえば、300 メートルの長さのダム決壊シーンの水をシミュレートするには、数千万個の粒子が必要になる可能性があり、これらの粒子を保存するには大量のビデオ メモリが必要です。たとえば、96GB のビデオ メモリが必要な場合は、4 つの NVIDIA Quadro P6000 GPU など、多数のハイエンド グラフィック カードを購入する必要があります。

ちなみに、P6000 は Amazon で約 4,000 ドルで販売されており、この GPU を 4 つ購入する必要があります。明らかに、この費用は一般家庭には負担できないものです。

この状況に対応して、 Kuaishou、MIT、浙江大学、清華大学の研究者らは、物理コンパイラの自動量子化に関する研究を行い、定量シミュレーションのための新しい言語抽象化およびコンパイルシステムであるQuanTaichiを提案しました。低精度の量子化されたデジタル データ型を使用し、それらをパックしてアナログ状態を表すことができるため、メモリ領域と帯域幅の消費を削減できます。この技術のサポートにより、たった 1 つの GPU で高精度の物理シミュレーションを実現できます

QuanTaichi の実装は、MIT CSAIL Hu Yuanming らが以前に提案した「Taichi」プログラミング言語とコンパイラに基づいており、開発者はさまざまな完全精度シミュレータと量子化シミュレータを簡単に切り替えて、最適な量子化スキームを探索し、最終的にスペースと精度の適切なバランスを実現できます。関連研究はトップグラフィックスカンファレンスSIGGRAPH 2021に選出され、TaijiのオープンソースGithubライブラリにも組み込まれました。

  • 論文リンク: https://yuanming.taichi.graphics/publication/2021-quantaichi/quantaichi.pdf
  • プロジェクトアドレス: https://yuanming.taichi.graphics/publication/2021-quantaichi/
  • GitHub アドレス: https://github.com/taichi-dev/quantaichi

以下のビデオは量子化後のシミュレーション結果を示しています。 2 つのウサギの形をした煙 (4 億ボクセル) の変化は、完全精度の浮動小数点の結果と同じくらいリアルです。ただし、このデモに必要なストレージ容量は、完全精度浮動小数点シミュレーションに必要なストレージ容量の半分にすぎないことに注意してください。

結果を検証するために、研究者らはユーザー調査も実施しました。テストの質問はおおよそ次のとおりです。どれが量子化されているかわかりますか?

同じ技術は携帯電話にも適用でき、携帯電話での物理シミュレーションが 40% 高速化され、計算能力がそれほど高くない携帯電話でもより複雑な効果を実行できるようになります。

一般的に、QuanTaichiは、一般的なGPUコンピューティングの分野での研究開発効率を大幅に向上させ、ゲームにおける物理シミュレーション、大規模画像処理、メディアのエンコードとデコード、科学計算などの分野での支援ができるだけでなく、Taichiプラットフォームで使用されるさまざまなモデルにも適しており、ストレージスペースの利用効率を向上させ、Taichiテクノロジーエコシステムの将来の発展に貢献することができます。

現在、太極技術により、快手はリアルタイムの液体と煙のシミュレーション動態効果を発表した初の短編ビデオおよび生放送プラットフォームとなり、「泣かないでアヒル」、「ダイビングしたい」、「火の超能力」などの特殊効果を業界で初めて発表しました。中でも「メリークリスマス」のマジック表現はヒットとなり、74万人のユーザーが動画を撮影・アップロードし、約2000万人のユーザーが太極拳に支えられたこのマジック表現を視聴しました。

技術詳細

シミュレーション用の量子化されたデジタルデータタイプ

QuanTaichi では、研究者が次のカスタム数値型を提案しました。

1. カスタム Int: 符号付き型と符号なし型を含む、ユーザーが指定した桁数の整数型。

2. カスタム浮動小数点: ユーザーが桁数を指定する浮動小数点型。QuanTaichi では、次の 3 つの実装を提供しています。

  • 固定小数点型: 固定小数点数は、カスタム整数とスケーリング係数で表されます。読み取り時に、スケーリング係数を乗算して整数を浮動小数点数に変換します。読み取り時には、逆の操作が実行されます。
  • 通常のカスタム浮動小数点型 (浮動小数点): ユーザーが指定した小数点部分と指数部分で構成されます。
  • 共有指数浮動小数点型: ユーザーが指定した小数点部分と指数部分で構成されます。一般的なカスタム浮動小数点型とは異なり、この型は同じ指数部分を共有します。物理シミュレーションのデータは通常、物理的な意味を持ち、ある値の絶対値が他の値よりも大幅に大きい場合、通常、より小さい値はほとんど影響を与えません。たとえば、3 次元の速度 (u、v、w) を考えると、x 方向の速度の絶対値が他の 2 方向の速度の絶対値よりもはるかに大きい場合、v と w の値はシミュレーションに大きな影響を与えません。

次の図は、3 つのカスタム浮動小数点数がメモリ内でどのように構成されているかの例を示しています。

ビットアダプタタイプ

現在のコンピュータ アーキテクチャでは、任意のビット長のデータの読み取り、書き込み、計算はサポートされていません。そのため、研究者は QuanTaichi に 2 つのビット アダプターを提案しました。

1. ビット構造体。ビット構造により、ユーザーは複数の異なるカスタム タイプ データ (カスタム int 5、カスタム float 12 など) を使用して、コンピューター ハードウェアでネイティブにサポートされているタイプ (32 ビット整数など) を完全に埋めることができます。

2. ビット配列。ビット配列を使用すると、ユーザーは同じタイプの複数のカスタム データをハードウェア ネイティブ タイプに保存できます。

コンパイラの最適化

1. ビット構造融合ストレージ

この最適化の中心的な考え方は、カーネルの計算プロセスを分析し、ビット構造体内のメンバー変数を可能な限りバッチで書き込んで、アトミック メモリ アクセスの数を減らすことです。

実際のアプリケーションでは、ビット構造内のフィールドは一緒にアクセスされることが多いため、ビット構造の異なるコンポーネントがカーネル内の複数のステートメントによって格納される可能性が高くなります。この場合、研究者はビット構造内のすべてのストレージに atomicRMW (アトミック読み取り-変更-書き込み) を使用して、メモリ アクセスのオーバーヘッドを削減します。

2. スレッドセーフティ推論

操作がスレッドセーフかどうかを判断します。安全であれば、時間のかかるアトミック書き込み操作は必要ありません。 QuanTaichi は、次の 2 つのメモリ アクセス モードの最適化をサポートしています。

  • 要素ごとのアクセス。並列シミュレーターでは、多くの操作が「要素ごとに」実行されます。つまり、独立した各スレッドが一度に 1 つの粒子またはボクセルを処理し、粒子またはボクセルに関連付けられたメモリのロード/ストアは、データ競合の影響をまったく受けません。この場合、非アトミック操作を使用してメモリのロード/ストアを実行するのは安全です。
  • ビット構造体全体を格納します。非アトミック操作の代わりに atomicRMW を使用する理由は、アトミック ビット構造内の一部のビットがプログラムによって同時に変更されるのを防ぐためです。しかし、ビット構造が全体として保存される場合は、この問題を心配する必要がないため、計算コストの高い atomicRMW の代わりに非アトミック操作を使用できます。

3. ビット配列のベクトル化

次のシナリオを考えてみましょう。

この研究のシステムはメモリ効率を高めることが簡単ですが、このビット単位の for ループは 2 つの理由から計算効率が悪くなります。まず、シミュレートされた 1 ビット値にはハードウェアのネイティブ 32 ビット整数レジスタを使用する必要があります。これにより、操作にはビット幅の 1/32 のみが使用されます。 2 番目に、結果をビットごとに保存する場合、複数の CPU/GPU スレッドが u32 内の異なるビットに書き込み、データ競合が発生する可能性があるため、コード ジェネレーターはスレッドの安全性を確保するために、大量の高価な atomicRMW 操作を発行する必要があります。この目的のために、研究者らは、ビット単位のループベクトル化、オフセット付きビットベクトル化読み取り、ビットベクトル化整数加算という 3 つの最適化手法を実装しました。ビット配列をロードして保存し、各反復で単一の u1 ではなく完全な 32 x u1 ビット配列を処理するようにアルゴリズムをベクトル化します。

実験結果

人生ゲームテスト

研究者たちはまず、ライフゲームでシステムをテストした。人生ゲームは、各マスに生きている細胞または死んだ細胞が存在する 2 次元のグリッド ゲームです。次の瞬間に細胞が生きるか死ぬかは、隣接する 8 つのマス目にある生きている細胞と死んでいる細胞の数によって決まります。隣接するマスに生きている細胞が多すぎる場合、この細胞は次の瞬間にリソース不足のために死んでしまいます。逆に、周囲の生きている細胞が少なすぎる場合、この細胞は孤独のために死んでしまいます。

各セルの「生きている」または「死んでいる」状態は 1 ビットで表すことができます。 C などの従来の言語では、手動でパック/アンパックしない限り、ユーザーは char (u8) 型を使用してセルの状態を表す必要があります。しかし、QuanTaichi システムでは、ユーザーはコンピューティング コードを変更することなく、ストレージ効率を 8 倍に高めることができます。

OTCA メタピクセルは、「生命ゲーム」内の 2048 x 2048 セルで構成される特殊な構造であり、その全体的な動作は単一のセルの動作と一致しています。研究者らは、70 x 70 OTCA メタピクセル、つまり 200 億を超えるセルの Game of Life シミュレーションを単一の NVidia RTX 3080 Ti (10GB) 上に実装しました。

[[411446]]

オイラー流体シミュレーションテスト

研究者らは、スパースグリッドベースの移流反射流体シミュレーション ソルバーを実装しました。量子化手法を使用することで、各グリッドに必要なストレージスペースを 84 バイトから 44 バイトに圧縮することに成功しました。 NVidia Tesla V100 (32GB) 上で、4億2000万以上のアクティブなスパースグリッドによる煙のシミュレーションを実現しました。次の図は定量化されたスキームとシミュレーション結果を示しています。

MLS-MPMアルゴリズムテスト

研究者らは、ハイブリッド オイラー-ラグランジュ法におけるシステムの有効性をテストするために MLS-MPM アルゴリズムを選択しました。具体的には、各粒子が消費する記憶領域を 68 バイトから 40 バイトに削減する量子化方式を選択しました。 NVidia RTX 3090 上で、2 億 3000 万個を超える粒子による弾性体シミュレーションを実現しました。以下の図は定量化スキームとシミュレーション結果です。

iPhone の GPU は整数演算にさらなる最適化と高速化を加えるため、研究者らはモバイル デバイス (iPhoneXS) 上で量子化された MLS-MPM のパフォーマンスもテストしました。デスクトップ コンピューターと比較すると、モバイル デバイスの計算能力は比較的限られており、リアルタイムの応答が強く求められます。その結果、通常は小規模なシミュレーションしか実行できず、ストレージは実際には問題になりません。しかし、テストでは、バックグラウンド グリッドで量子化されたデータ型を使用するとパフォーマンスが依然として向上することを発見し、研究者たちは驚きました。モバイル GPU は通常、32 ビット整数の高性能ネイティブ atomicAdd のみをサポートしますが、浮動小数点数の 32 ビット atomicAdd はネイティブにサポートしません。グリッド データを表すために「ti.quant.fixed(fration=32)」を使用すると、ソフトウェアでシミュレートされた 32 ビット浮動小数点の atomicAdd をハードウェアネイティブの 32 ビット整数の atomicAdd に変換できます。これにより、iPhone XS で実行される MLS-MPM プログラムの P2G パフォーマンスが大幅に向上します。

<<:  Xiaolin が LRU アルゴリズムを破壊!

>>:  Rainbow のトレーニングには 1425 GPU 日が必要ですか? Googleは強化学習がコンピューティングコストを削減できると述べている

ブログ    

推薦する

...

...

プロのアニメーターがGANを使って「怠け者」を助ければ、数週間かかる仕事を数分で終わらせられる

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

AIがセキュリティの自動化、分析、対応にどのように役立つか

人工知能 (AI) は、チャットボットから自動運転車まで、あらゆるものを説明するために使用できる幅広...

Nvidia、AIを使った仮想世界のリアルタイムレンダリングを実演

[[251560]] Nvidia は、従来のモデリングやグラフィック レンダリング エンジンではな...

物流業界における人工知能の応用と発展の動向の概要

北京科技大学機械工学部物流工学科羅磊、趙寧人工知能(AI)は、人間の知能をシミュレート、拡張、拡大す...

権威あるレポート:テンセントクラウドAIパブリッククラウドの市場シェアが初めて中国でトップ3にランクイン

ちょうど今、国際データコーポレーション(IDC)が発表した最新の「中国人工知能クラウドサービス市場調...

より多用途で効果的なAntの自社開発オプティマイザーWSAMがKDDオーラルに採用されました

ディープ ニューラル ネットワーク (DNN) の一般化能力は、極値点の平坦性と密接に関係しています...

AIストレージアーキテクチャの構築方法

今日、データの処理と保存に関する懸念が高まっています。生成されるデータの量、データが作成される場所、...

スタートアップ企業がAIと患者チップを組み合わせて医薬品開発を加速

動物実験の必要性は新薬発見のプロセスにとって残念な事実であり、マウスは特に人間を正確に模倣しているわ...

AMU-Botロボット:作物の間を移動しながら除草する

手作業による除草は時間がかかり、労力もかかりますが、除草剤を散布するのは決して環境に優しくありません...

誰でも使えるディープラーニング: 3 つの主要な自動化ディープラーニング プラットフォームの紹介

ディープラーニング技術は複雑で、ゼロから開発するのが難しい場合が多いですが、Microsoft の ...

2024 年のテクノロジー トレンド - 企業は今から準備を始める必要があります。

2023 年の主流のテクノロジートレンドが人工知能、より具体的には生成 AI に重点を置くことは間...