Monarch混合器
2024年1月11日更新: 我们很高兴发布新的长上下文M2-BERT模型,其中包括为嵌入微调的版本!详情请参阅博客文章,更多细节请查看bert/EMBEDDINGS.md!
Monarch混合器:一种简单的亚二次GEMM基础架构
Daniel Y. Fu, Simran Arora*, Jessica Grogan*, Isys Johnson*, Sabri Eyuboglu*, Armin W. Thomas*, Benjamin F. Spector, Michael Poli, Atri Rudra, 和 Christopher Ré.
arXiv | M2-BERT博客文章
使用Monarch混合器的长上下文检索模型
Jon Saad-Falcon, Dan Fu, Simran Arora. 博客文章,2024年1月11日.
博客文章.
更新:
- 2024年1月11日: M2-BERT检索模型现已在Together API上提供!查看下方说明以运行它们!
- 2024年1月11日: 新的长上下文M2-BERT模型(2k、8k和32k)以及用于嵌入的检索版本现已可用。同时发布LoCo预览版,这是一个新的长上下文检索基准!查看我们的博客了解更多信息,并在这里试用这些模型!
- 2023年10月21日: M2-BERT-large检查点现已在HuggingFace上提供(260M,341M)。260M模型在GLUE微调方面与BERT-large相匹配,参数减少24%,而341M模型优于BERT-large。
- 2023年10月18日: M2论文现已在arXiv上发布,并将在NeurIPS上作为口头报告呈现!
基础M2-BERT检查点:
长上下文和检索M2-BERT检查点:
- M2-BERT-base-80M-2K
- M2-BERT-base-80M-8K
- M2-BERT-base-80M-32K
- M2-BERT-base-80M-2K-retrieval
- M2-BERT-base-80M-8K-retrieval
- M2-BERT-base-80M-32K-retrieval Transformer已经席卷了全球!该架构由两个核心操作组成:注意力机制用于混合输入序列中的信息,MLP用于混合模型维度中的信息。每个操作的复杂度都是二次方的——注意力机制的复杂度与序列长度成二次方关系,MLP的复杂度与模型维度成二次方关系。理想情况下,我们希望有更高效的替代方案,同时保持Transformer级别的质量。为此,我们一直在开发Monarch Mixer (M2),这是一个用于训练模型的框架,在序列长度和模型维度上都是亚二次方的。
我们的基本思想是用Monarch矩阵替换Transformer的主要元素——Monarch矩阵是一类结构化矩阵,它们是FFT的推广,具有亚二次方、硬件高效和表达能力强的特点。在Monarch Mixer中,我们使用由Monarch矩阵构建的层来进行序列间的混合(替代注意力操作)和模型维度间的混合(替代密集MLP)。这个仓库包含了用于训练Monarch Mixer架构的代码和模型!
开始使用嵌入
M2-BERT嵌入模型现已在Together API上可用。 你可以通过注册账户并按如下方式查询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"请求失败,状态码 {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])
查看bert/EMBEDDINGS.md获取更多关于如何评估这些模型并在本地运行它们的信息!
当前内容
**2024年1月9日:**长上下文M2-BERT-base检查点已上传至HuggingFace,同时还有用于嵌入模型的检索版本!
**2023年10月21日:**M2-BERT-large检查点现已上传至HuggingFace,论文也已发布在arXiv上!
**2023年7月24日:**我们很高兴发布Monarch Mixer BERT (M2-BERT),它比BERT少25%的参数/FLOPs,并在GLUE基准测试上匹配了平均质量。BERT文件夹包含了预训练和微调BERT基线和M2-BERT的代码。我们还发布了128序列长度的预训练检查点,包括一个80M参数的BERT模型,它在GLUE基准测试的平均分数上匹配了110M参数的BERT-base-uncased模型,以及一个参数匹配的M2-BERT模型。
引用
如果你使用了这个代码库,或者认为我们的工作有价值,你可以按以下方式引用我们:
@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}
}
您也可以引用我们之前的工作,本项目是在其基础上构建的:
@article{poli2023hyena,
title={鬣狗层级:迈向更大规模的卷积语言模型},
author={Poli, Michael and Massaroli, Stefano and Nguyen, Eric and Fu, Daniel Y and Dao, Tri and Baccus, Stephen and Bengio, Yoshua and Ermon, Stefano and R{\'e}, Christopher},
journal={arXiv预印本 arXiv:2302.10866},
year={2023}
}
@article{fu2023simple,
title={用于序列建模的简单高效长卷积},
author={Fu, Daniel Y. and Epstein, Elliot L. and Nguyen, Eric and Thomas, Armin W. and Zhang, Michael and Dao, Tri and Rudra, Atri and R{\'e}, Christopher},
journal={国际机器学习会议},
year={2023}
}
@inproceedings{fu2023hungry,
title={饥饿饥饿的河马:迈向状态空间模型的语言建模},
author={Fu, Daniel Y. and Dao, Tri and Saab, Khaled K. and Thomas, Armin W.
and Rudra, Atri and R{\'e}, Christopher},
booktitle={国际学习表示会议},
year={2023}
}