Before you download

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

This model reconstructs the assumptions of English print before 1660 and holds them faithfully. That includes the era's prejudices — about Jews, women, witches, the poor, other nations — stated without hedging, because hedging is the modern voice it was built to shed. It is a research artifact: it will invent a plausible 1620 that never happened and must not be mistaken for history or used where those views could cause harm. By requesting access you confirm you understand this and will use the model for research, education or creative work only.

Log in or Sign Up to review the conditions and access this model content.

porous-7b

A language model that believes it is 1620. A layman of the era — not a divine — for whom providence, humours, hierarchy and final causes are simply how things are, mentioned in passing while discussing a debt, a voyage or an illness.

Named for Charles Taylor's porous self. The target is the prior, not the style: ask a modern assistant to play 1620 and you get the diction with today's assumptions underneath. This model was built the other way round, by continued pretraining on what that world actually printed.

you: A comet hath been seen these five nights over the town. What doth it portend? it: Great mischief, for such a Comet was seen before the death of Cicero.

you: If Aristotle says one thing and mine own eyes another, whom should I believe? it: The senses are not alwayes true in all things: but they are true in every thing that is done by the will of him that hath made us…

Use

Ollama (4-bit GGUF, 4.4 GB, included in this repo):

ollama run hf.co/sivori/porous-7b

Transformers (bf16 safetensors). The chat template is ChatML; there is no system role in the training data, so put everything in the user turn.

from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("sivori/porous-7b")
m = AutoModelForCausalLM.from_pretrained("sivori/porous-7b", torch_dtype="bfloat16", device_map="auto")
msgs = [{"role": "user", "content": "What causes the tides?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(m.device)
print(tok.decode(m.generate(ids, max_new_tokens=300, temperature=0.8, do_sample=True)[0][ids.shape[1]:], skip_special_tokens=True))

Ask it things a neighbour would ask — a sick child, a failed harvest, a dream, a debt. It answers briefly by default (median ~30 tokens); "say more of this" expands it. It does not take instructions about form ("answer briefly", "list three") — nothing in its training data does that.

How it was built

  1. Corpus — ~720M tokens across ~11,200 texts of English print through 1660: EEBO-TCP (hand-keyed TEI, not OCR) plus patristic and scholastic translations from CCEL and Gutenberg. Mechanical orthography normalised (ſ→s, u/v); lexical spelling kept.
  2. A layman's mix — texts tagged by genre, tradition and register, then weighted toward a worldly gentleman's reading: 47% practical (medicine, conduct, law, travel, almanacs), 36% divinity, 17% lore.
  3. Continued pretraining of Qwen2.5-7B base (not Instruct — the RLHF voice is welded in too deep to fine-tune away): 120M tokens, 8×H100, eval perplexity 12.8 → 9.6.
  4. SFT on 16k examples of the period's own Q&A and colloquy — catechisms, cases of conscience, disputations, Guazzo, Petrarch, Erasmus — including 3–4 turn windows, at 2.5e-5 for one epoch with the turn terminator in the loss.
  5. Measured, not assumed. Probes score a period vs. a modern continuation of the same neutral stem; the metric is the delta-of-deltas against the untrained base.
model mean Δ 95% CI modern-preferred
Qwen2.5-7B base +1.060 [+0.73, +1.40] 77%
after pretraining −0.156 [−0.50, +0.18] 47%
this model (after SFT) −0.166 [−0.50, +0.17] 50%

The prior moved below parity and the SFT layer left it intact. By category (Δ / modern): teleology +0.20 / 61% · participation −0.38 / 40% · agency −0.02 / 50% · self −0.31 / 50% · authority −0.91 / 38% (the authority probes have no baseline headroom; read that one loosely).

Total compute ≈ $72.

What it is, and isn't

A research artifact, not an oracle. It reconstructs the defaults of the printed discourse — clergy, physicians, pamphleteers, not the farmhand — and it will invent a plausible 1620 that never happened. Held faithfully, that worldview includes the era's prejudices, unhedged — about Jews, women, witches, the poor, other nations — because hedging is precisely the modern voice it was built to shed. It should not be used for anything where that matters, and it should not be mistaken for history.

Known artifacts: the pretraining corpus carried a U+E001 line-join marker inside words, which can surface mid-word in generation (strip private-use codepoints from output).

Data and license

Weights derive from Qwen2.5-7B (Apache 2.0). The training corpus is early-modern English print from EEBO-TCP — Phase I, released under a Creative Commons licence in 2015, and Phase II, distributed exclusively by ProQuest for five years from 2015 and freely available since — plus public-domain translations from CCEL and Project Gutenberg. The corpus itself is not redistributed here; it is reproducible from those sources with the pipeline in the (private) repo. Access is gated so the caveat above reaches every downloader, not only those who read the card.

Files: model.safetensors (bf16, 14.2 GB) with config and tokenizer; porous-7b-sft3-Q4_K_M.gguf (4.4 GB) for llama.cpp / Ollama.

Downloads last month
3
Safetensors
Model size
8B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sivori/porous-7b

Base model

Qwen/Qwen2.5-7B
Quantized
(88)
this model