--- license: apache-2.0 library_name: other tags: - governed-ai - szl-holdings - doctrine-v11 - estate - hub --- # szl-training-scripts The forge. Hub copy of the Unsloth-receipted training scripts. Tags were empty — this atelier is the card. **Family.** estate · **Evidence.** HUB · **Weights.** none Hub: [SZLHOLDINGS/szl-training-scripts](https://huggingface.co/SZLHOLDINGS/szl-training-scripts) ## The cut Training code is usually a gist. We give it a model id so the estate graph stays one piece. A Hub id you can pin in a receipt: 'trained by this repo at this SHA'. ### Silhouette → leave → SZL | Leader | Take, then tweak | |---|---| | Anthropic | No public train scripts for Claude. | | NVIDIA | NeMo recipes. | | Unsloth | The scripts wrap Unsloth. Cut is the receipt bind. | Nobody else ships this combination. That is the point of a one-of-one. ## Intended use Canonical train entrypoint. ## Limitations - Not a checkpoint. Wire to GitHub kit in this atelier. ## Honesty | Claim | Label | |---|---| | This card's numbers | HUB | | Energy / joules | UNAVAILABLE unless a signed meter says MEASURED | | Λ uniqueness | Conjecture 1 OPEN — not a theorem | | GGUF as the signed object | FALSE | Doctrine v11 LOCKED · 749 declarations · 14 axioms · 163 sorries · locked-proven 8. Apache-2.0. Copyright 2026 SZL Holdings · Stephen P. Lutar Jr. · ORCID [0009-0001-0110-4173](https://orcid.org/0009-0001-0110-4173). ## GitHub-aligned Python ```python #!/usr/bin/env python3 # receipted_unsloth.py # Silhouette: Unsloth FastLanguageModel QLoRA. # Cut: dataset SHA, LoRA knobs, seed, and final loss go into a training receipt # BEFORE merge. GGUF is derived — never the signed object. from __future__ import annotations import argparse import hashlib import json import time from pathlib import Path def sha256_file(p: Path) -> str: h = hashlib.sha256() with p.open("rb") as f: for chunk in iter(lambda: f.read(1 << 20), b""): h.update(chunk) return h.hexdigest() def main() -> None: ap = argparse.ArgumentParser() ap.add_argument("--base", default="Qwen/Qwen2.5-1.5B-Instruct") ap.add_argument("--data", default="doctrine.jsonl") ap.add_argument("--out", default="out/adapter") ap.add_argument("--r", type=int, default=16) ap.add_argument("--seed", type=int, default=20260721) ap.add_argument("--max-seq", type=int, default=2048) args = ap.parse_args() data_sha = sha256_file(Path(args.data)) from unsloth import FastLanguageModel from datasets import load_dataset from trl import SFTConfig, SFTTrainer model, tokenizer = FastLanguageModel.from_pretrained( model_name=args.base, max_seq_length=args.max_seq, load_in_4bit=True, ) model = FastLanguageModel.get_peft_model( model, r=args.r, lora_alpha=args.r, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_dropout=0, bias="none", use_gradient_checkpointing="unsloth", random_state=args.seed, ) ds = load_dataset("json", data_files=args.data, split="train") trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=ds, args=SFTConfig( output_dir=args.out, per_device_train_batch_size=2, gradient_accumulation_steps=4, max_steps=120, learning_rate=2e-4, logging_steps=10, seed=args.seed, ), ) t0 = time.time() trainer.train() model.save_pretrained(args.out) loss = None if trainer.state.log_hi ```