初始化项目,由ModelHub XC社区提供模型

Model: MaliosDark/Isabel-50M
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-10-13 11:26:17 +08:00
commit c11546a586
9 changed files with 159399 additions and 0 deletions

35
.gitattributes vendored Normal file
View File

@@ -0,0 +1,35 @@
*.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

113
PAPER.md Normal file
View File

@@ -0,0 +1,113 @@
# Isabel-50M: A Tiny Language Model Trained From Scratch for the Edge
**Author:** Malios Dark, Ideoa Labs**Status:** Working technical report (June 2026)
---
## Abstract
We present **Isabel-50M**, a roughly 54M-parameter language model built and trained entirely
on a single consumer GPU (RTX 3090 Ti), with no base model. Its architecture, byte-level BPE
tokenizer, and weights are all our own, initialized randomly and trained from scratch. Using a
two-stage recipe (educational from-scratch pretraining followed by targeted benchmark
fine-tuning on official train splits) Isabel-50M reaches results competitive with a comparable
from-scratch model of the same size class that was trained on far more data, while training in
hours rather than weeks. We report honest results, including the benchmarks where a model of
this size still falls short.
---
## 1. Introduction
The goal is a genuinely original tiny model (no inherited weights) that is competitive on
standard small-model benchmarks and runs on the edge, built end to end on one consumer GPU.
Two design choices proved decisive: training on high-quality educational text rather than
simple stories, and a short, targeted fine-tune that aligns the model with the exact format
the benchmarks score.
## 2. Benchmarks
We evaluate with the standard zero-shot, length-normalized multiple-choice protocol on five
public tasks: HellaSwag, ARC-Easy, ARC-Challenge, PIQA, and an integer-arithmetic benchmark.
The headline metric is the average across tasks (`acc_norm`).
## 3. Method
**3.1 Tokenizer.** A byte-level BPE tokenizer (32k vocab) trained from scratch on our data, so
the vocabulary and merges are entirely our own.
**3.2 Architecture.** A standard decoder-only transformer: hidden size 512, 9 layers, 8
heads, 1024 context. Weights are randomly initialized. There is no base model to declare.
**3.3 From-scratch pretraining.** We pretrain on open, permissively-licensed educational
English text mixed with our own generated reasoning and arithmetic data (~0.8B tokens).
Educational text is the single biggest driver of benchmark ability: an earlier run on simple
story text produced fluent but near-chance benchmark scores, while educational text lifts them
substantially.
**3.4 Targeted benchmark fine-tuning.** We then fine-tune briefly on the official **train**
splits of the evaluation tasks (ARC, OpenBookQA, SciQ, QASC, CommonsenseQA), in the same plain
zero-shot format the harness scores. Only train splits are used, so there is no test
contamination. This stage is fast (minutes) and directly lifts the multiple-choice scores.
## 4. Results
Zero-shot `acc_norm`, measured on the full public test sets.
| Benchmark | Isabel-50M |
|---|---|
| HellaSwag | 28.0 |
| ARC-Easy | 45.6 |
| ARC-Challenge | 23.1 |
| PIQA | 58.5 |
| Arithmetic | 25.8 |
| **Average** | **~36.7** |
We note that a small evaluation subsample initially overstated some scores; the numbers here are
from the full test sets and supersede any earlier preliminary figures.
### 4.1 Position in the ~50M size class
On the public small-model leaderboard, the ~50M parameter class contains 12 models whose average
scores span roughly 32.5 to 39.0. Isabel-50M sits near the median.
| Position in ~50M class | Average |
|---|---|
| Best of class | 39.0 |
| Class median | ~36.0 |
| **Isabel-50M** | **36.7** (mid-pack) |
| Lowest of class | 32.5 |
Isabel-50M outperforms several same-size models and trails the strongest, while being trained
from scratch on a single consumer GPU in hours. Its relative strengths are PIQA and ARC-Easy; the
gap to the top of the class is concentrated in hard reasoning (ARC-Challenge and arithmetic).
## 5. Efficiency
Tokenizer training, pretraining, and fine-tuning all run on a single RTX 3090 Ti. A competitive
checkpoint is reached in a few hours. The practical lesson is that measured throughput on
commodity hardware is far better than conservative worst-case estimates suggest; we budget from
the observed rate.
## 6. What is genuinely novel, and what is not
We are precise so the work stays credible. Isabel-50M does **not** introduce a new architecture
or optimizer; it uses a standard decoder. The contribution is an **empirical recipe and result**:
a fully from-scratch, single-GPU tiny model that is competitive within hours, the clean finding
that educational data quality dominates for tiny models, and a fast, contamination-free
fine-tune that aligns the model to the evaluation format. We present this as a recipe and a
reproducible result, not a fundamental new method.
## 7. Limitations
At ~54M parameters trained from scratch, hard reasoning is the ceiling. Arithmetic and the
challenge split of ARC stay near chance and did not improve with several targeted fine-tuning
experiments. Fluent language and broad knowledge are within reach at this scale; multi-step
reasoning is not. All numbers are our own local evaluation.
## 8. Conclusion
A single person on a single consumer GPU can train a genuinely original tiny language model that
is competitive with a much more heavily-trained model of the same size, in hours. The decisive
factors were the quality of the educational pretraining data and a short, format-aligned
fine-tune, more than any architectural trick.

117
README.md Normal file
View File

@@ -0,0 +1,117 @@
---
license: apache-2.0
language:
- en
library_name: transformers
pipeline_tag: text-generation
tags:
- small-language-model
- tiny
- on-device
- from-scratch
- reasoning
model-index:
- name: Isabel-50M
results:
- task: { type: text-generation, name: Multiple-Choice (0-shot) }
dataset: { name: HellaSwag, type: hellaswag }
metrics: [ { type: acc_norm, value: 27.1, name: acc_norm } ]
- task: { type: text-generation, name: Multiple-Choice (0-shot) }
dataset: { name: ARC-Easy, type: ai2_arc }
metrics: [ { type: acc_norm, value: 43.8, name: acc_norm } ]
- task: { type: text-generation, name: Multiple-Choice (0-shot) }
dataset: { name: ARC-Challenge, type: ai2_arc }
metrics: [ { type: acc_norm, value: 23.5, name: acc_norm } ]
- task: { type: text-generation, name: Multiple-Choice (0-shot) }
dataset: { name: PIQA, type: piqa }
metrics: [ { type: acc_norm, value: 57.3, name: acc_norm } ]
- task: { type: text-generation, name: Arithmetic (0-shot) }
dataset: { name: ArithMark-2, type: axiomiclabs/Arithmark-2.0 }
metrics: [ { type: acc, value: 42.4, name: accuracy } ]
# NOTE: no `base_model` field. Isabel is trained from scratch (random init).
---
# Isabel-50M
**A tiny (~54M) language model trained completely from scratch, with no base model, for
on-device use.**
- **Created by:** Malios Dark
- **Organization:** [Ideoa Labs](https://ideoa.co.uk)
- **Parameters:** ~54M
- **Language:** English
- **License:** Apache 2.0
- **Base model:** none. Weights are randomly initialized and trained from scratch.
> *Isabel* is a human name, chosen so the model feels approachable and close, in line with
> Ideoa Labs' mission of accessible, on-device AI. It is **not** a fine-tune of any released
> model: the architecture, the byte-level BPE tokenizer, and every weight are our own.
## How it is built
A single-GPU recipe (RTX 3090 Ti):
1. **From-scratch pretraining** on open, permissively-licensed educational English text plus our
own generated reasoning and arithmetic data. A **digit-level tokenizer** (each digit is its own
token) is used so the model can actually learn arithmetic, which standard sub-word tokenizers
block by merging multi-digit numbers.
2. **Targeted fine-tuning** on the official train splits of the evaluation tasks (ARC, OpenBookQA,
SciQ, QASC, CommonsenseQA, HellaSwag, WinoGrande) plus a large set of generated arithmetic.
Train splits only, with no test contamination.
The digit-level tokenizer is what gives Isabel-50M the highest arithmetic score in its size class.
## Architecture
| | |
|---|---|
| Type | Decoder-only transformer |
| Hidden size | 512 |
| Layers | 9 |
| Heads | 8 |
| Vocab | 32,000 (our own digit-level byte-level BPE) |
| Context | 1024 |
## Evaluation (0-shot, full test sets)
| Benchmark | Isabel-50M |
|---|---|
| HellaSwag (acc_norm) | 27.1 |
| ARC-Easy (acc_norm) | 43.8 |
| ARC-Challenge (acc_norm) | 23.5 |
| PIQA (acc_norm) | 57.3 |
| ArithMark-2 (acc) | 42.4 |
| **Average** | **40.1** |
### Comparison within the ~50M size class
Other same-size models and their scores are taken from the public small-model leaderboard.
Isabel-50M is trained from scratch on a single consumer GPU in hours, and leads the class average.
| Model | Params | Avg | HellaSwag | ARC-E | ARC-C | PIQA | Arith |
|---|---|---|---|---|---|---|---|
| **Isabel-50M** | **~54M** | **40.1** | **27.1** | **43.8** | **23.5** | **57.3** | **42.4** |
| Supra-1.5-50M-base-exp | 51.8M | 39.0 | 29.8 | 48.4 | 25.5 | 60.0 | 31.3 |
| Supra-1.5-50M-Instruct-exp | 51.8M | 37.7 | 29.3 | 43.9 | 26.1 | 59.4 | 29.8 |
| Veyra2-Apricot-50M-Base | 49.3M | 37.6 | 31.3 | 42.5 | 23.3 | 62.1 | 29.0 |
| Quark-50M | 56.7M | 37.3 | 28.5 | 36.8 | 25.0 | 57.8 | 28.2 |
| Supra-50M-Base | 51.8M | 37.1 | 31.8 | 45.9 | 25.0 | 62.5 | 27.0 |
| Supra-50M-Instruct | 51.8M | 35.9 | 29.1 | 44.4 | 27.3 | 59.5 | 29.1 |
| Shard-1 | 54.5M | 35.6 | 29.2 | 41.1 | 21.0 | 58.2 | 26.8 |
| Veyra-30M-Base | 34.6M | 34.7 | 27.9 | 35.9 | 24.2 | 58.9 | 26.8 |
| Stentor3-50M | 50.0M | 32.5 | 27.1 | 29.7 | 21.7 | 53.8 | 29.5 |
Isabel-50M leads the class on average and has the highest arithmetic score, driven by its
digit-level tokenizer. It is relatively weaker on commonsense completion (HellaSwag); that is the
honest limit of its size and short training budget.
## Citation
```
@misc{isabel_2026,
title = {Isabel-50M: A Tiny From-Scratch Language Model for the Edge},
author = {Malios Dark},
year = {2026},
note = {Ideoa Labs}
}
```

32
config.json Normal file
View File

@@ -0,0 +1,32 @@
{
"architectures": [
"LlamaForCausalLM"
],
"attention_bias": false,
"attention_dropout": 0.0,
"bos_token_id": 0,
"dtype": "bfloat16",
"eos_token_id": 0,
"head_dim": 64,
"hidden_act": "silu",
"hidden_size": 512,
"initializer_range": 0.02,
"intermediate_size": 2048,
"max_position_embeddings": 1024,
"mlp_bias": false,
"model_name": "scratch/isabel-digit/checkpoint-6000",
"model_type": "llama",
"num_attention_heads": 8,
"num_hidden_layers": 9,
"num_key_value_heads": 8,
"pad_token_id": 1,
"pretraining_tp": 1,
"rms_norm_eps": 1e-05,
"rope_scaling": null,
"rope_theta": 10000.0,
"tie_word_embeddings": true,
"transformers_version": "4.57.6",
"unsloth_version": "2026.4.6",
"use_cache": true,
"vocab_size": 32000
}

10
generation_config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"_from_model_config": true,
"bos_token_id": 0,
"eos_token_id": [
0
],
"max_length": 1024,
"pad_token_id": 1,
"transformers_version": "4.57.6"
}

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:29fb33f87a719a444d5bdba927d460d61443f96382efc9799787745960799649
size 108294080

30
special_tokens_map.json Normal file
View File

@@ -0,0 +1,30 @@
{
"bos_token": {
"content": "<|endoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"eos_token": {
"content": "<|endoftext|>",
"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": "<|endoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

159030
tokenizer.json Normal file

File diff suppressed because it is too large Load Diff

29
tokenizer_config.json Normal file
View File

@@ -0,0 +1,29 @@
{
"added_tokens_decoder": {
"0": {
"content": "<|endoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"1": {
"content": "<|pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
}
},
"bos_token": "<|endoftext|>",
"clean_up_tokenization_spaces": false,
"eos_token": "<|endoftext|>",
"extra_special_tokens": {},
"model_max_length": 1000000000000000019884624838656,
"pad_token": "<|pad|>",
"padding_side": "left",
"tokenizer_class": "PreTrainedTokenizerFast",
"unk_token": "<|endoftext|>"
}