With decades of expertise at the interface between the physical and the digital, ADI is looking for the next generation of AI, robotics, and embedded software experts. Join us to transform industries from energy and transportation to wearables, healthcare, and more!
Learn about our team
筆者:シーラ・サイデル(Sheila Seidel)、主任エンジニア、機械学習エッジAI
2025年10月30日
なぜ小型モデルが重要なのか
AIモデルの小型化は単なるオプションではなく、エッジ・デバイスに強力なリアルタイム・インテリジェンスをもたらすための必須要件です。スマートフォン、ウェアラブル機器、組込みシステムを問わず、これらのプラットフォームはメモリ、演算能力、バッテリ容量の厳しい制約下で動作します。デバイス上でAI体験を実現するには、モデルの精度や機能を損なうことなく、超低遅延と超低消費電力を可能にする必要があります。
ここでモデル圧縮が重要となります。非構造化プルーニング(アーキテクチャへの影響を最小限に抑えながら個々の重要度の低い重みを削除する手法)は一般的な出発点ですが、マスクのオーバーヘッドにより不規則なスパース・パターンや実行時の非効率性が生じる可能性が高くなります。そのため、アナログ・デバイセズのチームは構造化プルーニングに焦点を移し、メモリの使用量と計算コストの真の削減を実現しました。さらに優れた点は、この手法により、リソースが最も制約されたエッジ・デバイス上でも、より小型かつ容易に展開可能なモデルが生成されることです。
構造化プルーニング:モデルの効率性へのより優れた手法
構造化プルーニングは、リソース制約のあるプラットフォームへの展開向けにモデルを縮小する実用的な手法を提供します。基本形では、この手法はチャンネルやフィルタといった単位、さらにはレイヤ全体といった単位を丸ごと削除します。さらに良いことに、非ゼロ重みの位置を追跡する必要がある非構造化プルーニングとは異なり、構造化プルーニングは、よりクリーンで小型の重み行列を生成し、最適化や展開が容易になります。
ただし、プルーニングは単にモデルの一部を削除するだけではありません。1つのレイヤでパラメータを削除すると、他のレイヤに影響を与える可能性があります。特にRNNのような密結合アーキテクチャではその影響は顕著です。これらの依存関係を管理することが、プルーニング後のモデルを機能的かつ効果的に保つ鍵となります。
組込みツールを超える
PyTorchはtorch.nn.utils.pruneを通じて基本的なプルーニング・ユーティリティを提供していますが、これらのツールには制限があります。これらのツールは、実際のモデル・サイズを縮小したりレイヤ間の依存関係を処理したりせず、マスクを適用するだけなのです。
この問題を解決するため、アナログ・デバイセズは、モデルから冗長な部品を物理的に除去するオープンソース・ライブラリ「Torch-Pruning」を活用しています。PyTorchの組込みユーティリティとは異なり、Torch-Pruningはネットワークの依存関係グラフを構築し、レイヤ間の相互作用を判定します。これにより、モデルのアーキテクチャに配慮した構造化プルーニングが可能となります。
実際のアプリケーション:音声ノイズ除去と音声区間検出
アナログ・デバイセズは最近、音声ノイズ除去プロジェクトの作業を任され、畳込みGRUモデルの圧縮にTorch-Pruningを活用しました。Conv2D層のプルーニングは容易で、性能を損なうことなく積和演算(MAC)を25~30%削減できました。
しかしGRU層は課題となりました。PyTorchのGRUはC++で実装されており、Torch-Pruningの依存関係グラフとの相性が良くありません。さらに、GRUは隠れ状態を自身にフィードバックするため、これらの入力のプルーニングは標準ではサポートされていませんでした。
アナログ・デバイセズのソリューションは、標準的なPyTorchレイヤー(nn.Linearなど)と要素ごとの演算を用いて、プルーニング可能なGRUをゼロから構築します。また、GRU入力から隠れ状態のサイズを切り離すためのIDアダプタ層を導入し、安全なプルーニングを可能にしました。
ワークフローは以下の通りです:
- ネイティブGRUを既存の重みをコピーしたカスタム・プルーニング可能GRUに置き換える。
- Torch-Pruningを用いた構造化プルーニングを適用する。
- プルーニング可能なGRUをネイティブGRUに戻す。
- 精度を回復させるためモデルを微調整する。
- 小型化されたモデルを展開する。
この手法により、畳込みプルーニングによるMAC節約に加え、モデル・パラメータが30%削減されました。
主に畳込みアーキテクチャを採用した音声区間検出(VAD)プロジェクトでは、8万パラメータのモデルを2千パラメータ以下にプルーニングしながら、最先端の性能を維持しました。これらの変化の鍵は、豊かな初期層の特長を保持しつつ、後期層を慎重にプルーニングすることです。
オープンソースへの貢献と今後の展望
アナログ・デバイセズのカスタムGRUプルーニング・ソリューションは、Torch-Pruningのライブラリへの公開プル・リクエストの一部となりました:PR #515。この成果により、LSTMや最小限のRNN変種など、他の再帰ユニットのプルーニングへの道が開かれます。
今後、多様なモデルのアーキテクチャにおいて構造化プルーニングをさらにアクセスしやすく適応性のあるものとするため、エージェント型プルーニングのワークフローの検討を進めています。
構造化プルーニングは単なる研究上の好奇心ではありません。構造化プルーニングは、日常的なデバイス上で強力なAIモデルを実行するための実用的なツールであり、より効率的で責任ある運用を実現します。