Instructions to use AOSSIE/OpenVerifiableLLM-23M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use AOSSIE/OpenVerifiableLLM-23M with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf AOSSIE/OpenVerifiableLLM-23M:F32 # Run inference directly in the terminal: llama cli -hf AOSSIE/OpenVerifiableLLM-23M:F32
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf AOSSIE/OpenVerifiableLLM-23M:F32 # Run inference directly in the terminal: llama cli -hf AOSSIE/OpenVerifiableLLM-23M:F32
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf AOSSIE/OpenVerifiableLLM-23M:F32 # Run inference directly in the terminal: ./build/bin/llama cli -hf AOSSIE/OpenVerifiableLLM-23M:F32
Use Docker
docker model run hf.co/AOSSIE/OpenVerifiableLLM-23M:F32
- Llama new
- LM Studio
- Jan
- vLLM
How to use AOSSIE/OpenVerifiableLLM-23M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "AOSSIE/OpenVerifiableLLM-23M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AOSSIE/OpenVerifiableLLM-23M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/AOSSIE/OpenVerifiableLLM-23M:F32
- Ollama
How to use AOSSIE/OpenVerifiableLLM-23M with Ollama:
ollama run hf.co/AOSSIE/OpenVerifiableLLM-23M:F32
- Unsloth Desktop
- Docker Model Runner
How to use AOSSIE/OpenVerifiableLLM-23M with Docker Model Runner:
docker model run hf.co/AOSSIE/OpenVerifiableLLM-23M:F32
- Lemonade
How to use AOSSIE/OpenVerifiableLLM-23M with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull AOSSIE/OpenVerifiableLLM-23M:F32
Run and chat with the model
lemonade run user.OpenVerifiableLLM-23M-F32
List all available models
lemonade list
- Atomic Chat
OpenVerifiableLLM 23M: safetensors, GGUF, tokenizer, recipe and model card
Browse files- .gitattributes +1 -0
- Modelfile +13 -0
- README.md +93 -0
- base.safetensors +3 -0
- conversation.safetensors +3 -0
- ovl-23m-chat.gguf +3 -0
- recipe.json +25 -0
- tokenizer.json +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* 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
|
|
|
|
|
|
| 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
|
| 36 |
+
ovl-23m-chat.gguf filter=lfs diff=lfs merge=lfs -text
|
Modelfile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ollama build file for the released chat model. Build the GGUF first:
|
| 2 |
+
# python simple/export_gguf.py --run RUN --tokenizer PREP/tokenizer/tokenizer.json --out ovl-23m-chat.gguf
|
| 3 |
+
# ollama create openverifiablellm -f simple/Modelfile
|
| 4 |
+
# Run `ollama create` from the directory that holds ovl-23m-chat.gguf, or edit the FROM path.
|
| 5 |
+
FROM ./ovl-23m-chat.gguf
|
| 6 |
+
|
| 7 |
+
# The training format: <|user|> text <|eos|> <|assistant|> text <|eos|> ...
|
| 8 |
+
TEMPLATE """{{- range .Messages }}{{ if eq .Role "user" }}<|user|>{{ .Content }}<|eos|>{{ else if eq .Role "assistant" }}<|assistant|>{{ .Content }}<|eos|>{{ end }}{{ end }}<|assistant|>"""
|
| 9 |
+
|
| 10 |
+
PARAMETER stop "<|eos|>"
|
| 11 |
+
PARAMETER stop "<|user|>"
|
| 12 |
+
PARAMETER num_ctx 512
|
| 13 |
+
PARAMETER temperature 0.8
|
README.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: gpl-3.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
pipeline_tag: text-generation
|
| 6 |
+
tags:
|
| 7 |
+
- verifiable-training
|
| 8 |
+
- reproducibility
|
| 9 |
+
- gpt2
|
| 10 |
+
- gguf
|
| 11 |
+
datasets:
|
| 12 |
+
- AOSSIE/openverifiable-enwiki-20260901-20260918-r1-evidence
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# OpenVerifiableLLM 23M
|
| 16 |
+
|
| 17 |
+
A 23.1M-parameter GPT trained on exactly one pass over all of English Wikipedia (the 2026-09-01 dump),
|
| 18 |
+
then a short conversation phase. Its training can be recomputed bit for bit: all 37 training segments
|
| 19 |
+
were recomputed on a second RTX 5090 and matched. The model is small and often wrong about facts. The
|
| 20 |
+
point is that you can check how it was made.
|
| 21 |
+
|
| 22 |
+
- Code and docs: <https://github.com/AOSSIE-Org/OpenVerifiableLLM>
|
| 23 |
+
- Training data and the training record (chain, checkpoints, timestamped anchor):
|
| 24 |
+
[`AOSSIE/openverifiable-enwiki-20260901-20260918-r1-evidence`](https://huggingface.co/datasets/AOSSIE/openverifiable-enwiki-20260901-20260918-r1-evidence)
|
| 25 |
+
- How it works: <https://github.com/AOSSIE-Org/OpenVerifiableLLM/blob/main/docs/how-it-works.md>
|
| 26 |
+
|
| 27 |
+
## Files
|
| 28 |
+
|
| 29 |
+
| File | What it is | SHA-256 |
|
| 30 |
+
|---|---|---|
|
| 31 |
+
| `conversation.safetensors` | The chat model (chain entry 37) | `00c1c450acb2619f616af973d283fe5ef5cf1baaae5f16ff80bca97688f25168` |
|
| 32 |
+
| `base.safetensors` | The Wikipedia-only model, before the conversation phase (chain entry 31) | `5404ce5c7583e2e299d6e9fa44ed48e98bc5b5e11bc976905e8466a6fc5c36c2` |
|
| 33 |
+
| `ovl-23m-chat.gguf` | The chat model for llama.cpp and Ollama | `541d49c97b87cd4ed0acb90b4327535ee20b8c11c452e2583d460154e9d980de` |
|
| 34 |
+
| `Modelfile` | The Ollama build file, with the training chat format | `df4dacfc3191e56b1dc1195764ea66ca1a7695856be04ecec17d8dde4c66fc8b` |
|
| 35 |
+
| `recipe.json` | The training recipe: model size, schedule, seed | `28a2fb407a5582ae95c9e9b0bba2c14df946e87bba037800399c6059256b6e6d` |
|
| 36 |
+
| `tokenizer.json` | The byte-level BPE tokenizer (31,995 tokens after 5 control tokens) | `6eab0d9bcd5736cee484992b24e7a84459bee1cc3024c0e958a76842a57728c0` |
|
| 37 |
+
|
| 38 |
+
The safetensors files hold exactly the weights of the released `.pt` files, including both copies of
|
| 39 |
+
the tied embedding and output weights. The metadata key `ovl` records the `.pt` file's SHA-256 and the
|
| 40 |
+
model digest. `simple/export_safetensors.py` rebuilds these files byte for byte from the `.pt` files.
|
| 41 |
+
|
| 42 |
+
## Use it
|
| 43 |
+
|
| 44 |
+
```bash
|
| 45 |
+
ollama run ryoari/openverifiablellm "Tell me about the Moon."
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
The chat format is `<|user|>` question `<|eos|>` `<|assistant|>` answer `<|eos|>`. llama.cpp's outputs
|
| 49 |
+
are close to PyTorch's but not bit-identical, so use the safetensors files to check the model.
|
| 50 |
+
|
| 51 |
+
| | |
|
| 52 |
+
|---|---|
|
| 53 |
+
| Architecture | GPT-2-style: 6 layers, 6 heads, 384 dimensions, 512-token context, tied embeddings |
|
| 54 |
+
| Training | 560,177 Wikipedia updates and 441 conversation updates, batch 32 × 512 tokens, seed 1234 |
|
| 55 |
+
| Data | 7,232,582 Wikipedia articles (7,118,121,139 training targets) and 3,481 OpenAssistant conversations |
|
| 56 |
+
|
| 57 |
+
## Check it
|
| 58 |
+
|
| 59 |
+
On a laptop, check that a weights file is exactly the state in the timestamped training record. This
|
| 60 |
+
needs `ovl.py` from v1.1.0 or newer, Python 3.10 or newer, `git`, `openssl` and network access:
|
| 61 |
+
|
| 62 |
+
```bash
|
| 63 |
+
pip install huggingface_hub torch numpy safetensors
|
| 64 |
+
hf download AOSSIE/OpenVerifiableLLM-23M conversation.safetensors --local-dir model
|
| 65 |
+
hf download AOSSIE/openverifiable-enwiki-20260901-20260918-r1-evidence --repo-type dataset \
|
| 66 |
+
--include "release/simple-run/*" --exclude "*/ckpt-*" --exclude "*.pt" --local-dir ovl
|
| 67 |
+
git clone -q --depth 1 --branch v1.1.0 https://github.com/AOSSIE-Org/OpenVerifiableLLM ovl-code
|
| 68 |
+
OVL_DEVICE=cpu python ovl-code/simple/ovl.py verify --run ovl/release/simple-run --weights model/conversation.safetensors
|
| 69 |
+
# anchor ...: chain head MATCH (38 entries)
|
| 70 |
+
# anchor timestamp freetsa: OK (Oct 20 14:38:43 2026 GMT)
|
| 71 |
+
# anchor timestamp digicert: OK (Oct 20 14:38:43 2026 GMT)
|
| 72 |
+
# weights model/conversation.safetensors: MATCH chain entry 37
|
| 73 |
+
```
|
| 74 |
+
|
| 75 |
+
This is a consistency check: it recomputes no training. To verify the training itself, recompute a
|
| 76 |
+
segment on an RTX 5090 (about an hour, about US$1.50):
|
| 77 |
+
<https://github.com/AOSSIE-Org/OpenVerifiableLLM/blob/main/docs/verify.md>.
|
| 78 |
+
|
| 79 |
+
## Limits
|
| 80 |
+
|
| 81 |
+
- The model is small. It writes fluent, encyclopedia-style text, often gets facts wrong, and holds a
|
| 82 |
+
basic conversation. "Verified" is about how it was made, not about what it says.
|
| 83 |
+
- Bits match only on the training GPU type (RTX 5090). An RTX 4090, an H100 and a CPU give different
|
| 84 |
+
bits.
|
| 85 |
+
- So far every segment check was run by the project. No independent third party has checked one yet.
|
| 86 |
+
- The timestamps prove that the record existed by 2026-10-20 14:38:43 UTC, not when or how training
|
| 87 |
+
happened.
|
| 88 |
+
|
| 89 |
+
## License
|
| 90 |
+
|
| 91 |
+
GPL-3.0, like the code. The training data keeps its own terms: English Wikipedia text (generally
|
| 92 |
+
CC BY-SA 4.0, with documented exceptions) and OpenAssistant `oasst1` (Apache 2.0). See the dataset's
|
| 93 |
+
`LICENSES.md`.
|
base.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5404ce5c7583e2e299d6e9fa44ed48e98bc5b5e11bc976905e8466a6fc5c36c2
|
| 3 |
+
size 147980488
|
conversation.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:00c1c450acb2619f616af973d283fe5ef5cf1baaae5f16ff80bca97688f25168
|
| 3 |
+
size 147980496
|
ovl-23m-chat.gguf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:541d49c97b87cd4ed0acb90b4327535ee20b8c11c452e2583d460154e9d980de
|
| 3 |
+
size 142815808
|
recipe.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"batch_size": 32,
|
| 3 |
+
"boundary_every": 18080,
|
| 4 |
+
"context": 512,
|
| 5 |
+
"conversation_epochs": 3,
|
| 6 |
+
"init": "normal-0.02-tied-v1",
|
| 7 |
+
"model": {
|
| 8 |
+
"attn_impl": "manual",
|
| 9 |
+
"dropout": 0,
|
| 10 |
+
"embed_dim": 384,
|
| 11 |
+
"max_seq_len": 512,
|
| 12 |
+
"num_heads": 6,
|
| 13 |
+
"num_layers": 6,
|
| 14 |
+
"vocab_size": 32000
|
| 15 |
+
},
|
| 16 |
+
"schedule": {
|
| 17 |
+
"conversation": "0.0001",
|
| 18 |
+
"floor": "0.00006",
|
| 19 |
+
"peak": "0.0006",
|
| 20 |
+
"warmup": 2000,
|
| 21 |
+
"wikipedia_updates": 560177
|
| 22 |
+
},
|
| 23 |
+
"seed": 1234,
|
| 24 |
+
"weight_decay": "0.01"
|
| 25 |
+
}
|
tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|