🚀 ONNX convert all-MiniLM-L6-v2
このプロジェクトは、sentence-transformers/all-MiniLM-L6-v2 をONNX形式に変換したモデルです。文章や段落を384次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに使用できます。
🚀 クイックスタート
このモデルは、文章や段落を384次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに使用できます。このカスタムモデルは last_hidden_state
と pooler_output
を取得しますが、デフォルトのONNX設定でエクスポートされた sentence-transformers は last_hidden_state
のみを出力として含みます。
✨ 主な機能
- 文章や段落を384次元の密ベクトル空間にマッピングする。
- クラスタリングや意味検索などのタスクに使用できる。
- カスタムモデルでは
last_hidden_state
と pooler_output
を取得できる。
📦 インストール
optimum をインストールすると、このモデルの使用が簡単になります。
python -m pip install optimum
💻 使用例
基本的な使用法
from optimum.onnxruntime.modeling_ort import ORTModelForCustomTasks
model = ORTModelForCustomTasks.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")
tokenizer = AutoTokenizer.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")
inputs = tokenizer("I love burritos!", return_tensors="pt")
pred = model(**inputs)
高度な使用法
from transformers import pipeline
onnx_extractor = pipeline("feature-extraction", model=model, tokenizer=tokenizer)
text = "I love burritos!"
pred = onnx_extractor(text)
📚 ドキュメント
評価結果
このモデルの自動評価については、Sentence Embeddings Benchmark を参照してください: https://seb.sbert.net
背景
このプロジェクトは、自己教師付きの対照学習目標を使用して、非常に大規模な文章レベルのデータセットで文章埋め込みモデルを学習することを目的としています。事前学習済みの nreimers/MiniLM-L6-H384-uncased
モデルを使用し、10億以上の文章ペアのデータセットで微調整しました。
意図された用途
このモデルは、文章や短い段落のエンコーダとして使用することを意図しています。入力テキストを与えると、意味情報を捉えたベクトルを出力します。文章ベクトルは、情報検索、クラスタリング、または文章類似性タスクに使用できます。デフォルトでは、256語以上の入力テキストは切り捨てられます。
学習手順
事前学習
事前学習済みの nreimers/MiniLM-L6-H384-uncased
モデルを使用します。事前学習手順の詳細については、モデルカードを参照してください。
微調整
対照目標を使用してモデルを微調整します。正式には、バッチ内のすべての可能な文章ペアからコサイン類似度を計算します。その後、真のペアと比較することで交差エントロピー損失を適用します。
ハイパーパラメータ
- TPU v3-8でモデルを学習しました。
- バッチサイズ1024(TPUコアあたり128)で100kステップ学習しました。
- 学習率ウォームアップを500ステップ使用しました。
- シーケンス長は128トークンに制限しました。
- AdamWオプティマイザを使用し、学習率は2e-5です。
- 完全な学習スクリプトは、現在のリポジトリの
train_script.py
でアクセスできます。
学習データ
複数のデータセットを連結してモデルを微調整しました。総文章ペア数は10億以上です。各データセットは、重み付き確率に基づいてサンプリングされ、その設定は data_config.json
ファイルに詳細が記載されています。
データセット |
論文 |
学習タプル数 |
Reddit comments (2015-2018) |
paper |
726,484,430 |
S2ORC Citation pairs (Abstracts) |
paper |
116,288,806 |
WikiAnswers Duplicate question pairs |
paper |
77,427,422 |
PAQ (Question, Answer) pairs |
paper |
64,371,441 |
S2ORC Citation pairs (Titles) |
paper |
52,603,982 |
S2ORC (Title, Abstract) |
paper |
41,769,185 |
Stack Exchange (Title, Body) pairs |
- |
25,316,456 |
Stack Exchange (Title+Body, Answer) pairs |
- |
21,396,559 |
Stack Exchange (Title, Answer) pairs |
- |
21,396,559 |
MS MARCO triplets |
paper |
9,144,553 |
GOOAQ: Open Question Answering with Diverse Answer Types |
paper |
3,012,496 |
Yahoo Answers (Title, Answer) |
paper |
1,198,260 |
Code Search |
- |
1,151,414 |
COCO Image captions |
paper |
828,395 |
SPECTER citation triplets |
paper |
684,100 |
Yahoo Answers (Question, Answer) |
paper |
681,164 |
Yahoo Answers (Title, Question) |
paper |
659,896 |
SearchQA |
paper |
582,261 |
Eli5 |
paper |
325,475 |
Flickr 30k |
paper |
317,695 |
Stack Exchange Duplicate questions (titles) |
|
304,525 |
AllNLI (SNLI and MultiNLI |
paper SNLI, paper MultiNLI |
277,230 |
Stack Exchange Duplicate questions (bodies) |
|
250,519 |
Stack Exchange Duplicate questions (titles+bodies) |
|
250,460 |
Sentence Compression |
paper |
180,000 |
Wikihow |
paper |
128,542 |
Altlex |
paper |
112,696 |
Quora Question Triplets |
- |
103,663 |
Simple Wikipedia |
paper |
102,225 |
Natural Questions (NQ) |
paper |
100,231 |
SQuAD2.0 |
paper |
87,599 |
TriviaQA |
- |
73,346 |
合計 |
|
1,170,060,424 |
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下で提供されています。