许可协议:apache-2.0
语言:
Monarch Mixer-BERT模型
这是一个80M参数的M2-BERT预训练检查点,序列长度为2048,并已针对长上下文检索任务进行微调。
查阅论文《Monarch Mixer: 一种基于GEMM的简单次二次方架构》以及我们的博客文章,了解我们如何训练这个长序列模型的更多细节。
该模型由Jon Saad-Falcon、Dan Fu和Simran Arora训练完成。
访问我们的GitHub仓库获取下载和微调指南!
使用方法
可通过Hugging Face的AutoModel
加载此模型:
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-2k-retrieval",
trust_remote_code=True
)
您可能会看到关于FlashFFTConv未使用参数的大段警告信息。如需加载带FlashFFTConv的模型,请参考我们的GitHub。
该模型生成用于检索的嵌入向量,维度为768:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
max_seq_length = 2048
测试文本 = "每天早晨,我都会泡一杯咖啡开始新的一天。"
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-2k-retrieval",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"bert-base-uncased",
model_max_length=max_seq_length
)
input_ids = tokenizer(
[测试文本],
return_tensors="pt",
padding="max_length",
return_token_type_ids=False,
truncation=True,
max_length=max_seq_length
)
outputs = model(**input_ids)
嵌入向量 = outputs['sentence_embedding']
也可通过Together API获取嵌入向量(API密钥请至此处获取):
import os
import requests
def 生成_together_嵌入向量(文本: str, 模型API字符串: str, API密钥: str):
url = "https://api.together.xyz/api/v1/embeddings"
headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": f"Bearer {API密钥}"
}
session = requests.Session()
response = session.post(
url,
headers=headers,
json={
"input": 文本,
"model": 模型API字符串
}
)
if response.status_code != 200:
raise ValueError(f"请求失败,状态码{response.status_code}:{response.text}")
return response.json()['data'][0]['embedding']
print(生成_together_嵌入向量(
'你好世界',
'togethercomputer/m2-bert-80M-2k-retrieval',
os.environ['TOGETHER_API_KEY'])[:10]
)
致谢
Alycia Lee为AutoModel支持提供了帮助。
引用
若使用本模型或认为我们的工作有价值,请引用如下文献:
@inproceedings{fu2023monarch,
title={Monarch Mixer: 一种基于GEMM的简单次二次方架构},
author={Fu, Daniel Y and Arora, Simran and Grogan, Jessica and Johnson, Isys and Eyuboglu, Sabri and Thomas, Armin W and Spector, Benjamin and Poli, Michael and Rudra, Atri and R{\'e}, Christopher},
booktitle={神经信息处理系统进展},
year={2023}
}