ShaderNN 2.0: GPU フルグラフィックススタックに基づく効率的で軽量なモバイル推論エンジン

バックグラウンド: 

5d31ab84c8687beb49879c5a75b608f3.png

近年、ディープラーニングの研究と産業化が急速に発展しています。モバイル端末のコンピューティング能力、リアルタイム要件、およびユーザー データのプライバシーへの配慮の向上により、ますます多くの推論タスクがクラウドからモバイル端末に転送されています。モバイル プラットフォームでの深層学習推論では、ハードウェア プラットフォーム、ドライバー、コンパイルの最適化、モデルの圧縮、オペレーター アルゴリズムの最適化、展開などの問題を解決する必要があります。多くの企業が、Xiaomi MACE、Tencent Youtu NCNN/TNN、Ali MNN、Google TensorFlow Lite など、モバイル指向のオープンソースの深層学習フレームワークを開発しています。既存の推論プラットフォームには通常、適応、モデル検証、データ相互作用など、サードパーティのライブラリやハードウェア プラットフォーム ドライバーに関連した問題があり、最適化、展開、メンテナンス、アップグレードが煩雑になります。

モバイル端末上のグラフィックスおよび画像 AI アプリケーションの場合、計算能力、低消費電力、I/O 帯域幅、メモリ アーキテクチャ、およびアクセス方法の制限により、既存の推論フレームワークではリアルタイム パフォーマンスの厳しい要件を満たすことが困難です。 、パフォーマンス、消費電力です。モバイル グラフィックスや画像の後処理のための効率的な AI 推論のニーズに応え、パフォーマンスを向上させ、コストを削減するために、記事「軽量ディープラーニング推論エンジン ShaderNN」で OpenGL バックエンドに基づく GPU シェーダーの効率的な推論を紹介しまし。 AI グラフィックス向け [1] エンジン ShaderNN プロジェクトの第 1 フェーズ。この記事では、ShaderNN 2.0 によって提供される新機能、主な技術的特徴 (高性能、軽量、汎用性、拡張が容易)、パフォーマンス、および消費電力の利点と、いくつかの代表的なアプリケーション シーンについて説明します。

現在、主流のモバイル プロセッサのパフォーマンス向上は、CPU 周波数の向上とマルチコアによる恩恵だけでなく、ARM Mali GPU などのグラフィック レンダリングおよび画像処理アクセラレータとしてのマルチコア GPU ハードウェアの構成によっても恩恵を受けています。クアルコム Adreno GPU と Apple A15 。主流のモバイル推論フレームワークは基本的に GPU ベースの推論アクセラレーションを提供し、広く使用されている GPU プログラミング インターフェイスには OpenGL、Vulkan、OpenCL などがあります。モバイル端末上の主流のグラフィックスおよび画像処理アプリケーションは、主に OpenGL または Vulkan グラフィックス スタックに基づいて開発されています。推論フレームワークが上記のアプリケーションと統合するときに NPU/DSP、OpenCL などの他の高速化ソリューションを採用する場合、直面する主な問題はデータ対話のオーバーヘッドです。ShaderNN フェーズ I の推論フレームワークは OpenGL に基づいており、OpenGL テクスチャを直接処理して OpenGL テクスチャを出力できます。新世代のグラフィックス スタックとして、Vulkan はクロスプラットフォームの低レベル グラフィックスおよびコンピューティング API ですが、OpenGL はより高度なグラフィックス API のセットです。OpenGL に対する Vulkan の利点をいくつか示します。

  • オーバーヘッドの低減: Vulkan 設計の目標は、CPU オーバーヘッドを低減し、マルチスレッド パフォーマンスを向上させることです。これにより、開発者はビデオ メモリやスレッドなどのハードウェア リソースをより適切に制御できるようになり、ドライバーのオーバーヘッドが削減され、アプリケーションのパフォーマンスが向上します。

  • 明示的な制御: Vulkan では、開発者がグラフィック レンダリング パイプラインとリソースをより明示的に管理する必要があります。この明示的な制御により、開発者はさまざまなハードウェア プラットフォームのリソースをより適切に最適化し、管理できるようになります。

  • マルチスレッドのサポート: Vulkan はマルチスレッド レンダリングをサポートしているため、開発者はマルチコア プロセッサをより効果的に活用できます。これにより、グラフィックスと計算タスクのパフォーマンスが向上し、より優れた並列処理が可能になります。

  • メモリ管理の向上: Vulkan は、より柔軟なメモリ管理メカニズムを提供し、開発者がメモリの割り当てと使用をより詳細に制御できるようにします。これにより、開発者はビデオ メモリをより効率的に管理し、メモリの断片化を軽減し、アプリケーションのパフォーマンスを最適化できます。

  • 非同期サポートの改善: Vulkan を使用すると、開発者は異なるタスク間での非同期処理を改善できます。これにより、開発者は GPU の計算能力をより有効に活用して複数のタスクを同時に実行できるようになり、アプリケーションのパフォーマンスと効率が向上します。

一般に、Vulkan は OpenGL と比較して、オーバーヘッドが低く、マルチスレッドのサポートが優れており、メモリ管理が柔軟であり、非同期処理機能が優れています。これらの機能により、Vulkan は、より高いパフォーマンスと低レベルの制御を必要とするグラフィックス アプリケーションにとってより良い選択肢となります。Vulkan では、レイ トレーシング拡張機能などの一部の高性能機能のネイティブ サポートも導入されており、ますます多くのソフトウェア メーカーやハードウェア メーカーによって歓迎およびサポートされており、最新のゲーム、グラフィックス、画像に適用されています。モバイル端末上の Vulkan アプリケーションに基づく AI 後処理のますます多くのニーズを満たすためには、アプリケーションの Vulkan レンダリング パイプラインとシームレスに接続できる、軽量でカスタマイズ可能な推論エンジンも必要です。この需要を満たすために、ShaderNN 1.0 の第 1 フェーズに基づいて Vulkan バックエンドのサポートを追加し、OpenGL と Vulkan フル グラフィックス スタックをサポートする最初の Shader 2.0 モバイル推論エンジンを起動し、最近オープン ソース プレビュー バージョンをリリースしました。

1. ShaderNN 2.0のフローチャート

473ecb7793f495bc87c624c5326c0651.png

図 1: ShaderNN ワークフロー図

図 1 に示すように、ShaderNN ワークフロー全体は、モデル変換とレイヤー融合の最適化、ネットワーク モデルと重み負荷分析、計算グラフの生成、計算グラフ オペレーターの実行、および関連する結果を返す推論予測に分割できます。最適化はコンパイル段階とランタイム段階で行われ、推論エンジンは個別に最適化されます。コンパイルの最適化には、シェーダーのコンパイルとキャッシュの最適化、等価演算子の置換と融合などが含まれます。実行フェーズでは、ShaderNN は、畳み込みの最適化、テクスチャの再利用、CPU および GPU メモリの再利用、データ構造レイアウトの最適化、キャッシュおよびベクトル化の最適化を通じてパフォーマンスを向上させます。

TensorFlow または PyTorch のトレーニング後にエクスポートされた ONNX 形式のモデルは、ShaderNN 変換ツールを通じて ShaderNN がサポートする JSON モデル形式に変換されます。変換プロセス中に、モデル コンバーターはモデルの構造と重みを分離し、演算子を分析し、層間融合の最適化を実行します。モジュール構造と重みをロードした後、推論エンジンはトポロジカルソートを通じて計算グラフを生成します。CPU によって実装されるいくつかのオペレータを除いて、ほとんどのオペレータは GPU シェーダによって実行されます。1.0 では、OpenGL のバックエンドにあるコンピューティング シェーダまたはフラグメント シェーダを通じて実装されました。2.0 では、Vulkan にコンピューティング シェーダの実装を追加しました。バックエンド。

a12d6416ae3e164a183b9250d32ed3b0.png

図 2: ShaderNN アルゴリズムのタイミング図

エンジンのコアは MixedInferenceCore で、OpenGL および Vulkan バックエンドをサポートし、推論演算子の特定の実装を担当します。計算グラフの入力はアプリケーションのグラフィックス テクスチャ (テクスチャ) から直接取得され、その出力もテクスチャであり、アプリケーションによって直接レンダリングできます。計算グラフ上の各ノードはネットワーク モデルのレイヤーに対応し、各レイヤーはレンダリング ステージを通じて計算されます。コンピューティング シェーダーとフラグメント シェーダーのパイプラインは異なります。OpenGL フラグメント シェーダーの場合、各レンダー ステージには 1 つ以上のレンダー パスが含まれます。OpenGL および Vulkan コンピューティング シェーダーの場合、1 つのレンダー ステージに 1 つ以上のレンダー パスが含まれます。レンダー パスの最終結果はテクスチャに直接出力されます。

2. ShaderNNの革新

  1. テクスチャベースの入出力を使用したリアルタイム グラフィックス パイプラインまたは画像処理アプリケーションとの効率的なゼロコピー統合を提供し、CPU と GPU 間の高価なデータ転送とフォーマット変換を節約します。これは、モバイル プラットフォーム上のリアルタイム アプリケーションに特に役立ちます重要。

f5986a4e37601dae0aa8807cc492c6e8.png

図 3: ShaderNN と、グラフィックスおよび画像パイプラインと統合された他の推論エンジンの比較

図3はShaderNNと既存のパイプラインに統合された他の推論エンジンとの違いを比較したものです.他の推論エンジンは通常,TensorやMatと呼ばれる共通のデータ構造を入出力形式として提供しており,広く使われているグラフィックスや画像アプリケーションは利用できません.テクスチャは入力および出力として使用され、フォーマット変換または GPU から CPU への往復変換が必要になります。画像などの大量の入力を伴うリアルタイム アプリケーションの場合、この部分のオーバーヘッドは非常に大きくなります。ただし、ShaderNN は、この部分のオーバーヘッドなしでネイティブ テクスチャを入出力として使用するため、全体のパフォーマンスが大幅に向上します。

2. OpenGL バックエンドに基づくフラグメント シェーダー推論実装を初めてサポートしており、超解像度ネットワークやノイズ リダクション ネットワークなど、入力サイズが大きく単純なネットワーク層を持つネットワークに対して、他の推論エンジンに比べて大きな利点があります。

3. ネイティブ OpenGL ES および Vulkan 上に構築されているため、グラフィックス レンダリング パイプラインと簡単に統合してコンピューティング リソースの使用を最大限に活用でき、高リアルタイム レンダリング、画像/ビデオ、ゲーム AI アプリケーションに適しています。

4. コンピューティング シェーダーとフラグメント シェーダーのハイブリッド実装をサポートし、パフォーマンスの最適化のために異なるモデル レイヤーに対して異なるシェーダーを選択できます。ユーザーにとって新しい演算子をカスタマイズするのに便利です。

5. 純粋な GPU シェーダー実装。サードパーティのライブラリに依存する必要がなく、さまざまな GPU ハードウェア プラットフォームで使用でき、カスタマイズでき、最適化、統合、展開、アップグレードに便利です。

3. 性能と消費電力

記事「ShaderNN、AI グラフィックス用の軽量ディープラーニング推論エンジン」[1] では、TensorFlow Lite OpenGL バックエンドを備えた 4 台の携帯電話上の 4 つの一般的な CNN ネットワークの単一推論時間と消費電力を比較しました。推論時間の点では、Spatial Denoise と ESPCN は TensorFlow Lite より 75% ~ 90% 優れており、一部のプロセッサ チップでは、Resnet18 および YOLO V3 Tiny モデルは TensorFlow Lite より 50% 優れています。消費電力に関しては、Spatial Denoise、ESPCN、Resnet18、YOLO V3 Tiny を比較すると、最大 80%、70%、55%、51% を節約できます。

ShaderNN 2.0 で追加された Vulkan バックエンドには、Resnet18、Spatial Denoise、Style Transfer、2 つの MediaTek プラットフォームと 2 つの Qualcomm プラットフォーム上の ESPCN 4 (図 4 を参照)、および Vulkan バックエンドもサポートする MNN 推論エンジンを選択しました。単一の推論時間と消費電力の観点から比較されます。

391ab6fe98e7ac0973d3666e40528a88.png

図 4: テスト用のモバイル プラットフォーム

1. ShaderNN Vulkan バックエンドと MNN Vulkan バックエンドのパフォーマンス比較

92cd62af3ebf7e934dbd1e36da6ab9d8.png

図 5: パフォーマンスの比較

図 5 のパフォーマンス比較から、Qualcomm および MTK 固有のチップセットで良好なパフォーマンスを示し、空間ノイズ除去や ESPCN などのタスクでのパフォーマンスは MNN より 50% ~ 80% 高く、Resnet18 などのタスクでのパフォーマンスは MNN よりも 50% ~ 80% 高くなります。スタイル転送が改善されました (6%-60%)。

2. ShaderNN Vulkan バックエンドと MNN Vulkan バックエンドの消費電力の比較

0f363294fb40f56afad03ef475bfb4be.png

図 6: 消費電力の比較

図 6 の消費電力の比較から、空間ノイズ除去、ESPCN、Resnet18、スタイル転送などの推論タスクを実行する場合、ShaderNN Vulkan バックエンドは、比較した場合と比べて最大 60%、70%、45%、および 70% のエネルギー消費を節約できます。 MNNへ。

4番目、ShaderNNの典型的なシーン

上記の性能と消費電力の比較から、ShaderNN はグラフィックスや画像アプリケーションを得意としていることがわかります。ShaderNN 2.0 は、レイ トレーシング ノイズ リダクション、ゲーム ディープ ラーニング スーパー サンプリング MNSS などのグラフィックス アプリケーション シナリオ向けに適応および最適化されています。同時に、新しいオペレーターを追加することで、ShaderNN は安定拡散などの AIGC のようなアプリケーションもサポートできます。

モバイルリアルタイムスタイル転送アプリケーション:

「AI グラフィックス用の軽量ディープラーニング推論エンジン ShaderNN」[1] の記事では、スタイル転送用の Android デモ アプリを紹介しました。このアプリは、リアルタイム パイプラインを通じて ShaderNN 推論エンジンを Android アプリに統合する方法を示しています。を実行し、スタイル転送モデルを実行します。携帯電話のカメラから取得したリアルタイム ビデオ ストリームを処理し、スタイル転送されたビデオ ストリームを出力します。このアプリケーションでは、追加のデータ送信や処理消費を行わずに、すべてのデータが GPU 側で処理されます。

8d2fc491505d3642da3c02abdb97ec34.png

 

図 7: ShaderNN スタイルの転送アプリケーション

モバイル レイ トレーシング ノイズ リダクション アプリケーション:

レイ トレーシング (パス トレーシング) は、画像をリアルにレンダリングするためのアルゴリズムです。カメラからシーン内のオブジェクトを通過し、最終的に光源に至る光の経路をシミュレートします。各光線の経路を追跡し、光線と物体との交差や光の伝播を計算することで、高品質でリアルな画像を生成できます。従来のラスタライズされたレンダリングと比較して、レイ トレーシングによって導入される計算量は指数関数的に増加します。レイ トレーシングでは確率的モンテカルロ サンプリングの方法が使用されるため、結果として得られる画像はサンプリング ノイズの影響を受けます。オフライン レンダリングでは主にマルチ サンプリングを使用してノイズを低減しますが、リアルタイム モバイル レンダリングでは、低サンプリングによるノイズが特に顕著であり、この問題はポスト ノイズ リダクション処理によってのみ改善できます。

Intel は、オートエンコーダー構造に基づいたディープ ラーニング モデル Intel Open Image Denoise (OIDN) を開始しました (https://github.com/OpenImageDenoise/oidn)。OIDN は、アルベド、最初のバウンス法線、およびノイズ データ (ノイズのある RGB イメージ) を入力として受け取り、ディープ ラーニング モデルを通じてノイズ削減を実行します。これは PC 側で良好な結果を達成しています。ShaderNN 2.0 では、マルチ入力サポートが追加され、このモデルがモバイル グラフィックス レンダリング パイプラインに適用されます。図 8 にノイズ低減モデルの基本的なフローを示し、図 9 にノイズ低減モデルのリアルタイム入出力の効果を示します。

c8afb4cea0bcf2dfc26ec7f0512788e9.png

図 8: レイ トレーシング ノイズ低減モジュール

 

図 9: ShaderNN レイ トレーシングのノイズ低減効果

モバイルゲーム向けのディープラーニング スーパー サンプリング アプリケーション:

ディープラーニング スーパー サンプリング DLSS (Deep Learning Super Sampling) は、NVIDIA によって開発された画像再構成テクノロジであり、低解像度のレンダリング結果とディープラーニング モデルを通じて高解像度の画像を構築し、画質とパフォーマンスを向上させることを目的としています。ShaderNN オープンソース プロジェクトを通じて、浙江大学と協力してモバイル端末上でリアルタイムの深層学習スーパーサンプリング モデルを開発および実装しました [3]。ShaderNN 推論アクセラレーションを通じて、初めてリアルタイムのスーパーサンプリングを実現しました。モバイル端末上のゲーム。現在主流の DLSS モデルは、サブサンプリング技術を使用して、より多くのピクセルの詳細と、動きベクトルによって補正された過去のフレームおよび時間情報を取得し、新しい高解像度画像を再構築します。現在のフレーム構築推論の出力は、次のフレーム構築のモデル入力としてスーパーサンプリング モデルにフィードバックされます。ShaderNN に基づいて、モバイル DLSS モデル推論はモバイル端末向けに最適化されており、リアルタイム要件を満たすだけでなく、特にエッジ部分やディテール部分のゲーム画質も向上します。図 10 はモバイル DLSS モデルの基本的なフローを示しており、モデルの実際の出力は図 11 に示されています。

6b65f50fe9fe0e0ad09c2a8f774a918d.png

図 10: モバイルディープラーニングスーパーサンプリングモジュール

e1941a57781b414fc52a98001e71a523.gif

図 11: ShaderNN を実行するモバイル端末のディープラーニング スーパー サンプリング効果

モバイル安定拡散アプリケーション:

テキスト生成と画像の分野における最先端の安定拡散モデルには、CLIP Text Encoder、UNet、VAE の 3 つの部分が含まれています。ShaderNN2.0 で安定拡散モデルを実行してみます https://huggingface.co/lambdalabs/ miniSDディフューザーを開発し、モバイル端末に展開します。図 12 にランニング効果を示します。

1dc4dfbb87e4a09067d1cc5205ed5358.png

図 12: ShaderNN AIGC が安定拡散を適用する

V. 計画と展望

OpenGL バックエンドに基づく ShaderNN 1.0 がオープン ソース プロジェクトとしてリリースされた後、ShaderNN 2.0 は Vulkan バックエンドに基づくサポートを追加し、モバイル側のフル グラフィックス スタックを備えた AI アプリケーションをサポートし、グラフィックスおよびグラフィックス分野の最新アプリケーションをサポートします。スタイル マイグレーション、レイ トレーシング デノイズ (レイ トレーシング ノイズ リダクション)、ゲーム用のディープ ラーニング スーパー サンプリング、安定した拡散などの画像を使用して、グラフィックスおよび画像アプリケーションとの深い結合における ShaderNN の利点を示します。

次のステップでは、オープンソース コミュニティを通じて、より多くの開発者が参加し、より多くのシナリオをカバーし、オペレーターとモデルを継続的に最適化して、より多くのアプリケーションを実際に製品に実装できるようにしたいと考えており、共同で開発に取り組むことに取り組んでいます。 OpenGL に基づく独特のモバイル推論エンジン、Vulkan フル グラフィックス スタック。

GitHub オープンソース アドレス (Apache2.0 オープンソース ライセンス)

https://github.com/inferenceengine/shadernn

参考文献:

1. ShaderNN、AI グラフィックス用の軽量ディープラーニング推論エンジン、https://zhuanlan.zhihu.com/p/579051507

2.ジャスティン・ジョンソン、アレクサンドル・アラヒ、リー・フェイフェイ。2016. リアルタイム スタイル転送と超解像度の知覚損失。コンピュータビジョンに関する欧州会議にて。スプリンガー、694 – 711

3. Sipeng Yang、Yunlu Zhao、Yuzhe Luo、He Wang、Hongyu Sun、Chen Li、Binghuang Cai、Xiaogang Jin、「MNSS: モバイル デバイス上のリアルタイム レンダリングのためのニューラル スーパーサンプリング フレームワーク」、視覚化とコンピューター グラフィックスに関する IEEE トランザクション、引用情報: DOI 10.1109/TVCG.2023.3259141

著者: Qiang Qiu、Hongyu Sun、Yuzhong Yan、OPPO コンピューティング & グラフィックス研究所

6d3c6369974b6bff277400442bbfae4d.gif

長押ししてカーネル職人WeChatをフォローしてください

Linux カーネル ブラック テクノロジー | 技術記事 | 注目のチュートリアル

おすすめ

転載: blog.csdn.net/feelabclihu/article/details/131447709