Wordpiece-24-4 / modern_bert.py
Wector1
Add: best model
6693609
Raw
History Blame Contribute Delete
1.59 kB
from torch import nn
from transformers import (
ModernBertConfig,
ModernBertForMaskedLM,
ModernBertModel,
ModernBertPreTrainedModel,
)
from transformers.models.modernbert.modeling_modernbert import (
ModernBertEncoderLayer,
ModernBertPredictionHead,
)
class ModernBertConfigCustom(ModernBertConfig):
model_type = "modern_bert"
def __init__(self, repetition_factor=1, **kwargs):
super().__init__(**kwargs)
self.repetition_factor = repetition_factor
def standardize_rope_params(self):
pass
class ModernBertModelCustom(ModernBertModel):
config_class = ModernBertConfigCustom
def __init__(self, config):
super().__init__(config)
r = getattr(config, "repetition_factor", 1)
n = config.num_hidden_layers
self.layers = nn.ModuleList(
[ModernBertEncoderLayer(config, layer_idx=i // r) for i in range(n * r)]
)
class ModernBertForMaskedLMCustom(ModernBertForMaskedLM):
config_class = ModernBertConfigCustom
_tied_weights_keys = {"decoder.weight": "model.embeddings.tok_embeddings.weight"}
def __init__(self, config):
ModernBertPreTrainedModel.__init__(self, config)
self.model = ModernBertModelCustom(config)
self.head = ModernBertPredictionHead(config)
self.decoder = nn.Linear(
config.hidden_size, config.vocab_size, bias=config.decoder_bias
)
self.sparse_prediction = config.sparse_prediction
self.sparse_pred_ignore_index = config.sparse_pred_ignore_index
self.post_init()