
基于MPNet的高效句子和段落编码模型
该模型利用sentence-transformers,通过microsoft/mpnet-base预训练模型和自监督对比学习目标进行微调,将句子和段落有效编码至768维度向量空间,适用于信息检索、语义搜索和聚类任务,尤其是在句子相似度计算中有较好表现。微调时,使用了超过10亿对的句子数据,并在TPU v3-8环境下进行了920k步训练,采用AdamW优化器和对比损失。此外,在无sentence-transformers库的情况下,通过特定的池化操作仍可实现相似的编码效果,代码实现简单易用。
all_datasets_v3_mpnet-base是一个利用句子嵌入技术将句子和段落映射到768维密集向量空间的模型。这种技术可以用于句子聚类或语义搜索等任务。该项目旨在通过自监督对比学习目标,在非常大规模的句子级数据集上训练句子嵌入模型。我们使用了预训练的microsoft/mpnet-base模型,并在包含10亿对句子的数据库上进行了微调。
在Hugging Face组织的使用JAX/Flax进行NLP和计算机视觉的社区周中,我们开发了这一模型。项目得到了谷歌Flax、JAX和云团队成员关于高效深度学习框架的支持,以及七个TPU v3-8的硬件设施。
该模型设计为句子与短段落编码器,输入文本将转化为包含语义信息的向量,这种句子向量可以用于信息检索、聚类或句子相似性任务。对于长度超过128个词块的文本,默认会进行截断处理。
我们使用了microsoft/mpnet-base的预训练模型,详细的预训练过程可以参考对应模型文档。
微调过程中,我们使用了对比学习目标。具体而言,我们计算批次中每个可能的句子对之间的余弦相似度,然后将其与真实对比进行交叉熵损失处理。
模型是在TPU v3-8上训练的,总共进行了92万步,批次大小为512(每个TPU核心64)。我们使用500步的学习率热身,序列长度限制为128个token,并采用AdamW优化器,学习率为2e-5。完整的训练脚本可以在当前仓库中的train_script.py中找到。
我们 通过多数据集的结合来微调模型,句子对总数量超过10亿。每个数据集的抽样采用加权概率进行,配置详细信息见data_config.json文件。目前使用的一些主要数据集及其对应论文和训练样本数如下:
| 数据集 | 论文 | 训练样本数 |
|---|---|---|
| Reddit评论(2015-2018) | 论文 | 726,484,430 |
| S2ORC 摘要引用对 | 论文 | 116,288,806 |
| WikiAnswers 重复问题对 | 论文 | 77,427,422 |
| PAQ 问答对 | 论文 | 64,371,441 |
| ... | ... | ... |
| 总计 | - | 1,124,818,467 |
安装sentence-transformers库之后,通过以下方式加载并使用模型:
pip install -U sentence-transformers from sentence_transformers import SentenceTransformer sentences = ["这是一个例句", "每个句子被转换"] model = SentenceTransformer('sentence-transformers/all-mpnet-base-v1') embeddings = model.encode(sentences) print(embeddings)
无需sentence-transformers库,也可以使用该模型。首先,将输入通过transformer模型,然后在上下文化词嵌入上应用合适的池化操作:
from transformers import AutoTokenizer, AutoModel import torch import torch.nn.functional as F # 平均池化 - 考虑注意力掩码正确求均值 def mean_pooling(model_output, attention_mask): token_embeddings = model_output[0] # model_output的第一个元素包含所有token嵌入 input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9) # 我们想要句子嵌入的句子 sentences = ['这是一个例句', '每个句子被转换'] # 从HuggingFace Hub加载模型 tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-mpnet-base-v1') model = AutoModel.from_pretrained('sentence-transformers/all-mpnet-base-v1') # 对句子进行分词 encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt') # 计算token嵌入 with torch.no_grad(): model_output = model(**encoded_input) # 执行池化 sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask']) # 归一化嵌入 sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1) print("句子嵌入:") print(sentence_embeddings)
有关该模型的自动化评估,请参见句子嵌入基准。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms 是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号