🚀 Monarch Mixer-BERT
Monarch Mixer-BERT 是 M2-BERT 的一個 8000 萬參數的檢查點,它在序列長度為 32768 的情況下進行了預訓練,並針對長上下文檢索進行了微調。
查看論文 Monarch Mixer: A Simple Sub-Quadratic GEMM-Based Architecture 和我們關於檢索的博客文章,以瞭解更多關於我們如何為長序列訓練此模型的信息。
該模型由 Jon Saad - Falcon、Dan Fu 和 Simran Arora 訓練。
查看我們的 GitHub,獲取有關如何下載和微調該模型的說明!
🚀 快速開始
模型加載
你可以使用 Hugging Face 的 AutoModel
加載此模型:
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-32k-retrieval",
trust_remote_code=True
)
你可能會看到一條關於 FlashFFTConv 未使用參數的大錯誤消息。如果你想使用 FlashFFTConv 加載模型,可以查看我們的 GitHub。
生成嵌入
此模型用於生成用於檢索的嵌入向量,嵌入向量的維度為 768:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
max_seq_length = 32768
testing_string = "Every morning, I make a cup of coffee to start my day."
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-32k-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 獲取嵌入
你還可以使用 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-32k-retrieval',
os.environ['TOGETHER_API_KEY'])[:10]
)
💻 使用示例
基礎用法
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-32k-retrieval",
trust_remote_code=True
)
高級用法
from transformers import AutoTokenizer, AutoModelForSequenceClassification
max_seq_length = 32768
testing_string = "Every morning, I make a cup of coffee to start my day."
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-32k-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']
📄 許可證
本模型使用 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}
}