oktayd's picture
Unify one-step runtime profile, personality, cache and loop guards
4fa3c78 verified
|
Raw
History Blame Contribute Delete
5.16 kB

Benchmark fixes that are now normal runtime policy

This document distinguishes a reproducible benchmark setting from the normal unattended operating policy. The one-step installer writes the complete profile, caches, loop guards, personality and system message together; no manual copy/paste of individual settings is required. Every general reliability finding below is applied in the normal profile at the user's selected context; the 9,600-token Q4_K_M setting is retained only to reproduce its local regression.

Normal policy

  • Non-thinking is the default: --reasoning off / enable_thinking=False.
  • Sampling is required: temperature 0.7, top_p 0.8, top_k 20, min_p 0; do not use greedy temperature 0 for normal Qwen non-thinking work.
  • Long-running services use --parallel 1, --n-predict 4096, --repeat-penalty 1.08, and --repeat-last-n 128. Clients must use a finite lower per-request maximum whenever possible.
  • For explicit identical-token repetition requests only, use a per-request repetition penalty of 1.0, then restore 1.08.
  • Treat exact text, JSON/schema, required counts and tool-call arguments as validator-backed output. At most three repairs may use the original request, rejected draft and deterministic validator feedback. A repair is operational reliability work, not a single-pass benchmark score.
  • Explicit math/reasoning requests may enable thinking with a finite output cap. Do not enable it in harnesses whose stop sequence can end a response inside hidden reasoning.
  • llama.cpp normal profile: 131072 context on the validated 32-GB-RAM / 8-GB-VRAM laptop, RAM-resident weights, q8_0 K/V cache, Flash Attention, continuous batching, a 1536-MiB GPU margin, --fit on, and bounded CPU/RAM cache settings. Lower context before changing quantization when a real workload exhausts memory.
  • The always-on system profile preserves the direct, sharp-witted, business-minded Q36 personality. It also contains the strict final-output compiler text and loop/repair rule. The supplied client wrapper and Hermes attach it on every command; Ollama embeds it in the created model. Raw llama.cpp HTTP clients must send it explicitly because the tested llama-server build has no server-global system-prompt flag.

The machine-readable version is configs/q36-reliability-profile.v1.json. The Windows installer creates the same profile and launcher.

What the local regressions found

Area Limited local observation Fix used in normal operation
Exact format constraints / IFBench Greedy or unvalidated output missed mechanical constraints. The fixed 20-row regression accepted 20/20 prompt constraints and 22/22 instruction constraints after bounded validation. Sampling defaults plus strict final-output prompt and bounded validator repair for machine-sensitive tasks.
GSM8K-style explicit reasoning On the fixed 20-row slice, non-thinking scored 13/20; thinking with a 1,024-token cap scored 17/20. Non-thinking remains default; an explicit reasoning task may opt into thinking and a finite cap.
BBH Boolean Expressions with CoT On the fixed 20-row slice, thinking interacted badly with the task's double-newline stop and produced 6 invalid terminations; non-thinking scored 18/20. Keep non-thinking for ordinary work and for stop-sensitive harnesses.
Agentic MBPP repair A network-isolated, visible-test repair loop reached 4/5 on a five-task public sample; extra thinking and additional repairs did not reliably improve it. Tool/code workflows use visible validation, preserve failed tests, and stop after three repairs rather than looping.
Windows MBPP evaluator The upstream POSIX evaluator cannot execute directly on Windows. Use a networkless, read-only Docker Python runner with resource limits; this is an evaluation adapter, not a model-quality change.

These are intentionally small, reproducible local samples. They do not replace official full-benchmark scores, and repaired-output results must never be reported as raw one-pass scores.

Always-on personality and final-output message

The installer writes Q36-Always-On-System-Profile.txt locally and embeds the same content into the Ollama Modelfile. It is sent for every command by the supplied llama.cpp client wrapper. Personality controls tone; strict compiler checks become decisive when a request has exact output constraints, so ordinary conversation remains natural.

Reproducing the benchmark-only track

The reproducible Q4_K_M track uses 9,600 context tokens. It is explicitly benchmark-only and does not replace the normal context chosen for a deployment. Its task-specific settings are:

  • GSM8K fixed sample: thinking on, max_tokens=1024.
  • BBH Boolean Expressions with the double-newline CoT stop: thinking off, max_tokens=1024.
  • Agentic code repair: thinking off, visible tests, at most three repair attempts.

The commands and limitations are in BENCHMARK-PLAN.md.