Troubleshooting
This page lists the error messages of the kllm command, grouped by task, with their
causes and remedies. Messages are quoted as the code prints them, without the status
symbols that precede some of them; <...> marks a value that varies. Errors that come
from the engine itself are covered at the end.
Most errors exit with status 1. Errors of the sealed-model and key-source checks, missing extras and unknown recipes exit with status 2.
General diagnosis
Run
kllm versionto confirm the installed version (kllm 0.1.0.dev0).Run
kllm serve MODEL ... --dry-runto print the engine command without starting it, then run that command directly to see the engine’s own output. With--key, the dry run still unlocks the key and writes the decrypted tokenizer to/dev/shm.Use full option names. Abbreviations such as
--transare accepted by the parser but are not documented.Put the model before
--key:kllm serve MODEL --key [KEYFILE]. Because--keytakes an optional value,kllm serve --key MODELreadsMODELas the key file and then reports that the model argument is missing.
Installation and extras
Message |
Cause and remedy |
|---|---|
|
A command that handles keys or sealed models ( |
|
The |
|
The engine is not installed in the interpreter that runs |
|
The INT8 linear kernels run on bf16 activations only. Serve H3 in bf16, or use
|
kllm is not yet published on PyPI; see Installation guide.
Keys and passphrases
Message |
Cause and remedy |
|---|---|
|
The command runs without a terminal (a script, a container, a service). Set
|
|
|
|
Choose a passphrase of 10 characters or more. |
|
|
|
No key file at the default path |
|
The file is not a kLLM key file, or was written by an incompatible version. |
|
The passphrase does not decrypt the key file, or the file was altered. |
See Model keys.
Sealing
Message |
Cause and remedy |
|---|---|
|
The output directory, or with |
|
The source is a sealed model. Seal the original checkpoint instead. |
|
The architecture cannot be sealed. It can still be served plain. See Supported models. |
|
The checkpoint sets |
|
|
|
A quantization method other than FP8, for example AWQ or GPTQ. |
|
The sealer reads safetensors weights only. Convert |
|
The |
|
Add |
|
|
|
The text encoder of an H3 or Z-Image pipeline has attention biases. |
|
The Z-Image variant cannot be sealed for client-keyed serving. |
|
A diffusers pipeline that is neither MiniMax H3 nor Z-Image. |
|
The checkpoint contains a tensor the sealer does not recognize. The sealer refuses rather than copy it unchanged. |
Serving
Message |
Cause and remedy |
|---|---|
|
|
|
The key file is not the one the model was sealed with. |
|
The encrypted tokenizer |
|
The weights were locked by a kLLM version with another lock format. Use a matching kLLM version, or seal the original checkpoint again. |
|
A client-keyed Z-Image pipeline was served with |
|
A Z-Image pipeline sealed without |
|
|
|
|
|
|
|
Arguments after |
|
Production mode ( |
|
|
If kllm serve picks the wrong tensor-parallel size, pass --tp. GPU detection uses
nvidia-smi and resolves only numeric CUDA_VISIBLE_DEVICES values; with GPU UUIDs it
counts every GPU.
Client-keyed mode
Message |
Cause and remedy |
|---|---|
|
|
|
|
|
The served directory has locked weights, for example a catalog model or the user’s
sealed directory. Write the cloud’s copy with |
|
|
|
|
Warning: |
The served directory contains the tokenizer or |
|
|
HTTP 400 |
These fields of |
HTTP 400 |
The proxy forwards |
HTTP 400 |
The Z-Image prompt encodes to no token ids or to invalid ids. |
HTTP 400 |
|
Known limitations of the proxy in 0.1.0.dev0:
Non-streaming requests block the proxy for the whole generation, so concurrent non-streaming clients are served one at a time. Streaming requests are not affected.
A non-streaming completion whose last token ends inside a multi-byte character returns empty text. Request a few more tokens, or use streaming.
A connection error to the cloud is returned as HTTP 500 without detail. Check the URL and the tunnel.
kllm clientsends no credentials, so an engine started with its own--api-keycannot be used through it.
Engine errors and output problems
kllm serve replaces itself with the engine process, so errors after the line
serving http://... come from SGLang or vLLM. Consult the engine’s documentation, and
pass engine options after --.
- The sealed model produces unrelated text in random scripts
The engine runs the sealed weights with a tokenizer other than the decrypted, permuted one, for example a launcher that loads the public tokenizer. Start sealed models with
kllm serve MODEL --key, or pass the directory printed bykllm unlockas the engine’s tokenizer.- The sealed model produces meaningless output with the right tokenizer
The engine loads the locked weights of the sealed directory instead of the unlocked copy.
kllm serve --keyhandles this itself; with another launcher, pass the directory thatkllm unlockreports asweights unlocked: PATHon standard error as the engine’s model (Other launchers: kllm unlock).- The engine cannot find a tokenizer for a sealed model
A sealed LLM directory contains no plaintext tokenizer. Use
kllm serve --keyorkllm unlock, as above.- Perplexity differs between runs under vLLM
Start vLLM with
--no-enable-prefix-cachingfor perplexity measurements. In the published client-keyed measurements, two of four vLLM launches differed from the others by 0.05 in mean |Δ log-prob|, while each launch was deterministic; see Client-keyed mode.- The disk fills up after serving locked models
kllm serve --keyandkllm unlockwrite one unlocked copy of the weights per key and set of weight files to~/.cache/kllm/unlocked(orKLLM_UNLOCKED_DIR), and do not remove it. Delete copies of models that are no longer served; they hold the weights in the clear. PointKLLM_UNLOCKED_DIRat a volume with room for the weights./dev/shmfills upkllm serve --keyandkllm unlockwrite the decrypted tokenizer, and for H3 a pipeline view, to a new/dev/shm/kllm-tok-*directory on every start, and do not remove it. Remove directories that are no longer in use; they contain the decrypted tokenizer. In a container, give/dev/shmenough space (--shm-size).kllm demo upfails withAttributeErrorkllm demo upis under repair in 0.1.0.dev0 and does not start.
If a problem is not listed here, search the issue tracker and report it with the output of
kllm version, the command, its --dry-run output and the engine version.
See also
Frequently asked questions for general questions.
Command-line reference for every command and option.
Settings for the environment variables.