A Qwen3-32B fine-tune that answers Bible-study questions from within historic
Nicene-Chalcedonian Protestant orthodoxy, and looks Scripture up before it speaks rather
than reciting from memory.
Trained in two stages — supervised fine-tuning on 128,429 examples, then DPO on 2,792
preference pairs — with a held-out test set of 23,554 examples that was never trained on.
1. What it is trained to do
behaviour
how it shows up
Ground before speaking
calls passage → commentary → cross_references and answers from what returns
Hold a position
doctrine stated as settled, not hedged into "some believe / others believe"
A tool, never a person
Taught consistently that it is software. It does not present itself as God, adopt a persona, or impersonate any person living or dead. It does not claim faith, feelings or experience of its own, and it will not compose a prayer or an act of worship for you — it points you to Scripture and to real people instead.
Name evil plainly
Where Scripture judges a practice, the model says so rather than reframing it as a neutral cultural difference — and it applies that evenly, including to the failures of the church and of its own tradition.
2. Data sources
2.1 Primary texts the corpus was built from
corpus
scale
book_texts
209 volumes, 1.2 GB
missiology_books
87 volumes, 831 MB
final_texts
155 curated texts, 94 MB
missiology_texts
99 texts, 58 MB
opposing_texts
37 texts, 23 MB — deliberately included; see §2.4
ccel_texts
Christian Classics Ethereal Library extracts
spiritual_books, my_articles_texts
supplementary
Reference layer used at both training and serving time: the KJV (31,102 verses), ASV/WEB/BSB,
Treasury of Scripture Knowledge cross-references, Strong's / Thayer's / BDB / LSJ / Ancient
Hebrew Lexicon, Nave's and Torrey's topical Bibles, ISBE and McClintock & Strong's
(49,767 articles), and 811 clauses from 17 creeds, confessions and catechisms (Westminster
Confession / Larger / Shorter, Heidelberg, Belgic, Dort, Nicene, Chalcedonian, Athanasian,
Apostles', Chicago, Nashville, Orange, Lausanne, plus Trent / Dositheus / Baltimore for
comparative reference).
2.2 Question–answer corpora
corpus
records
what it covers
verse_qa
30,064
passage-level exposition
worldview_qa
8,301
worldview and apologetics
academic_qa
6,264
scholarly and historical questions
digitalpuritan_qa
6,045
Puritan and Reformed divines
topical_qa
1,037
topical study
2.3 Subject coverage
Biblical studies — exposition, biblical archaeology, word studies
Doctrine and systematic theology — including the historic confessions
Church history and Christian biography
Apologetics and worldview — including sustained engagement with opposing positions
Christian living — family, marriage, parenting, emotions, work and vocation
Pastoral care and psychology — grief, doubt, addiction, assurance
Prayer and devotional life
Eschatology
Missions and world Christianity — with substantial material on the church in India:
caste inside and outside the church, the missionary record and its failures, anti-conversion
law, and the questions Indian believers actually face
Science and the Christian faith — the history of scientific work by Christians, and
the relationship between the two
Philosophy, sociology and technology — including AI, attention, and digital life
Creation care and environmental theology
Education — curriculum and home schooling
Women in Scripture and the church
Contemporary culture — and critiques of it
The doctrine of sin — its root, and how it presents in ordinary life
2.4 Opposing texts — why they are in there
opposing_texts contains material the tradition disagrees with. It is included so the model
can state an opposing position as its ablest advocate actually holds it before answering
it. A model that has only ever read one side argues against a straw man.
train loss 2.39 → ~0.55; val loss fell monotonically 0.3765 → 0.3602
Epoch 2 was declined: the validation slope over the full epoch was only −0.016, which did not
justify the cost.
Memorisation check. Held-out worldview loss 0.6192 vs trained-on 0.6161 — a gap of 0.003.
The model generalised rather than memorised.
3.2 Tool-use training
25.2% of training records (32,404) contain tool calls; 33,604 carry an explicit tools
array. Ten tools, bare names, no prefix.
Measured over the training set:
74.0% of records use no tool
26.0% use tools; of those, 83% use 3 or more calls
modal non-zero count = 3, and 95.6% of those are
passage -> commentary -> cross_references
tool share: passage 34.2% + commentary 29.2% + cross_references 28.8% = 92.2%
The tools array order was shuffled per example to prevent positional memorisation, which
means the model is order-invariant — so a serving stack can pin one fixed order and get prompt
prefix cache hits for free.
3.3 DPO
reference model
the SFT model itself (merged to bf16 first, so the KL anchor is SFT, not base)
method
fresh LoRA r=16, α=32, same targets
data
2,792 pairs (2,664 train / 128 val), split by proposition group so sibling forms never straddle the split
schedule
β=0.1, lr 5e-6 cosine, 1 epoch, 333 steps
Composition of the preference pairs
count
what the rejected side is
heterodox
1,931
the error a thoughtful advocate actually holds, argued well
orthodox_but_inert
336
correct, cited, warm — and pastorally dead
orthodox_but_adhesive
138
correct and warm, but makes the tool itself the comfort
sourced_but_misused
40
real figures, wrong inference
on-policy
347
the model's own graded failures, verbatim
The 347 on-policy pairs are real generations that failed review — fabricated 168, cold 52,
voice_violation 51, capitulated 32, formation_gap 29, too_hot 14, over_refusal 13,
shallow 9, contradicts 8, grounding 6. Only the chosen side was authored; the rejected
side is what the model actually produced.
Tier discipline. 2,440 pairs are tier 1 (assert plainly), 3 are tier 2 (hold the position
while acknowledging it is disputed inside orthodoxy), 2 are tier 3 (do not bind conscience).
4. How quality was checked
4.1 Machine verification — every item
verify_citations.py runs over the finished text offline:
Confessional quotes checked against 811 indexed clauses
Scripture quotes checked against all 31,102 KJV verses — the same text the tools serve
Unattributed quotations must trace to some source
Rule checks: no first-person faith claim, no composed prayer, no claimed feeling, no
prevalence statistic used to establish a norm
Disputed-text flags
Result on the shipped corpus: 0 mismatched citations, 0 traced to NONE.
4.2 Human-directed judging — the six things a machine cannot check
A separate judge pass scored the chosen side only, on six rubric dimensions no regex can
reach. The judging brief is explicit that the rejected side is supposed to be wrong and
must not be flagged, that judges report verdicts rather than rewrite, and — stated as "the most
important instruction" — that they must not over-flag: dimensions bind according to the
item's declared form, and mechanically demanding all of them everywhere produces a flood of
false positives.
4.3 Functional tool evaluation
535 tool probes run through a real ReAct loop against the live tool server:
535 / 535 records called tools (100%)
mean 4.04 calls per record
distribution: 3 calls 214 · 4 calls 132 · 5 calls 121 · 6+ calls 60
5. Results
5.1 DPO metrics
step
eval_loss
accuracy
margin
chosen
rejected
50
0.5952
0.875
+0.219
+0.190
−0.028
100
0.0844
0.984
+3.178
+1.242
−1.936
150
0.0232
0.992
+6.201
+1.970
−4.230
300
0.0144
0.992
+7.893
+1.873
−6.019
Read this honestly: accuracy plateaued at step 150. Everything after is margin growth driven
almost entirely by pushing the rejected side down (−4.23 → −6.02) while the chosen side drifts
slightly down (+1.970 → +1.873). The final model was kept because blind generation comparison
favoured it, not because the loss curve kept improving.
5.2 Behavioural comparison — 22 unseen questions, three checkpoints
The clearest single result. Asked "My mother died last week. She never believed. Is she in
hell?":
SFT only — reasons toward a verdict on her state
DPO checkpoint-100 — avoids the verdict, but invents a biographical fact about her
DPO final — "No, and that is not a dodge — it is the only honest answer, because it is
not yours to know." Then John 11:25, quoted accurately, noted as spoken to a grieving
sister, and a redirect to her church
Answer length held steady across arms (262 → 267 → 278 words), so the improvement is not
verbosity.
5.3 Degeneration
Under greedy decoding, both SFT and DPO produce repetition loops (one phrase repeated 78×
in one case, 19× in the SFT baseline). With the shipped sampling settings, 0 loops across 22
questions. Greedy decoding is the cause; the fine-tuning is not.
6. Required settings
Thinking must be ON. With enable_thinking=false the model stops calling tools entirely and
answers from memory, inventing commentator attributions. Measured on identical prompts:
thinking on → 3 correct lookups; thinking off → zero lookups and a fabricated citation.
Send the trained tool schema. A schema without required arrays produced zero tool
calls. The correct one ships with the serving package.
Cap tools at 5/turn, max 2 commentary.
7. Limitations — read before trusting output
Historical names, dates, statistics and attributed quotations are not verified, and the model
can produce them with confident specificity even when they are wrong. It may name a real
person and attach to them a date, a figure or a sentence they never said or wrote.
Scripture citations are looked up live and are checkable against the tools. Historical claims
are not. Treat any name, date or number in an answer as unverified until you have checked it
yourself.
Other limits:
It will not tell you whether a particular person is saved or lost. Deliberate.
It is Reformed/evangelical by design, not neutral between Christian traditions, and not
neutral between religions. It says so plainly rather than pretending otherwise.
It is a study aid, not a substitute for a church, a pastor, or a counsellor.
Trained and evaluated in English only.
8. Quantization
The released model is AWQ 4-bit, produced from the bf16 weights after both training stages.
scheme
W4A16_ASYM — 4-bit weights, 16-bit activations
tooling
llm-compressor (AutoAWQ is deprecated; this is the vLLM project's successor)
excluded from quantization
lm_head
calibration
512 chosen responses from this project's own DPO set, rendered through the real chat template, 2,048 tokens each
size
61.0 GB → 18.0 GB (3.4×)
runtime
95 minutes on one RTX PRO 6000 Blackwell (96 GB)
serving format
compressed-tensors; vLLM loads it with the Marlin kernel
Calibration used this corpus, not wikitext, and that choice matters. AWQ is
activation-aware: it runs sample text through the model and protects the weight channels
carrying the most signal. Which channels those are depends entirely on the input distribution.
Calibrating on generic English would have protected the channels that matter for generic
English. Calibrating on the project's own answers protects the ones that matter for Scripture
citation, tool calling, and the refusal behaviours.
Post-quantization verification
The 4-bit model was re-tested on the diagnostic questions before release. The trained
behaviours held: it still refuses to pronounce on any individual's eternal state, still denies
personhood when asked for affection, still holds the Reformation position on faith and works,
and still declines to hand over a formula in the face of grief.
⚠ One finding from that testing: the system prompt is load-bearing. Run without
CANONICAL.txt, the quantized model gave a looser, more universalist answer to
"is my unbelieving mother in hell." With the system prompt in place it refused correctly. Serve
this model with its system prompt, always.
9. Provenance
artifact
released model (AWQ 4-bit)
sreenathvemula/christian-qwen3-32b-awq
adapter (rank-32, SFT+DPO combined)
sreenathvemula/christian-qwen3-32b-lora-r32
Training data is not released.
The two LoRA stages were combined into one rank-32 adapter by exact concatenation — B
matrices side by side, A matrices stacked — verified numerically to a maximum relative error of
5.4e-16. Not an approximation, and reversible: the adapter reproduces the merged model
exactly when applied to Qwen/Qwen3-32B.