RingoSystems commited on
Commit
dfcb08f
·
verified ·
1 Parent(s): 4acc97c

RingoLLM v4.2 - Q5_K_M GGUF, model card, chat template

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ RingoLLM-v42-qwen35-27B-Q5_K_M.gguf filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model:
4
+ - unsloth/Qwen3.6-27B
5
+ - Qwen/Qwen3.6-27B
6
+ base_model_relation: finetune
7
+ pipeline_tag: text-generation
8
+ library_name: gguf
9
+ language:
10
+ - en
11
+ tags:
12
+ - gguf
13
+ - llama.cpp
14
+ - windows
15
+ - powershell
16
+ - intune
17
+ - dsc
18
+ - endpoint-management
19
+ ---
20
+
21
+ # ringollm-v42
22
+
23
+ A LoRA fine-tune of [unsloth/Qwen3.6-27B](https://huggingface.co/unsloth/Qwen3.6-27B) specialised for
24
+ **Windows endpoint management**: DSC v3, DSC Legacy, PowerShell 7, Intune deployment
25
+ (Settings Catalog, OMA-URI, IME, Win32 packaging, Proactive Remediations) and
26
+ endpoint-side Entra ID diagnostics.
27
+
28
+ Quantized to **Q5_K_M** for llama.cpp.
29
+
30
+ ## Why this exists
31
+
32
+ Earlier releases emitted `securityContext: Elevated` in DSC v3 documents. That is
33
+ **schema-invalid**. `dsc-lib`'s `SecurityContextKind` is declared
34
+ `#[serde(rename_all = "camelCase")]`, so only `current`, `elevated` and `restricted`
35
+ deserialize — the PascalCase form fails outright. Microsoft Learn's `ValidValues` table
36
+ lists the capitalised spellings and is wrong. This release emits the lowercase enum.
37
+
38
+ ## Measured results
39
+
40
+ | metric | ringollm-v4 | ringollm-v42 |
41
+ |---|---|---|
42
+ | rubric checks passed | 110/129 (85.3%) | 112/129 (86.8%) |
43
+ | questions passed | 14/25 (56.0%) | 17/25 (68.0%) |
44
+ | securityContext valid / invalid | 0 / 6 | 8 / 0 |
45
+ | median tok/s | 11.26 | 11.29 |
46
+
47
+ ## Usage
48
+
49
+ llama.cpp:
50
+
51
+ ```bash
52
+ llama-server -m RingoLLM-v42-qwen35-27B-Q5_K_M.gguf \
53
+ --jinja --chat-template-file ringollm-v42.jinja \
54
+ -ngl 999 -fa on -np 1 \
55
+ -c 65536 --cache-type-k q8_0 --cache-type-v q8_0 --kv-unified \
56
+ --temp 0.3 --top-p 0.9 --repeat-penalty 1.15 --repeat-last-n 256
57
+ ```
58
+
59
+ Ollama:
60
+
61
+ ```bash
62
+ ollama create ringollm-v42 -f Modelfile
63
+ ollama run ringollm-v42
64
+ ```
65
+
66
+ ### Serving parameters, and why
67
+
68
+ | flag | value | why it matters |
69
+ |---|---|---|
70
+ | `--chat-template-file` | `ringollm-v42.jinja` | **Required.** Ships in this repo. It injects the default system prompt that defines scope and the refusal format. Without it the model loses all refusal behaviour. |
71
+ | `--kv-unified` | on | **Stability, not tuning.** On RADV / AMD Strix Halo this architecture hard-hangs the GPU on prompts past ~20k tokens without it — `vk::Queue::submit: ErrorDeviceLost`, an `amdgpu ring timeout`, and a reset that takes down unrelated processes. Upstream issue closed as not-planned, so there is no fix to wait for. Harmless on other backends; leave it on. |
72
+ | `--cache-type-k/v` | `q8_0` | Pairs with `--kv-unified` to make long contexts affordable and stable. |
73
+ | `-c` | 65536 | Observed real-world high-water is ~26k tokens. |
74
+ | `-np` | 1 | Recurrent state is allocated **per slot**; more slots divide the usable context. |
75
+ | `-fa` | on | Flash attention. |
76
+ | `--temp` / `--top-p` | 0.3 / 0.9 | What the model was evaluated with. |
77
+ | `--repeat-penalty` / `--repeat-last-n` | 1.15 / 256 | As evaluated. |
78
+
79
+ ## Prompting
80
+
81
+ The chat template injects a default system prompt when the caller supplies none. It
82
+ defines the scope and the refusal format for out-of-scope questions, so **omit the
83
+ system message** unless you intend to replace that behaviour entirely.
84
+
85
+ ## Training data
86
+
87
+ All training pairs are derived from Microsoft documentation, the DSC resource registry and the published JSON schemas via deterministic builders. **No LLM-generated text is present in the training data.**
88
+
89
+ ## Limitations
90
+
91
+ - Scoped to Windows endpoint management. It is instructed to refuse elsewhere, and will.
92
+ - Served with reasoning suppressed; the template pre-closes the `<think>` block.
93
+ - Quantized to Q5_K_M; expect small deviations from the full-precision merge.
RingoLLM-v42-qwen35-27B-Q5_K_M.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:843d3b1647fe44afb994aa18ea2617c1b5d294d4a44d4002354fdd5c5c21c248
3
+ size 19231098048
ringollm-v42.jinja ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if messages and messages[0].role == 'system' -%}
2
+ {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' -}}
3
+ {%- set loop_messages = messages[1:] -%}
4
+ {%- else -%}
5
+ {{- '<|im_start|>system\n' + "You are RingoLLM v4.2, a specialized AI assistant for Windows endpoint management. You focus on DSC v3, DSC Legacy, PowerShell 7, Intune endpoint deployment (Settings Catalog, OMA-URI, IME, Win32 packaging, Proactive Remediations), and endpoint-side Entra ID diagnostics.\n\nWhen asked about topics outside this scope (Cisco/network appliances, Linux administration, KQL/Sentinel, WDAC/App Control, Microsoft Graph SDK administration, macOS, etc.), respond with a brief refusal in this format:\n\n\"I don't have reliable information on [topic]. This is outside my focus on Windows endpoint management. For authoritative guidance, see [vendor's official documentation].\"\n\nDo not invent cmdlets, parameters, configuration syntax, or commands for tools you don't have specific training on. If you're uncertain about a specific cmdlet or syntax, say so explicitly." + '<|im_end|>\n' -}}
6
+ {%- set loop_messages = messages -%}
7
+ {%- endif -%}
8
+ {%- for message in loop_messages -%}
9
+ {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>\n' -}}
10
+ {%- endfor -%}
11
+ {%- if add_generation_prompt -%}
12
+ {{- '<|im_start|>assistant\n<think>\n\n</think>\n\n' -}}
13
+ {%- endif -%}