说明文档
ONNX 转换 all-MiniLM-L6-v2
sentence-transformers/all-MiniLM-L6-v2 的转换版本
这是一个 sentence-transformers ONNX 模型:它将句子和段落映射到 384 维的稠密向量空间,可用于聚类或语义搜索等任务。此自定义模型输出 last_hidden_state 和 pooler_output,而使用默认 ONNX 配置导出的 sentence-transformers 模型仅包含 last_hidden_state 作为输出。
使用方法 (HuggingFace Optimum)
安装 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)
你也可以利用 transformers 的 pipeline API:
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 亿句对数据集上进行了微调。我们使用对比学习目标:给定句子对中的一个句子,模型需要从一组随机采样的其他句子中预测出哪个句子在数据集中与之配对。
我们在 Hugging Face 组织的 Community week using JAX/Flax for NLP & CV 活动期间开发了这个模型。我们作为以下项目的一部分开发了此模型:Train the Best Sentence Embedding Model Ever with 1B Training Pairs。我们受益于高效的硬件基础设施来运行该项目:7 个 TPU v3-8,以及 Google Flax、JAX 和 Cloud 团队成员关于高效深度学习框架的指导。
预期用途
我们的模型旨在用作句子和短段落的编码器。给定输入文本,它会输出一个捕捉语义信息的向量。该句子向量可用于信息检索、聚类或句子相似度任务。 默认情况下,超过 256 个词片的输入文本会被截断。
训练过程
预训练
我们使用预训练的 nreimers/MiniLM-L6-H384-uncased 模型。有关预训练过程的更多详细信息,请参阅模型卡片。
微调
我们使用对比目标对模型进行微调。形式上,我们计算批次中每个可能句子对的余弦相似度,然后通过与真实配对进行比较来应用交叉熵损失。
超参数
我们在 TPU v3-8 上训练模型。我们使用 1024 的批量大小(每个 TPU 核心 128 个)训练了 100k 步。我们使用了 500 步的学习率预热。序列长度限制为 128 个 token。我们使用 AdamW 优化器,学习率为 2e-5。完整的训练脚本可在当前仓库中访问:train_script.py。
训练数据
我们使用多个数据集的拼接来微调模型。句对总数超过 10 亿。我们根据加权概率对每个数据集进行采样,具体配置详见 data_config.json 文件。
| 数据集 | 论文 | 训练元组数量 |
|---|---|---|
| Reddit comments (2015-2018) | 论文 | 726,484,430 |
| S2ORC 引文对(摘要) | 论文 | 116,288,806 |
| WikiAnswers 重复问题对 | 论文 | 77,427,422 |
| PAQ(问题,答案)对 | 论文 | 64,371,441 |
| S2ORC 引文对(标题) | 论文 | 52,603,982 |
| S2ORC(标题,摘要) | 论文 | 41,769,185 |
| Stack Exchange(标题,正文)对 | - | 25,316,456 |
| Stack Exchange(标题+正文,回答)对 | - | 21,396,559 |
| Stack Exchange(标题,回答)对 | - | 21,396,559 |
| MS MARCO 三元组 | 论文 | 9,144,553 |
| GOOAQ: 开放问答与多样化答案类型 | 论文 | 3,012,496 |
| Yahoo Answers(标题,回答) | 论文 | 1,198,260 |
| Code Search | - | 1,151,414 |
| COCO 图像描述 | 论文 | 828,395 |
| SPECTER 引文三元组 | 论文 | 684,100 |
| Yahoo Answers(问题,回答) | 论文 | 681,164 |
| Yahoo Answers(标题,问题) | 论文 | 659,896 |
| SearchQA | 论文 | 582,261 |
| Eli5 | 论文 | 325,475 |
| Flickr 30k | 论文 | 317,695 |
| Stack Exchange 重复问题(标题) | 304,525 | |
| AllNLI(SNLI 和 MultiNLI) | 论文 SNLI,论文 MultiNLI | 277,230 |
| Stack Exchange 重复问题(正文) | 250,519 | |
| Stack Exchange 重复问题(标题+正文) | 250,460 | |
| Sentence Compression | 论文 | 180,000 |
| Wikihow | 论文 | 128,542 |
| Altlex | 论文 | 112,696 |
| Quora Question Triplets | - | 103,663 |
| Simple Wikipedia | 论文 | 102,225 |
| Natural Questions (NQ) | 论文 | 100,231 |
| SQuAD2.0 | 论文 | 87,599 |
| TriviaQA | - | 73,346 |
| 总计 | 1,170,060,424 |
mondrov/go_inference_sbert
作者 mondrov
创建时间: 2025-01-14 22:06:53+00:00
更新时间: 2025-01-14 22:51:35+00:00
在 Hugging Face 上查看