Instructions to use Jackrong/Qwopus3.8-27B-Flash with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Jackrong/Qwopus3.8-27B-Flash with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="Jackrong/Qwopus3.8-27B-Flash") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Jackrong/Qwopus3.8-27B-Flash") model = AutoModelForMultimodalLM.from_pretrained("Jackrong/Qwopus3.8-27B-Flash", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Jackrong/Qwopus3.8-27B-Flash with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Jackrong/Qwopus3.8-27B-Flash" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jackrong/Qwopus3.8-27B-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/Jackrong/Qwopus3.8-27B-Flash
- SGLang
How to use Jackrong/Qwopus3.8-27B-Flash with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Jackrong/Qwopus3.8-27B-Flash" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jackrong/Qwopus3.8-27B-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Jackrong/Qwopus3.8-27B-Flash" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jackrong/Qwopus3.8-27B-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use Jackrong/Qwopus3.8-27B-Flash with Docker Model Runner:
docker model run hf.co/Jackrong/Qwopus3.8-27B-Flash
Generated Python uses 1-space indentation at every nesting level (unparseable output)
Thanks for releasing this model — the reasoning quality looks genuinely good, which is why I wanted to report this rather than just move on.
Summary
When generating Python, the model emits a single space of indentation regardless of nesting depth. Depth 1, 2 and 3 all come out as one space, so the code does not parse.
This is not a quantization or GGUF conversion issue — I checked. It reproduces when loading the safetensors directly with transformers.
Reproduction
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
MODEL = "Jackrong/Qwopus3.8-27B-Flash"
PROMPT = ("Write one Python function squeeze(items) that removes consecutive "
"duplicates from a list of integers. Return only a python code block, "
"no explanation. Use a loop with an if statement inside it.")
q = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_quant_type="nf4")
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForCausalLM.from_pretrained(MODEL, quantization_config=q,
device_map="auto").eval()
text = tok.apply_chat_template([{"role": "user", "content": PROMPT}],
tokenize=False, add_generation_prompt=True)
inp = tok(text, return_tensors="pt").to(model.device)
out = model.generate(**inp, max_new_tokens=256, do_sample=False,
pad_token_id=tok.pad_token_id or tok.eos_token_id)
print(tok.decode(out[0][inp["input_ids"].shape[-1]:], skip_special_tokens=True))
Actual output
def squeeze(items):
result = []
for item in items:
if not result or result[-1] != item:
result.append(item)
return result
IndentationError: expected an indented block after 'for' statement
Note that the body of the for and the body of the if sit at the same indentation as the for itself, so the block structure is unrecoverable — this cannot be fixed by re-indenting afterwards.
Token-level evidence
I collected the whitespace-only tokens from the generated sequence and compared against Qwen3.8-27B running on the same llama.cpp build, same arch (qwen35), same prompt:
| token 262 (3 spaces) | token 285 (7 spaces) | token 309 (11 spaces) | |
|---|---|---|---|
| Qwen3.8-27B Q6_K | x27 | x12 | x6 |
| Qwopus3.8-27B-Flash | 0 | 0 | 0 |
Qwen3.8-27B uses the depth-specific indentation tokens correctly. Qwopus-Flash never selects any of them — the leading space is merged into the following word token, so every nesting level ends up with exactly one space.
The tokenizer itself is fine. A round-trip confirms the vocabulary can represent 4-space indentation:
"def f():\n result = []\n"
-> 727 'def' / 281 ' f' / 4406 '():' / 198 newline / 262 (3 spaces) / 1067 ' result' / ...
What I ruled out
| Suspected cause | How I checked | Result |
|---|---|---|
Speculative decoding (--spec-type draft-mtp) |
Ran the same gguf with it disabled | Still collapses; disabling it did not help |
| Detokenization | Decoded each generated token id individually | Already 1 space at the token-id level |
| Vocabulary / merges | Tokenizer round-trip on 4-space-indented code | Correctly represented (token 262) |
| Quantization bits | Compared Q4_K_M vs Q5_K_M, greedy | Byte-identical output |
| Prompting | Added "use exactly 4 spaces per indentation level" | Acknowledged in thinking, ignored in output |
| My llama.cpp build | Same build, same arch, Qwen3.8-27B | Works correctly |
| GGUF conversion | transformers + safetensors, no GGUF involved | Still collapses |
Impact
On my own SWE-bench-style harness — not the official SWE-bench, but 60 self-written tasks where the model patches a bug and hidden pytest decides pass/fail (zephel01/swe-bench, MIT, stdlib-only) — 14 of 60 tasks scored zero before any test ran, because the generated file could not be parsed. Only 2 tasks failed on actual logic. The reasoning in the collapsed files looks correct — it is purely the indentation that makes them unrunnable.
Question
Is this intentional? The model card mentions "9.9% fewer characters", and collapsing 4-space indentation to 1 space would be one way to achieve that. If it is a side effect of the efficiency training (or of whitespace normalization in the SFT corpus), it may be worth a note on the model card, since it makes the model unusable for code generation in its current form.
Happy to re-test if you push an updated version.
Environment
- transformers + bitsandbytes 4bit (nf4), greedy,
max_new_tokens=256 - Also reproduced on llama.cpp with the official MTP-Q4_K_M and MTP-Q5_K_M GGUFs
- Control model: Qwen3.8-27B Q6_K, same llama.cpp build
- Benchmark harness: https://github.com/zephel01/swe-bench (MIT, stdlib-only, reproducible)
Thank you so much for taking the time to write such a detailed and thoughtful report. I really appreciate the depth of your investigation — it’s extremely helpful😄
I’ve taken note of the indentation issue you identified, and I’ll be looking into it right away. A fix is already in progress, and I expect to release an updated version soon!