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段階トレーニングプロセス

  1. Pre-training (1.7T tokens): 短いコンテキスト(1024トークン)で多様な高品質データの混合を使用して初期トレーニングを行います。
  2. Context Extension (250B tokens): コンテキスト長を8Kトークンに拡張し、フィルタリングされた高品質データを使用して長文理解を向上させます。
  3. 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")

Sources