/ Модель

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

Контекст
8 192 токена
Параметры
307 млн
Лицензия
CC0 1.0
Архитектура
modernbert · dense
Базовая модель
mmBERT-base
Библиотека
transformers
Опубликована
16 сен 2026

Bo-Boundary-mmbert-0.2

Разметка токеновТекст → label

Модель ModernBERT для поиска границ текста и разделов в оцифрованных тибетских буддийских томах.

51скачиваний за 30 дней0лайковвеса обновлены16 сен 2026

Бенчмарки

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

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

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

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

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

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

Bo-Boundary-mmBERT 0.2 — разработанная Buddhist Digital Resource Center (BDRC) модель ModernBERT, дообученная на обнаружение границ текста и разделов в тибетских буддийских томах. Это классификатор токенов с примерно 306,9 млн параметров и контекстом до 8192 токенов; каждому токену присваивается метка B (граница) или O (не граница). Модель предназначена для разметки оцифрованных томов и восстановления структуры текста по данным OCR и другим текстовым источникам.

На отдельном тестовом наборе из 100 документов лучший результат micro-F1 составил 0,842 при пороге 0,55 и объединении срабатываний в окне 75 символов. Для применения нужны токенизатор и декодирование оценок токенов; параметры порога и объединения влияют на точность и полноту. Модель обучена на тибетских томах форматов pering и modern_book, поэтому результаты на других макетах, письменностях и OCR-системах могут ухудшаться; на документах без границ возможны ложные срабатывания. Репозиторий распространяется по лицензии CC0-1.0.

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

  • поиск границ разделов в тибетских буддийских томах
  • восстановление структуры тома по распознанному OCR тексту
  • разметка точек разбиения оцифрованных тибетских документов

Ограничения

Обучена на тибетских томах форматов pering и modern_book; на других макетах, письменностях и OCR-системах качество может снижаться. На томах без границ возможны ложные срабатывания, а полнота для modern_book ниже, чем для pering.

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

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

Открыть на Hugging Face

Bo-Boundary-mmBERT 0.2

A ModernBERT token classifier fine-tuned to detect text / outline boundaries in Tibetan Buddhist volume text. Each token is labelled B (boundary) or O (non-boundary).

This is the 0.2 release of BDRC/Bo-Boundary-mmBert. Weights are checkpoint-46000 from run run_bo_outline_neg06 (epoch 2 of 3). The run later early-stopped at step 52,000; 46k is the checkpoint that scored highest micro-F1 on the frozen 100-document benchmark after a decoder sweep.

Hosted as BDRC/Bo-Boundary-mmbert-0.2.

Model details

PropertyValue
Base modeljhu-clsp/mmBERT-base
ArchitectureModernBertForTokenClassification
Parameters~307 M
Hidden size768
Layers22
Attention heads12
Max sequence length8,192
Vocab size256,000
LabelsO (id 0), B (id 1)
Checkpointcheckpoint-46000 (step 46,000 / epoch 2)

Training data

Prepared from BDRC outline annotations (data/Bo_Outline_neg06). Splits are work-level and stratified by print_format, so volumes of the same BDRC work never appear in more than one split. Mixed-format works keep only majority-format volumes (119 minority-format volumes dropped). There is no test split in the training set — evaluation uses a separately curated 100-document benchmark.

ItemValue
Source volumes scanned17,381
Unique BDRC works10,578
Volumes kept17,262
Annotated breakpoints204,514
Tokenizerjhu-clsp/mmBERT-base
Window size8,192 tokens
Stride256 tokens
Boundary radius±3 characters around the boundary char
Prepare-time O-only keep ratio0.6
Train-time extra negative samplingnone (ratio = 1.0)
Seed42

Splits

SplitWorksVolumesWindows
train10,05016,356374,660
validation52890632,376
test000 (hand-crafted benchmark instead)

Stratification by print_format (work-level)

print_formatTrain worksVal works
modern_book1,14660
pering8,904468

Train label distribution

The boundary class is extremely rare. All windows that contain a B label are kept; only O-only train windows are downsampled at prepare time.

StageWindowsB labelsO labelsB:O
Raw (before downsampling)555,8371,233,7494,486,541,0541 : 3,636
Final (after 0.6 O-only keep)374,6601,233,7493,021,774,4771 : 2,449

Training

Run directory: output/run_bo_outline_neg06. Started 2026-09-11. The full run early-stopped at step 52,000 after 105 h 42 m (patience = 10 evals with no doc-level F2 gain). This Hub checkpoint is step 46,000.

Hyperparameters

ParameterValue
Epochs planned3
Batch size (per GPU)4
Gradient accumulation4
Effective batch size16
OptimiserAdamW
Learning rate1 × 10⁻⁵
Schedulecosine decay with warmup
Warmup7,024 steps (10 %)
Steps / epoch23,416
Planned total steps70,248
This checkpoint46,000 (epoch 2)
Weight decay0.01
Max grad norm1.0
LossFocal (γ = 2.0, α = [O: 0.20, B: 0.80])
Mixed precisionbfloat16
torch.compileenabled
Gradient checkpointingenabled
Neg-sample ratio (train loader)1.0
Eval / save intervalevery 2,000 steps
In-loop eval threshold0.70
Selection metric (run best/)doc-level F2 on 80 frozen val docs
Early-stop patience10 evals
Seed42

In-loop validation used the production decoder at threshold 0.70. Those numbers are not the benchmark operating point below.

Infrastructure

  • GPU: 1 × NVIDIA A100-SXM4-40GB (39.5 GB)
  • Time to this checkpoint: ~92 h 55 m (step 46,000)
  • Full run: 105 h 42 m (early stop at step 52,000)

Validation at this checkpoint (80 holdout docs, threshold 0.70)

MetricValue
Precision0.788
Recall0.817
F10.802
F20.811
TP / FP / FN887 / 239 / 199
Train loss4.04 × 10⁻⁵

Key in-loop milestones (same 80-doc, threshold-0.70 decoder):

StepEpochTrain lossVal PVal RVal F1Val F2
2,00013.74e-30.3200.3780.3470.365
8,00011.01e-30.8400.7120.7710.734
16,00015.35e-40.8940.7680.8260.790
34,00024.24e-50.8070.8280.8170.824
46,00024.04e-50.7880.8170.8020.811
52,00032.97e-50.8230.6690.7380.695

Step 34,000 was the run’s best in-loop F2 (saved as checkpoints/best). Step 46,000 is released here because it generalises better on the frozen benchmark once the decode threshold is swept.

Evaluation on the benchmark

Frozen 100-document outline-boundary benchmark (78 works, 1,643 gold breakpoints, 23.7 M characters). A predicted boundary matches gold if it falls within ±25 characters. Decoder: centre-weighted sliding-window B probabilities → threshold → merge nearby peaks.

Documents100 (81 with ≥1 gold boundary, 19 with none)
Gold breakpoints1,643
Sourcesbdrc_outline 27, tei 18, qwen_ocr 18, google_books 14, ocrv1 12, google_vision 11
Print formatpering 64, modern_book 36

Recommended operating point

threshold = 0.55, merge window = 75 characters (best micro-F1 on this checkpoint).

MetricValue
Micro precision0.836
Micro recall0.847
Micro F10.842
F20.845
Work-macro F10.599
has_gt F1 (81 docs)0.849
TP / FP / FN1,392 / 273 / 251
Predicted / gold1,665 / 1,643
FP on zero-GT docs27

Other useful decode settings

postprocess did not change scores on this sweep.

ThresholdMergePRF1F2FPFNNotes
0.45250.7490.8900.8130.858490181best F2 / highest recall
0.50500.7980.8700.8330.855362213balanced
0.55750.8360.8470.8420.845273251recommended (best F1)
0.60250.8620.8160.8380.824215303slightly more precise
0.70500.9090.7120.7990.744117473in-training eval setting

Source breakdown (threshold 0.70, merge 50)

SourcePRF1
tei0.9530.9200.936
bdrc_outline0.8530.7990.825
google_vision0.9080.6880.783
qwen_ocr0.9660.6440.773
ocrv10.9300.5240.670
google_books0.8920.2940.443

Print format (threshold 0.70, merge 50)

FormatPRF1
pering0.9230.8200.869
modern_book0.8840.5690.692

How to use

from transformers import AutoModelForTokenClassification, AutoTokenizer

repo_id = "BDRC/Bo-Boundary-mmbert-0.2"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForTokenClassification.from_pretrained(repo_id)

Production decode (centre-weighted windows, threshold, 50-char merge) is implemented in the training package:

mmbert-boundary predict input.txt --model BDRC/Bo-Boundary-mmbert-0.2 --threshold 0.55

Or via OpenPecha/outline-detection:

from outline_detection import MmBertDetector

det = MmBertDetector(model_name_or_path="BDRC/Bo-Boundary-mmbert-0.2")
boundaries = det.predict(text)  # [(offset, confidence, "mmbert"), ...]

Recommended defaults for this checkpoint: --threshold 0.55, merge nearby peaks within 75 characters, match gold within ±25 characters. Raise the threshold (0.60–0.70) if you need fewer false positives; lower it (0.45–0.50) if you need higher recall.

Limitations

  • Trained on BDRC outline-annotated Tibetan volumes (pering and modern_book). Other layouts, scripts, or OCR engines may degrade.
  • Sparse and zero-boundary volumes still produce extra detections. Downstream use should keep a confidence threshold.
  • modern_book recall is lower than pering at the high-precision 0.70 setting (0.57 vs 0.82).
  • In-loop checkpoint selection used F2 at threshold 0.70 on 80 val docs; published scores use a held-out 100-doc benchmark and a swept decoder.

Credits

Trained for the Buddhist Digital Resource Center (BDRC) etext corpus, with funding from the Khyentse Foundation. Successor to BDRC/Bo-Boundary-mmBert.

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
ModernBertForTokenClassification
Ревизия весов
8a3b2c5

0 моделей