初始化项目,由ModelHub XC社区提供模型
Model: openeurollm/oellm-9b-128k-theta32m-v3 Source: Original Platform
This commit is contained in:
36
.gitattributes
vendored
Normal file
36
.gitattributes
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.arrow filter=lfs diff=lfs merge=lfs -text
|
||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
||||
*.ftz filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.h5 filter=lfs diff=lfs merge=lfs -text
|
||||
*.joblib filter=lfs diff=lfs merge=lfs -text
|
||||
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
||||
*.model filter=lfs diff=lfs merge=lfs -text
|
||||
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
||||
*.npy filter=lfs diff=lfs merge=lfs -text
|
||||
*.npz filter=lfs diff=lfs merge=lfs -text
|
||||
*.onnx filter=lfs diff=lfs merge=lfs -text
|
||||
*.ot filter=lfs diff=lfs merge=lfs -text
|
||||
*.parquet filter=lfs diff=lfs merge=lfs -text
|
||||
*.pb filter=lfs diff=lfs merge=lfs -text
|
||||
*.pickle filter=lfs diff=lfs merge=lfs -text
|
||||
*.pkl filter=lfs diff=lfs merge=lfs -text
|
||||
*.pt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pth filter=lfs diff=lfs merge=lfs -text
|
||||
*.rar filter=lfs diff=lfs merge=lfs -text
|
||||
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
||||
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tar filter=lfs diff=lfs merge=lfs -text
|
||||
*.tflite filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.wasm filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
||||
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
||||
77
README.md
Normal file
77
README.md
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
language: [en, sv, de, fr, es, it, nl, pl, pt, cs, fi, da, el, bg, hr, hu, ro, sk, sl, et, lt, lv, ga, mt, eu, gl, is, nb, nn, sr, uk, ca, mk, sq, oc, lb, bs]
|
||||
tags: [long-context, rope, abf, niah, qwen3, openeurollm, base-model, 128k]
|
||||
pipeline_tag: text-generation
|
||||
library_name: transformers
|
||||
---
|
||||
|
||||
# OELLM 9B — 128K context (ABF, θ=32M) — v3 (full training)
|
||||
|
||||
**Full-training production version** of [`oellm-9b-128k-theta32m`](https://huggingface.co/birgermoell/oellm-9b-128k-theta32m).
|
||||
Long-context extension of OpenEuroLLM `baby_9b_dense` (Qwen3 dense 9B), 4K → **128K** via native
|
||||
ABF (RoPE θ-scaling). Same θ=32M config as the sweep arm but trained on **2B tokens** (≈6×).
|
||||
**Base model — not instruction-tuned.** Multilingual.
|
||||
|
||||
## Evaluation — verified, multilingual (this checkpoint)
|
||||
Base-LM forced-choice NIAH, depth-stratified, at **128K**, 12 European languages:
|
||||
|
||||
| metric | result |
|
||||
|---|---|
|
||||
| **Overall 128K** | **100% (341/341)** |
|
||||
| **depth-0 (far start)** | **100% in every language** (6/6 each) |
|
||||
| Languages | cs de el en es fi fr hu pl pt sv uk — **all 100%** |
|
||||
| 4K / 16K / 64K | 100% |
|
||||
|
||||
Full training lifted the two languages that were 96% in the sweep arm (el, sv) to 100%.
|
||||
|
||||
## Why θ=32M (the key finding)
|
||||
Far-position (depth-0) retrieval failure at long context is a **RoPE high-dimension OOD**
|
||||
problem, **not** a data problem — fixed by scaling θ to the target length. Critical θ ≈ doubles
|
||||
per length-octave: 64K→8M, 128K→16M→**32M (100%)**, 256K→~32M. θ ablation at 128K depth-0:
|
||||
2M/5M→0%, 8M→0%, 16M→90%, **32M→100%**. (cf. LongRoPE2, arXiv:2502.20082.)
|
||||
|
||||
## How to reproduce
|
||||
**Base:** OELLM `baby_9b_dense` (Qwen3 dense): 36 layers, hidden 4096, FFN 12288, 32 heads /
|
||||
8 KV (GQA), kv-channels 128, qk-layernorm, RMSNorm, SwiGLU, untied embeddings, vocab 262144,
|
||||
`openeurollm/tokenizer-256k`, native 4K.
|
||||
|
||||
**Recipe:** staged native ABF, `4K→16K→32K→64K(θ=2M)→128K(θ=32M)`; this model = the **128K@θ=32M
|
||||
stage trained to 2B tokens** from the 64K checkpoint (`--finetune`).
|
||||
|
||||
**Training (Megatron-LM, LUMI 16× MI250X):**
|
||||
```
|
||||
--rotary-base 32000000 --seq-length 131072 --max-position-embeddings 131072 --use-flash-attn
|
||||
--tensor-model-parallel-size 8 --context-parallel-size 8 --sequence-parallel --use-distributed-optimizer
|
||||
--micro-batch-size 1 --global-batch-size 64 --bf16 --train-iters ~238 (2B tokens)
|
||||
--lr 1e-5 --min-lr 1e-6 --lr-decay-style cosine --weight-decay 0.1 --clip-grad 1.0
|
||||
--recompute-activations --recompute-granularity selective --save-interval 100
|
||||
--qk-layernorm --normalization RMSNorm --swiglu --group-query-attention --num-query-groups 8
|
||||
```
|
||||
ROCm 6.4.4 / PyTorch 2.9 / TE 2.4 / FA 2.8; ~490 tok/s/GPU at 128K.
|
||||
|
||||
**Data:** Jouni Luoma's length-biased multilingual long-context mix (finepdfs all langs + edu,
|
||||
dclm, hplt3, multisynth, nemotron, megamath, starcoder, pes2o, arxiv, wiki; tiered
|
||||
short/medium/long). Note: depth-0 is **insensitive** to the data mix — θ is the lever.
|
||||
|
||||
**Reproduce the eval:**
|
||||
```
|
||||
python scripts/eval_base_lm_niah.py --model <this-model> \
|
||||
--context-lengths 4096 16384 65536 131072 --depths 0.0 0.25 0.5 0.75 1.0 \
|
||||
--languages en de fr es nl pl sv fi cs it pt el hu uk da --trials 6
|
||||
```
|
||||
Code / write-ups: https://github.com/BirgerMoell/openeuro-longctx-datamix
|
||||
|
||||
## Usage
|
||||
```python
|
||||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||||
import torch
|
||||
m = AutoModelForCausalLM.from_pretrained("birgermoell/oellm-9b-128k-theta32m-v3",
|
||||
torch_dtype=torch.bfloat16, device_map="auto")
|
||||
tok = AutoTokenizer.from_pretrained("birgermoell/oellm-9b-128k-theta32m-v3")
|
||||
```
|
||||
|
||||
## Caveats
|
||||
- **Base model** (no instruction tuning) — use as a completion model.
|
||||
- Evaluated with **single-needle** forced-choice NIAH; broader multi-task RULER not yet run.
|
||||
- Keep `rope_theta=32000000`, `max_position_embeddings=131072` for 128K.
|
||||
3
added_tokens.json
Normal file
3
added_tokens.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"<pad>": 262144
|
||||
}
|
||||
68
config.json
Normal file
68
config.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"architectures": [
|
||||
"Qwen3ForCausalLM"
|
||||
],
|
||||
"attention_bias": false,
|
||||
"attention_dropout": 0.0,
|
||||
"bos_token_id": 1,
|
||||
"dtype": "bfloat16",
|
||||
"eos_token_id": 2,
|
||||
"head_dim": 128,
|
||||
"hidden_act": "silu",
|
||||
"hidden_size": 4096,
|
||||
"initializer_range": 0.02,
|
||||
"intermediate_size": 12288,
|
||||
"layer_types": [
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention",
|
||||
"full_attention"
|
||||
],
|
||||
"max_position_embeddings": 131072,
|
||||
"max_window_layers": 28,
|
||||
"model_type": "qwen3",
|
||||
"num_attention_heads": 32,
|
||||
"num_hidden_layers": 36,
|
||||
"num_key_value_heads": 8,
|
||||
"rms_norm_eps": 1e-05,
|
||||
"rope_scaling": null,
|
||||
"rope_theta": 32000000,
|
||||
"sliding_window": null,
|
||||
"tie_word_embeddings": false,
|
||||
"transformers_version": "4.57.3",
|
||||
"use_cache": true,
|
||||
"use_sliding_window": false,
|
||||
"vocab_size": 263168
|
||||
}
|
||||
3
pytorch_model.bin
Normal file
3
pytorch_model.bin
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6d2e969ff77e8320faf6fc5aa0bb115b8f10441e0c31f2fc677c05a94221c94a
|
||||
size 18204021587
|
||||
142
special_tokens_map.json
Normal file
142
special_tokens_map.json
Normal file
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"additional_special_tokens": [
|
||||
"<start_of_turn>",
|
||||
"<end_of_turn>",
|
||||
"<start_of_image>",
|
||||
"<end_of_image>",
|
||||
"<image_soft_token>",
|
||||
"<fim_prefix>",
|
||||
"<fim_middle>",
|
||||
"<fim_suffix>",
|
||||
"<tool_call>",
|
||||
"</tool_call>",
|
||||
"<unused_0>",
|
||||
"<unused_1>",
|
||||
"<unused_2>",
|
||||
"<unused_3>",
|
||||
"<unused_4>",
|
||||
"<unused_5>",
|
||||
"<unused_6>",
|
||||
"<unused_7>",
|
||||
"<unused_8>",
|
||||
"<unused_9>",
|
||||
"<unused_10>",
|
||||
"<unused_11>",
|
||||
"<unused_12>",
|
||||
"<unused_13>",
|
||||
"<unused_14>",
|
||||
"<unused_15>",
|
||||
"<unused_16>",
|
||||
"<unused_17>",
|
||||
"<unused_18>",
|
||||
"<unused_19>",
|
||||
"<unused_20>",
|
||||
"<unused_21>",
|
||||
"<unused_22>",
|
||||
"<unused_23>",
|
||||
"<unused_24>",
|
||||
"<unused_25>",
|
||||
"<unused_26>",
|
||||
"<unused_27>",
|
||||
"<unused_28>",
|
||||
"<unused_29>",
|
||||
"<unused_30>",
|
||||
"<unused_31>",
|
||||
"<unused_32>",
|
||||
"<unused_33>",
|
||||
"<unused_34>",
|
||||
"<unused_35>",
|
||||
"<unused_36>",
|
||||
"<unused_37>",
|
||||
"<unused_38>",
|
||||
"<unused_39>",
|
||||
"<unused_40>",
|
||||
"<unused_41>",
|
||||
"<unused_42>",
|
||||
"<unused_43>",
|
||||
"<unused_44>",
|
||||
"<unused_45>",
|
||||
"<unused_46>",
|
||||
"<unused_47>",
|
||||
"<unused_48>",
|
||||
"<unused_49>",
|
||||
"<unused_50>",
|
||||
"<unused_51>",
|
||||
"<unused_52>",
|
||||
"<unused_53>",
|
||||
"<unused_54>",
|
||||
"<unused_55>",
|
||||
"<unused_56>",
|
||||
"<unused_57>",
|
||||
"<unused_58>",
|
||||
"<unused_59>",
|
||||
"<unused_60>",
|
||||
"<unused_61>",
|
||||
"<unused_62>",
|
||||
"<unused_63>",
|
||||
"<unused_64>",
|
||||
"<unused_65>",
|
||||
"<unused_66>",
|
||||
"<unused_67>",
|
||||
"<unused_68>",
|
||||
"<unused_69>",
|
||||
"<unused_70>",
|
||||
"<unused_71>",
|
||||
"<unused_72>",
|
||||
"<unused_73>",
|
||||
"<unused_74>",
|
||||
"<unused_75>",
|
||||
"<unused_76>",
|
||||
"<unused_77>",
|
||||
"<unused_78>",
|
||||
"<unused_79>",
|
||||
"<unused_80>",
|
||||
"<unused_81>",
|
||||
"<unused_82>",
|
||||
"<unused_83>",
|
||||
"<unused_84>",
|
||||
"<unused_85>",
|
||||
"<unused_86>",
|
||||
"<unused_87>",
|
||||
"<unused_88>",
|
||||
"<unused_89>",
|
||||
"<unused_90>",
|
||||
"<unused_91>",
|
||||
"<unused_92>",
|
||||
"<unused_93>",
|
||||
"<unused_94>",
|
||||
"<unused_95>",
|
||||
"<unused_96>",
|
||||
"<unused_97>",
|
||||
"<unused_98>",
|
||||
"<unused_99>"
|
||||
],
|
||||
"bos_token": {
|
||||
"content": "<bos>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"eos_token": {
|
||||
"content": "<eos>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"pad_token": {
|
||||
"content": "<pad>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"unk_token": {
|
||||
"content": "<unk>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
}
|
||||
}
|
||||
3
tokenizer.json
Normal file
3
tokenizer.json
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ce296af846f114e330e8e62887df4c6abafd4fd682434fb0ced1a3abfa2e04c1
|
||||
size 37807304
|
||||
3
tokenizer.model
Normal file
3
tokenizer.model
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ac214401227404105817141c21c6693e3b17c878465a42765d2c345310e003ce
|
||||
size 4876269
|
||||
1043
tokenizer_config.json
Normal file
1043
tokenizer_config.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user