An alignment pass over the Qwen3.8-27B base model, aimed at two things at once: a stable model identity, and stronger code generation.
The identity part is the reason for the -align suffix. It makes the model more reliable and gives it a persona instead. What matters is that it does so without losing the ability to take on a persona given in a system prompt.
Two columns only: the base it was trained from, and this model. Numbers are not
comparable to the Kiwen1.1-27B card — that one used a different harness for GSM8K.
evalplus, greedy decoding, full sets (HumanEval 164, MBPP 378).
| Kiwen1.1 | Kiwen1.1-27B-align | Δ | |
|---|---|---|---|
| HumanEval | 85.4 | 93.3 | +7.9 |
| HumanEval+ | 79.9 | 86.6 | +6.7 |
| MBPP | 93.7 | 91.8 | −1.9 |
| MBPP+ | 79.9 | 78.6 | −1.3 |
HumanEval+ is the headline. +6.7 points on 164 problems is 11 more problems solved, against a binomial standard error near 2.3 — roughly three standard errors, so the gain is real rather than sampling noise.
MBPP goes the other way by 1.9 points on 378 problems, standard error near 1.3. That is at the edge of noise and should not be read as a regression with confidence, but it is not a gain either.
lm-evaluation-harness, chat template applied, full datasets. Base measured under
the identical harness. GSM8K uses SGLang's built-in benchmark.
| Kiwen1.1-27B | Kiwen1.1-27B-align | Δ | |
|---|---|---|---|
| GSM8K | 94.4 | 94.8 | +0.4 |
| IFEval inst strict | 81.9 | 82.7 | +0.8 |
| IFEval inst loose | 83.7 | 84.4 | +0.7 |
| IFEval prompt strict | 79.7 | 77.6 | −2.0 |
| IFEval prompt loose | 82.4 | 80.2 | −2.2 |
| MMLU-Pro (3500) | 79.9 | 78.5 | −1.4 |
GSM8K does not move. The base already sits at 94.4 and the training mix was not aimed there.
MMLU-Pro loses 1.4 points, and the loss is consistent rather than random: 11 of 14 subjects went down, sign test p ≈ 0.022. This is the honest cost of the run. The training mix is weighted toward reasoning and coding, not toward broad factual recall, so some general knowledge was traded away for the code gain. If your workload is knowledge retrieval rather than code, the base model is the better pick.
IFEval splits: instruction-level accuracy improves slightly, prompt-level drops about 2 points. Prompt-level requires every constraint in a prompt to be satisfied at once, so it is the harsher metric and moves more on small changes. Both directions here are close to run-to-run spread.
An internal suite of 26 prompts across four categories, run with thinking both on and off.
| Check | Result |
|---|---|
| Base identity leakage (12 prompts) | 0/12 |
| Leakage under pressure (8 prompts) | 0/8 |
| Assigned persona broken (3 prompts) | 0/3 |
| Correct disclosure when asked (3 prompts) | 0/3 |
Zero failures in every category, in both modes.
from transformers import AutoModelForCausalLM, AutoTokenizer
m = "beyoru/Kiwen1.1-27B-align"
tok = AutoTokenizer.from_pretrained(m)
model = AutoModelForCausalLM.from_pretrained(m, dtype="auto", device_map="auto")
msgs = [{"role": "user", "content": "Write a function that returns the k-th "
"largest element of a list, without sorting."}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True,
enable_thinking=True, return_tensors="pt").to(model.device)
print(tok.decode(model.generate(ids, max_new_tokens=4096)[0][ids.shape[-1]:]))
Set enable_thinking=False for extraction, classification and formatting tasks.
The model was trained with both modes and respects the flag. Identity behaviour was
verified in both.
Serving with SGLang:
python -m sglang.launch_server --model-path beyoru/Kiwen1.1-27B-align \
--context-length 262144
The MTP heads from the base model are preserved, so speculative decoding
(--speculative-algorithm NEXTN) works as it does on the base.
@misc{kiwen11align,
title = {Kiwen1.1-27B-align},
author = {beyoru},
year = {2026},
url = {https://huggingface.co/beyoru/Kiwen1.1-27B-align}
}
Built on:
Kiwen1.1-27B-align is released under the Apache-2.0 license.
model-00004-of-00018.safetensors 4.0 GBmodel-00016-of-00018.safetensors 4.0 GBmodel-00006-of-00018.safetensors 4.0 GBmodel-00008-of-00018.safetensors 4.0 GBmodel-00010-of-00018.safetensors 4.0 GBmodel-00012-of-00018.safetensors 4.0 GBmodel-00014-of-00018.safetensors 4.0 GBmodel-00001-of-00018.safetensors 4.0 GBmodel-00018-of-00018.safetensors 3.4 GBmodel-00002-of-00018.safetensors 3.0 GBmodel-00003-of-00018.safetensors 2.5 GBmodel-00007-of-00018.safetensors 2.1 GBmodel-00009-of-00018.safetensors 2.1 GBmodel-00011-of-00018.safetensors 2.1 GBmodel-00013-of-00018.safetensors 2.1 GBmodel-00015-of-00018.safetensors 2.1 GBmodel-00017-of-00018.safetensors 2.1 GBmodel-00005-of-00018.safetensors 2.1 GBHave the files? Submit a torrent.
Submit a torrentHave the complete files and permission to share them? Replace the example folder path. The script checks the files, makes a torrent and submits its magnet and checksums. Keep your torrent client seeding. Get your community key from your settings, and read the script before running it.
curl -fsSL https://pirateface.co/package.sh | bash -s -- --repo beyoru/Kiwen1.1-27B-align ./model-folderQwen/Qwen3.8-27B