IMvision12 commited on
Commit
26467e8
·
0 Parent(s):

Super-squash branch 'main' using huggingface_hub

Browse files
Files changed (5) hide show
  1. .gitattributes +35 -0
  2. README.md +89 -0
  3. kf_config.json +26 -0
  4. model.weights.h5 +3 -0
  5. tokenizer.json +0 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ pipeline_tag: fill-mask
3
+ license: apache-2.0
4
+ base_model: answerdotai/ModernBERT-base
5
+ library_name: kerasformers
6
+ tags:
7
+ - keras
8
+ - kerasformers
9
+ - modernbert
10
+ - fill-mask
11
+ - text-encoder
12
+ - arxiv:2412.13663
13
+ - pytorch
14
+ - jax
15
+ - tf
16
+ ---
17
+
18
+ # Run ModernBERT with Keras 3: JAX, PyTorch, or TensorFlow
19
+
20
+ [![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-black?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-ModernBERT-blue)](https://imvision12.github.io/KerasFormers/modernbert/)
21
+
22
+ # kerasformers/modernbert_base
23
+
24
+ Paper: [Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder (arXiv:2412.13663)](https://arxiv.org/abs/2412.13663) · [HF Papers](https://huggingface.co/papers/2412.13663)
25
+
26
+ ModernBERT is Answer.AI / LightOn's modernized bidirectional transformer text encoder: rotary position embeddings, attention that alternates between a global (full) layer and local sliding-window layers, GeGLU feed-forwards, and pre-LayerNorm, with an 8192-token context. Byte-level BPE tokenizer; mask token `[MASK]`. No token-type ids.
27
+
28
+ For more details on the model, please go to the upstream [model card](https://huggingface.co/answerdotai/ModernBERT-base).
29
+
30
+ Pure-**Keras 3** conversion of [`answerdotai/ModernBERT-base`](https://huggingface.co/answerdotai/ModernBERT-base) for [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on **TensorFlow / Torch / JAX**.
31
+
32
+ This is a **fill-mask / encoder** checkpoint (`ModernBertMaskedLM`, modernbert_base). Task heads (sequence / token classify, QA, multiple choice) load via `hf:` fine-tunes.
33
+
34
+ ## ✨ Quick start (fill-mask)
35
+
36
+ ```python
37
+ import os
38
+ os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
39
+
40
+ from kerasformers.models.modernbert import ModernBertMaskedLM, ModernBertTokenizer
41
+
42
+ mlm = ModernBertMaskedLM.from_weights("kerasformers/modernbert_base")
43
+ tokenizer = ModernBertTokenizer.from_weights("kerasformers/modernbert_base")
44
+
45
+ inputs = tokenizer("The capital of France is [MASK].")
46
+ logits = mlm(inputs) # (1, L, vocab_size)
47
+ mask = int((inputs["input_ids"][0] == tokenizer.mask_token_id).argmax())
48
+ print(tokenizer.decode([int(logits[0, mask].argmax())]))
49
+ ```
50
+
51
+ Load any ModernBERT variant the same way with `from_weights("kerasformers/<variant>")`:
52
+
53
+ | Variant | Hub | layers | embed_dim |
54
+ |---|---|---|---|
55
+ | `modernbert_base` | [`kerasformers/modernbert_base`](https://huggingface.co/kerasformers/modernbert_base) | 22 | 768 |
56
+ | `modernbert_large` | [`kerasformers/modernbert_large`](https://huggingface.co/kerasformers/modernbert_large) | 28 | 1024 |
57
+
58
+ ## Available classes
59
+
60
+ Load any of these from this repo with `from_weights("kerasformers/modernbert_base")` (or on the fly via the `hf:` prefix). The pretrained backbone is shared; task heads not stored in this checkpoint start randomly initialized, ready for fine-tuning (or load a `hf:` fine-tune).
61
+
62
+ | Class | Task |
63
+ |---|---|
64
+ | `ModernBertModel` | Encoder backbone |
65
+ | `ModernBertMaskedLM` | Masked language modeling (fill-mask) |
66
+ | `ModernBertSequenceClassify` | Sequence classification |
67
+ | `ModernBertTokenClassify` | Token classification (NER / POS) |
68
+ | `ModernBertQnA` | Extractive question answering |
69
+ | `ModernBertMultipleChoice` | Multiple choice |
70
+
71
+ ```python
72
+ from kerasformers.models.modernbert import ModernBertSequenceClassify
73
+ model = ModernBertSequenceClassify.from_weights("kerasformers/modernbert_base")
74
+ ```
75
+
76
+ ## Tips
77
+
78
+ - Set `KERAS_BACKEND` **before** importing Keras / kerasformers.
79
+ - Prefer `ModernBertTokenizer.from_weights(...)` so tokenization matches.
80
+ - Use `[MASK]` (not `<mask>`).
81
+ - ModernBERT has no token-type ids; the tokenizer emits only `input_ids` / `attention_mask`.
82
+ - See [ModernBERT docs](https://imvision12.github.io/KerasFormers/modernbert/) and [Loading Weights](https://imvision12.github.io/KerasFormers/loading_weights/).
83
+ - Community / upstream safetensors still work via the `hf:` prefix, e.g. `ModernBertMaskedLM.from_weights("hf:answerdotai/ModernBERT-base")`.
84
+
85
+ ## Special Thanks
86
+
87
+ A huge thank you to the Answer.AI and LightOn authors for creating and releasing ModernBERT.
88
+
89
+ License: Apache 2.0.
kf_config.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "library_name": "kerasformers",
3
+ "kerasformers_version": "1.2.3",
4
+ "model_module": "kerasformers.models.modernbert",
5
+ "model_class": "ModernBertModel",
6
+ "variant": "modernbert_base",
7
+ "weights": "model.weights.h5",
8
+ "schema_version": 2,
9
+ "weight_dtype": "float32",
10
+ "model_type": "modernbert",
11
+ "text_config": {
12
+ "vocab_size": 50368,
13
+ "embed_dim": 768,
14
+ "num_layers": 22,
15
+ "num_heads": 12,
16
+ "mlp_dim": 1152,
17
+ "max_position_embeddings": 8192,
18
+ "hidden_act": "gelu",
19
+ "norm_eps": 1e-05,
20
+ "local_attention": 128,
21
+ "global_attn_every_n_layers": 3,
22
+ "global_rope_theta": 160000.0,
23
+ "local_rope_theta": 10000.0,
24
+ "pad_token_id": 50283
25
+ }
26
+ }
model.weights.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a69de365908e448a53bb666d97b6814fd8f86797da5d6eba9df0723b1ba08f5e
3
+ size 754004168
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff