🚀 君主混合器 - BERT(Monarch Mixer - BERT)
这是一个M2 - BERT的8000万参数检查点,使用序列长度2048进行预训练,并针对长上下文检索进行了微调。该模型能够有效处理长序列数据,在长上下文检索任务中具有出色的表现。
查看论文 君主混合器:一种简单的基于次二次GEMM的架构 和我们关于检索的 博客文章,了解更多关于我们如何为长序列训练此模型的信息。
该模型由Jon Saad - Falcon、Dan Fu和Simran Arora训练。
查看我们的 GitHub,获取有关如何下载和微调该模型的说明!
🚀 快速开始
✨ 主要特性
- 预训练时采用序列长度2048,适合处理长上下文。
- 针对长上下文检索进行了微调。
- 生成的嵌入向量维度为768,可用于检索任务。
📦 安装指南
请参考我们的 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
testing_string = "Every morning, I make a cup of coffee to start my day."
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(
[testing_string],
return_tensors="pt",
padding="max_length",
return_token_type_ids=False,
truncation=True,
max_length=max_seq_length
)
outputs = model(**input_ids)
embeddings = outputs['sentence_embedding']
你还可以使用Together API从此模型获取嵌入向量,如下所示(你可以在 这里 找到你的API密钥):
import os
import requests
def generate_together_embeddings(text: str, model_api_string: str, api_key: str):
url = "https://api.together.xyz/api/v1/embeddings"
headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": f"Bearer {api_key}"
}
session = requests.Session()
response = session.post(
url,
headers=headers,
json={
"input": text,
"model": model_api_string
}
)
if response.status_code != 200:
raise ValueError(f"Request failed with status code {response.status_code}: {response.text}")
return response.json()['data'][0]['embedding']
print(generate_together_embeddings(
'Hello world',
'togethercomputer/m2-bert-80M-2k-retrieval',
os.environ['TOGETHER_API_KEY'])[:10]
)
📄 许可证
本模型采用Apache - 2.0许可证。
致谢
Alycia Lee协助实现了AutoModel支持。
引用
如果你使用了此模型,或者认为我们的工作有价值,可以按以下方式引用我们:
@inproceedings{fu2023monarch,
title={Monarch Mixer: A Simple Sub-Quadratic GEMM-Based Architecture},
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={Advances in Neural Information Processing Systems},
year={2023}
}