AIモデルとプラットフォーム

EfficientViT:メモリ効率の高いビジョントランスフォーマー

mm
Unite.AI を Google の優先ソースに追加

ビジョントランスフォーマーモデルは、高いモデル容量を備えているため、近年大きな成功を収めています。ただし、ビジョントランスフォーマーモデルには大きな欠点があります。すなわち、計算能力が高くなるにつれて、計算コストも高くなるため、リアルタイムアプリケーションには適していません。この問題を解決するために、EfficientViTという高速ビジョントランスフォーマーのファミリーが開発されました。

EfficientViTの開発者は、現在のトランスフォーマーモデルは、メモリへのアクセスが不効率であることが多く、特にMHSA(マルチヘッドセルフアテンション)ネットワークにおける要素ごとの関数とテンソルのリシェイピングが、メモリの不効率な操作であることを観察しました。EfficientViTの開発者は、メモリの不効率な操作を解決するために、新しいビルディングブロックを開発しました。EfficientViTモデルは、シングルメモリバウンドマルチヘッドセルフアテンションネットワークを使用し、メモリの効率を向上させ、チャネルの通信を強化します。また、計算の冗長性を削減するために、カスケードグループアテンションモジュールを提案します。

EfficientViTモデルは、さまざまなシナリオで実験を行った結果、EfficientViTモデルは、既存の効率的なモデルよりも優れたパフォーマンスを発揮し、精度と速度のバランスを取ることができました。そこで、EfficientViTモデルをより深く調べてみましょう。

ビジョントランスフォーマーとEfficientViTの紹介

ビジョントランスフォーマーは、コンピュータビジョン業界で最も人気のあるフレームワークの1つです。高いパフォーマンスと計算能力を提供するからです。ただし、ビジョントランスフォーマーモデルの精度とパフォーマンスが向上するにつれて、運用コストと計算オーバーヘッドも増加します。たとえば、ImageNetデータセットでステートオブザアートのパフォーマンスを提供するSwinV2とV-MoEモデルは、3Bと14.7Bのパラメータを使用します。これらのモデルのサイズと計算コストは、リアルタイムデバイスとアプリケーションには実用的ではありません。

EfficientNetモデルは、ビジョントランスフォーマーモデルのパフォーマンスを向上させる方法と、効率的なトランスフォーマーベースのフレームワークアーキテクチャを設計する原則を探求することを目的としています。EfficientViTモデルは、SwimとDeiTなどの既存のビジョントランスフォーマーフレームワークに基づいています。EfficientViTモデルは、計算冗長性、メモリアクセス、パラメータ使用の3つの要素が、モデルの干渉速度に影響を与えることを分析します。また、ビジョントランスフォーマーモデルの速度は、メモリバウンドであることを観察します。つまり、CPU/GPUの計算能力の完全な利用は、メモリアクセス遅延によって制限されるため、トランスフォーマーのランタイム速度に悪影響を与えます。

EfficientViTモデルは、新しいブロックを使用して、メモリの効率を向上させ、チャネルの通信を強化します。また、計算の冗長性を削減するために、カスケードグループアテンションモジュールを提案します。さらに、パラメータの効率を向上させるために、重要なモジュールのチャネル幅を拡大し、重要でないモジュールのチャネル幅を縮小します。

上の画像から、EfficientViTフレームワークは、現在のステートオブザアートのCNNとViTモデルよりも、精度と速度の両方で優れていることがわかります。しかし、EfficientViTフレームワークは、現在のステートオブザアートのフレームワークを超えることができたのでしょうか?それを見てみましょう。

EfficientViT:ビジョントランスフォーマーの効率の向上

EfficientViTモデルは、3つの観点から、既存のビジョントランスフォーマーモデルの効率を向上させることを目的としています。

  1. 計算冗長性
  2. メモリアクセス
  3. パラメータ使用

EfficientViTモデルは、これらのパラメータがビジョントランスフォーマーモデルの効率に与える影響を分析し、解決策を探求することを目的としています。詳細に説明してみましょう。

メモリアクセスと効率

モデルの速度に影響を与える重要な要素の1つは、メモリアクセスオーバーヘッド(MAO)です。画像から、トランスフォーマーのいくつかの演算子、要素ごとの加算、正規化、頻繁なリシェイピングが、メモリの不効率な操作であることがわかります。これらの操作は、異なるメモリユニットへのアクセスを必要とするため、時間のかかるプロセスです。

一方、EfficientViTフレームワークは、メモリアクセスコストを削減するために、メモリの不効率な層の数を削減します。モデルのアーキテクチャは、3つのステージで構成されており、各ステージでは、提案されたビルディングブロックをスタックしています。サブサンプリングレイヤーでは、トークンの数を4倍に削減します。サブサンプリングを効率化するために、モデルのアーキテクチャは、提案されたサンドイッチレイアウトを使用し、アテンションレイヤーをインバート残基ブロックに置き換えます。

計算効率

MHSA層は、入力シーケンスを複数のサブスペースまたはヘッドに埋め込み、個別にアテンションマップを計算します。これは、パフォーマンスを向上させることが知られています。ただし、アテンションマップは、計算コストがかかります。EfficientViTモデルは、小さいViTモデルでの冗長なアテンションを削減する方法を探求します。モデルのアーキテクチャは、幅を下げたDeiT-TとSwim-Tモデルを訓練し、1.25倍の推論スピードアップを実現します。画像から、ヘッド間の相似性が高いことがわかります。これは、モデルの計算冗長性が存在することを示しています。

ヘッドが異なるパターンを学習することを促進するために、モデルのアーキテクチャは、各ヘッドにフル機能の部分のみを提供する、グループ畳み込みに似た直感的な解決策を適用します。

パラメータ効率

平均ViTモデルは、NLPトランスフォーマーから設計戦略を継承しています。たとえば、プロジェクションに等しい幅を使用し、FFNの拡張率を4に設定し、ステージごとにヘッドの数を増やします。これらのコンポーネントの構成は、軽量モジュールのために慎重に再設計する必要があります。EfficientViTモデルは、Taylor構造プルーニングを使用して、Swim-TとDeiT-Tのレイヤー内の重要なコンポーネントを自動的に見つけます。さらに、パラメータの割り当ての原則を探求します。特定のリソース制約の下で、プルーニング方法は、重要なチャネルを保持し、不必要なチャネルを削除して、可能な限り高い精度を確保します。

上の画像から、最初の2つのステージでは、より多くの次元が保存され、最後の2つのステージでは、より少ない次元が保存されることがわかります。つまり、各ブロックに等しいチャネルを使用する、または各ステージ後にチャネルを2倍に増やす、という典型的なチャネル構成は、最後の数ブロックで大きな冗長性につながる可能性があります。

EfficientViT:アーキテクチャ

上記の分析に基づいて、開発者は、新しい階層モデルのEfficientViTを開発しました。EfficientViTの構造を見てみましょう。

EfficientViTフレームワークのビルディングブロック

EfficientViTネットワークのビルディングブロックは、以下の図に示すように構成されています。

EfficientViTフレームワークは、カスケードグループアテンションモジュール、メモリ効率の高いサンドイッチレイアウト、パラメータ再配置戦略で構成されています。これらは、計算、メモリ、パラメータの効率を向上させることを目的としています。詳細に説明してみましょう。

サンドイッチレイアウト

モデルのアーキテクチャは、新しいサンドイッチレイアウトを使用して、メモリブロックを構築します。サンドイッチレイアウトは、メモリバウンドセルフアテンションレイヤーを少なくし、チャネルの通信のためにメモリ効率の高いフィードフォワードネットワークを使用します。具体的には、モデルのアーキテクチャは、スペースミキシングのための単一のセルフアテンションレイヤーを、FFNレイヤーの間に適用します。設計は、セルフアテンションレイヤーによるメモリ時間の消費を削減するだけでなく、FFNレイヤーを使用することで、ネットワーク内の異なるチャネルの間の効果的な通信を可能にします。

カスケードグループアテンション

MHSA層の主要な問題の1つは、アテンションヘッドの冗長性です。これにより、計算が不効率になります。問題を解決するために、モデルのアーキテクチャは、ビジョントランスフォーマー用の新しいアテンションモジュール、カスケードグループアテンション(CGA)を提案します。CGAは、グループ畳み込みからインスピレーションを得て、各ヘッドにフル機能のスプリットを提供し、アテンション計算をヘッド間で明示的に分解します。機能のスプリットは、各ヘッドにフル機能を提供するよりも、計算を削減し、プロセスをより効率的にします。

パラメータ再配置

パラメータの効率を向上させるために、モデルのアーキテクチャは、重要なモジュールのチャネル幅を拡大し、重要でないモジュールのチャネル幅を縮小します。Taylor分析に基づいて、モデルのアーキテクチャは、各ヘッドのプロジェクションに小さいチャネル次元を設定するか、プロジェクションに入力と同じ次元を許可します。FFNの拡張率は、パラメータの冗長性を減らすために、4から2に減らされます。提案されたパラメータ再配置戦略は、重要なモジュールにチャネルを割り当て、特徴情報の損失を最小限に抑えることで、より高次元の空間で表現を学習できるようにします。

EfficientViTフレームワークの概要は、上の画像で説明されています。

  1. EfficientViTのアーキテクチャ
  2. サンドイッチレイアウトブロック
  3. カスケードグループアテンション

 

EfficientViT:ネットワークアーキテクチャ

上の画像は、EfficientViTフレームワークのネットワークアーキテクチャをまとめています。モデルのアーキテクチャは、16×16パッチをC1次元トークンに埋め込み、低レベルの視覚的表現学習の能力を高めるオーバーラッピングパッチ埋め込み[20,80]を導入します。モデルのアーキテクチャは、3つのステージで構成されており、各ステージでは、提案されたビルディングブロックをスタックしています。サブサンプリングレイヤーでは、トークンの数を4倍に削減します。サブサンプリングを効率化するために、モデルのアーキテクチャは、提案されたサンドイッチレイアウトを使用し、アテンションレイヤーをインバート残基ブロックに置き換えます。

 

EfficientViTモデルファミリー

EfficientViTモデルファミリーは、6つのモデルで構成されており、各ステージに一定数のヘッドが割り当てられています。モデルのアーキテクチャは、初期ステージではブロックの数が少なく、最終ステージではブロックの数が多くなります。これは、MobileNetV3フレームワークに従ったプロセスです。幅は、ステージごとに小さな係数で増加し、後半のステージでの冗長性を減らします。以下の表には、EfficientViTモデルファミリーのアーキテクチャの詳細が示されています。ここで、C、L、Hは、幅、深さ、ヘッドの数を表します。

EfficientViT:モデル実装と結果

EfficientViTモデルは、合計バッチサイズ2,048、TimmとPyTorchで構築されており、300エポックで8つのNvidia V100 GPUを使用して訓練され、コサイン学習率スケジューラーとAdamWオプティマイザーを使用します。画像分類実験はImageNet-1Kで行われ、入力画像はランダムにクロップされ、224×224の解像度にリサイズされます。下流の画像分類実験では、モデルは300エポックでフィーネチューニングされ、AdamWオプティマイザーとバッチサイズ256を使用します。モデルは、RetineNetを使用してCOCOのオブジェクト検出を実行し、12エポックで同様の設定で訓練されます。

ImageNetでの結果

EfficientViTのパフォーマンスを分析するために、EfficientViTモデルは、ImageNetデータセットで現在のViTモデルとCNNモデルと比較されます。比較結果は以下の図に示されています。EfficientViTモデルファミリーは、ほとんどの場合で、現在のフレームワークを超えるパフォーマンスを発揮し、精度と速度のバランスを取ることができました。

効率的なCNNと効率的なViTとの比較

モデルは、EfficientNetやMobileNetなどの効率的なCNNと比較されます。MobileNetフレームワークと比較して、EfficientViTモデルは、トップ1の精度スコアが向上し、Intel (INTC ) CPUとV100 GPUでそれぞれ3.0倍と2.5倍の高速化を実現します。

上の図は、EfficientViTモデルのパフォーマンスを、ImageNet-1Kデータセットで実行されるステートオブザアートの大規模ViTモデルと比較しています。

下流画像分類

EfficientViTモデルは、さまざまな下流タスクに適用され、モデルの転移学習能力が研究されます。以下の画像は、実験の結果をまとめています。EfficientViT-M5モデルは、すべてのデータセットで、より高いスループットを維持しながら、同等または優れた結果を達成します。ただし、Carsデータセットでは、EfficientViTモデルは精度で劣る結果を示します。

オブジェクト検出

EfficientViTモデルのオブジェクト検出能力を分析するために、モデルは、COCOオブジェクト検出タスクで効率的なモデルと比較されます。以下の画像は、比較結果をまとめています。

最終的な考え

この記事では、EfficientViTについて説明しました。EfficientViTは、カスケードグループアテンションとメモリ効率の高い操作を使用する、高速なビジョントランスフォーマーのファミリーです。広範な実験により、EfficientViTモデルのパフォーマンスが、現在のCNNとビジョントランスフォーマーモデルを超えることが示されました。また、ビジョントランスフォーマーの干渉速度に影響を与える要因についても分析しました。

職業はエンジニア、心は作家。クナルは、AIとMLを深く愛し理解しているテクニカルライターで、これらの分野の複雑な概念を魅力的で情報の多いドキュメンテーションを通じて簡素化することに尽力しています。