模型简介
模型特点
模型能力
使用案例
🚀 RuModernBERT-small
RuModernBERT-small 是现代化双向仅编码器 Transformer 模型 ModernBERT 的俄语版本。该模型在约 2 万亿个俄语、英语和代码数据的标记上进行了预训练,上下文长度可达 8192 个标记,使用的数据来自互联网、书籍、科学资源和社交媒体。
🚀 快速开始
不要忘记更新 transformers
库,如果你的 GPU 支持,还需安装 flash-attn
。
from transformers import AutoTokenizer, AutoModelForMaskedLM
# 准备模型
model_id = "deepvk/RuModernBERT-small"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForMaskedLM.from_pretrained(model_id, attn_implementation="flash_attention_2")
model = model.eval()
# 准备输入
text = "Мама мыла [MASK]."
inputs = tokenizer(text, return_tensors="pt")
masked_index = inputs["input_ids"][0].tolist().index(tokenizer.mask_token_id)
# 进行预测
outputs = model(**inputs)
# 显示预测结果
predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1)
predicted_token = tokenizer.decode(predicted_token_id)
print("Predicted token:", predicted_token)
# 预测的标记: посуду
✨ 主要特性
- 俄语版本的现代化双向仅编码器 Transformer 模型。
- 在约 2 万亿个俄语、英语和代码数据的标记上进行预训练。
- 上下文长度可达 8192 个标记。
📦 安装指南
请确保更新 transformers
库,如果你的 GPU 支持,还需安装 flash-attn
。
💻 使用示例
基础用法
from transformers import AutoTokenizer, AutoModelForMaskedLM
# 准备模型
model_id = "deepvk/RuModernBERT-small"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForMaskedLM.from_pretrained(model_id, attn_implementation="flash_attention_2")
model = model.eval()
# 准备输入
text = "Мама мыла [MASK]."
inputs = tokenizer(text, return_tensors="pt")
masked_index = inputs["input_ids"][0].tolist().index(tokenizer.mask_token_id)
# 进行预测
outputs = model(**inputs)
# 显示预测结果
predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1)
predicted_token = tokenizer.decode(predicted_token_id)
print("Predicted token:", predicted_token)
# 预测的标记: посуду
高级用法
暂未提供高级用法示例。
📚 详细文档
模型参数
模型大小 | 隐藏维度 | 层数 | 词表大小 | 上下文长度 | 任务 | |
---|---|---|---|---|---|---|
deepvk/RuModernBERT-small [本模型] | 35M | 384 | 12 | 50368 | 8192 | 掩码语言模型 |
deepvk/RuModernBERT-base | 150M | 768 | 22 | 50368 | 8192 | 掩码语言模型 |
训练细节
分词器
我们按照原始配置训练了一个新的分词器。我们保持了词表的大小,并添加了相同的特殊标记。该分词器在 FineWeb 中的俄语和英语混合数据上进行了训练。
数据集
预训练包括三个主要阶段:大规模预训练、上下文扩展和冷却阶段。与原始模型不同,我们在所有阶段没有使用相同的数据。在第二和第三阶段,我们使用了更干净的数据源。
数据源 | 阶段 1 | 阶段 2 | 阶段 3 |
---|---|---|---|
FineWeb (英语+俄语) | ✅ | ❌ | ❌ |
CulturaX-Ru-Edu (俄语) | ❌ | ✅ | ❌ |
Wiki (英语+俄语) | ✅ | ✅ | ✅ |
ArXiv (英语) | ✅ | ✅ | ✅ |
Book (英语+俄语) | ✅ | ✅ | ✅ |
代码 | ✅ | ✅ | ✅ |
StackExchange (英语+俄语) | ✅ | ✅ | ✅ |
社交媒体 (俄语) | ✅ | ✅ | ✅ |
总标记数 | 1.3T | 250B | 50B |
上下文长度
在第一阶段,模型在上下文长度为 1024
的情况下进行训练。在第二和第三阶段,上下文长度扩展到 8192
。
评估
为了评估模型,我们在 encodechka
和 Russian Super Glue (RSG)
基准测试上进行了质量评估。对于 RSG,我们进行了网格搜索以找到最佳超参数,并报告了 开发集 的指标。
为了进行公平比较,我们仅将 RuModernBERT 模型与未在检索或句子嵌入任务上进行训练的原始编码器进行比较。
Russian Super Glue
模型 | RCB | PARus | MuSeRC | TERRa | RUSSE | RWSD | DaNetQA | 得分 |
---|---|---|---|---|---|---|---|---|
deepvk/deberta-v1-distill | 0.433 | 0.56 | 0.625 | 0.590 | 0.943 | 0.569 | 0.726 | 0.635 |
deepvk/deberta-v1-base | 0.450 | 0.61 | 0.722 | 0.704 | 0.948 | 0.578 | 0.760 | 0.682 |
ai-forever/ruBert-base | 0.491 | 0.61 | 0.663 | 0.769 | 0.962 | 0.574 | 0.678 | 0.678 |
deepvk/RuModernBERT-small [本模型] | 0.555 | 0.64 | 0.746 | 0.593 | 0.930 | 0.574 | 0.743 | 0.683 |
deepvk/RuModernBERT-base | 0.556 | 0.61 | 0.857 | 0.818 | 0.977 | 0.583 | 0.758 | 0.737 |
Encodechka
模型大小 | STS-B | 释义器 | XNLI | 情感分析 | 毒性检测 | 不当性检测 | 意图识别 | 意图识别X | FactRu | RuDReC | 平均得分 | 平均得分+权重 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cointegrated/rubert-tiny | 11.9M | 0.66 | 0.53 | 0.40 | 0.71 | 0.89 | 0.68 | 0.70 | 0.58 | 0.24 | 0.34 | 0.645 | 0.575 |
deepvk/deberta-v1-distill | 81.5M | 0.70 | 0.57 | 0.38 | 0.77 | 0.98 | 0.79 | 0.77 | 0.36 | 0.36 | 0.44 | 0.665 | 0.612 |
deepvk/deberta-v1-base | 124M | 0.68 | 0.54 | 0.38 | 0.76 | 0.98 | 0.80 | 0.78 | 0.29 | 0.29 | 0.40 | 0.653 | 0.591 |
answerdotai/ModernBERT-base | 150M | 0.50 | 0.29 | 0.36 | 0.64 | 0.79 | 0.62 | 0.59 | 0.10 | 0.22 | 0.20 | 0.486 | 0.431 |
ai-forever/ruBert-base | 178M | 0.67 | 0.53 | 0.39 | 0.77 | 0.98 | 0.78 | 0.77 | 0.38 | 🥴 | 🥴 | 0.659 | 🥴 |
DeepPavlov/rubert-base-cased | 180M | 0.63 | 0.50 | 0.38 | 0.73 | 0.94 | 0.74 | 0.74 | 0.31 | 🥴 | 🥴 | 0.621 | 🥴 |
deepvk/RuModernBERT-small [本模型] | 35M | 0.64 | 0.50 | 0.36 | 0.72 | 0.95 | 0.73 | 0.72 | 0.47 | 0.28 | 0.26 | 0.636 | 0.563 |
deepvk/RuModernBERT-base | 150M | 0.67 | 0.54 | 0.35 | 0.75 | 0.97 | 0.76 | 0.76 | 0.58 | 0.37 | 0.36 | 0.673 | 0.611 |
🔧 技术细节
RuModernBERT-small 是基于 ModernBERT 架构的俄语版本模型。它在大规模的俄语、英语和代码数据上进行了预训练,使用了多种数据源,包括互联网、书籍、科学资源和社交媒体。模型的上下文长度可达 8192 个标记,通过三个阶段的预训练过程进行优化。
📄 许可证
本项目采用 Apache-2.0 许可证。
📖 引用
@misc{deepvk2025rumodernbert,
title={RuModernBERT: Modernized BERT for Russian},
author={Spirin, Egor and Malashenko, Boris and Sokolov Andrey},
url={https://huggingface.co/deepvk/rumodernbert-base},
publisher={Hugging Face}
year={2025},
}



