Project Icon

evo

实现跨尺度DNA序列建模与设计的开源工具

Evo是一个开源的生物基础模型,专注于DNA序列的长上下文建模和设计。基于StripedHyena架构,Evo实现了单核苷酸级别的序列建模,具有近乎线性的计算和内存扩展性。该模型拥有70亿参数,在OpenGenome数据集上训练,包含约3000亿个原核全基因组标记。Evo提供8K和131K上下文长度的预训练模型,适用于从分子到基因组尺度的序列分析和生成任务。研究人员可通过HuggingFace和Together API等多种方式使用Evo,为DNA序列研究提供了强大而灵活的工具。

Evo: 从分子到基因组尺度的DNA基础建模

Evo

Evo是一个能够进行长上下文建模和设计的生物学基础模型。 Evo使用StripedHyena架构,能够以单核苷酸、字节级分辨率对序列进行建模,计算和内存相对于上下文长度近乎线性扩展。 Evo拥有70亿参数,在OpenGenome上训练,这是一个含有约3000亿个标记的原核生物全基因组数据集。

我们在论文"用Evo从分子到基因组尺度进行序列建模和设计"配套博客文章中描述了Evo。

我们提供以下模型检查点:

检查点名称描述
evo-1-8k-base使用8,192上下文预训练的模型。我们将此模型用作分子尺度微调任务的基础模型。
evo-1-131k-base使用evo-1-8k-base作为基础模型,用131,072上下文预训练的模型。我们使用此模型在基因组尺度推理和生成序列。

新闻

我们发现并修复了一个与某些投影错误排列相关的问题,该问题影响生成质量。要在HuggingFace上使用新的模型修订版,请按如下方式加载:

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"
)

目录

设置

要求

Evo基于StripedHyena

Evo使用FlashAttention-2,可能不适用于所有GPU架构。 请查阅FlashAttention GitHub仓库获取当前支持的GPU列表。

确保在您的系统上安装正确的PyTorch版本

安装

您可以使用pip安装Evo

pip install evo-model

或直接从GitHub源代码安装

git clone https://github.com/evo-design/evo.git
cd evo/
pip install .

我们建议您先安装PyTorch库,然后再安装所有其他依赖项(由于flash-attn库的依赖问题;参见例如这个问题)。

我们的一个示例脚本,演示如何从用Evo生成序列到折叠蛋白质(scripts/generation_to_folding.py),还需要安装prodigal。我们为此创建了一个environment.yml文件:

conda env create -f environment.yml
conda activate evo-design

使用

以下是如何下载Evo并通过Python API在本地使用它的示例。

from evo import Evo
import torch

device = 'cuda:0'

evo_model = Evo('evo-1-131k-base')
model, tokenizer = evo_model.model, evo_model.tokenizer
model.to(device)
model.eval()

sequence = 'ACGT'
input_ids = torch.tensor(
    tokenizer.tokenize(sequence),
    dtype=torch.int,
).to(device).unsqueeze(0)

with torch.no_grad():
    logits, _ = model(input_ids) # (batch, length, vocab)

print('Logits: ', logits)
print('Shape (batch, length, vocab): ', logits.shape)

批量推理的示例可以在scripts/example_inference.py中找到。

我们提供了一个示例脚本,演示如何提示模型并根据提示采样一组序列。

python -m scripts.generate \
    --model-name 'evo-1-131k-base' \
    --prompt ACGT \
    --n-samples 10 \
    --n-tokens 100 \
    --temperature 1. \
    --top-k 4 \
    --device cuda:0

我们还提供了一个示例脚本,用于使用模型对一组序列的对数似然进行评分。

python -m scripts.score \
    --input-fasta examples/example_seqs.fasta \
    --output-tsv scores.tsv \
    --model-name 'evo-1-131k-base' \
    --device cuda:0

HuggingFace

Evo已集成到HuggingFace

from transformers import AutoConfig, AutoModelForCausalLM

model_name = 'togethercomputer/evo-1-8k-base'

model_config = AutoConfig.from_pretrained(model_name, trust_remote_code=True, revision="1.1_fix")
model_config.use_cache = True

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    config=model_config,
    trust_remote_code=True,
    revision="1.1_fix"
)

Together API

Evo可通过Together AI的网页界面使用,您可以在类似聊天的界面中生成DNA序列。

对于更详细或批量工作流程,您可以使用以下简单示例调用Together API。

import openai
import os

# 在此填写您的API信息。
client = openai.OpenAI(
  api_key=TOGETHER_API_KEY,
  base_url='https://api.together.xyz',
)

chat_completion = client.chat.completions.create(
  messages=[
    {
      "role": "system",
      "content": ""
    },
    {
      "role": "user",
      "content": "ACGT", # 用序列提示模型。
    }
  ],
  model="togethercomputer/evo-1-131k-base",
  max_tokens=128, # 采样一些新标记。
  logprobs=True
)
print(
    chat_completion.choices[0].logprobs.token_logprobs,
    chat_completion.choices[0].message.content
)

引用

引用Evo时,请引用以下预印本。

@article {nguyen2024sequence,
    author = {Eric Nguyen and Michael Poli and Matthew G Durrant and Armin W Thomas and Brian Kang and Jeremy Sullivan and Madelena Y Ng and Ashley Lewis and Aman Patel 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},
    year = {2024},
    doi = {10.1101/2024.02.27.582234},
    publisher = {Cold Spring Harbor Laboratory},
    URL = {https://www.biorxiv.org/content/early/2024/02/27/2024.02.27.582234},
    journal = {bioRxiv}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号