Ettin リランカーファミリーの紹介
本文の状態
日本語全文を表示中
詳細モードで約21分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Hugging Face Blog
Hugging Face が、検索結果の再ランク付け性能を向上させる新しいモデル群「Ettin リランカー」を発表した。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
TL;DR(要約)
本日、6 つの新しい Sentence Transformers の CrossEncoder ランク付けモデル(reranker)をリリースします。これらはそれぞれのサイズにおいて最先端性能を誇り、Ettin ModernBERT エンコーダーを基盤として構築されています。また、これらのモデルを生成したデータセットと完全なトレーニングレシピも公開します:
- cross-encoder/ettin-reranker-17m-v1
- cross-encoder/ettin-reranker-32m-v1
- cross-encoder/ettin-reranker-68m-v1
- cross-encoder/ettin-reranker-150m-v1
- cross-encoder/ettin-reranker-400m-v1
- cross-encoder/ettin-reranker-1b-v1
これらのモデルは、蒸留(distillation)レシピを用いて訓練されました。具体的には、cross-encoder/ettin-reranker-v1-data 上の mixedbread-ai/mxbai-rerank-large-v2 のスコアに対して、ポイントワイズ MSE(平均二乗誤差)を適用する手法です。[cross-encoder/ettin-reranker-v1-data] は、lightonai/embeddings-pre-training のサブセットに、lightonai/embeddings-fine-tuning からランク付けされたサブセットを混合したものです。
*Our six rerankers paired with google/embeddinggemma-300m on MTEB(eng, v2) Retrieval. See Results for five more embedder pairings.*
(訳注:原文の最後の英文は、MTEB(eng, v2) 検索タスクにおいて、当社の 6 つのランク付けモデルを [google/embeddinggemma-300m] と組み合わせた結果を示し、さらに 5 つの埋め込みモデルとの組み合わせについては結果セクションをご参照ください、という意味です。)
reranker に初めて触れる方で、まず「なぜ reranker が必要なのか」を知りたい場合は、What is a reranker, and why pair one with an embedder? をご覧ください。単にモデルをプラグインしたいだけなら Usage に、ご自身でトレーニングを行いたい場合は Training へお進みください。
**
私は以下のトレーニングレシピを、Sentence Transformers v5.5.0 で提供された新しい train-sentence-transformers Agent Skill を用いてブートストラップしました。hf skills add train-sentence-transformers [--global] [--claude] と実行してインストールし、AI コーディングエージェント(Claude Code, Codex, Cursor, Gemini CLI など)に指示を出して、ご自身のデータ上で SentenceTransformer、CrossEncoder、または SparseEncoder モデルをファインチューニングしてください。
Table of contents
- What is a reranker, and why pair one with an embedder?
- Usage
エンドツーエンドの retrieve-then-rerank パイプライン
- Architecture Details
- Results
MTEB(eng, v2) Retrieval
- Speed
- Training
蒸留レシピ
- Dataset
- Training Arguments
- Evaluation
- Overall Training Script
- Conclusion
- Acknowledgements
What is a reranker, and why pair one with an embedder?
リランカー(別名:ポイントワイズ・クロスエンコーダー)は、(クエリ,ドキュメント) ペアを入力として受け取り、単一の関連性スコアを出力するニューラルモデルです。クエリとドキュメントをそれぞれ個別に符号化し、2 つの埋め込みベクトルから類似度を計算するエンベディングモデルとは異なり、リランカーは各トランスフォーマー層を通じて 2 つのテキストが相互に注意を向けることを可能にします。この結合符号化はより正確ですが、その分コストも高くなります:モデルはテキスト 1 件あたりではなく、(クエリ,ドキュメント) ペア 1 組ごとに実行される必要があるためです。
クロスエンコーダーをフルコーパス全体で実行するにはコストが高すぎるため、一般的な実装パターンは「検索後に再ランク付け」です。すなわち、高速なエンベディングモデルが上位 K 件の候補(低コスト)を取得し、その後クロスエンコーダーがその K 件のみを高精度で再順序付けします。これにより総コストは抑制されたまま、最終的なランキングは包括的なクロスエンコーダー処理によって得られる結果に非常に近くなります。
**
本ブログ記事全体を通じて、「リランカー」と「クロスエンコーダー」は互換的に使用されます。
使用方法
公開されているモデルは通常の Sentence Transformers CrossEncoder モデルですので、3 行のコードだけで利用可能です:
from sentence_transformers import CrossEncoder
model = CrossEncoder("cross-encoder/ettin-reranker-32m-v1")
scores = model.predict([
("Where was Apple founded?", "Apple Inc. was founded in Cupertino, California in 1976 by Steve Jobs, Steve Wozniak, and Ronald Wayne."),
("Where was Apple founded?", "The Fuji apple is an apple cultivar developed in the late 1930s and brought to market in 1962."),
])
print(scores)
[11.393298 2.968891] <- larger means more relevant
クエリと候補リストに対しては、rank を使用してソートされたインデックスとスコアを取得することもできます:
ranked = model.rank(
query="Which planet is known as the Red Planet?",
documents=[
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
"Saturn, famous for its rings, is sometimes mistaken for the Red Planet.",
],
top_k=4,
return_documents=True,
)
for r in ranked:
print(f"({r['score']:.2f}): {r['text']}")
(10.82): Mars, known for its reddish appearance, is often referred to as the Red Planet.
(9.86): Saturn, famous for its rings, is sometimes mistaken for the Red Planet.
(8.55): Jupiter, the largest planet in our solar system, has a prominent red spot.
(6.21): Venus is often called Earth's twin because of its similar size and proximity.
品質と速度のトレードオフのために、cross-encoder/ettin-reranker-32m-v1 を任意の他のサイズに置き換えることができます。ModernBERT の長文脈事前学習のおかげで、これら 6 つのモデルはいずれも最大 8K トークンのコンテキスト(長いドキュメントの再ランク付けに有用)を受け入れます。
最高スループットを得るには、kernels のインストールと、model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"} の設定を推奨します。詳細は以下の Speed セクションをご覧ください。一般的に、モデルサイズやシーケンス長に応じて、デフォルト読み込みに対して 1.7 倍〜8.3 倍の高速化が期待できます。
from sentence_transformers import CrossEncoder
model = CrossEncoder(
"cross-encoder/ettin-reranker-32m-v1",
model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"},
)
検索後再ランク付けの完全エンドツーエンドパイプライン
検索には高速な埋め込みモデルを、最終的な順序付けには再ランク付け器を使用する完全な例を示します:
from sentence_transformers import SentenceTransformer, CrossEncoder
静的埋め込みモデルによる高速検索(CPU 上でクエリあたりサブミリ秒)
embedder = SentenceTransformer("sentence-transformers/static-retrieval-mrl-en-v1")
reranker = CrossEncoder("cross-encoder/ettin-reranker-68m-v1")
corpus = [
"Apple Inc. was founded in Cupertino, California in 1976 by Steve Jobs, Steve Wozniak, and Ronald Wayne.",
"The Fuji apple is an apple cultivar developed in the late 1930s.",
"Steve Jobs introduced the iPhone in 2007 at Macworld.",
"Macintosh computers were sold by Apple from 1984 onward.",
# ... thousands or millions more in production
]
query = "Where was Apple founded?"
Step 1: encode + retrieve top-100
query_emb = embedder.encode_query(query, convert_to_tensor=True)
corpus_emb = embedder.encode_document(corpus, convert_to_tensor=True)
scores = embedder.similarity(query_emb, corpus_emb)[0]
top_k_idx = scores.topk(min(100, len(corpus))).indices.tolist()
Step 2: rerank
top_k_docs = [corpus[i] for i in top_k_idx]
ranked = reranker.rank(query, top_k_docs, top_k=5, return_documents=True)
for r in ranked:
print(f"({r['score']:.2f}): {r['text']}")
(11.63): Apple Inc. was founded in Cupertino, California in 1976 by Steve Jobs, Steve Wozniak, and Ronald Wayne.
(4.71): Steve Jobs introduced the iPhone in 2007 at Macworld.
(1.96): The Fuji apple is an apple cultivar developed in the late 1930s.
(1.49): Macintosh computers were sold by Apple from 1984 onward.
これは、現代の検索システムで広く採用されている同じ形状です。リトリーバー(検索器)がどの情報をフィルターの入口に入れるかを決定し、ランカー(再ランク付け機)がどの結果が勝者となるかを決定します。
アーキテクチャの詳細
6 つの再ランク化モデルはすべて同じアーキテクチャを共有し、バックボーンのサイズのみが異なります。バックボーンは、ジョンズ・ホプキンス大学の Ettin スイートから提供される 6 つの Ettin エンコーダー のいずれかです。これらは、パディングなしのアテンション、RoPE(回転位置埋め込み)位置エンコーディング、GeGLU を備えた ModernBERT スタイルのモデルであり、オープンライセンスの事前トレーニングで 2T トークンを処理可能で、最大 8192 トークンのコンテキストをサポートしています。
各エンコーダーの上には、ModernBertForSequenceClassification に倣いつつも Sentence Transformers のモジュール型コンポーネントから構築された 4 つのモジュールからなる分類ヘッドが配置されています。基盤となる Transformer は、シーケンス分類用の AutoModelForSequenceClassification ではなく、通常の AutoModel です。これにより、可変長の入力に対してシーケンスのパディングを解除し、Flash Attention 2 を利用することが可能になります。中程度のドキュメントシーケンス長においては、モデルサイズに応じて fp32+SDPA と比較して 1.7 倍から 8.3 倍の高速化が実現されます(詳細なベンチマークについては Speed セクションをご参照ください):
- Transformer(FA2)
- Pooling(cls)
- Dense(H, H, bias=False, GELU)
- LayerNorm(H)
- Dense(H, 1, scores)
私のアブレーション実験では、CLS プーリングが平均プーリングを上回る結果となりました。これは少し驚きでした。ModernBERT では、グローバルアテンションは 3 層に一度だけ使用され、残りの 3 分の 2 の層ではローカルウィンドウアテンションが用いられ、遠隔の位置から CLS トークンへの到達が不可能です。しかし実証的に、ごく少数のグローバル層で十分なシグナルを伝達できることが示されており、CLS をより優れたプーリング手法として選択する根拠となっています。
モデル
バックボーン
隠れ層サイズ
層数
パラメータ(ヘッド含む)
cross-encoder/ettin-reranker-17m-v1
256
7
17.6M
cross-encoder/ettin-reranker-32m-v1
384
10
32.8M
cross-encoder/ettin-reranker-68m-v1
512
19
68.6M
cross-encoder/ettin-reranker-150m-v1
768
22
150.9M
cross-encoder/ettin-reranker-400m-v1
1024
28
401.6M
cross-encoder/ettin-reranker-1b-v1
1792
28
1.00B
これら 6 つのモデルは、Ettin エンコーダーと同様に Apache 2.0 ライセンスの下でリリースされています。
結果
MTEB(eng, v2) リトリーバル
公開された各モデルを、MTEB の 2 段階再ランク付けフロー を用いて、MTEB(eng, v2) Retrieval ベンチマーク(10 タスク、上位 100 件を再ランク付け)の全タスクに適用して評価を行いました。各再ランクャーには、速度と品質のスペクトラム全体をカバーする 6 つの埋め込みモデルをペアリングしました:
埋め込みモデル
アクティブパラメータ数
検索のみ NDCG@10
sentence-transformers/static-retrieval-mrl-en-v1
0M
0.3495
sentence-transformers/all-MiniLM-L6-v2
23M
0.4292
33M
0.5149
nomic-ai/nomic-embed-text-v1.5
137M
0.5226
308M
0.5463
jinaai/jina-embeddings-v5-text-small-retrieval
596M
0.5980
各チャートにおける破線の検索のみラインが、競争相手となる主要な数値です。このラインより下回る結果は、平均的に再ランクャーがパイプラインの性能を低下させていることを意味します:
結果の全表(クリックして展開)
6 つの埋め込みモデルの組み合わせ全体における NDCG@10 の平均値を降順にソートした結果です。当社の 6 つのモデルは太字で、教師モデルである mixedbread-ai/mxbai-rerank-large-v2 は下線付きで表示されています。
Reranker
パラメータ数
MTEB(eng, v2) 検索 NDCG@10
4.02B
0.6367
mixedbread-ai/mxbai-rerank-large-v2
1.54B
0.6115
cross-encoder/ettin-reranker-1b-v1
1.00B
0.6114
cross-encoder/ettin-reranker-400m-v1
401M
0.6091
cross-encoder/ettin-reranker-150m-v1
151M
0.5994
596M
0.5940
mixedbread-ai/mxbai-rerank-base-v2
494M
0.5920
cross-encoder/ettin-reranker-68m-v1
68.6M
0.5915
2.44B
0.5856
Alibaba-NLP/gte-reranker-modernbert-base
150M
0.5843
cross-encoder/ettin-reranker-32m-v1
32.8M
0.5779
ibm-granite/granite-embedding-reranker-english-r2
150M
0.5656
cross-encoder/ettin-reranker-17m-v1
17.6M
0.5576
568M
0.5526
zeroentropy/zerank-2-reranker†
4.02B
0.5300
560M
0.5098
cross-encoder/ms-marco-MiniLM-L6-v2
22.7M
0.5082
cross-encoder/ms-marco-MiniLM-L12-v2
33.4M
0.5066
mixedbread-ai/mxbai-rerank-large-v1
435M
0.5063
cross-encoder/ms-marco-MiniLM-L4-v2
19.2M
0.4979
mixedbread-ai/mxbai-rerank-xsmall-v1
70.8M
0.4968
278M
0.4890
mixedbread-ai/mxbai-rerank-base-v1
184M
0.4865
† max_seq_length=8192 にキャップされています(4B Qwen3 ベースのrerankerは、ネイティブコンテキストでは単一の H100 80GB に収まりません。ネイティブコンテキストでの評価結果はおそらくさらに高くなります)。
NanoBEIR の完全な結果表(クリックして展開)
NanoBEIR は、BEIR の高速な 13 データセットからなるサブセットで、各データセットあたり最大 5000 ドキュメントに対して 50 クエリを使用します。NanoBEIR は、トレーニング時に metric_for_best_model に設定された指標(Evaluation を参照)であり、私が実験を導くために使用したものです。
Reranker
パラメータ数
NanoBEIR 平均 NDCG@10
mixedbread-ai/mxbai-rerank-large-v2
1.54B
0.7318
cross-encoder/ettin-reranker-1b-v1
1.00B
0.7237
2.44B
0.7197
cross-encoder/ettin-reranker-400m-v1
401M
0.7193
mixedbread-ai/mxbai-rerank-base-v2
494M
0.7162
cross-encoder/ettin-reranker-150m-v1
151M
0.7086
Alibaba-NLP/gte-reranker-modernbert-base
150M
0.7017
568M
0.6971
cross-encoder/ettin-reranker-68m-v1
68.6M
0.6915
ibm-granite/granite-embedding-reranker-english-r2
150M
0.6909
cross-encoder/ettin-reranker-32m-v1
32.8M
0.6825
cross-encoder/ettin-reranker-17m-v1
17.6M
0.6746
mixedbread-ai/mxbai-rerank-large-v1
435M
0.6488
560M
0.6379
cross-encoder/ms-marco-MiniLM-L12-v2
33.4M
0.6369
cross-encoder/ms-marco-MiniLM-L6-v2
22.7M
0.6312
cross-encoder/ms-marco-MiniLM-L4-v2
19.2M
0.6298
mixedbread-ai/mxbai-rerank-base-v1
184M
0.6231
mixedbread-ai/mxbai-rerank-xsmall-v1
70.8M
0.6136
278M
0.6027
私が公開する最も小さなモデルである17Mは、パラメータ数が約半分という条件下で、MTEBにおいて33Mのms-marco-MiniLM-L12-v2をNDCG@10で+0.051 (0.5576 vs 0.5066) 上回り、NanoBEIRでは+0.038 (0.6746 vs 0.6369) の差をつけています。また、32MはMTEBにおいて568MのBAAI/bge-reranker-v2-m3を+0.025 (0.5779 vs 0.5526) 上回っており、これはパラメータ数で17倍もの差があることを意味します。もし従来のMiniLM rerankers のいずれかを「検索後に再ランク付けする」スタックのデフォルトとして使用している場合、私たちの17M (または32M) に差し替えることは低リスクな置き換えとなり、両方のベンチマークで明確な品質向上が期待できます。
表を上位へ見ていくと、150MはMTEBにおいて600M未満の範囲で私がテストした中で最も強力なrerankerであり、直近のQwen/Qwen3-Reranker-0.6B (596M) を+0.005 (0.5994 vs 0.5940) の差でわずかに上回り、すべてのBAAI bge-reranker バリアントを0.03から0.05の差で下回っています。また、68Mにも言及する価値があります:0.5915というスコアはQwen3-Reranker-0.6B (0.5940) とほぼ同じ位置にありながら、パラメータ数はその約9分の1です。
公開された範囲の最上位にある1Bモデルは、教師モデルに非常に近い性能を示します。MTEBでは1.54Bのmxbai-rerank-large-v2と0.0001 (0.6114 vs 0.6115) の差しかなく、NanoBEIRでも0.008の差に収まっています。これは、自分自身より54%大きいモデルから知識蒸留(distillation)を行ったにもかかわらず達成された結果です。この蒸留プロセスは教師モデルとの格差を実質的に解消しており、今回の公開に向けて私が期待していた通りでした。
比較において全体最強の再ランク付けモデルは、MTEB で 0.6367 を記録し、当社の 1B モデルより +0.025 高い Qwen/Qwen3-Reranker-4B です。現在のレシピからこの差を埋めるには、おそらくより強力な教師モデルからの知識蒸留(distilling)が必要となるでしょう(当社の教師モデル自体も Qwen3-Reranker-4B より下位に位置しています)。ほとんどの「検索後に再ランク付け」のワークロードにおいては、パラメータ数が 1/4 の当社の 1B モデル(速度参照)の方が、はるかに実用的な選択肢となります。
速度
品質の数値は再ランク付けモデルにとって重要な要素の半分だけです。もう半分の重要度は、検索結果をユーザーに表示するまでの時間枠内で、そのレイテンシが予算内に収まるかどうかにかかっています。私が測定した内容について順を追って説明します。
私は、単一の NVIDIA H100 80GB グラフィックボード上で、公開されている 6 つのモデルすべてを、13 のパブリック再ランク付けモデル(約 1B パラメータまでの強力なベースライン)と比較してベンチマークしました。クエリとドキュメントは、sentence-transformers/natural-questions データセットの自然なドキュメント長分布から取得したものです:NQ の回答の多くは短く、一部は長くなります。ドキュメントは、古いモデルに不公平な優位性を与えないよう、max_length=512 で切り捨てられています。各モデルは、そのアーキテクチャがサポートする最良のアテンション実装を使用します。BERT、XLM-RoBERTa、ModernBERT、Qwen2 については Flash Attention 2 を使用し(Flash Attention 2)、それ以外では SDPA(SDPA)を使用します。DeBERTa-v2 の場合は eager モードを使用します(これは現在、transformers ライブラリにおいて FA2 も SDPA もサポートされていないためです)。
各モデルに対して、バッチサイズ検索はバッチサイズ 8 から開始し、GPU のメモリが尽きるまで倍増していきます。各バッチサイズでは 3 回の計測パスを実行し、その中央値(メディアン)のスループットを記録するため、単一の不運な実行結果が数値を大きく歪めることはありません。報告されるスループットは、勝利したバッチサイズにおけるものです。
表 1. 秒間あたりのペア数(すべて bfloat16)。当社の 6 つの再ランク化器(rerankers)は太字で示されています。
Model | Params | Attn | pairs / second
---|---|---|---
cross-encoder/ettin-reranker-17m-v1 | 17M | FA2 | 7517
cross-encoder/ettin-reranker-32m-v1 | 32M | FA2 | 6602
cross-encoder/ettin-reranker-68m-v1 | 68M | FA2 | 4913
cross-encoder/ms-marco-MiniLM-L4-v2 | 19M | FA2 | 4029
cross-encoder/ms-marco-MiniLM-L6-v2 | 22M | FA2 | 3817
cross-encoder/ms-marco-MiniLM-L12-v2 | 33M | FA2 | 3311
cross-encoder/ettin-reranker-150m-v1 | 150M | FA2 | 3237
BAAI/bge-reranker-base | 278M | FA2 | 2858
mixedbread-ai/mxbai-rerank-xsmall-v1 | 70M | eager | 2636
mixedbread-ai/mxbai-rerank-base-v1
184M
eager
1953
cross-encoder/ettin-reranker-400m-v1
400M
FA2
1738
560M
FA2
1659
568M
FA2
1569
Alibaba-NLP/gte-reranker-modernbert-base
150M
FA2
1418
ibm-granite/granite-embedding-reranker-english-r2
150M
FA2
1404
cross-encoder/ettin-reranker-1b-v1
1B
FA2
928
mixedbread-ai/mxbai-rerank-large-v1
435M
eager
867
mixedbread-ai/mxbai-rerank-base-v2
494M
FA2
809
mixedbread-ai/mxbai-rerank-large-v2
1.5B
FA2
387
私たちの17Mモデルは、比較対象全体の中で最も高速なリランカーであり、1秒間に7517ペアを処理します。これはms-marco-MiniLM-L6-v2(3817)のスループットのほぼ2倍に相当し、より小型のms-marco-MiniLM-L4-v2(4029)よりもさらに高速です。前述のMTEB表でお分かりいただいた通り、私たちの17MモデルはすべてのMiniLMバリアントよりも精度が高いことも確認されています。現在MiniLMクロスエンコーダーを実行中の方にとって、私たちの17Mモデルへ切り替えるのは単なる一行の変更で済み、レイテンシと検索品質の両方を向上させることができます。
私たちの150Mモデルはさらに興味深い比較対象となります。なぜなら、パラメータ数が正確に150Mである直接競合するアーキテクチャを持つモデルが2つ存在するからです:Alibaba-NLP/gte-reranker-modernbert-base と ibm-granite/granite-embedding-reranker-english-r2 です。これら両モデルは、同じModernBERT-baseバックボーン(基盤アーキテクチャ)に基づいて構築されています。私たちの150Mモデルは1秒間に3237ペアで動作するのに対し、この2つの競合モデルはそれぞれ1418と1404ペアで、速度差が2.3倍に達します。
150M モデルのすべてが Flash Attention 2 を使用していますが、そのうちの 2 つは AutoModelForSequenceClassification を通してロードされ、入力にパディングが保持されたままになります。つまり、アテンション自体は FA2 カーネルを実行しますが、モデルの残りの部分は、何にも貢献しないパディングトークンに対して依然として密な計算を行っています。一方、当社のモジュラー Transformer モジュール(上記の Architecture Details を参照)では、パディングのない入力をモデル全体にわたって伝播させるため、各層は実在するトークンのみに計算リソースを費やします。これが FA2 の一部のみを享受することと、その恩恵をすべて受け取ることの違いです。
表の下部にある 1B モデルは、秒間 928 ペアという処理速度を達成しており、これは MTEB スコアが 0.0001 の差以内で一致しつつも、1.54B の教師モデルである mxbai-rerank-large-v2(秒間 387 ペア)と比較して 2.4 倍高速です。この教師モデルは Qwen2 ベースであり、ペアごとにプロンプトテンプレートのオーバーヘッドが存在しますが、蒸留された学生モデルはその教師のキャリブレーションと判断力を継承しつつ、実行時のすべての負荷を排除しています。これは正直に言って、今回のリリース全体で私にとって最も満足感を得られる単一の数値です。
残念なことに、DeBERTa-v2 ベースの mxbai-rerank-{xsmall,base,large}-v1 シリーズは、DeBERTa-v2 が現在 transformers において Flash Attention 2 も SDPA(Sparse Dynamic Programming Attention)もサポートしていないため、表の他のモデルよりも大幅に低速になります。70M の mxbai-rerank-xsmall-v1 は秒間 2636 ペアで動作しますが、これはパラメータ数がほぼ同じである当社の 68M モデルのスループットの約半分です。これらのモデル自体は全く問題ありませんが、最新の注意カーネルを利用できないというだけです。
Same benchmark on a consumer GPU (RTX 3090, 24 GB)
データセンター向け GPU ではなく、コンシューマー向けカードでセルフホスティングする場合の、同じスループットスイープを RTX 3090 で実施した結果です。ベンチマーク設定は Table 1 と同一:bfloat16(ブーフローティン)、各モデルで最もサポートが充実しているアテンション機構、および収容可能な最大のバッチサイズにおける 3 回の実行の中央値スループット。
Model
Params
Best attn
pairs / second
cross-encoder/ettin-reranker-17m-v1
17M
FA2(Flash Attention 2)
9008
cross-encoder/ms-marco-MiniLM-L4-v2
19M
FA2
5071
cross-encoder/ettin-reranker-32m-v1
32M
FA2(Flash Attention 2)
4497
cross-encoder/ms-marco-MiniLM-L6-v2
22M
FA2
4234
cross-encoder/ms-marco-MiniLM-L12-v2
33M
FA2
2847
cross-encoder/ettin-reranker-68m-v1
68M
FA2(Flash Attention 2)
1916
mixedbread-ai/mxbai-rerank-xsmall-v1
70M
eager(イーガーモード)
1677
278M
FA2
1329
cross-encoder/ettin-reranker-150m-v1
150M
FA2(Flash Attention 2)
982
mixedbread-ai/mxbai-rerank-base-v1
184M
eager
772
ibm-granite/granite-embedding-reranker-english-r2
150M
FA2
598
Alibaba-NLP/gte-reranker-modernbert-base
150M
FA2
586
560M
FA2
448
568M
FA2
436
cross-encoder/ettin-reranker-400m-v1
400M
FA2
429
mixedbread-ai/mxbai-rerank-large-v1
435M
eager
266
mixedbread-ai/mxbai-rerank-base-v2
494M
FA2
221
cross-encoder/ettin-reranker-1b-v1
1B
FA2
189
mixedbread-ai/mxbai-rerank-large-v2
1.5B
FA2
69
17M モデルは依然として表の中で最速であり、1 秒あたり 9008 ペアという速度は H100 の数値よりも高く、これは極小サイズでは純粋な計算リソースがボトルネックではなく、H100 の追加性能がそのまま転換されないことを示唆しています。表の中央部では再編が行われ、MiniLM リランカーが当社の 32M および 68M モデルを抜いて上位に位置し、1B モデルは mxbai-rerank-base-v2(1 秒あたり 189 ペア対 221 ペア)の下位に後退しました。一方、当社の 150M モデルは 2 つの 150M ベースの ModernBERT 系競合モデルに対して依然として堅固なリードを維持しており、教師モデル置換のストーリーも有効で、当社の 1B モデルは 1.5B の mxbai-rerank-large-v2(1 秒あたり 189 ペア対 69 ペア)と比較してスループットが 2.7 倍となっています。
同じベンチマークを CPU(Intel Core i7-13700K)で実行した場合
モデル | パラメータ数 | 最適アテンション | 秒間ペア数
cross-encoder/ettin-reranker-17m-v1 | 17M | SDPA | 267.4
cross-encoder/ms-marco-MiniLM-L4-v2 | 19M | SDPA | 206.2
cross-encoder/ms-marco-MiniLM-L6-v2 | 22M | SDPA | 143.9
cross-encoder/ettin-reranker-32m-v1 | 32M | SDPA | 92.5
cross-encoder/ms-marco-MiniLM-L12-v2 | 33M | SDPA | 75.9
mixedbread-ai/mxbai-rerank-xsmall-v1 | 70M | eager | 38.9
cross-encoder/ettin-reranker-68m-v1
68M
SDPA
31.2
278M
SDPA
19.2
Alibaba-NLP/gte-reranker-modernbert-base
150M
SDPA
14.7
ibm-granite/granite-embedding-reranker-english-r2
150M
SDPA
14.5
cross-encoder/ettin-reranker-150m-v1
150M
SDPA
14.0
mixedbread-ai/mxbai-rerank-base-v1
184M
eager
13.4
560M
SDPA
6.2
568M
SDPA
6.0
cross-encoder/ettin-reranker-400m-v1
400M
SDPA
5.2
mixedbread-ai/mxbai-rerank-large-v1
435M
eager
4.3
mixedbread-ai/mxbai-rerank-base-v2
494M
SDPA
3.5
cross-encoder/ettin-reranker-1b-v1
1B
SDPA
2.1
CPU では bf16、Flash Attention 2、アンパディングの利点を活用できないため、レイテンシに関する話は少し単純になります:パラメータ数が多いほどモデルは遅くなります。17M モデルは ms-marco-MiniLM-L6-v2 よりも大幅に高速です(1 秒あたりペア数で 267.4 vs 143.9)
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み