Qwen · Text · Dense
Qwen3
Dense causal language model; the reference architecture for kLLM sealing and throughput benchmarks.
Commands
Pull, seal and run
kllm pull downloads a library tag into the local store and records the hash of every file. kllm run starts SGLang or vLLM in the background on 127.0.0.1 and opens a chat. kllm create seals a pulled model under a named key.
# Download the library tag into the local store; a manifest records each file's hash
$ kllm pull qwen3:8b
# Start SGLang or vLLM in the background on 127.0.0.1 and open a chat
$ kllm run qwen3:8b
Requests to the running server
# The local proxy listens on 127.0.0.1:8001 and tokenizes on your machine
curl http://127.0.0.1:8001/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model": "Qwen3-8B-sealed", "messages": [{"role": "user", "content": "Hello"}]}'
Official sealed models
Pre-sealed under model keys
The kLLM team seals selected public models at a pinned revision under the perm transform, locks the weights and publishes them under ANetResearch on Hugging Face. Each model has its own model key, issued to approved applicants. The artifacts are rolling out; a repository is available once it appears in the organization.
| Repository | Base and revision | Modality | Licence | Transform | Client-keyed | Status |
|---|---|---|---|---|---|---|
| Qwen3-8B-kllm | Qwen/Qwen3-8B@b968826d9c | Text | Apache-2.0 | perm | Yes | Rolling out |
| Qwen3-4B-Instruct-2507-kllm | Qwen/Qwen3-4B-Instruct-2507@cdbee75f17 | Text | Apache-2.0 | perm | Yes | Rolling out |
| Qwen3-32B-kllm | Qwen/Qwen3-32B@9216db5781 | Text | Apache-2.0 | perm | Yes | Rolling out |
- Each repository carries kllm-manifest.json: the base and its revision, the key fingerprint and key version, the kLLM version and the SHA-256 digest of every file.
Check a published model against its public base
With the model key, kllm verify seals the public base again under the same key and transform in a temporary directory and compares the result tensor by tensor, unlocked, together with the tokenizer, every other file and the manifest.
$ hf download ANetResearch/Qwen3-8B-kllm --local-dir Qwen3-8B-kllm
$ kllm verify Qwen3-8B-kllm --base Qwen/Qwen3-8B --revision b968826d9c46dd6066d109eabc6255188de91218 --key Qwen3-8B-kllm.key
Library tags
Tags
Each tag pins an upstream Hugging Face revision, so the same alias downloads the same bytes on every host. Sizes and minimum GPU memory are taken from the kLLM library.
| Alias | Upstream | Size | Min. GPU memory | Transforms | Copy |
|---|---|---|---|---|---|
| qwen3:1.7b | Qwen/Qwen3-1.7B | 4.1 GB | 7 GB | orth, perm | |
| qwen3:4b | Qwen/Qwen3-4B | 8.0 GB | 11 GB | orth, perm | |
| qwen3:8bdefault | Qwen/Qwen3-8B | 16 GB | 21 GB | orth, perm | |
| qwen3:14b | Qwen/Qwen3-14B | 30 GB | 36 GB | orth, perm | |
| qwen3:32b | Qwen/Qwen3-32B | 66 GB | 76 GB | orth, perm |
Validated variants
Measured variants
Variants that the team has sealed and served, with their measured engines and hardware.
| Variant | Transforms | Engines | GPU | Sealing time | Input and output |
|---|---|---|---|---|---|
| Qwen3-1.7B | orth, perm | SGLang 0.5.21, vLLM 0.31.0 (measured) | One A40 48 GB | 14–20 s (1–2B models) | Text in, text out |
| Qwen3-8B | orth, perm | SGLang 0.5.21 (measured); vLLM not measured | One A40 48 GB | Not reported | Text in, text out |
Measured results
Plain against sealed
Published measurements for this model, each with its conditions. Single runs; they do not generalize beyond the configurations shown.
Qwen3-1.7B on SGLang 0.5.21
One NVIDIA A40 48 GB; bf16; random token ids, 1024 input / 128 output tokens; concurrency 1 runs 10 requests, concurrency 16 runs 128; GPU shared with another tenant's light job; single runs, no variance reported. Perplexity over 14690 tokens of the GPL-3, GFDL-1.3 and Apache-2.0 licence texts (tools/ppl.py).
| Metric | Plain | perm | orth |
|---|---|---|---|
| Median TTFT, concurrency 1 (ms) | 98.0 | 105.2 | 104.3 |
| Median TPOT, concurrency 1 (ms) | 12.44 | 12.54 | 12.32 |
| Output throughput, concurrency 16 (tok/s) | 563 | 577 | 580 |
| Median TPOT, concurrency 16 (ms) | 21.5 | 22.7 | 22.4 |
| Perplexity | 5.4991 | 5.5057 | 5.5315 |
| Mean |Δ log-prob| vs plain | - | 0.069 | 0.098 |
Qwen3-1.7B on vLLM 0.31.0
One NVIDIA A40 48 GB; bf16; random token ids, 1024 input / 128 output tokens; concurrency 1 runs 10 requests, concurrency 16 runs 128; GPU shared with another tenant's light job; single runs, no variance reported. Perplexity over 14690 tokens of the GPL-3, GFDL-1.3 and Apache-2.0 licence texts (tools/ppl.py).
| Metric | Plain | perm | orth |
|---|---|---|---|
| Median TTFT, concurrency 1 (ms) | 65.3 | 66.3 | 68.4 |
| Median TPOT, concurrency 1 (ms) | 6.59 | 6.60 | 6.59 |
| Output throughput, concurrency 16 (tok/s) | 1097 | 1094 | 1095 |
| Median TPOT, concurrency 16 (ms) | 12.32 | 11.97 | 11.94 |
| Perplexity | 5.4990 | 5.4970 | 5.5066 |
| Mean |Δ log-prob| vs plain | - | 0.061 | 0.090 |
Qwen3-8B on SGLang 0.5.21
One NVIDIA A40 48 GB; bf16; random token ids, 1024 input / 128 output tokens; concurrency 1 runs 10 requests, concurrency 16 runs 128; GPU shared with another tenant's light job; single runs, no variance reported. Perplexity over 14690 tokens of the GPL-3, GFDL-1.3 and Apache-2.0 licence texts (tools/ppl.py).
| Metric | Plain | perm | orth |
|---|---|---|---|
| Median TTFT, concurrency 1 (ms) | 199.5 | 200.1 | 200.4 |
| Median TPOT, concurrency 1 (ms) | 25.12 | 25.12 | 25.16 |
| Output throughput, concurrency 16 (tok/s) | 333 | 333 | 332 |
| Median TPOT, concurrency 16 (ms) | 35.3 | 36.2 | 37.3 |
| Perplexity | 1.9050 | 1.9036 | 1.9063 |
| Mean |Δ log-prob| vs plain | - | 0.031 | 0.045 |
Qwen3-1.7B quality on vLLM 0.31.0
Full test sets with lm-evaluation-harness (benchmarks/eval.sh); standard errors 0.004 for MMLU and 0.013 for GSM8K. All differences are inside one standard error.
| Benchmark | Plain | perm | orth |
|---|---|---|---|
| MMLU (acc, 0-shot) | 0.5560 | 0.5562 | 0.5548 |
| GSM8K (exact match, 5-shot, strict) | 0.6945 | 0.6952 | 0.6960 |
| GSM8K (exact match, 5-shot, flexible) | 0.6975 | 0.6960 | 0.6975 |
Qwen3-1.7B (perm): keyed against client-keyed serving
A40 GPUs; keyed and client-keyed serving run one after the other on the same GPU; 1024 input / 128 output tokens; client-keyed requests pass through kllm client proxy (benchmarks/client.sh). Under vLLM, two of four keyless launches matched --key to the bit and two differed by 0.05 mean |Δ log-prob| (perplexity 5.5017 and 5.5110).
| Metric | SGLang --key | SGLang --client | vLLM --key | vLLM --client |
|---|---|---|---|---|
| Median TTFT, concurrency 1 (ms) | 66.7 | 71.1 | 75.4 | 73.9 |
| Median TPOT, concurrency 1 (ms) | 6.81 | 6.87 | 7.23 | 7.26 |
| Output throughput, concurrency 16 (tok/s) | 1039 | 1042 | 1036 | 963 |
| Median TPOT, concurrency 16 (ms) | 12.38 | 12.63 | 12.61 | 12.96 |
| Perplexity | 5.4975 | 5.4975 | 5.4943 | 5.4943-5.5110 |
Security
What sealing does not hide for this model
- To an operator who reads GPU memory, user text reduces to a substitution cipher over tokens: 23.8% of tokens were decoded by unigram frequency alone on Qwen3-8B.
- The sealed weights derive from a public checkpoint. Locked files cannot be matched to it without the key; once unlocked to run, a holder of that checkpoint recovers the transforms and 98.5% of the vocabulary permutation (measured on Qwen3-8B), for unmodified public models and fine-tunes alike.
- Client-keyed mode keeps the key and the tokenizer on the user's machine. The copy that the cloud serves is unlocked on the user's side (kllm cloud --key), because the cloud computes with the weights. The cloud server (kllm serve --client) binds 0.0.0.0 by default and has no authentication; bind it to 127.0.0.1 or place it behind a gateway.
- Unless sealed with --no-lock, the weights on disk are locked: encrypted in place with AES-256-CTR under a key derived from the model key. kllm serve --key unlocks them into ~/.cache/kllm/unlocked (KLLM_UNLOCKED_DIR, mode 0700) before the engine starts, so whoever runs the model holds the unlocked weights. Each tensor's largest binary exponent is stored in the clear.
- Every approved holder of an official model's key holds the same model key, and the team derives it from an offline master key. A model key is not a confidentiality boundary between its holders; for a key known to no one else, seal the model under a private key.
- Outside a confidential VM, kllm serve --key decrypts the tokenizer into host /dev/shm and offers no protection from the host. It is a development mode.