Monarch Mixer:简单高效的亚二次方GEMM架构
项目介绍
Monarch Mixer 是由斯坦福大学的Hazy Research团队开发的一种新型神经网络架构,旨在解决传统Transformer模型在处理长序列时计算复杂度高的问题。Monarch Mixer通过引入Monarch矩阵,成功地将计算复杂度降低到亚二次方级别,同时保持了与Transformer相当的模型质量。
项目最新更新于2024年1月11日,推出了新的长上下文M2-BERT模型,并针对嵌入任务进行了微调。这些模型现已通过Together API提供,用户可以轻松访问并使用这些高效的嵌入模型。
项目技术分析
Monarch Mixer的核心创新在于使用Monarch矩阵替代Transformer中的注意力机制和全连接层。Monarch矩阵是一种结构化矩阵,具有以下特点:
- 亚二次方复杂度:相比于Transformer的二次方复杂度,Monarch Mixer在序列长度和模型维度上都实现了亚二次方的计算复杂度。
- 硬件效率:Monarch矩阵在硬件上的实现效率高,能够充分利用现代计算资源。
- 表达能力强:尽管计算复杂度降低,Monarch Mixer仍能保持与Transformer相当的模型表达能力。
Monarch Mixer通过以下方式实现高效计算:
- 序列混合:使用Monarch矩阵替代注意力机制,实现序列间的信息混合。
- 模型维度混合:使用Monarch矩阵替代全连接层,实现模型维度间的信息混合。
项目及技术应用场景
Monarch Mixer适用于需要处理长序列的各类任务,特别是在以下场景中表现尤为出色:
- 自然语言处理:如文本分类、命名实体识别、机器翻译等。
- 生物信息学:如DNA序列分析、蛋白质结构预测等。
- 时间序列分析:如金融预测、天气预报等。
特别是M2-BERT模型,通过微调后在嵌入任务中表现优异,适用于文本检索、语义搜索等应用。
项目特点
- 高效计算:亚二次方的计算复杂度,显著降低计算成本。
- 硬件友好:Monarch矩阵的硬件实现效率高,适合大规模部署。
- 模型质量:在保持计算效率的同时,模型质量与Transformer相当。
- 易于使用:通过Together API,用户可以轻松访问和使用M2-BERT模型。
如何开始使用
M2-BERT嵌入模型现已通过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])
更多详细信息,请参阅bert/EMBEDDINGS.md。
引用
如果您使用了本项目或认为我们的工作对您有价值,请引用以下内容:
@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={Hyena Hierarchy: Towards Larger Convolutional Language Models},
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 preprint arXiv:2302.10866},
year={2023}
}
@article{fu2023simple,
title={Simple Hardware-Efficient Long Convolutions for Sequence Modeling},
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={International Conference on Machine Learning},
year={2023}
}
@inproceedings{fu2023hungry,
title={Hungry {H}ungry {H}ippos: Towards Language Modeling with State Space Models},
author={Fu, Daniel Y. and Dao, Tri and Saab, Khaled K. and Thomas, Armin W.
and Rudra, Atri and R{\'e}, Christopher},
booktitle={International Conference on Learning Representations},
year={2023}
}
Monarch Mixer为处理长序列任务提供了一种高效且强大的解决方案,欢迎大家使用并探索其潜力!