このリポジトリには、ペーパーの公式コードが含まれています。オーディオスペクトログラムトランスのパラメーター効率の高い転送学習[1] ( 2024 IEEE MLSPワークショップでの出版が認められています)およびアダプターのソフト混合物[2]を介したオーディオスペクトログラム変圧器の効率的な微調整
どちらの論文も、さまざまなオーディオ/音声下流タスクにオーディオスペクトログラム変圧器(AST)モデルにパラメーター効率の高い転送学習( PETL )メソッドを適用する方法を研究します。 [1]は、さまざまなシナリオと制約の下で、PETLメソッド(プロンプトチューニング、ロラ、アダプター)の包括的な概要を提供しますが、 [2]は、PETLの専門家アーキテクチャの混合を効率的に活用する方法を探ります。
以下に、結果を再現するためのすべての詳細を含めます。重要:実験に使用した環境と互換性のある環境を設定するようにしてください。そのため、 requincement.txtファイルを使用して同じパッケージバージョンをインストールしてください。
Umberto Cappellazzo、Daniele Falavigna、Alessio Brutti、Mirco Ravanelli
この論文は、2024 IEEE MLSPワークショップで受け入れられました。このペーパーでは、さまざまなオーディオおよび音声処理タスクにオーディオスペクトログラムトランスモデルに適用されるさまざまなPETLメソッドの使用を調査します。さらに、パラメーターの0.29%のみを更新することにより、標準のPETLアプローチよりも優れたパフォーマンスをもたらし、標準的なPETLアプローチよりも優れたパフォーマンスを発揮する新しいアダプター設計を提案し、標準のPETLアプローチよりも優れたパフォーマンスをもたらします。
![]() |
|---|
| ASTモデルとPETLメソッドの図。 |
実験を実行するための要求されたライブラリは、requiction.txtファイルにリストされています。以下のコマンドを実行してインストールします。
pip install -r requirements.txt
私は、実験を追跡するために、ウェイトとバイアス(https://wandb.ai/site)を使用しています(温かくお勧めします)。それにもかかわらず、コマンドラインで--use_wandb = Falseを設定することでそれを無効にすることができます。
ユーザーはすでに自分自身でデータセットをダウンロードしていることを期待しています。
実験を実行するには、必要なものはすべてコマンドpython3 main.pyを使用して、コマンドラインに渡されて設定を指定するいくつかの引数が使用されます。必須のパラメーターは次のとおりです。
--data_path :データセットを含むフォルダーへのパス。--dataset_name :選択したデータセット。現在、5つのデータセット['FSC', 'ESC-50', 'urbansound8k', 'GSC', 'IEMOCAP']利用可能です。--method :選択したPETLメソッド。サポートされているPETLメソッドのリストは次の['linear', 'full-FT', 'adapter', 'prompt-tuning', 'prefix-tuning', 'LoRA', 'BitFit', 'Dense-MoA', 'Soft-MoA'] 。密な/ソフトモアで実験を実行するために、他の論文をチェックしてください。--is_AST :Trueに設定されている場合、AST事前訓練モデルを使用します。 falseに設定すると、WAV2VEC 2.0事前訓練モデルを使用します。main.pyスクリプトをご覧ください。hparams/train.yamlで検査および変更できます。現在の値は、実験に使用した値に対応し、それが最良の結果につながりました。各PETLメソッドには、いくつかの特定のパラメーターが付属しています。以下に簡単な説明を示します。ここでは、簡潔さのための参照を含めることを避けてください。論文を参照してください。
reduction_rate_adapter >アダプターモジュールのボトルネックディムをルールします(例えば、 dが隠された寸法、RRが削減速度である場合、アダプターのDIMはd /rrです)。 seq_or_par >アダプターを平行に挿入するか順次挿入するか。 adapter_type > pfeifferまたはhoulsby構成のいずれか。 adapter_block >ボトルネックまたはコンフォーマー(提案されたアダプター設計); apply_residual >残留接続を適用するかどうか。論文で報告されているように、並列アダプターは残差を分配する必要がありますが、シーケンシャルアダプターは残差から利益をもたらします。prompt_len_prompt >使用するプロンプトの数。 is_deep_prompt >ディーププロンプトチューニング( DPT)を有効にする場合はTrueに設定されています。 drop_prompt >プロンプトのドロップアウト率。実験では、 0.に設定します。reduction_rate_lora > reduction_rate_adapterを参照してください。 alpha_lora >元の論文で定義されているlora_alpha。これは、スケーリングに使用されます(例:s = alpha_lora/rr)。たとえば、構成コンフォーマー、パラレル、ファイファー、RR = 64でアダプターをテストし、ASTモデルのFSCデータセットでテストする必要があるとします。次に、実行するコマンドは次のとおりです。
python3 main.py --data_path ' /path_to_your_dataset ' --is_AST True --dataset_name ' FSC ' --method ' adapter ' --seq_or_par ' parallel ' --reduction_rate_adapter 64 --adapter_type ' Pfeiffer ' --apply_residual False --adapter_block ' conformer '少数のショット学習実験を実行したい場合は、フラグ--is_few_shot_exp Trueに設定し、クラスごとのサンプルの# --few_shot_samples指定するだけです。
質問については、umbertocappellazzo [at] gmail [dot] comに連絡してください。
カナダのデジタルリサーチアライアンス(Alliancecan.ca)の支援を認めています。
@misc{cappellazzo2023parameterefficient,
title={Parameter-Efficient Transfer Learning of Audio Spectrogram Transformers},
author={Umberto Cappellazzo and Daniele Falavigna and Alessio Brutti and Mirco Ravanelli},
year={2023},
eprint={2312.03694},
archivePrefix={arXiv},
primaryClass={eess.AS}
}Umberto Cappellazzo、Daniele Falavigna、Alessio Brutti
この論文は、Speech 2024で受け入れられています。 ASTの効率的な微調整に対する専門家(MOE)の混合物の使用を調査します。具体的には、各エキスパートがアダプターモジュールで表されるパラメーター効率の高い設定に最近のソフトMOEメソッドを適応させます。ソフトモア(アダプターのソフト混合物)と呼びます。 Soft-Moaは、計算コストをトリミングしながら、密集したカウンターパート(密度の高いMoa)でパフォーマンスパリティを達成します。さらに、従来のシングルアダプターよりも優れたパフォーマンスを示しています。
![]() |
|---|
| a)各AST層へのアダプター挿入。 b)濃いモア。 c)ソフトモア。 |
密集した柔らかいMOAで実験を実行するのは簡単です。紙に使用したのと同じ手順に従います[1] 。 --methodパラメーターをDense-MoAまたはSoft-MoAに設定し、いくつかのアドホックパラメーターを指定する必要があります。
--reduction_rate_moa :他のPETLメソッドとまったく同じように、各アダプターの専門家の削減率を指定する必要があります。削減率が高いほど、ボトルネックの寸法が小さくなります。--adapter_type_moa : pfeifferまたはhoulsby構成。--location_moa : MHSAブロックまたはFFNブロックに平行なソフト/濃いMOA層を適用するかどうか。 -adapter_type_moa == houlsby、MHSA、およびffnが互いに選択されている場合。--adapter_module_moa :アダプターのタイプ。現在のところ、ボトルネックとコンバスをサポートしています。--num_adapters :ソフト/濃いMOA層ごとに使用されるアダプターの数。実験では、この値は2〜15の範囲です。--num_slots :Soft-Moaで使用されるスロットの数。通常、それは1または2に設定されます。[ nb :ソフトモアでのみ使用]--normalize :L2が入力ベクトルとPHIマトリックスを正規化するかどうかは、元のソフトMOEペーパーで提案されています(セクション2.3「正規化」を参照)。論文で述べたように、モデルの隠されたサイズが私たちの場合(例えば、768)のように小さい場合、正規化操作はほとんど影響を与えません。したがって、正規化は使用しませんでした。 [ NB :Soft-Moaでのみ使用]たとえば、FSCデータセットでソフトモアをテストすると仮定します。さらに、MHSA層にのみソフトモア層を含めることを選択し、7つのボットネックアダプターを使用します。次に、実行するコマンドは次のとおりです。
python3 main.py --data_path ' /path_to_your_dataset ' --dataset_name ' FSC ' --method ' Soft-MoA ' --reduction_rate_moa 128 --adapter_type_moa ' Pfeiffer ' --location ' MHSA ' --adapter_module_moa ' bottleneck ' --num_adapters 7 --num_slots 1 --normalize False@misc{cappellazzo2024efficient,
title={Efficient Fine-tuning of Audio Spectrogram Transformers via Soft Mixture of Adapters},
author={Umberto Cappellazzo and Daniele Falavigna and Alessio Brutti},
year={2024},
eprint={2402.00828},
archivePrefix={arXiv},
primaryClass={eess.AS}
}