Ettin Suite: SoTA ペアエンコーダーとデコーダー
Hugging FaceはEttin Suiteを発表しました。これは、17Mから1Bパラメータまでの、最先端(SoTA)ペアのエンコーダーのみモデルとデコーダーのみモデルの最初のコレクションです。同一のトレーニングデータ(2Tトークン)、モデル形状、トレーニングレシピを使用することで、Ettinは双方向エンコーダーアーキテクチャと因果デコーダーアーキテクチャ間の制御された「apples-to-apples」比較を可能にします。
アーキテクチャ比較: エンコーダー vs. デコーダー
Ettinは、トレーニングレシピに関係なく、根本的なアーキテクチャの違いが残ることを示しています。主な違いはアテンションパターンにあります。エンコーダーモデルは双方向アテンション(すべてのトークンが見える)を使用し、デコーダーモデルは因果アテンション(トークンは前のトークンしか見えない)を使用します。
Key findings from the controlled comparison include:
- Classification and Retrieval: エンコーダーモデルがこれらのタスクで支配的です。例えば、150Mエンコーダーは400MデコーダーよりMNLI分類で優れています(89.2対88.2)。
- Text Generation: デコーダーモデルは生成タスクで一貫した優位性を保ち、モデルサイズが大きくなるほどその差は拡大します。
- Scale vs. Architecture: 特定のタスクではアーキテクチャがサイズを上回ることが多く、400Mエンコーダーは分類で1Bデコーダーに勝ち、400Mデコーダーは生成で1Bエンコーダーに勝ちます。
トレーニングレシピとデータ
EttinモデルはModernBERTに基づく最新のレシピを使用して開発され、最新のデコーダー専用技術を両方のアーキテクチャに適用しました。Ettinで使用されたすべてのトレーニングデータは公開されており、再現可能です。
3段階トレーニングプロセス
- Pre-training (1.7T tokens): 短いコンテキスト(1024トークン)で多様な高品質データの混合を使用して初期トレーニングを行います。
- Context Extension (250B tokens): コンテキスト長を8Kトークンに拡張し、フィルタリングされた高品質データを使用して長文理解を向上させます。
- Decay (100B tokens): 教科書や学術論文などのプレミアムソースを使用し、学習率を徐々に減少させる最終トレーニングフェーズです。
モデルサイズ
Ettinはスケール効果をテストするために6つのペアサイズを提供します:
- 17M、32M、68M、150M、400M、1B パラメータ。
パフォーマンスベンチマーク
エンコーダー結果
Ettinエンコーダーモデルは、完全にオープンなトレーニングデータを使用しながら、テストされたすべてのタスクとモデルサイズでModernBERTを上回ります。これにより、オンデバイス(小サイズ)とハイパワー(1Bサイズ)アプリケーションの両方に対応する新しい高性能エンコーダーの範囲が提供されます。
デコーダー結果
Ettinデコーダーモデルは、Llama 3.2やSmolLM2などの確立されたベンチマークと同等かそれ以上の性能を示します。特にSciQのような知識集約型タスクでの性能向上は、高品質なトレーニングデータの混合によるものです。
研究インサイトとモデル挙動
クロス目的トレーニング
Ettinは、モデルがあるアーキテクチャの目的から別の目的へ変換できるか(例:デコーダーをマスク言語モデルで継続的に事前学習する)をテストするために使用されました。結果は、アーキテクチャの選択が根本的であることを示しています:
- Encoder-from-decoder: 一般に分類と検索でネイティブエンコーダーに劣ります。
- Decoder-from-encoder: 特に大規模になるほど、ネイティブデコーダーより著しく劣ります。
挙動分析
WinoGenderベンチマークを使用した研究では、トレーニング目的がモデルバイアスに影響することが判明しました。エンコーダーモデルはデコーダーに比べて(60%以上)ジェンダーニュートラルな代名詞を好む傾向があります(30%以上)。ただし、両アーキテクチャとも男性バイアスを示します。
実装と使用方法
EttinモデルはHugging Face Hubで利用可能です。エンコーダーは分類と検索タスクに推奨され、デコーダーはテキスト生成を目的としています。
エンコーダー例
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("jhu-clsp/ettin-encoder-150m")
model = AutoModel.from_pretrained("jhu-clsp/ettin-encoder-150m")
デコーダー例
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("jhu-clsp/ettin-decoder-150m")
model = AutoModelForCausalLM.from_pretrained("jhu-clsp/ettin-decoder-150m")