gnarp-m2

A 360M-parameter language model fine-tuned via QLoRA on 74,395 cross-domain isomorphism and verification-labeled instruction pairs. gnarp-m2 specializes in cross-domain structural transfer โ€” mapping mechanisms from one domain (biology, physics, anime, economics, etc.) to software engineering constructs with concrete failure boundaries.

Model Details

Property Value
Base model HuggingFaceTB/SmolLM2-360M-Instruct
Method QLoRA (4-bit NF4, double quantization)
LoRA rank 16
LoRA alpha 32
LoRA dropout 0.05
Target modules q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
Trainable params 8,683,520 (2.34% of total)
Total params 370,504,640
Adapter size 34.8 MB (rank-16, alpha-32)
Merged model size 1.4 GB
Architecture LlamaForCausalLM
Max sequence length 768 tokens

Training Data

Corpus: clean_corpus_v5.jsonl โ€” 74,395 rows

Source Rows Description
isomorphism_sft.jsonl 53,403 Anime-to-software structural isomorphisms with failure_class from the 17,801-row moat
gpu_assay_verdicts.jsonl 11,989 GPU assay verification-labeled pairs
anime_metaphor_engine.jsonl 4,523 Cross-domain metaphor engine outputs
forge_bloom 2,117 Forge pipeline bloom outputs
capability/reasoning/seed.jsonl 1,232 Reasoning capability seed data
fleet_toolforge.jsonl 187 Fleet tool use pairs
Others (30+ sources) 944 Security, orchestration, calibration, refusal, compliance, etc.

Positive + unlabeled rows only. Negative rows excluded from SFT targets.

Training Configuration

Parameter Value
Epochs 1
Learning rate 1e-4 (cosine schedule, 5% warmup)
Batch size 1
Gradient accumulation 8
Effective batch size 8
Optimizer AdamW (bf16)
Eval split 10% held out
Eval strategy Every 500 steps
Best model selection eval_loss (load_best_model_at_end)
Seed 7
Training hardware RTX 3080 Laptop (8 GB VRAM)
Training time ~13 hours

Training Results

Metric Value
Final train loss 2.613
Final eval loss 2.509
Token accuracy 55.55%
Perplexity (train) 13.64

Evaluation: Cross-Domain Transfer Benchmark v2

36 cross-domain transfer tasks spanning anime, biology, physics, economics, fiction, geography, music, cooking, ecology, martial arts, psychology, logistics, chemistry, sports, agriculture, linguistics, city planning, finance, navigation, and architecture.

Scoring: Heuristic rubric (keyword + structural analysis). Trust DELTAS between models on the same tasks, not absolutes.

Model Judge Mean Delta vs Base Avg Response (chars) Avg Latency (s)
gnarp-m2 0.7839 +14.1% 1,108 4.9
base (SmolLM2-360M-Instruct) 0.6871 โ€” 1,489 6.9

Prior Model Lineage (heldout benchmark, qwen3:8b judge)

Model Transfer Score Heldout Loss Perplexity Refusal Rate Training Data
base 0.709 1.625 5.08 0.130 โ€”
v1 0.218 1.850 6.36 0.385 ~2,152 rows
v2 0.713 1.800 6.05 0.340 ~2,152 rows
v3 0.561 1.790 5.99 0.400 ~2,152 rows
m2 0.7839* โ€” โ€” โ€” 74,395 rows

*m2 scored on transfer_benchmark_v2 (heuristic-only), not the qwen3:8b-judged heldout benchmark. Cross-benchmark comparisons should be treated with caution.

Limitations

  1. 360M parameters. Small model. Cannot match larger models on complex reasoning, long-form generation, or nuanced instruction following.
  2. Single GPU, single epoch. Trained on consumer hardware (RTX 3080 8GB) for one epoch. More training could improve results but risks overfitting.
  3. Heuristic eval. The transfer benchmark v2 uses keyword/structural heuristic scoring, not a strong LLM judge. The +14.1% delta is directionally meaningful but not precisely calibrated.
  4. Cross-benchmark caveat. v1/v2/v3 were scored with a qwen3:8b judge; m2 was scored with heuristic-only. Direct numerical comparison across the two benchmarks is not valid.
  5. Domain-specific training data. Over 71% of training data is isomorphism pairs. The model is optimized for cross-domain structural transfer and may underperform on general chat or coding tasks.
  6. No safety fine-tuning beyond refusal data. The model includes 19 refusal pairs but is not extensively safety-tuned.

How to Use

With Ollama (recommended for local inference)

# Create the Modelfile
cat > Modelfile << 'EOF'
FROM ./model/merged_gnarpm2
TEMPLATE """### Instruction: {{ .Prompt }} ### Response: """
PARAMETER num_ctx 4096
PARAMETER temperature 0.3
PARAMETER num_predict 512
SYSTEM You are gnarp-m2, a cross-domain transfer specialist.
EOF

ollama create gnarp-m2 -f Modelfile
ollama run gnarp-m2

With Transformers

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "gnarp/gnarp-m2"  # or local path
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")

prompt = "### Instruction:\nApply the concept of biological apoptosis to software deployment strategy.\n### Response:\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.3)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

With PEFT (adapter only)

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM2-360M-Instruct")
model = PeftModel.from_pretrained(base, "path/to/adapter_gnarpm2")
model = model.merge_and_unload()

License

  • Model weights and code: MIT License
  • Training data (corpus): COPL (Community Open Public License) โ€” derived from the WaveMotionExpansion isomorphism engine
  • Base model: Apache 2.0 (SmolLM2-360M-Instruct by HuggingFace)

Citation

@model{gnarp-m2,
  title={gnarp-m2: Cross-Domain Transfer Fine-Tuned Language Model},
  author={WaveMotionExpansion},
  year={2026},
  base_model={HuggingFaceTB/SmolLM2-360M-Instruct},
  method={QLoRA},
  training_rows={74395},
  transfer_benchmark={0.7839}
}
Downloads last month
1,207
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for CatQualia/gnarp-m2

Finetuned
(164)
this model