
多物种基因组理解基础模型
DNABERT-2是一个针对多物种基因组理解的高效基础模型。该模型在28个GUE基准任务中表现优异,采用BPE替代k-mer标记化,ALiBi代替位置嵌入,并整合多项技术提升效率。DNABERT-2为基因组分析提供了强大工具,可用于序列分类、元素识别和功能预测等多种任务。
本仓库包含:
我们发布了DNABERT-S,这是一个基于DNABERT-2的基础模型,专门设计用于生成DNA嵌入,可以自然地在嵌入空间中聚类和分离不同物种的基因组。如果您感兴趣,请查看这里。
DNABERT-2是一个在大规模多物种基因组上训练的基础模型,在GUE基准的28个任务上达到了最先进的性能。它用BPE替代了k-mer分词,用带线性偏置的注意力(ALiBi)替代了位置嵌入,并incorporat其他技术以提高DNABERT的效率和有效性。
预训练模型可在Hugging Face上获取,名为zhihan1996/DNABERT-2-117M。Hugging Face ModelHub链接。直接下载链接。
GUE是一个全面的基因组理解基准,由7个任务和4个物种的28个不同数据集组成。GUE可以在这里下载。GUE的统计数 据和模型性能如下所示:


# 创建并激活虚拟Python环境
conda create -n dna python=3.8
conda activate dna
# (如果您想使用flash attention,则为可选)
# 从源代码安装triton
git clone https://github.com/openai/triton.git;
cd triton/python;
pip install cmake; # 构建时依赖
pip install -e .
# 安装所需的包
python3 -m pip install -r requirements.txt
我们的模型可以通过transformers包轻松使用。
从Hugging Face加载模型(版本4.28):
import torch from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("zhihan1996/DNABERT-2-117M", trust_remote_code=True) model = AutoModel.from_pretrained("zhihan1996/DNABERT-2-117M", trust_remote_code=True)
从Hugging Face加载模型(版本 > 4.28):
from transformers.models.bert.configuration_bert import BertConfig config = BertConfig.from_pretrained("zhihan1996/DNABERT-2-117M") model = AutoModel.from_pretrained("zhihan1996/DNABERT-2-117M", trust_remote_code=True, config=config)
计算DNA序列的嵌入:
dna = "ACGTAGCATCGGATCTATCTATCGACACTTGGTTATCGATCTACGAGCATCTCGTTAGC"
inputs = tokenizer(dna, return_tensors = 'pt')["input_ids"]
hidden_states = model(inputs)[0] # [1, sequence_length, 768]
# 平均池化嵌入
embedding_mean = torch.mean(hidden_states[0], dim=0)
print(embedding_mean.shape) # 预期为768
# 最大池化嵌入
embedding_max = torch.max(hidden_states[0], dim=0)[0]
print(embedding_max.shape) # 预期为768
我们使用并略微修改了MosaicBERT实现来训练DNABERT-2 https://github.com/mosaicml/examples/tree/main/examples/benchmarks/bert 。您应该能够按照说明复现模型训练。
或者,您可以使用 https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling 的run_mlm.py,通过从 https://huggingface.co/zhihan1996/DNABERT-2-117M/blob/main/bert_layers.py 导入BertModelForMaskedLM。这应该会产生一个非常相似的模型。
训练数据可在这里获取。
请先从这里下载GUE数据集。然后运行脚本以评估所有任务。
当前脚本设置为使用DataParallel在4个GPU上训练。如果您有不同数量的GPU,请相应地更改per_device_train_batch_size和gradient_accumulation_steps,以将全局批量大小调整为32,以复现论文中的结果。如果您想进行分布式多GPU训练(例如, 使用DistributedDataParallel),只需将python更改为torchrun --nproc_per_node ${n_gpu}。
export DATA_PATH=/path/to/GUE #(例如,/home/user)
cd finetune
# 在GUE上评估DNABERT-2
sh scripts/run_dnabert2.sh DATA_PATH
# 在GUE上评估DNABERT(例如,使用3-mer的DNABERT)
# 3表示3-mer,4表示4-mer,5表示5-mer,6表示6-mer
sh scripts/run_dnabert1.sh DATA_PATH 3
# 在GUE上评估Nucleotide Transformers
# 0表示500m-1000g,1表示500m-human-ref,2表示2.5b-1000g,3表示2.5b-multi-species
sh scripts/run_nt.sh DATA_PATH 0
这里我们提供了一个在您自己的数据集上微调DNABERT2的示例。
首先,请从您的数据集生成3个csv文件:train.csv、dev.csv和test.csv。在训练过程中,模型会在train.csv上训练,并在dev.csv文件上进行评估。训练完成后,会加载在dev.csv文件上损失最小的检查点,并在test.csv上进行评估。如果您没有验证集,请将dev.csv和test.csv设置为相同的内容。
请查看sample_data文件夹以获取数据格式示例。每个文件应采用相同的格式,第一行为文档头,命名为sequence, label。每个后续行应包含一个DNA序列和一个数字标签,用逗号,连接(例如:ACGTCAGTCAGCGTACGT, 1)。
然后,您可以使用以下代码在自己的数据集上微调DNABERT-2:
cd finetune
export DATA_PATH=$path/to/data/folder # 例如,./sample_data
export MAX_LENGTH=100 # 请将此数值设置为您序列长度的0.25倍。
# 例如,如果您的DNA序列有1000个核苷酸碱基,则设置为250
# 这是因为分词器会将序列长度缩短约5倍
export LR=3e-5
# 使用DataParallel进行训练
python train.py \
--model_name_or_path zhihan1996/DNABERT-2-117M \
--data_path ${DATA_PATH} \
--kmer -1 \
--run_name DNABERT2_${DATA_PATH} \
--model_max_length ${MAX_LENGTH} \
--per_device_train_batch_size 8 \
--per_device_eval_batch_size 16 \
--gradient_accumulation_steps 1 \
--learning_rate ${LR} \
--num_train_epochs 5 \
--fp16 \
--save_steps 200 \
--output_dir output/dnabert2 \
--evaluation_strategy steps \
--eval_steps 200 \
--warmup_steps 50 \
--logging_steps 100 \
--overwrite_output_dir True \
--log_level info \
--find_unused_parameters False
# 使用DistributedDataParallel进行训练(更高效)
export num_gpu=4 # 请根据您的设置更改此值
torchrun --nproc-per-node=${num_gpu} train.py \
--model_name_or_path zhihan1996/DNABERT-2-117M \
--data_path ${DATA_PATH} \
--kmer -1 \
--run_name DNABERT2_${DATA_PATH} \
--model_max_length ${MAX_LENGTH} \
--per_device_train_batch_size 8 \
--per_device_eval_batch_size 16 \
--gradient_accumulation_steps 1 \
--learning_rate ${LR} \
--num_train_epochs 5 \
--fp16 \
--save_steps 200 \
--output_dir output/dnabert2 \
--evaluation_strategy steps \
--eval_steps 200 \
--warmup_steps 50 \
--logging_steps 100 \
--overwrite_output_dir True \
--log_level info \
--find_unused_parameters False
如果您对我们的论文或代码有任何疑问,请随时提出问题或发送电子邮件给Zhihan Zhou(zhihanzhou2020@u.northwestern.edu)。
如果您在工作中使用了DNABERT-2,请引用我们的论文:
DNABERT-2
@misc{zhou2023dnabert2,
title={DNABERT-2: Efficient Foundation Model and Benchmark For Multi-Species Genome},
author={Zhihan Zhou and Yanrong Ji and Weijian Li and Pratik Dutta and Ramana Davuluri and Han Liu},
year={2023},
eprint={2306.15006},
archivePrefix={arXiv},
primaryClass={q-bio.GN}
}
DNABERT
@article{ji2021dnabert,
author = {Ji, Yanrong and Zhou, Zhihan and Liu, Han and Davuluri, Ramana V},
title = "{DNABERT: pre-trained Bidirectional Encoder Representations from Transformers model for DNA-language in genome}",
journal = {Bioinformatics},
volume = {37},
number = {15},
pages = {2112-2120},
year = {2021},
month = {02},
issn = {1367-4803},
doi = {10.1093/bioinformatics/btab083},
url = {https://doi.org/10.1093/bioinformatics/btab083},
eprint = {https://academic.oup.com/bioinformatics/article-pdf/37/15/2112/50578892/btab083.pdf},
}


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。


国内直接访问,限时3折
输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号