ディープラーニングコンパイラについて知っておくべきこと

ディープラーニングコンパイラについて知っておくべきこと

[[409589]]

ディープラーニングはここ 10 年ほどで急速に発展し、業界では多くのディープラーニング アルゴリズム開発フレームワークが登場しました。同時に、ディープラーニングには幅広い応用シナリオがあり、膨大な計算能力が求められるため、さまざまな種類の CPU、GPU、TPU、NPU など、さまざまな汎用ハードウェアや専用ハードウェア上でディープラーニング アルゴリズムを実行する必要があります。その結果、図 1 に示すように、フレームワークとハードウェアの組み合わせが爆発的に増加します。たとえば、TensorFlow が GPU コンピューティングをサポートする場合、TensorFlow 内のすべての演算子に対して GPU バージョンを開発する必要があります。D チップをサポートする場合は、演算子ごとに D チップ バージョンを開発する必要があります。このプロセスは間違いなく非常に時間がかかり、労力がかかります。

図1

同時に、YOLO、BERT、GPT など、多くのアルゴリズム ネットワークが存在します。これらのアルゴリズム ネットワークは、さまざまなタイプ、形状、接続関係の演算子で構成されています。最終的には、異なる種類およびモデルのハードウェア上で実行されます。その結果、各シナリオに最適なオペレーターを手動で開発して実装するのに高いコストがかかります。ここでは 2 つの例を示します。図 2 に示すように、演算子の融合は一般的なパフォーマンス最適化方法です。融合の前に、各演算子は計算の前後にメモリからキャッシュにデータを読み取り、その後キャッシュからメモリにデータを書き戻す必要があります。融合後は、演算子間のメモリの読み取りと書き込みを回避できるため、パフォーマンスが向上します。従来のアプローチでは、オペレータの接続関係に基づいて手動で融合オペレータを開発しますが、異なるネットワーク内の異なるカテゴリのオペレータ間の接続関係を完全に列挙することはほぼ不可能です。もう 1 つの例は、オペレータのチューニングです。オペレータ実装プロセスにはパフォーマンスに影響するパラメータが多数ありますが、従来の手動オペレータ開発方法では、これらのパラメータを表現して維持したり、さまざまな形状やハードウェアに最適なパフォーマンスを実現するためにパラメータを調整したりすることが困難です。

図2

ディープラーニングコンパイラは、上記の問題を解決するために作成されました。これは、フレームワークとハードウェア間の共通コンポーネントおよびブリッジとして機能します。最終的な目標は、一度開発するだけで、あらゆるデバイスに最適なコードを自動的に生成することです。たとえば、CPU 用に開発された演算子は、GPU や 3D チップでもほぼ同じように使用できるため、コストが大幅に削減されます。

図 3 に示すように、ディープラーニング コンパイラーのコンポーネントと機能について簡単に紹介します。まず、フロントエンドはさまざまなフレームワークから計算グラフを取得し、高レベル IR のデータ構造を使用してそれを表現します。次に、この段階で、定数の折りたたみ、演算子の融合、等価置換などの一連のグラフ最適化が実行されます。等価置換の例を示します。元の計算グラフは次のようになります。計算方法を変更します。結果は変わりませんが、パフォーマンスは向上する可能性があります。次に、計算グラフ内の各演算子に対して、DSL と呼ばれるドメイン固有言語を使用して演算子の計算プロセスを記述し、演算子を最適化します。たとえば、演算子は、タイリング、マルチコア、ダブルバッファを使用して最適化できます。演算子の計算プロセスは通常、複数のループを使用して実装されるため、たとえば、行列の乗算は 3 重のループになります。ディープラーニング コンパイラーは、ループ上でさまざまな変換を簡単に実行し、これらの変換のパラメーターを調整して、さまざまな形状やハードウェアに最適な演算子の実装を取得できます。最後に、低レベルの IR に基づいて、さまざまなハードウェア用の特定のコードが生成されます。

図3

最後に、業界における既存のコンパイラ プロジェクトを紹介します。現在、TVM は最もエコロジカルに完成されたオープンソースかつフレームワークに依存しないプロジェクトであり、多くの企業に採用されています。 TVM のプロセスを図 3a に示します。TVM は、TensorFlow pb、onnx、TorchScript などのさまざまなフレームワークのモデルをインポートし、TVM の Relay と呼ばれる高レベル IR で統一的に表現できます。 IR の各演算子は、Tensor 式 DSL を使用して計算を記述およびスケジュールします。この DSL は、アインシュタインの表記法を使用して演算子計算を記述します。演算子計算は通常、複数の for ループとして表現されます。次に、Halide のアイデアに基づいて、スケジュールを使用して、この複数の for ループに対して、ループのマージ、分割、シーケンス変換などのさまざまな変換を実行します。最後に、低レベルの IR に下げて特定のデバイス コードを生成し、推論を実行します。

ここでは、TVM が最適な演算子コードを生成する方法について簡単に紹介します。前述のように、演算子は compute によって記述する必要があり、次に compute に対応する複数の for ループをスケジュールして変換、つまりスケジュールする必要があります。 TVM のオペレータ生成とチューニングは、3 世代にわたる開発を経てきました。 TVM/AutoTVM の第 1 世代では、ユーザーがオペレータ計算とオペレータ スケジュールを記述する必要があります。AutoTVM と TVM の違いは、スケジュールでいくつかの可変パラメータを定義でき、遺伝的アルゴリズムを使用してパラメータを調整できることです。たとえば、ループを 2 つのセグメントに分割する場合、どこで分割するかを最適化できます。第 2 世代の AutoScheduler (Ansor) では、ユーザーはオペレータを開発するだけで、Ansor がいくつかのルールに基づいてスケジュールの変更を自動的に実行します。スケジュール開発は、TVM の表現メカニズムと基礎となるハードウェア原理の両方に精通する必要があるため、非常に難しいことがよくあります。そのため、Ansor は開発者の作業負荷と開発の難易度を大幅に軽減できます。欠点は、Ansor のチューニングに時間がかかり、1 つのオペレータのチューニングに 1 時間かかることが多いことです。畳み込みネットワークを例にとると、Ansor はいくつかのシナリオで TensorFlow 演算子のパフォーマンスを上回ることができますが、TensorRT 実装とはまだ一定のギャップがあります。第 3 世代の Meta Schedule (AutoTensorIR) はまだ初期段階であり、チューニング速度とパフォーマンスを最適化することが期待されています。まだ利用できないため、しばらく様子を見ます。

TVM の実装には、TVM に基づく D チップのコード生成サポートを追加する Huawei の D チップ TBE オペレーター開発ツールが含まれています。 TVM は Halide コンピューティング + スケジューリング ルートを採用しています。Tensor Comprehensions、Tiramisu、Huawei が独自に開発した AKG など、多面体アルゴリズム ルートを採用するコンパイラーも存在します。この方法は、ユーザーがスケジュールを開発する必要がなく、オペレーターの開発のみを必要とする点で Ansor に似ており、よりユーザーフレンドリーです。その中で、AKG は MindSpore のグラフコンピューティング融合に使用されています。その他のディープラーニングコンパイラーには、TensorFlow の XLA、TensorRT などがあり、使用したことがあるかもしれません。

要約すると、ディープラーニングコンパイラには多くの利点があります。たとえば、新しいハードウェアを簡単にサポートし、開発の重複を回避し、手動の最適化の代わりに一連の自動最適化を使用して究極のコスト効率を実現します。現在、ディープラーニングコンパイラーには依然としていくつかの欠点があり、急速な発展段階にあります。例えば、チューニングに時間がかかる、複雑な演算子を効果的に生成できない、モデル内でディープラーニングコンパイラーによって生成される演算子がライブラリから呼び出される演算子を上回る割合が低いなど、まだまだ投資と最適化を継続する必要があります。

<<:  将来のAIアプリケーションには、より高速でスマートな通信インフラストラクチャが必要

>>:  人間の髪の毛のわずか200分の1の太さ!科学者たちは脳のように電気を生成できる「ナノワイヤーネットワーク」を構築した

ブログ    
ブログ    
ブログ    

推薦する

...

データ処理を簡単にしますか? Baidu EasyDataが初の高度なインテリジェントデータクリーニング機能をリリース

AI モデルを開発する場合、データの量と品質がモデルの有効性に直接影響します。現場でデータを収集した...

知覚AIオペレーティングシステム

AI、つまり人工知能の新たな波が到来します。機械学習、ディープラーニング、ニューラルネットワーク、音...

完全にプログラム可能な初の光量子コンピュータが発表されました。最強のスーパーコンピュータ「富岳」の7.8兆倍の性能です。

スーパーコンピュータは、従来のコンピュータでは解決できない問題を解決するためによく使用されます。しか...

...

...

清華大学のFaceWall Intelligenceは、大規模なモデルを16,000以上の実際のAPIに接続し、オープンソースのToolLLMはChatGPTに近い

人工知能の分野では、大規模なモデルを使用してインテリジェントエージェントを制御することは避けられない...

...

脳コンピューターインターフェースツール:脳波からテキストまで、必要なのは機械翻訳モデルだけ

[[320655]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

生体認証技術丨「ブラックテクノロジー」で体のパスワードを解読

生体認証技術は、身体本来の生理学的特性や行動特性を利用して、コンピューターで個人を識別します。生理学...

CES 2018: 見逃せない 4 つの主要なテクノロジー トレンド

[[214658]] 2週間後、2018 CESがラスベガスで開幕します。今年と同様に、CES 20...

GPT-3 の推論高速化は NVIDIA のソリューションを 50% 上回ります。大規模モデル推論システムEnergon-AIオープンソース

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

Pudu Technology、新製品「Hulu」をリリース、4月19日より先行販売開始

人工知能やマルチセンサー情報融合などの技術の進化により、サービスロボットは急速に発展し、さまざまな分...

GPT-3の良き「パートナー」:この方法はモデルの劣化を軽減し、出力をより自然にします

テキスト生成は、多くの自然言語処理アプリケーションにとって重要です。しかし、ニューラル言語モデルの最...