Views
No views yet
Qwen/Qwen3.8-27B. It is not a fine-tune,
merge, ablation, alignment change, or chat-template modification. The source
weights are pinned to commit 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0.Qwen3_5ForConditionalGeneration / qwen3_5 as
its internal architecture identifier. That string does not mean these
weights came from a Qwen3.5 model.1{
2 "algorithm": "oMLX oQ5 sensitivity-driven mixed-precision quantization",
3 "bit_width": "mixed around 5.5 bpw",
4 "group_size": "64 with mode-specific overrides",
5 "calibration_source": "local fixed representative prompts; no benchmark answers"
6}oMLX and standard MLX loaders / 71b9d52039c3058041c5029fdb3d3e833d13d624.sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 at
e8f8c211226b894fcb81acc59f3b34ba3efd5f42
as a measured proxy, not as ground-truth accuracy.1{
2 "release_gate": "PASS",
3 "text": [
4 true,
5 true,
6 true,
7 true,
8 true,
9 true,
10 true,
11 true,
12 true,
13 true
14 ],
15 "tools": [
16 true,
17 true,
18 true,
19 true,
20 true
21 ],
22 "vision": [
23 true,
24 true,
25 true
26 ],
27 "mtp": {
28 "passed": true,
29 "backend": "oMLX Lightning MTP (integrated source MTP head)",
30 "output_equivalent_temperature_zero": true,
31 "baseline": {
32 "text": "To list the first ten square numbers, we calculate the square of each integer from 1 to 10 ($n^2$).\n\n1. $1^2 = 1$\n2. $2^2 = 4$\n3. $3^2 = 9$\n4. $4^2 = 16$\n5. $5^2 = 25$\n6. $6^2 = 36$\n7. $7^2 = 49$\n8. $8^2 = 64",
33 "finish_reason": "length",
34 "usage": {
35 "prompt_tokens": 21,
36 "completion_tokens": 128,
37 "total_tokens": 149,
38 "input_tokens": 21,
39 "output_tokens": 128,
40 "prompt_tokens_details": {
41 "cached_tokens": 0
42 },
43 "total_time": 10.37
44 },
45 "wall_seconds": 10.375257540959865,
46 "generation_tps": 12.343297974927676
47 },
48 "mtp_measurement": {
49 "text": "To list the first ten square numbers, we calculate the square of each integer from 1 to 10 ($n^2$).\n\n1. $1^2 = 1$\n2. $2^2 = 4$\n3. $3^2 = 9$\n4. $4^2 = 16$\n5. $5^2 = 25$\n6. $6^2 = 36$\n7. $7^2 = 49$\n8. $8^2 = 64",
50 "finish_reason": "length",
51 "usage": {
52 "prompt_tokens": 21,
53 "completion_tokens": 128,
54 "total_tokens": 149,
55 "input_tokens": 21,
56 "output_tokens": 128,
57 "prompt_tokens_details": {
58 "cached_tokens": 0
59 },
60 "total_time": 4.23
61 },
62 "wall_seconds": 4.238896624883637,
63 "generation_tps": 30.260047281323875
64 },
65 "baseline_tps": 12.343297974927676,
66 "mtp_tps": 30.260047281323875,
67 "speedup": 2.4515366430260044,
68 "measured_improvement": true,
69 "advertise_acceleration": true,
70 "native_stats": {
71 "finish_reason": "length",
72 "tokens": 128,
73 "cycles": 36,
74 "tokens_per_cycle": 3.56,
75 "accepted_drafts": 93,
76 "drafted_tokens": 96,
77 "acceptance_rate": 0.96875
78 },
79 "failure": null
80 },
81 "bf16_source_comparison": {
82 "passed": true,
83 "mean_semantic_similarity": 0.8852966785430908,
84 "exact_matches": 2,
85 "measurements": {
86 "average_generation_tps": 19.016428184965864,
87 "peak_memory_gb": 21.0919424,
88 "artifact_bytes": 20314066494,
89 "maximum_prompt_tokens_tested": 73,
90 "loop_rate": 0.0
91 },
92 "evaluator": {
93 "repo_id": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
94 "revision": "e8f8c211226b894fcb81acc59f3b34ba3efd5f42",
95 "pooling": "attention-mask mean pooling followed by L2 normalization",
96 "maximum_tokens": 256
97 }
98 },
99 "bf16_fixed_logit_comparison": {
100 "positions": 106,
101 "inputs_sha256": "f1a0af6b9580739ebc9efa9375ae31aa6940dafe7ff6446097ed6cf8d9ab37de",
102 "mean_kl_divergence": 0.00603105514398161,
103 "reference_perplexity": 9.84727010437735,
104 "candidate_perplexity": 9.75069257534557,
105 "perplexity_delta": -0.09657752903178007,
106 "top1_token_agreement": 0.9811320754716981,
107 "selection": "selected",
108 "warnings": [
109 "KL is measured on fixed original text, not a public benchmark.",
110 "BF16 log-probabilities are stored in float16 after float32 log-softmax; reported KL therefore has finite-storage approximation error.",
111 "The stock MLX-VLM logit scorer ignored 29 strict-loader extras, all proven to be under language_model.mtp; native oMLX validation separately loaded and tested MTP."
112 ]
113 }
114}1python -m pip install "omlx @ git+https://github.com/jundot/omlx.git@71b9d52039c3058041c5029fdb3d3e833d13d624"
2hf download Chungulus/Qwen3.8-27B-MLX-oQ5 --local-dir ./models/Qwen3.8-27B-MLX-oQ5
3mkdir -p ./omlx-state
4python - <<'PY'
5import json
6from pathlib import Path
7model_id = 'Qwen3.8-27B-MLX-oQ5'
8Path('omlx-state/model_settings.json').write_text(json.dumps({
9 'version': 1, 'models': {model_id: {
10 'mtp_enabled': True, 'mtp_num_draft_tokens': 3
11 }}
12}, indent=2) + '\n')
13PY
14omlx serve --model-dir ./models --base-path ./omlx-state --port 8000http://127.0.0.1:8000/v1/chat/completions.enable_thinking,
reasoning_effort, and preserve_thinking) and the native Qwen tool format.validation_result.json; untested context lengths
must not be inferred from the architectural maximum.