初始化项目,由ModelHub XC社区提供模型
Model: MaliosDark/Isabel-50M Source: Original Platform
This commit is contained in:
35
.gitattributes
vendored
Normal file
35
.gitattributes
vendored
Normal 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
113
PAPER.md
Normal 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
117
README.md
Normal 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
32
config.json
Normal 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
10
generation_config.json
Normal 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
3
model.safetensors
Normal 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
30
special_tokens_map.json
Normal 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
159030
tokenizer.json
Normal file
File diff suppressed because it is too large
Load Diff
29
tokenizer_config.json
Normal file
29
tokenizer_config.json
Normal 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|>"
|
||||
}
|
||||
Reference in New Issue
Block a user