トランス~45

「これは、Transformer 時代のエンドツーサイド AI チップのチャンスであり、課題です。まず兄貴に感謝したいと思います。私が自分自身のために学ぶためにここに来たのは驚くべきことではありません。」

Transformer は徐々に CNN の地位を飲み込んでいるように見えますが、Transformer はより多くの計算量を必要とし、帯域幅やキャッシュによる制約を受ける可能性が高いため、短期的な AI チップ企業はこの機会と課題にどのように対処すべきでしょうか? この論文では、各モードの代表的な変圧器モデルとその長所と短所をエンドツーエンドの観点から分析してまとめます。

過去 2 年間、Transformer は音声、ビジョン、レーダー モードで CNN を静かに打ち砕いてきたようです。これらの分野のモデルがエンドツーエンドのワークロードをほぼ縮小していることを考えると、エンドツーエンドの AI チップ企業の多くは次にどのように対処すべきでしょうか? 次世代チップの設計と選択はどのように検討すればよいでしょうか? 業界の友人たちはたくさんの研究をしたはずです。Transformer は非常に優れていますが、端末側の計算能力のスケールの下では、CNN と比較して、Transformer は大きな利点を得るためにより多くの計算量を必要とすることがよくあり、Transformer の計算強度が高く、低いため、帯域幅とキャッシュによって制約される可能性が高くなります。したがって、キャッシュを追加して帯域幅を増やすという、LLM 指向の大型コンピューティング AI チップと同様の戦略を採用する必要があります。

うーん、本当にこれで十分ですか?2ヶ月前、私は本当にそう思い、トランス統一の時代が来た、資料を積むのは良いことだと嘆き、AiSys分野の今後の発展に対して少し悲観的な態度を以下の回答で出力したこともありました。しかし最近、これらの分野で一般的なトランスフォーマーの構造を研究し、いくつかのアルゴリズムの友人とコミュニケーションを取った後、他のモダリティにおけるトランスフォーマーのアプリケーション パラダイムが NLP のアプリケーション パラダイムとはまったく異なることがわかり、LLM 指向のチップを設計しようとしました。決定がエンドサイドに直接適用されることは適切ではありません。 

次に、各モードの代表的なトランスモデルとエンドサイドの観点から見た長所と短所を列挙し、考え方とまとめを最後に示します。モデルに興味のない友人は、伏線を省略して直接概要に進むことができます。

また、より良いコミュニケーション(調和)を図るために、いつものように議論の対象を定義します 本記事でいうエンドサイドAIチップとは、下図の円を指します。モバイル、エッジ、自律型。一方で、この範囲の AI チップはコストに敏感であり、キャッシュと帯域幅のスタッキングは比較的控えめですが、一方で、よりエネルギー効率の高い DSA の割合が高く、その結果、プログラミングの柔軟性が比較的低くなります。エンドツーサイドの典型的な変圧器モデルの在庫

ビジュアルバックボーン記事

Vit: 画像は 16X16 語の価値があります: 大規模な画像認識のためのトランスフォーマー、2020

導入

  • 全体的なプロセス: 画像はパッチ埋め込みを通じて直接パッケージ化およびエンコードされ、トランスフォーマー タイプのシーケンス特徴に変換されます。パッチ位置エンコーディングが接続された後、後続のクラシック トランスフォーマー ブロックが引き継ぎます。

  • アルゴリズムの観点から見ると、Vit 構造は、少量の特徴前処理のみで視覚情報を連続した特徴に変換します。これは非常にエレガントで簡潔です。ただし、スケール情報はパッチ埋め込み段階で patch_size によって一意に決定されるため、視覚タスクに重要なマルチスケール情報が欠落しています。したがって、分類以外の視覚タスクでは、Vit のパフォーマンスは理想的ではありません。

エンドサイドから見たメリットとデメリット

  • アドバンテージ:

    • パッチの埋め込みと出力形式を除いて、Vit 構造は古典的なトランスフォーマー構造と同じであるため、kv キャッシュを無視するほとんどのトランスフォーマー推論最適化戦略を直接楽しむことができます。

  • 短所:

    • 計算量は解像度に応じて二次関数的に増加します(seqlen=(H/patch_size)x(W/patch_size))。高解像度のシーン (検出セグメンテーションなど) に適用すると、FFN も MHA の行列乗算も、リソースに制約のあるエンドサイドのニアカーネル キャッシュに直接ロードできません。これをサポートするためのさまざまな並列セグメンテーション戦略がありますが、キャッシュとメイン メモリ間の過剰なスワップインおよびスワップアウトによって引き起こされる帯域幅のオーバーヘッドが依然としてコンピューティング効率を大幅に制限します。

    • patch_size レベル (16/32) の特殊な conv2d は使用効率が良くありません。もちろん、焦点は依然として 1) にあり、2) の問題は CNN の最初の inchannel=3 の畳み込みに非常に似ており、ボトルネックではありません。2) を回避するために permute+gemm に変換することもできます。それ。

swintransformer:Swin Transformer: Shifted Windows を使用した階層型ビジョン トランスフォーマー、ICCV、2021简介

  • 全体的なプロセス: 上の図を参照すると、PatchMerging は段階的にダウンスケールします (最初の PatchPartition+LinearEmbedding は特殊な PatchMerging と見なすことができます)。単一の SwinTransformer が最初に、WindowPartition を介してローカル ウィンドウを粒度として視覚特徴を順次特徴に変換し、送信します。古典的な Transformer 構造が処理された後、視覚的特徴は WindowUnpartition を通じて戻され、各 SwinTransformer はウィンドウ スライディングを実行してグローバルな情報フローを実現します。

  • アルゴリズムの観点: SwinTransformer の魔法のように修正された WindowAttend は、依然として視覚タスクの局所的特性を確認します。さらに、パイプライン全体で視覚的特徴と連続的特徴の間を行き来することにより、アテンションベースのマルチスケール情報抽出が可能になります。これは、検出やセグメンテーションなどの視覚的なタスクにおける Transformer の実装にとって非常に重要です。

エンドサイドから見たメリットとデメリット

  • アドバンテージ

    • WindowAttention 機構により、解像度に応じて計算量が直線的に増加するため、ViT の主な問題が解決されます。また、シーケンスサイズ seqlen はウィンドウサイズ ws (seqlen=ws x ws) にのみ関係しますが、embed_dim が適切に設計されている限り、行列演算は関係なく AI チップのニアコア キャッシュに常駐できます。解像度の。

    • このメカニズムは、バッチのサイズを偽装して増加させます (Batch=batch_origin x (H/ws) x (W/ws)、ws はウィンドウ サイズを指します)。同期なしのパラレル、完全無料! これは、マルチコア アーキテクチャ設計にとっては間違いなく驚きです。

  • 不利益

    • ViT の PatchEmbedding の特殊な畳み込みを継承していることに加えて、WindowPartition/Unpartition とウィンドウ スライディングによる permute/torch.roll の導入、および Windowsize と解像度が Pad の導入と一致しないなど、これらの高頻度のデータ再配置がパフォーマンスに大きな影響を与えることは間違いありません。大きな影響。

その後の進化

  • 注意メカニズムについて: ウィンドウ アテンション (SwinTransformer) とグローバル アテンション (ViT) の組み合わせ。たとえば、ViTDet: Exploring Plain Vision Transformer Backbones for Object Detection、ECCV、2022 年などです。つまり、一部のトランスフォーマーはウィンドウ アテンションを使用し、一部のトランスフォーマーはアテンションを使用します。

  • 位置コーディング: NLP 分野の位置コーディングの革新を、RoPE: ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING、2021 などの視覚タスクに適用します。以下に示すように、中心となる計算は、奇数 - 偶数の回転と偶数の逆反転、(x, y) --> (-y, x) です。onnxレベルでは、低次元のsplit+neg+低次元のconcatのサブグラフに分割されます。明らかな 1 パスをマルチパスに変換すると、パフォーマンスにわずかな影響があります。

def rotate_half(x):
    x = rearrange(x, '... (d r) -> ... d r', r = 2)
    x1, x2 = x.unbind(dim = -1)
    x = torch.stack((-x2, x1), dim = -1)
    return rearrange(x, '... d r -> ... (d r)')
外観検査

DETR : 変圧器を使用したエンドツーエンドの物体検出、ECCV、2020简介

  • 全体的なプロセス: 上に示したとおり。主要な特徴が抽出され、ChannelMapping と位置エンコーディングを行った後、従来の Transformer コーデック モジュールに送信され、最終的に FFN フレームに渡されます。なお、デコード部に埋め込むクエリは予め設定された固定値(学習パラメータ)である。

  • アルゴリズムの観点から: Transformer ベースのエンドツーエンド フレームワーク、NMS なし、人工的な機能や事前知識なしですが、トレーニングは困難です。展開という観点から見ると、まさに驚くべきデザインです。

エンドサイドから見たメリットとデメリット

  • アドバンテージ

    • エンドツーエンドの nms はなく、後処理のために CPU にオフロードする必要もありません。

    • ViT と同様に、基本的にほとんどのトランスフォーマー推論最適化戦略をシームレスに使用できます。

  • 不利益

    • 検出される代表的な負荷の観点から見ると、依然として計算量が多すぎます。同じアルゴリズムの効果を達成するには、CNN 時代の検出ヘッドの組み合わせと比較して、オーバーヘッドが大きすぎて、ろうそくの価値がありません。

変形可能な DETR : 変形可能な DETR: エンドツーエンドの物体検出のための変形可能なトランス、2020简介

  • 全体的なプロセスに関しては、Deformable DETR のプロセスは少し複雑ですが、コードをスキャンしてモデルを転送するだけで開始できました。上の2つの構造図だけではわかりにくいようです。モデル構造の観点から簡潔に解釈しようとします。 Deformable DETR は、バックボーンによって抽出されたマルチスケールの視覚特徴を受け取り、それらをカスタマイズされた DeformableTransformer 構造に送信します。この構造内では、クエリ機能はビジュアル マルチスケールとシーケンスの 2 つの表現で存在します。シーケンス特徴量に基づいて注目特徴点の座標(図2の参照点)とオフセット(図2のオフセット)を予測し、その座標に基づいてマルチスケール視覚特徴から特徴点を抽出して結合します。シーケンス特徴によって計算された重みを取得して、DeformableTransformer の次のラウンドのクエリ入力を取得します。

  • アルゴリズムの観点から見ると、トレーニングの難しさが軽減されます。

エンドサイドから見たメリットとデメリット

  • アドバンテージ

    • Deformable DETR の展開レベルの利点を見つけるのは難しいようですが、強いて言うなら、その魔法の修正のための DeformableAttendant 行列の計算が確かに少し少ないです。

  • 不利益

    • WindowPartition と WindowUnpartition によってモデルに継続的に挿入されるデータの並べ替え (permute) がエンド側のパフォーマンスに影響を与えるのであれば、DeformableAttendant の高周波 Grid_sample による特徴点抽出の操作は柔軟性のない人にとっては災難としか言いようがないと思います。および低帯域幅のエンドサイド。

    • マルチスケールのビジュアル機能とシーケンス機能を切り替えるときに導入される特殊な分割 (不等分割) と高次元の並べ替えは言うまでもありません。

その後の進化

  • DINO: DETR with Enhanced DeNoising Anchor Boxes for End-to-End Object Detection, 2022 では、DeformableDETR に基づくクエリ選択がさらに導入され、デコード段階でターゲット選択 (topk+gather) が追加されています。

点群

DSVT : DSVT: 回転セットを使用した動的スパース ボクセル トランスフォーマー CVPR 2023简介

  • 全体のプロセス: DSVT パイプライン全体 (上図の DSVT 部分) は、swintransformer の点群バージョンとして理解できます。1). 並列ローカルセルフアテンション: DSVT は、スパースボクセルを複数のウィンドウに分割し、最後にそれを同じ数のセットに分割し、セットごとにアテンションを実行します。2). グローバル情報循環 (シフト ウィンドウ スライディング): DSVT パーティション x/y それぞれ。

  • データ切り替え方法: x/y 方向のボクセル特徴に対応するインデックスを事前に記録し、収集/散乱を通じてボクセル点群特徴空間とトランス シーケンス特徴空間の間のデータ切り替えを実現します。

  • プロセスにおけるボクセル化と BEV はどちらもドメイン用語であり、この記事では説明しません。ボクセルの部分については、「VoxelNet: 点群ベースの 3D オブジェクト検出のためのエンドツーエンド学習 CVPR 2018」を参照してください。

  • プロセスに加えて、DSVT と SwinTransformer には同様の一般的な負荷があります (DSVT で設定)

エンドサイドから見たメリットとデメリット

  • アドバンテージ

    • WindowAttend のすべての利点を継承します。計算量と単一行列の計算規模を削減し、計算の並列性を向上させます。

  • 不利益

    • トランスフォーマー シーケンス特徴空間とボクセル点群特徴空間のデータのスイッチング コストは、視覚特徴のデータのスイッチング コストよりもはるかに高くなります。まず、スキャター/ギャザーなどのデータのランダム アクセス (シャッフル) は、データの再配置操作 (リオーダー) よりもはるかに時間がかかります。また、第 2 に、デバイス側でのこれらの操作のサポートには疑問符が付きます。すべてのオフロードは CPU に与えられますか? これは冗談ではありません。

    • 一言で言えば、端末側の不親切さはDSVTそのものとは関係なく、悪い遺伝子と点群データ構造の喪失です。

3D検出ヘッドの進化

3D検出ヘッドのアルゴリズム進化の経路は比較的複雑で、CNN時代のCenterNetやCenterPointのように準備すべきことはたくさんありますが、行き着く先は2D検出と同じDETRです。インクが多すぎる代わりに。

マルチモーダル記事

CLIP : 自然言語監視から転移可能なビジュアル モデルを学習する ICML 2021简介

  • 全体的なプロセスでは、画像エンコード部分とテキスト エンコード部分はトランスフォーマ エンコーダ (または他のエンコード構造) を通過し、それぞれのエンコード特徴に対してマルチモーダル フュージョン (ノルム) を実行し、コサイン類似度 (matmul、cos) を計算します。お互いに。

エンドサイドから見たメリットとデメリット

  • アドバンテージ

    • ViT と同様、シンプルで飾り気のない構造とシンプルさの実践者は、エンドツーエンドの実装に適しています。

  • 欠点がある

    • プロンプト エンジニアリングを含むテキスト エンコーダは、その入力テキスト シーケンスがアプリケーション コンテキストに応じてリアルタイムで変化するため、エンドサイド ソフトウェア スタックの動的形状サポートに対してより高い要件を提示します。

軽量トランス

私はモデル構造の観点から、軽量トランスフォーマーを有機結合派と深層改造派の2派に分けます。

オーガニックな組み合わせ

この派閥の代表者は次のとおりです。

  • EfficientFormer: MobileNet Speed NIPS 2022 でのビジョン トランスフォーマー

  • MobileViT: 軽量、汎用、モバイルフレンドリーな Vision Transformerarxiv 2021

アーキテクチャの概要から、おなじみの conv+relu+bn によるステップバイステップのダウンサンプリングという手がかりを見つけることができます。このタイプのモデルは CNN アーキテクチャの典型的な特徴を依然として保持しており、頭部と胴体のみにトランスフォーマー ユニットが埋め込まれています。

このタイプのアルゴリズムは、アルゴリズムの効果と推論パフォーマンスのバランスを図るために、系統を柔軟に切り替える (Transformer ユニットの割合を調整する) ことができます。しかし、システムの観点から見ると、この種のアルゴリズムの位置付けはかなり曖昧であると感じます。CNN の計算能力の範囲にあるのか、Transformer の計算能力の範囲にあるのか、あるいはその 2 つの中間点にあるのか。少なくとも私がこれまで読んだ限りでは、この派閥の主な舞台は中道である。

根っからの改革主義者

この派閥の代表者は次のとおりです。

  • Next-ViT: 現実的な産業シナリオでの効率的な導入のための次世代ビジョントランス、2022 年

  • EfficientViT: オンデバイス セマンティック セグメンテーションのための軽量マルチスケール アテンション、ECCV、2022

この派閥は、もはや Transformer の表面的な埋め込みに満足せず、より深いレベルで Transformer の構造を変換し、プーリングを使用してアテンションの数を削減してアテンション マトリックスのサイズを削減し、relu/プーリングを使用して世界的なアテンションを達成します。ソフトマックスと同様の仕組み。

有機的統合派と比較して、この派閥は既存の AI チップの特性のアルゴリズム変換に対応していますが、CNN の計算能力範囲で競争するという明確な目標を持っています。「ドメイン固有のアルゴリズム」を設計することは、当然のことながら、展開と最適化に最適です。しかし、このアルゴリズムを逆にプラットフォームに適応させ、旧時代のAIチップの束縛を外して前に進むという考え方は、主流のイノベーションの考え方に反するものであると常々感じています。

要約する

より良いプログラマビリティ

帰納的パラノイアの違いは、CNN と Transformer の進化モードに大きな影響を与えました。CNN のローカルな特性は、間違いなく、ResNet、FPN などのネットワークのグローバルな構造レベルでのさらなるイノベーションを導きますが、Transformer のグローバルな性質は、最適化は、アテンションと FFN の詳細、つまりオペレーター レベルの調整にさらに反映されます。さらに、トランスフォーマーはモデル内でブロック/レイヤーの形式でスタックされることが多いため、トランスフォーマー周りに導入されたオペレーターの革新はすべてのトランスフォーマー ユニットにコピーされます。したがって、Transformer の時代には、これらのモーダル モデルに特化したオペレーターの割合が以前よりもはるかに高くなります。上記の Grid_sample/gather/scatter および DeformableDETR/DSVT の高次元テンソル、SwinT と VitDet によって導入された WindowPartition および Unpartition 操作 (追加の Pad と高次元 Permute)、および RoPE などの特殊な位置エンコード操作が最適です。図。

このとき、まだCNN時代の考え方を踏襲し、grid_sample/gather/scatterなどのコンパイルソフトスタックでは処理しきれない計算負荷をCPUにオフロードすると、頻繁にパイプラインが中断され、追加の帯域幅を占有してしまいます。 、それは大きな間違いでしょう。代わりに、TensorCore とキャッシュを共有するプログラマブル アクセラレーション ユニットを構成するか、DSP に TensorCore を組み込む方が、より良い設計方向となります。

非常に高い計算の柔軟性を必要とする最適化戦略 (FA の定量的バージョンについて話しています) である FlashAttendant の適用を考慮すると、上記の決定はさらに強化されるだけです。次に、この傾向の下で、デバイス側のルートを取るストレージおよびコンピューティング AI チップが、より大きな課題に直面することをさらに想像してみましょう (結局のところ、すべての操作と最適化が量子化に適しているわけではありません)。ワオソフト アイオット http://143ai.com

より合理的なリソース割り当て

キャッシュ サイズの向上WindowAttendant によって制限されるビジュアル バックボーンと点群 DSVT、検出オブジェクトによって制限される検出タスク QueryEmbedding、またはマルチモーダルの簡略化されたプロンプトのいずれであっても、これらのアルゴリズムの設計は、シーケンスの長さがモデルによって変化しないことを意味します。計算は無限に増えていきます。各モーダル トランスフォーマーの大規模なパラメーター構成シナリオ (mlp_ratio=4、queryobj=seqlen=1024、embed_dim=1024) を計算するだけで、8M キャッシュは単一のバッチ 8 ビット推論中の単一の計算の重みデータを完全にカバーできます。そのため、サイズさえ合っていれば無限に素材を積み重ねる必要はありません。

マルチコア設計には潜在的な利点がありますSwinTransformer/ViTDet などのワークロードの観点から見ると、局所性を強調するタスクでのアルゴリズム モデリングは、Transformer の注意入力を局所特徴を表す相互に独立したサブシーケンスに変換する意欲が高くなります。この場合、マルチコア設計の利点がより明らかになります。

より正確なコンピューティング能力の位置付け。 現在、Transformer 時代のアルゴリズムには 2 つの革新的なモードがあります。1 つは CNN と深く統合された軽量の Transformer です。元の構造が変わらないという前提の下で、少数の Transformer モジュールが導入されて、一番下の行、もう 1 つはモダリティに基づいており、フィーチャー データを適応させるための新しいオペレーターを導入し、上位レベルのルートで Transformer をカスタマイズします。ルート論争についてはあえて触れませんが、確かなことは、両者の計算能力の範囲がまったく異なるということです。AI チップの設計と配置は曖昧であってはならず、2 つのうちの 1 つしか選択できません。両端が必要で、基礎となるルートには価格上の利点がなく、上のルートのコンピューティング能力リソースが追いつかない場合、結果は醜いものになる可能性があります。したがって、チーム内のソフトウェアとハ​​ードウェアの共同研究者は、設計段階により多くの投資を行い、トランス効果の利点の境界点を把握する必要があります。

より詳細なバッファモデリング

これらのワークロードには以下が完全に反映されています。

  • 特徴空間にわたる非言語モデルのソリューション。より適切な特徴抽出を求めて、連続した特徴と他のモーダルな特徴の間でデータが行き来します。たとえば、SwinT の画像特徴のシフトとダウンサンプリング、シーケンス特徴のアテンションと FFN、DSVT の点群特徴の特徴グループ化、同じシーケンス特徴のアテンション/FFN などです。

  • 位置情報の派手なエンコード記述。たとえば、RoPE、DINO でのデコーダ位置操作などです。

IR レベルでのバッファ モデリングをテンソル粒度から項目粒度まで線形に拡張できる場合、一方では、特徴空間間の切り替えによって導入される並べ替え (並べ替え) およびシャッフル (グリッド サンプル/ギャザー) 操作がより適切に説明されるようになります。このように、前後のeltwise/gemmノードとの融合については更なる検討の余地がある一方、派手な位置符号化(RoPEなど)の計算サブグラフにおける各Buffer間の集合と依存関係は、モデリングも改善され、サブグラフ全体をマルチパスから 1 パスに変換できるようになります。これらのパフォーマンス上の利点を重ね合わせたものが、最終的なパフォーマンス ベンチマークの勝者となる可能性があります。

より高いスケーラビリティのソフトウェア スタック

Transformer アルゴリズムの次の特性は、ソフトウェア スタックのサポートにも一定の影響を与えます。

  • 各モーダル Transformer によって導入される特別な演算子のうち、シャッフル演算を除くほとんどのワークロード (高次元のテンソル演算、高次元の並べ替え、不等分割など) はコンパイル ソフトウェア スタックの責任範囲です。これらの負荷は単純化され、ハードウェアの適応が行われます。

  • マルチモーダル以外のワークロードは動的シェイプに強い魅力を持っていませんが、マルチモーダル モデルによって示される大きな可能性を考えると、ソフトウェア スタックをコンパイルするために事前に動的シェイプをレイアウトし、合理的なバージョン計画を立てることが依然として必要です。

そして、これらは CNN 時代にはテスト ケースや関数リストにまったく含まれていなかったかもしれません。明らかに、これは AI チップ コンパイル ソフトウェア スタックのスケーラビリティにとってより高い要件です。設計において考慮すべき点は多すぎますが、テストの観点からは、Fuzz を立ち上げる時期が来たと感じています。

その後のSDKのバージョン変更やリリースノートから各社の対応が垣間見えるかも知れません

おすすめ

転載: blog.csdn.net/qq_29788741/article/details/132309467