smallprint-4b is an open-weight model from Peter Parker, released under Apache License 2.0. It has 7.9B parameters and a 131,072-token context. At 16-bit it needs about 19.1 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.
Extracts fifteen figures from the primary financial statements of a US SEC 10-K or 10-Q, as JSON. A LoRA fine-tune of google/gemma-4-E4B at revision 411aa17b749aa952df1359d2dcea73917a544d9a, trained on filings with their XBRL facts as the labels.
Runs On
What it takes to serve smallprint-4b (7.9B parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.
| Precision | Weights | Memory needed | Cheapest setup | Per hour | Also fits |
|---|---|---|---|---|---|
| 16-bit | 15.9 GB | 19.1 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 8-bit | 7.9 GB | 9.5 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
| 4-bit | 4.0 GB | 4.8 GB | 1x MI300X (192 GB) Vultr |
$1.85 | 1x H100 $1.99 · 1x MI325X $2.00 |
Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.
smallprint-4b on every accelerator the SAVRN Index prices, at every precision
Model Card
By Peter Parker, published under apache-2.0, revision 0d4606a8a570.
Extracts fifteen figures from the primary financial statements of a US SEC 10-K or 10-Q, as JSON. A LoRA fine-tune of google/gemma-4-E4B at revision 411aa17b749aa952df1359d2dcea73917a544d9a, trained on filings with their XBRL facts as the labels. No model graded another model anywhere in producing these numbers. 705 filings. On filings published before the base model's training cutoff it scores 95.1% (94.7% to 95.4%), against 96.9% (96.5% to 97.3%) after it. That difference is the contamination gap, reported and never used as the headline. Non-inferiority field by field, paired on the same filings, a three-point margin per field and Holm's adjustment across the fifteen, decided by the…
Read Peter Parker's full model card
4b-r16-lr2e-4-nall-s0-e1
Extracts fifteen figures from the primary financial statements of a US SEC 10-K or 10-Q,
as JSON. A LoRA fine-tune of google/gemma-4-E4B at revision
411aa17b749aa952df1359d2dcea73917a544d9a, trained on filings with their XBRL facts as the labels. No model graded
another model anywhere in producing these numbers.
Results, on filings published after the base model's training cutoff
| This model | openai/gpt-5.6-luna, zero_shot | |
|---|---|---|
| Fields correct | 96.9% (96.5% to 97.3%) | 96.2% (95.8% to 96.6%) |
| Every field right on a filing | 66.5% (63.0% to 69.9%) | 58.3% (54.6% to 62.0%) |
| Answers that are not valid JSON | 0.0% (0.0% to 0.0%) | 0.0% (0.0% to 0.0%) |
| Cost per 1,000 extractions | not costed | US$1.01 |
705 filings. On filings published before the base model's training cutoff it scores 95.1% (94.7% to 95.4%), against 96.9% (96.5% to 97.3%) after it. That difference is the contamination gap, reported and never used as the headline.
The release gate
Non-inferiority field by field, paired on the same filings, a three-point margin per field and Holm's adjustment across the fifteen, decided by the portfolio's release gate (project 03) on this model's outcomes. A field blocks when the gate cannot rule out a three-point loss on it.
| Against | Verdict | Fields that block | Record |
|---|---|---|---|
openai/gpt-5.6-luna |
block | net_income -2.4 (-4.1 to -0.7) |
ab7d4c1689c8255d |
openai/gpt-5.6-sol |
block | cost_of_revenue -1.8 (-3.1 to -0.6), net_income -3.8 (-5.5 to -2.3) |
0ec6a1a9abd68bd3 |
How it fails
| Failure | Count | Per 1,000 fields |
|---|---|---|
| Invents a figure the filing does not report | 205 | 19.4 |
| Reads the prior-period column | 3 | 0.3 |
| Drops or misapplies the reporting scale | 35 | 3.3 |
| Reads a loss as a profit, or the reverse | 2 | 0.2 |
| Leaves out a figure the filing does report | 26 | 2.5 |
| Takes a figure from the wrong line | 58 | 5.5 |
| Answer is not valid JSON of the schema | 0 | 0.0 |
Per field
| Field | Accuracy (95% CI) | Misses by reason |
|---|---|---|
period_end |
100.0% (100.0% to 100.0%) | none |
fiscal_period |
98.2% (97.2% to 99.0%) | wrong_value 13 |
revenue |
98.6% (97.6% to 99.4%) | wrong_value 6, scale 4 |
cost_of_revenue |
86.7% (84.1% to 89.1%) | hallucinated 76, missing 14, scale 4 |
operating_income |
97.7% (96.6% to 98.7%) | hallucinated 11, scale 4, missing 1 |
net_income |
94.9% (93.2% to 96.5%) | wrong_value 30, scale 6 |
eps_basic |
92.6% (90.6% to 94.5%) | hallucinated 51, wrong_value 1 |
eps_diluted |
94.3% (92.5% to 96.0%) | hallucinated 33, wrong_period 3, sign 2, wrong_value 1, missing 1 |
shares_diluted |
92.8% (90.8% to 94.6%) | hallucinated 31, scale 16, wrong_value 3, missing 1 |
total_assets |
100.0% (100.0% to 100.0%) | none |
total_liabilities |
99.6% (99.0% to 100.0%) | hallucinated 3 |
cash_and_equivalents |
99.7% (99.3% to 100.0%) | wrong_value 1, missing 1 |
stockholders_equity |
99.6% (99.0% to 100.0%) | wrong_value 2, scale 1 |
auditor_name |
99.9% (99.6% to 100.0%) | wrong_value 1 |
state_of_incorporation |
98.9% (98.0% to 99.6%) | missing 8 |
Quantised formats
Each format is judged against this model's bf16 weights over the same filings, and is published only if the lower end of its paired interval is above -1.0% of field accuracy.
| Format | Paired delta vs bf16 (95% CI) | Worst field | Published |
|---|---|---|---|
| gguf-q8_0 | +0.0% (-0.1% to +0.1%) | eps_diluted -0.3% |
yes |
| gguf-q4_k_m | -96.8% (-97.2% to -96.3%) | period_end -99.9% |
no |
Training
| Base | google/gemma-4-E4B at 411aa17b749aa952df1359d2dcea73917a544d9a |
| Method | QLoRA, rank 16, alpha 32, dropout 0.05 |
| Learning rate | 0.0002, cosine, warm-up 3% |
| Examples | 5,060 training filings, 713 validation |
| Epochs | 1 |
| Seed | 0 |
| Prompt fingerprint | e015ec5e057be645 |
| Steps | 317 |
| Validation loss | 0.009492110460996628 |
| Libraries | accelerate 1.15.0, bitsandbytes 0.50.2, peft 0.21.0, python 3.13.15, torch 2.14.0+cu130, transformers 5.17.0, trl 1.13.0 |
Limitations
- Trained and measured on US SEC 10-K and 10-Q filings under US GAAP. Nothing here says how it does on IFRS statements, on other regulators' filings, or on documents that are not financial statements.
- Banks and savings institutions are excluded from the corpus, and funds, trusts and pre-revenue companies are underrepresented. A score here says nothing about their statements. See the dataset's datasheet.
- The input is the located statements, not a whole filing. Given a whole filing, it has to find them first, which this model was not measured on.
- Every label is an XBRL fact the company filed, checked to be printed on the page. The label error rate from the hand audit is the ceiling on how far any of these numbers can be trusted.
Configuration
- Architecture
- Gemma4ForConditionalGeneration
- Context length (tokens)
- 131,072
- Layers
- 42
- Hidden size
- 2,560
- Feed-forward size
- 10,240
- Attention heads
- 8
- Key/value heads
- 2
- Head dimension
- 256
- Vocabulary size
- 262,144
- Sliding window (tokens)
- 512
- Model type
- gemma4
Identity and Version
- Repository
- Peter-A-P/smallprint-4b
- Publisher
- Peter Parker
- Task
- Not stated by the source
- Modality
- Other
- Library
- Not stated by the source
- Parameters
- 7.9B parameters
- Languages
- sec-filings
- Revision
- 0d4606a8a57001ed74118979d0152dcff3d2fa1d
- First published
- 2026-09-30
- Last updated
- 2026-10-03
Files and Weights
10 files, 15.9 GB in total. The weights are 1 file totalling 15.9 GB in safetensors.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| model.safetensors | Weights | 15.9 GB | c294e018b7d5 |
| config.json | Configuration | 5.4 KB | — |
| generation_config.json | Configuration | 93 B | — |
| merge.json | Configuration | 705 B | — |
| processor_config.json | Configuration | 1.7 KB | — |
| README.md | Documentation | 5.3 KB | — |
| chat_template.jinja | Other | 18.6 KB | — |
| .gitattributes | Repository | 1.6 KB | — |
| tokenizer.json | Tokenizer | 32.2 MB | 12bac982b793 |
| tokenizer_config.json | Tokenizer | 1.5 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 15.9 GB
Released by Peter Parker through its official repository on Hugging Face. Read the license.
Built From
- Adapter of google/gemma-4-E4B
- Derived from google/gemma-4-E4B
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 15.9 GB |
| 16-bit | 15.9 GB |
| 8-bit | 7.9 GB |
| 4-bit | 4.0 GB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Questions About smallprint-4b
How much GPU memory does smallprint-4b need?
About 19.1 GB at 16-bit and 4.8 GB at 4-bit: the weights (7.9B parameters) plus a working margin. A long context needs more.
What is the cheapest GPU to run smallprint-4b on?
At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.
Can I use smallprint-4b commercially?
Yes. smallprint-4b is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.
What is smallprint-4b's context length?
131,072 tokens, from the maximum position embeddings in its published configuration.