Text Generation
Transformers
Safetensors
English
llama
qlora
smollm
360m
cross-domain-transfer
anime-isomorphism
fine-tuned
conversational
text-generation-inference
Instructions to use CatQualia/gnarp-m2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use CatQualia/gnarp-m2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="CatQualia/gnarp-m2") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("CatQualia/gnarp-m2") model = AutoModelForCausalLM.from_pretrained("CatQualia/gnarp-m2", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use CatQualia/gnarp-m2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "CatQualia/gnarp-m2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CatQualia/gnarp-m2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/CatQualia/gnarp-m2
- SGLang
How to use CatQualia/gnarp-m2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "CatQualia/gnarp-m2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CatQualia/gnarp-m2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "CatQualia/gnarp-m2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CatQualia/gnarp-m2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use CatQualia/gnarp-m2 with Docker Model Runner:
docker model run hf.co/CatQualia/gnarp-m2
| language: | |
| - en | |
| license: mit | |
| library_name: transformers | |
| tags: | |
| - qlora | |
| - smollm | |
| - 360m | |
| - cross-domain-transfer | |
| - anime-isomorphism | |
| - fine-tuned | |
| pipeline_tag: text-generation | |
| base_model: HuggingFaceTB/SmolLM2-360M-Instruct | |
| # 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) | |
| ```bash | |
| # 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 | |
| ```python | |
| 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) | |
| ```python | |
| 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 | |
| ```bibtex | |
| @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} | |
| } | |
| ``` | |