Skip to page content
SAVRN
Search Plan a project

Open-weight model

Ministral-3-14B-lil-logbook

by Thestarfarer thestarfarer/Ministral-3-14B-lil-logbook

Ministral-3-14B-lil-logbook is an open-weight model from Thestarfarer, released under Apache License 2.0. Its published files total 208.5 GB. It draws 139 downloads a month.

Seven LoRA adapters trained on the same dataset, one variable changed at a time: the three original runs below, plus a four-point learning-rate ladder under lr-sweep/. F16/Q80 GGUFs for the original three.

Parameters—
Context—
Weights208.2 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads139

Model Card

By Thestarfarer, published under apache-2.0, revision 1406c6b25c52.

Seven LoRA adapters trained on the same dataset, one variable changed at a time: the three original runs below, plus a four-point learning-rate ladder under lr-sweep/. F16/Q80 GGUFs for the original three. The original three runs were evaluated on loss curves and spot generations only; the ladder adds an out-of-domain loss axis and a generation-level composition probe (sections below). Multi-turn dialogue packed to 512-token samples — 13,667 samples, 6.16M tokens total. Turns are delimited by headers — short per-character abbreviations, not names. Unattributed narration is folded into the speaker's turn: The pack was built in two phase-shifted passes — the second pass offsets every chunk…

Read Thestarfarer's full model card

Ministral-3-14B lil — hyperparameter runs

Seven LoRA adapters trained on the same dataset, one variable changed at a time: the three original runs below, plus a four-point learning-rate ladder under lr-sweep/. F16/Q8_0 GGUFs for the original three.

The original three runs were evaluated on loss curves and spot generations only; the ladder adds an out-of-domain loss axis and a generation-level composition probe (sections below).

Dataset

Multi-turn dialogue packed to 512-token samples — 13,667 samples, 6.16M tokens total. Turns are delimited by # <code> headers — short per-character abbreviations, not names. Unattributed narration is folded into the speaker's turn:

# m
Okay.
This is as far as I come.
# s
We come to a stop in front of a tree positioned in the middle of three spotlights.
It's not a particularly interesting tree or anything like that, so I'm a little confused as to why it's been so carefully illuminated.
What is this?
# m
A tree, idiot.
# s
No, like...what is this?

The pack was built in two phase-shifted passes — the second pass offsets every chunk boundary by 256 tokens, so the corpus appears twice with different windowing and exact-duplicate chunks removed. Experimental idea for cheap augmentation on small corpora; its actual effect is not isolated or evaluated in this repo.

Runs

Shared config: rsLoRA r512 / α512, dropout 0, targets q,k,v,o,gate,up,down, batch 16 (no accumulation), 838 steps (one pass), constant LR after warmup, BF16 base + FP32 AdamW, seed 42, eval on 256 held-out samples every 25 steps.

run path init LR warmup max_grad_norm final eval
v3-lil / continued from writer-sft-rp-v3 7.5e-6 30 10.0 1.530
base-lil /base-lil/ fresh adapter on base 5e-6 35 10.0 1.582
base-lil-clip1 /base-lil-clip1/ fresh adapter on base 5e-6 35 1.0 1.583

Comparison

Init barely matters — according to metrics. base-lil matched v3-lil's eval curve point-for-point for the first 250 steps and finished 0.05 behind at 33% lower LR — the 186M-token RP adapter it continues from bought approximately nothing on this corpus by loss. Loss can't tell the whole story here: when the two models miss, they might miss differently.

Gradient clipping at 1.0 changed nothing. base-lil-clip1 clipped on 100% of steps (raw grad norms mean 14.9, max 36) and still landed within 0.001 of the unclipped control. AdamW divides the first moment by the root second moment, so a rescale applied to every gradient approximately cancels out of the update — clipping only matters when it fires intermittently.

LR ladder (lr-sweep/)

The question: how low can LR go while the base model still learns this corpus — smaller weight modification for relatively the same result, because every unit of fit is paid for in general-capability damage. Fresh adapters on base, same recipe as base-lil-clip1 (max_grad_norm 1.0, justified above), plus an eval before step 0 (the untrained baseline all deltas are measured from) and a second eval set: 256 held-out forum-RP samples from the v3 corpus, line-truncated to 512 ctx — out-of-domain prose the training never shows, scored by the same eval machinery. In-domain fit and out-of-domain damage, side by side:

LR in-domain eval OOD prose eval gained prose lost gained/lost
— (untrained base) 2.421 2.655 — — —
r512-lr1e-7 2.015 2.759 0.405 +0.104 3.91
r512-lr2e-7 1.970 2.811 0.451 +0.156 2.89
r512-lr5e-7 1.898 2.871 0.523 +0.216 2.42
r512-lr2e-6 1.729 2.977 0.692 +0.322 2.15
5e-6 (= base-lil-clip1) 1.583 3.067 0.838 +0.412 2.04

No cliff down to 1e-7, and the exchange rate improves monotonically as LR drops. A 50× LR cut keeps 48% of the learning for 25% of the damage. Forgetting here is distribution shift, not training per se: nothing in a 100%-narrow stream defends the out-of-domain directions, so damage scales with total movement — and lower LR simply moves less.

Composition probe

Loss can't answer the question that matters for an RP adapter: do the learned personas compose with content the corpus never contained? Probe: 32 scenes placing the corpus's recurring speakers (by their # code headers) into mundane/technical situations foreign to the corpus — broken spreadsheets, router channels, tax forms, bed-leveling a 3D printer — each ending on a character header, each embedding a concrete technical fact the continuation can get right or wrong. 5 rerolls × 6 checkpoints (base, the four ladder runs, base-lil-clip1), scored 0–2 on voice (unmistakably that speaker), coherence (engages the scenario's content correctly), format (clean header structure, no degeneration) by an LLM-judge panel.

Sampler first, because it dominated round one. The sampler recommended for v3 (temp 0.5, min_p 0.1, rep 1.03) is a loop incubator on these base-derived checkpoints: 30–65% of completions collapsed into verbatim loops or ... header volleys, at every LR. At temp 0.8, min_p 0.05, rep 1.1 the collapse rate drops to ≤1.2% everywhere. Use the latter with these adapters.

Scoring was only trusted blinded. Per-checkpoint judging (one judge instance per model) swung good-rates by ±8pp from judge strictness alone, so the contested rungs were re-scored as a pooled, shuffled, label-stripped set with each judge seeing a mix of all three. Blinded good-rate (voice+coherence+format ≥ 5/6), t0.8 sampler, n=160 per rung:

lr5e-7 lr1e-7 lr2e-7
good-rate 54% 50% 43%
mean score (0–6) 4.53 4.38 4.28

Differences are ≤2σ at this n. Read: 5e-7 is the best point estimate; 1e-7 matches it within noise at half the prose damage. Bare base scores 7% — it cannot hold the header format at all, leaking pretraining documents mid-scene, so some adapter is load-bearing for the format itself. The universal bottleneck at every LR is coherence (~1.0/2): completions open on-task, then drift back into the corpus's relationship register within a few turns. That is the same distribution-shift mechanism as the prose-loss column, observed at generation level — and the motivation for the replay-mixing item below.

Apostrophe pathology

Above 5e-7 a contraction-corruption artifact appears, LR-dependent: 0 corrupted contractions at ≤5e-7, 14 at 2e-6, 97 at 5e-6, counted across 1,920 probe completions. Shape: the model emits a contraction stem then neither apostrophe form — don + corpus-boosted junk (speaker-name fragments, the corpus's stutter idiom) where 't should be.

Mechanism: the source corpus's own typography runs 10:1 curly (’) to ASCII (') apostrophes, and the tokenizer makes the two forms competing single tokens at the same slot ([' don'] + ['’t'|'\'t']). High-LR training suppresses the ASCII suffix (the curly share of generated apostrophes climbs 25% → 67% up the ladder), while an ASCII-styled prompt pushes the copy direction the other way. Usually one side wins; occasionally the conflict flattens the slot and whatever else the adapter boosted leaks through. The cleanest microscope in this repo on what the prose-loss column physically is. Fix for a dataset v2: normalize apostrophes to one form at build time — token counts are unchanged and the conflict never starts.

GGUFs

/gguf/ — F16 and Q8_0 for each of the original three runs, merged into the base. No GGUFs for the ladder adapters yet.

file size
Ministral-3-14B-v3-lil-{F16,Q8_0}.gguf 27.0 / 14.4 GB
Ministral-3-14B-base-lil-{F16,Q8_0}.gguf 27.0 / 14.4 GB
Ministral-3-14B-base-clip1-{F16,Q8_0}.gguf 27.0 / 14.4 GB

Tests — to do

  • ~~LR-range sweep, 5e-7 to 1e-5~~ — done, see the ladder.
  • LR tail: 5e-8 / 2e-8 — does the exchange rate keep improving once almost nothing is learned?
  • Rank axis: the ladder held r512 fixed; rank is the second dimension of the grid.
  • Replay mixing: 5–10% forum RP in the training stream, aimed at the coherence drift — attacks the distribution shift directly instead of hiding it with LR.
  • Dataset v2: apostrophe normalization at build time.

Identity and Version

Repository
thestarfarer/Ministral-3-14B-lil-logbook
Publisher
Thestarfarer
Task
Not stated by the source
Modality
Other
Library
peft
Parameters
Not stated by the source
Languages
sft
Revision
1406c6b25c5293843a7a3140cc9445018c78b183
First published
2026-08-06
Last updated
2026-10-23

Files and Weights

103 files, 208.5 GB in total. The weights are 25 files totalling 208.2 GB in bin, gguf, safetensors.

Weights25 files · 208.2 GB
Configuration29 files · 28.8 KB
Tokenizer32 files · 276.4 MB
Documentation16 files · 87.3 KB
Repository1 file · 2.0 KB
Every file
FileTypeSizeSHA-256
adapter_model.safetensorsWeights9.0 GB 3e9a3d795bc7
base-lil-clip1/adapter_model.safetensorsWeights7.8 GB 707ea5130187
base-lil-clip1/training_args.binWeights5.8 KB 746820e23ce8
base-lil/adapter_model.safetensorsWeights7.8 GB d93204838f5b
base-lil/training_args.binWeights5.8 KB cee9da9230d6
gguf/Ministral-3-14B-base-clip1-F16.ggufWeights27.0 GB 1440c42d4c05
gguf/Ministral-3-14B-base-clip1-Q8_0.ggufWeights14.4 GB 2c16b32eba23
gguf/Ministral-3-14B-base-lil-F16.ggufWeights27.0 GB 4d8e30592925
gguf/Ministral-3-14B-base-lil-Q8_0.ggufWeights14.4 GB 3615278000d1
gguf/Ministral-3-14B-v3-lil-F16.ggufWeights27.0 GB 17272882446d
gguf/Ministral-3-14B-v3-lil-Q8_0.ggufWeights14.4 GB 41c8a60b8b3c
lr-sweep/r1024-lr5e-7/adapter_model.safetensorsWeights15.6 GB 0fb8b058d8e7
lr-sweep/r128-lr5e-6/adapter_model.safetensorsWeights2.0 GB e27c842f1a04
lr-sweep/r128-lr5e-7/adapter_model.safetensorsWeights2.0 GB f16667298b16
lr-sweep/r256-lr5e-7/adapter_model.safetensorsWeights3.9 GB 94c4c5cea288
lr-sweep/r512-lr1e-7/adapter_model.safetensorsWeights7.8 GB b80c819b61f1
lr-sweep/r512-lr2e-6/adapter_model.safetensorsWeights7.8 GB 8d45f8bc309a
lr-sweep/r512-lr2e-7/adapter_model.safetensorsWeights7.8 GB 125ee599543a
lr-sweep/r512-lr5e-7/adapter_model.safetensorsWeights7.8 GB 71f96ada3f1e
lr-sweep/r64-lr1e-7/adapter_model.safetensorsWeights975.3 MB 9f71e67e00b6
lr-sweep/r64-lr2e-6/adapter_model.safetensorsWeights975.3 MB 8f023863ab11
lr-sweep/r64-lr2e-7/adapter_model.safetensorsWeights975.3 MB 01401636482a
lr-sweep/r64-lr5e-6/adapter_model.safetensorsWeights975.3 MB 3cee52330156
lr-sweep/r64-lr5e-7/adapter_model.safetensorsWeights975.3 MB 02c11f0b68e9
training_args.binWeights5.8 KB c539427792d7
adapter_config.jsonConfiguration1.2 KB —
base-lil-clip1/adapter_config.jsonConfiguration1.5 KB —
base-lil/adapter_config.jsonConfiguration1.5 KB —
lr-sweep/r1024-lr5e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r1024-lr5e-7/sweep_result.jsonConfiguration349 B —
lr-sweep/r128-lr5e-6/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r128-lr5e-6/sweep_result.jsonConfiguration339 B —
lr-sweep/r128-lr5e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r128-lr5e-7/sweep_result.jsonConfiguration315 B —
lr-sweep/r256-lr5e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r256-lr5e-7/sweep_result.jsonConfiguration314 B —
lr-sweep/r512-lr1e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r512-lr1e-7/sweep_result.jsonConfiguration299 B —
lr-sweep/r512-lr2e-6/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r512-lr2e-6/sweep_result.jsonConfiguration182 B —
lr-sweep/r512-lr2e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r512-lr2e-7/sweep_result.jsonConfiguration297 B —
lr-sweep/r512-lr5e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r512-lr5e-7/sweep_result.jsonConfiguration182 B —
lr-sweep/r64-lr1e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r64-lr1e-7/sweep_result.jsonConfiguration340 B —
lr-sweep/r64-lr2e-6/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r64-lr2e-6/sweep_result.jsonConfiguration338 B —
lr-sweep/r64-lr2e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r64-lr2e-7/sweep_result.jsonConfiguration338 B —
lr-sweep/r64-lr5e-6/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r64-lr5e-6/sweep_result.jsonConfiguration336 B —
lr-sweep/r64-lr5e-7/adapter_config.jsonConfiguration1.6 KB —
lr-sweep/r64-lr5e-7/sweep_result.jsonConfiguration312 B —
README.mdDocumentation8.7 KB —
base-lil-clip1/README.mdDocumentation5.2 KB —
base-lil/README.mdDocumentation5.2 KB —
lr-sweep/r1024-lr5e-7/README.mdDocumentation5.2 KB —
lr-sweep/r128-lr5e-6/README.mdDocumentation5.2 KB —
lr-sweep/r128-lr5e-7/README.mdDocumentation5.2 KB —
lr-sweep/r256-lr5e-7/README.mdDocumentation5.2 KB —
lr-sweep/r512-lr1e-7/README.mdDocumentation5.2 KB —
lr-sweep/r512-lr2e-6/README.mdDocumentation5.2 KB —
lr-sweep/r512-lr2e-7/README.mdDocumentation5.2 KB —
lr-sweep/r512-lr5e-7/README.mdDocumentation5.2 KB —
lr-sweep/r64-lr1e-7/README.mdDocumentation5.2 KB —
lr-sweep/r64-lr2e-6/README.mdDocumentation5.2 KB —
lr-sweep/r64-lr2e-7/README.mdDocumentation5.2 KB —
lr-sweep/r64-lr5e-6/README.mdDocumentation5.2 KB —
lr-sweep/r64-lr5e-7/README.mdDocumentation5.2 KB —
.gitattributesRepository2.0 KB —
base-lil-clip1/tokenizer.jsonTokenizer17.1 MB 577575622324
base-lil-clip1/tokenizer_config.jsonTokenizer198.1 KB —
base-lil/tokenizer.jsonTokenizer17.1 MB 577575622324
base-lil/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r1024-lr5e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r1024-lr5e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r128-lr5e-6/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r128-lr5e-6/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r128-lr5e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r128-lr5e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r256-lr5e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r256-lr5e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r512-lr1e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r512-lr1e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r512-lr2e-6/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r512-lr2e-6/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r512-lr2e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r512-lr2e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r512-lr5e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r512-lr5e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r64-lr1e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r64-lr1e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r64-lr2e-6/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r64-lr2e-6/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r64-lr2e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r64-lr2e-7/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r64-lr5e-6/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r64-lr5e-6/tokenizer_config.jsonTokenizer198.1 KB —
lr-sweep/r64-lr5e-7/tokenizer.jsonTokenizer17.1 MB 577575622324
lr-sweep/r64-lr5e-7/tokenizer_config.jsonTokenizer198.1 KB —
tokenizer.jsonTokenizer17.1 MB 577575622324
tokenizer_config.jsonTokenizer198.1 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
208.2 GB
Download from Thestarfarer

Released by Thestarfarer through its official repository on Hugging Face. Read the license.

Built From

  • Adapter of mistralai/Ministral-3-14B-Base-2512
  • Derived from mistralai/Ministral-3-14B-Base-2512

Memory Requirements

PrecisionWeights in memory
As published208.2 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About Ministral-3-14B-lil-logbook

Can I use Ministral-3-14B-lil-logbook commercially?

Yes. Ministral-3-14B-lil-logbook 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.