🧮 ILM: Integer Language Model

⚡ CPU only. ILM is a language model that needs no GPU, to learn or to answer. On one desktop CPU it learns each benchmark below from its lessons in seconds, then answers its test questions.

🤔 Why no GPU? A neural network, such as a transformer, learns by changing millions of decimal weights. It repeats billions of multiplications over many passes through the data, and a GPU is built for that work. ILM has no weights. It stores whole-number counts: how often each pattern in a text came with each answer. Counting is the addition of whole numbers, and a normal CPU does it fast.

🧠 ILM learns from lessons: a short text, a question and the exact answer (for two tasks below, also the labels that the set gives). It keeps a pattern only when its counts show that the pattern is reliable. So what it learned is a set of rules that you can read, and it gives the same answers on every run and for every number of threads.

📁 Files

File What it is
ilm-windows-x86_64.exe the program for Windows on x86-64
ilm-linux-x86_64 the program for Linux on x86-64 (glibc 2.35 or later, as on Ubuntu 22.04)
ilm-macos-arm64 the program for macOS on Apple silicon
SHA256SUMS.txt the SHA-256 of each program
LICENSE the Apache License 2.0
THIRD_PARTY_NOTICES.md the licenses of the code of others that the programs hold

ILM has no weights to download: it learns each task from the lessons of that task when you run it. The program reads the descriptions of the sets and the list of sources from the GitHub repository, so run it from a clone of that repository.

📊 Results

Each benchmark is read with frozen code on its test data: the official test split, or for LoNLI, LAMA and SVAMP the part that docs/RESULTS.md names. The runs use one desktop CPU (Intel Core i9-12900K, 24 threads, no GPU). The time is for the whole run, learning from all lessons and answering the test questions, as the best of three or more runs.

Benchmark ILM Published, for comparison Time
bAbI, 20 tasks, 1,000 examples each 20 of 20 tasks pass, 99.78% right best published learner from answers only: 3 tasks fail (Universal Transformer) 5.9 s
SCAN, 4 splits 100% on every split Transformer: length 0.0, add jump 1.0 0.8 s
ProofWriter, depth 5 100% (40,063 of 40,063; closed depth 5 also learns from the formal forms of the set) ProofWriter, T5-11B: 99.6 to 99.7 4.0 s
LoNLI, 17 groups of logic in NLI 94.9% on its sealed part (15 groups; 10 of 16 learned) tuned on MNLI, not on LoNLI: 59 to 71; RoBERTa-large tuned on 2% of LoNLI: near 100 0.7 s
CLUTRR, 2 to 10 steps 72.3% (learns from the step labels of the set) GPT-4o with a solver: 67.7; Faithful CoT with votes: 71.9 15.9 s
LAMA T-REx 64.0% BERT-large: 32.3; MegatronLM 11B with trained prompts, on a subset: 64.2 11.6 s
SVAMP 38.3% Graph2Tree: 36.5; with RoBERTa: 43.8; GPT-3 with chain of thought: 68.9 27.6 s
E2E NLG BLEU 65.37 TGen: 65.93; GPT-2 large with LoRA: 70.4 9.8 s

The settings, the published numbers with their sources, and notes on each benchmark are in docs/RESULTS.md of the GitHub repository.

🚀 How to use

The program reads the descriptions of the sets from a clone of the GitHub repository. With the program of this repository, on Linux:

git clone https://github.com/Datamine-Crypto/ILM ilm
cd ilm
cp <download folder>/ilm-linux-x86_64 ./ilm
chmod +x ./ilm
./ilm fetch data/sources.txt sets=src_babi
./ilm export src_babi data/sets/final/src_babi.txt cases/final/src_babi
./ilm measure cases/final/src_babi

On macOS, take ilm-macos-arm64 in the same way, and also run xattr -d com.apple.quarantine ./ilm, because the program is not signed with an Apple developer certificate. On an Intel Mac, build the program from source. On Windows, copy ilm-windows-x86_64.exe into the clone as ilm.exe and run .\ilm.exe fetch data/sources.txt sets=src_babi, and so on. To build the program yourself in place of a download: cargo build --release (Rust 1.90 or later and a C compiler), then call ./target/release/ilm. fetch gets the raw files of a set from the Hugging Face hub or GitHub at a fixed revision and checks their SHA-256. export writes a case file for each kind of the set. measure learns each kind from its lessons and reads its test cases. docs/REPRODUCE.md gives the commands for every benchmark.

⚙️ How it works

ILM has seventeen tools, each named for its way of reading: patterns, state, amount, order, link, rule, parts, together, list, requests, frames, table, arrange, graph, grid, space and ranks. For each kind of task, every tool learns from two thirds of the lessons and reads the last third. The tool with the most right answers learns again from all lessons. No person chooses a tool, and no setting changes between tasks. Beside the tools, ILM has a fact reader for encyclopedia text, a question reader, a writer that turns given facts into a text, and one command (ilm ask) that routes each request and prints a trace of its steps.

🚧 Limits

ILM is not a general chat model. It learns one kind of task at a time from lessons of that kind, and each lesson needs the exact answer. On a board of 25 public sets (240 kinds in 112 tasks), it learns 61 tasks: every kind of the task at 95% right or more on held cases (90% where people wrote the text). On SVAMP and E2E, pre-trained transformers are ahead.

📜 License

Apache License 2.0. The sets that ILM reads keep their own licenses, and this repository holds none of their data.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Evaluation results