🚀 Evo-1 (阶段 1)
Evo是一个能够进行长上下文建模和设计的生物基础模型。它使用 StripedHyena架构,能以单核苷酸、字节级分辨率对序列进行建模,并且计算和内存相对于上下文长度呈近似线性扩展。
✨ 主要特性
- Evo使用 StripedHyena架构,可对单核苷酸、字节级分辨率的序列进行建模,计算和内存相对于上下文长度呈近似线性扩展。
- 拥有70亿个参数,在包含约3000亿个标记的原核全基因组数据集OpenGenome上进行训练。
- 作为开放科学承诺的一部分,发布了预训练阶段1和阶段2的 15个中间预训练检查点的权重,这些检查点可作为相应HuggingFace存储库的分支获取。
📦 安装指南
要在Playground之外使用StripedHyena,你需要安装自定义内核。请按照 独立存储库 中的说明进行操作。
💻 使用示例
基础用法
我们发现并修复了一个与某些投影排列错误相关的问题,该问题会影响生成质量。要使用新的模型版本,请按以下方式加载:
config = AutoConfig.from_pretrained(model_name, trust_remote_code=True, revision="1.1_fix")
model = AutoModelForCausalLM.from_pretrained(
model_name,
config=config,
trust_remote_code=True,
revision="1.1_fix"
)
高级用法
更多示例用法请参考 独立存储库。
📚 详细文档
模型架构
StripedHyena是一种深度信号处理混合架构,由多头注意力和门控卷积组成,排列在 Hyena 块中,对仅解码器的Transformer进行了改进。
StripedHyena旨在利用其每个层类的专长,其中Hyena层实现序列处理所需的大部分计算,而注意力层则补充了执行目标模式召回的能力。
该架构的一些亮点:
- 通过循环模式实现 高效的自回归生成(使用单个80GB GPU可生成超过500k)。
- 在长上下文下 显著加快训练和微调速度(在131k上下文下快3倍以上)。
- 在自然语言和生物序列方面,相对于最先进的架构(如Transformer++) 改进了缩放定律。
- 对超出计算最优边界的训练具有鲁棒性,例如,在远远超过Chinchilla最优标记数量的情况下进行训练(详见预印本 -- 更多细节即将公布)。
参数化用于推理和微调
深度信号处理模型的优点之一是其灵活性。根据预训练、微调或推理工作负载的内存、表达能力和因果关系要求,可以使用不同的卷积参数化。
主要类别包括:
- 模态规范:无约束极点 (参考, 参考),或约束极点 (参考, 参考)。
- 伴随规范/有理:待公布。
- 超网络:超网络 (参考),调制超网络 (参考)。
- 显式:调制显式 (参考)。
StripedHyena是一个混合精度模型。请确保将 poles
和 residues
保持在 float32
精度,特别是对于较长的提示或训练。
模型检查点
检查点名称 |
描述 |
evo-1-8k-base |
一个以8192上下文进行预训练的模型。我们将此模型用作分子尺度微调任务的基础模型。 |
evo-1-131k-base |
一个使用 evo-1-8k-base 作为初始化,以131072上下文进行预训练的模型。我们使用此模型在基因组尺度上进行推理和生成序列。 |
🔧 技术细节
Evo的技术细节可在我们的预印本和相关博客文章中找到。Evo由 Arc Institute 和TogetherAI合作开发。
📄 许可证
本项目采用Apache 2.0许可证。
📖 引用
@article{nguyen2024sequence,
author = {Eric Nguyen and Michael Poli and Matthew G. Durrant and Brian Kang and Dhruva Katrekar and David B. Li and Liam J. Bartie and Armin W. Thomas and Samuel H. King and Garyk Brixi and Jeremy Sullivan and Madelena Y. Ng and Ashley Lewis and Aaron Lou and Stefano Ermon and Stephen A. Baccus and Tina Hernandez-Boussard and Christopher Ré and Patrick D. Hsu and Brian L. Hie },
title = {Sequence modeling and design from molecular to genome scale with Evo},
journal = {Science},
volume = {386},
number = {6723},
pages = {eado9336},
year = {2024},
doi = {10.1126/science.ado9336},
URL = {https://www.science.org/doi/abs/10.1126/science.ado9336},