Views
No views yet
flammenai/FlameDesigner-Qwen2.5-3B-v1 — a Qwen2.5-3B-Instruct LoRA finetune that turns a free-text seed (e.g. "samurai", "Mongolian falconer") into a strict-schema JSON character design for flammen.ai's Create-a-Flame pipeline.flammenai/flame-kindling-v1 (400 SFT rows distilled from Claude Sonnet 4.5).| Quant | Size | Notes |
|---|---|---|
FlameDesigner-Qwen2.5-3B-v1.f16.gguf | 5.8 GB | Source for further quantization |
FlameDesigner-Qwen2.5-3B-v1.Q8_0.gguf | 3.1 GB | Recommended. Best strict-schema compliance in our eval; near-F16 quality at half the size. |
FlameDesigner-Qwen2.5-3B-v1.Q5_K_M.gguf | 2.1 GB | Compromise between Q8 and Q4. |
FlameDesigner-Qwen2.5-3B-v1.Q4_K_M.gguf | 1.8 GB | Smallest practical CPU quant. Strict-schema pass rate drops noticeably (see eval); use the auto-repair shim. |
1llama-server -m FlameDesigner-Qwen2.5-3B-v1.Q4_K_M.gguf \
2 --host 127.0.0.1 --port 8081 -c 8192 --jinjaPOST /v1/chat/completions with the flame_dataset.GOLD_SYSTEM system prompt and the seed as the user message. Output is a single JSON object matching the DesignedFlame schema (or close — see "Auto-repair shim" below).1import requests, json
2SYSTEM = open("GOLD_SYSTEM.txt").read() # from the dataset card / FlameKindling repo
3r = requests.post("http://127.0.0.1:8081/v1/chat/completions", json={
4 "messages": [
5 {"role": "system", "content": SYSTEM},
6 {"role": "user", "content": "Mongolian falconer"},
7 ],
8 "max_tokens": 2048,
9 "temperature": 0.7,
10})
11text = r.json()["choices"][0]["message"]["content"]
12print(json.loads(text))temperature=0.7, GPU offload (-ngl 999) on an A6000. Per-output coherence judged by Qwen3.5-27B (1-5 scale, lenient at the high end).| Quant | Avg latency | Strict pass | Soft pass (after auto-repair) |
|---|---|---|---|
| Q8_0 | 3.1 s | 15/20 (75%) | 19/20 (95%) |
| F16 | 5.1 s | 13/20 (65%) | 20/20 (100%) |
| Q4_K_M | 2.2 s | 7/20 (35%) | 19/20 (95%) |
writing_style arrays with 5 entries instead of max 4 (trim to 4)languages containing codes outside the SUPPORTED_LANGUAGES allow-list (e.g. mn, cy, mi, sq — Qwen2.5-3B knows these from base training; the LoRA didn't fully suppress them)system_prompt_extra over 512 chars (truncate)max_tokens >= 2048)DesignedFlame:1def autorepair(obj: dict) -> dict:
2 if isinstance(obj.get("writing_style"), list):
3 obj["writing_style"] = obj["writing_style"][:4]
4 if isinstance(obj.get("languages"), list):
5 obj["languages"] = [c for c in obj["languages"] if c in SUPPORTED_LANGUAGES]
6 if not obj["languages"]:
7 obj["languages"] = ["en"]
8 if isinstance(obj.get("system_prompt_extra"), str):
9 obj["system_prompt_extra"] = obj["system_prompt_extra"][:512].rstrip()
10 return objSUPPORTED_LANGUAGES; the LoRA inherits this. The auto-repair shim handles it.system_prompt_extra. Sometimes overshoots the 512-char cap — relax to 600 or apply the shim.