/ Модель

Характеристики

Контекст
512 токенов
Параметры
116 млн
Лицензия
Apache 2.0
Архитектура
bert_updated · dense
Библиотека
transformers
Опубликована
3 июн 2026

DNABERT-6mer

Заполнение пропусковТекст → текст3 профессии

BERT-модель DNABERT-6mer восстанавливает замаскированные 6-меры и формирует представления последовательностей ДНК.

92скачиваний за 30 дней1лайквеса обновлены26 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Taykhoom Dalal поддерживает этот перенос DNABERT-6mer в формате Hugging Face: BERT-base для анализа последовательностей ДНК, предобученный на референсном геноме человека GRCh38. Модель использует 12 слоёв, 12 голов внимания и размерность эмбеддингов 768; она предсказывает замаскированные токены в задаче fill-mask. Входную последовательность необходимо заранее разбить на перекрывающиеся 6-меры с шагом 1 и разделить их пробелами. Контекст составляет 512 токенов.

Модель подходит для восстановления пропущенных 6-меров и получения представлений ДНК, которые можно использовать как основу для дообучения на задачах классификации последовательностей. README сообщает о проверке соответствия исходному чекпойнту DNABERT-6mer. Последовательности короче шести нуклеотидов не содержат 6-меров и не подходят для описанных операций с токенами.

В репозитории находятся веса и файлы токенизатора; код архитектуры загружается из Taykhoom/BERT-updated. Модель распространяется по лицензии Apache-2.0.

Сценарии применения

  • восстановление замаскированных 6-меров в последовательности ДНК
  • получение эмбеддингов для фрагментов генома человека
  • подготовка представлений ДНК для дообучения классификатора последовательностей

Ограничения

Вход нужно предварительно разбивать на перекрывающиеся 6-меры и разделять пробелами; последовательности короче шести нуклеотидов не содержат 6-меров для описанных операций. Контекст ограничен 512 токенами.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

DNABERT-6mer

Minimal HuggingFace port of the 6-mer variant of DNABERT -- a BERT-base masked language model pre-trained on the human reference genome using overlapping 6-mer tokenization.

This repo contains only weights and tokenizer files. The model code is loaded automatically from Taykhoom/BERT-updated via trust_remote_code=True.

Architecture

Standard BERT-base with a 6-mer DNA vocabulary.

ParameterValue
Layers12
Attention heads12
Embedding dimension768
FFN hidden dimension3072 (GELU)
Vocabulary size4101 (5 special + 4096 DNA 6-mers)
Positional encodingLearned absolute
NormalizationPost-LayerNorm (epsilon 1e-12)
ArchitectureBidirectional BERT encoder
Max sequence length512 tokens (510 k-mers; 515 nucleotides)
Runtime parameters92,936,709

Tokenization

Input sequences must be pre-split into overlapping 6-mers (stride 1) with spaces between tokens before calling the tokenizer. For example:

ATCGATG  ->  ATCGAT TCGATG
def seq_to_kmers(seq, k=6):
    return " ".join(seq[i:i+k] for i in range(len(seq) - k + 1))

Pretraining

  • Objective: Masked Language Modeling
  • Data: Human reference genome (GRCh38)
  • Source checkpoint: pytorch_model.bin from zhihan1996/DNA_bert_6

Parity Verification

All 13 representation levels (embedding + 12 transformer layers) verified against the source implementation (max abs diff = 6.29e-5); MLM logits match with max abs diff = 1.26e-4. The source dnabert_layer.BertModel is a direct subclass of transformers.BertModel with no modifications. Verified on GPU with PyTorch 2.7.1 / CUDA 12.9.

Related Models

See the full DNABERT collection.

ModelArchitectureNotes
DNABERT-3merBERT + k-merk=3
DNABERT-4merBERT + k-merk=4
DNABERT-5merBERT + k-merk=5
DNABERT-6merBERT + k-merk=6
DNABERT-2MosaicBERT + BPE + ALiBiMulti-species pre-trained
DNABERT-SMosaicBERT + BPE + ALiBiSpecies-aware

Usage

Embedding generation

import torch
from transformers import AutoTokenizer, AutoModel

def seq_to_kmers(seq, k=6):
    return " ".join(seq[i:i+k] for i in range(len(seq) - k + 1))

tokenizer = AutoTokenizer.from_pretrained("Taykhoom/DNABERT-6mer", trust_remote_code=True)
model = AutoModel.from_pretrained("Taykhoom/DNABERT-6mer", trust_remote_code=True)
model.eval()

sequences = ["ATCGATCGATCG", "GCTAGCTAGCTA"]
kmer_seqs = [seq_to_kmers(s) for s in sequences]
enc = tokenizer(kmer_seqs, return_tensors="pt", padding=True)

with torch.no_grad():
    out = model(**enc)

cls_emb   = out.last_hidden_state[:, 0, :]   # (batch, 768)
token_emb = out.last_hidden_state             # (batch, seq_len, 768)

# Mean-pool DNA k-mers only (exclude CLS, SEP, and padding)
content_mask = enc["attention_mask"].bool()
content_mask[:, 0] = False
sep_positions = enc["attention_mask"].sum(dim=1) - 1
batch_indices = torch.arange(len(sequences), device=content_mask.device)
content_mask[batch_indices, sep_positions] = False
mean_emb = (
    token_emb * content_mask.unsqueeze(-1)
).sum(dim=1) / content_mask.sum(dim=1, keepdim=True)

# Intermediate layers
out_all = model(**enc, output_hidden_states=True)
layer6_emb = out_all.hidden_states[6]

Sequences shorter than 6 nucleotides contain no k-mer tokens and therefore cannot be mean-pooled or assigned a k-mer pseudo-likelihood.

MLM logits

from transformers import AutoModelForMaskedLM

model = AutoModelForMaskedLM.from_pretrained(
    "Taykhoom/DNABERT-6mer", trust_remote_code=True
)
tokens = seq_to_kmers("ATCGATCG", k=6).split()
tokens[1] = tokenizer.mask_token
enc = tokenizer(" ".join(tokens), return_tensors="pt")

with torch.no_grad():
    logits = model(**enc).logits   # (1, seq_len, 4101)

Faster attention backends

# SDPA (PyTorch 2.0+)
model = AutoModel.from_pretrained("Taykhoom/DNABERT-6mer", trust_remote_code=True,
                                   attn_implementation="sdpa")

# Flash Attention 2 (requires flash-attn)
model = AutoModel.from_pretrained("Taykhoom/DNABERT-6mer", trust_remote_code=True,
                                   attn_implementation="flash_attention_2",
                                   dtype=torch.float16)

Fine-tuning

For sequence-level tasks, mean-pool only k-mer positions as above or use the CLS token embedding as input to a prediction head.

Implementation Notes

The original DNABERT codebase has BertModel as a thin subclass of transformers.BertModel with no modifications. This HF port uses Taykhoom/BERT-updated which adds attn_implementation="sdpa" and attn_implementation="flash_attention_2" support — these were not part of the original codebase.

Citation

@article{ji2021_dnabert,
  title   = {{DNABERT}: pre-trained Bidirectional Encoder Representations from Transformers model for {DNA}-language in genome},
  author  = {Ji, Yanrong and Zhou, Zhihan and Liu, Han and Davuluri, Ramana V},
  journal = {Bioinformatics},
  volume  = {37},
  number  = {15},
  pages   = {2112--2120},
  year    = {2021},
  doi     = {10.1093/bioinformatics/btab083}
}

Credits

Original DNABERT model and code by Ji et al. Source: GitHub. Hugging Face port maintained by Taykhoom Dalal.

License

Apache License 2.0, following the original repository.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · fill-mask

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
BertForMaskedLM
Ревизия весов
4e7549f

0 моделей