--- base_model: Qwen/Qwen3.5-4B license: mit library_name: peft tags: - lora - sft - orpo - qwen3 - trl - unsloth pipeline_tag: text-generation --- # Bible AI Assistant — Qwen3.5-4B LoRA (SFT + ORPO) LoRA adapter (`r=16`, `alpha=32`, targeting all attention/MLP projections) fine-tuned on [Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B) for a locally-hosted Bible Q&A assistant. Trained in two stages — supervised fine-tuning followed by ORPO preference alignment — over 5,925 total training steps. > **Status: snapshot, not under active development right now.** This is the checkpoint > behind the assistant described in the > [bible-ai-assistant](https://github.com/t-timms/bible-ai-assistant) repo. The project > may resume and this checkpoint may be superseded — check the GitHub repo for the > current state before assuming this is the latest version. ## What this is part of This adapter is one component of a full-stack Bible Q&A system: hybrid RAG retrieval (BM25 + dense ChromaDB search + Reciprocal Rank Fusion + cross-encoder reranking), constitutional-AI guardrails, an optional voice pipeline (Faster-Whisper STT + Kokoro TTS), and a Gradio UI — 183 tests, 55% coverage, full CI/CD. See the [GitHub repo](https://github.com/t-timms/bible-ai-assistant) for the complete system; this repo is just the model weights. ## Training | Stage | Detail | |---|---| | **SFT** | ~1,800 diverse examples, LoRA (Unsloth/PEFT/TRL), bf16 | | **ORPO** | 500 preference pairs, preference alignment on top of the SFT adapter | | **Total steps** | 5,925 | | **LoRA config** | `r=16`, `lora_alpha=32`, `lora_dropout=0.1`, targets: `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | Training run tracked in Weights & Biases (34 runs across the full project). ## Usage ```python from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B", dtype="bfloat16") model = PeftModel.from_pretrained(base, "Ttimms/bible-ai-qwen3.5-4b-lora") tokenizer = AutoTokenizer.from_pretrained("Ttimms/bible-ai-qwen3.5-4b-lora") ``` The production deployment merges this adapter and exports to GGUF (F16 + Q4_K_M) for Ollama serving — see `scripts/` in the GitHub repo for the merge/export pipeline. ## License MIT — matches the upstream project license.