Instructions to use reality-interface/qwen3.8-27b-agentic-nvfp4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use reality-interface/qwen3.8-27b-agentic-nvfp4 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="reality-interface/qwen3.8-27b-agentic-nvfp4") 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("reality-interface/qwen3.8-27b-agentic-nvfp4") model = AutoModelForMultimodalLM.from_pretrained("reality-interface/qwen3.8-27b-agentic-nvfp4", 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 reality-interface/qwen3.8-27b-agentic-nvfp4 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "reality-interface/qwen3.8-27b-agentic-nvfp4" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "reality-interface/qwen3.8-27b-agentic-nvfp4", "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/reality-interface/qwen3.8-27b-agentic-nvfp4
- SGLang
How to use reality-interface/qwen3.8-27b-agentic-nvfp4 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 "reality-interface/qwen3.8-27b-agentic-nvfp4" \ --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": "reality-interface/qwen3.8-27b-agentic-nvfp4", "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 "reality-interface/qwen3.8-27b-agentic-nvfp4" \ --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": "reality-interface/qwen3.8-27b-agentic-nvfp4", "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 reality-interface/qwen3.8-27b-agentic-nvfp4 with Docker Model Runner:
docker model run hf.co/reality-interface/qwen3.8-27b-agentic-nvfp4
qwen3.8-27b-agentic-nvfp4
Published and maintained by Gowtham Sridhar
An NVFP4 checkpoint of Qwen3.8-27B, packaged for agentic, multimodal, and general-purpose inference. It supports configurable reasoning, structured tool calling, image and video input, and native multi-token prediction (MTP).
Base model · DSpark companion · vLLM · SGLang
Start here
1. Set the model and download its chat template
The included chat_template.jinja is the source of truth for this release. It contains the current agentic formatting, reasoning controls, tool-call grammar, and continued-message fixes. Always pass it explicitly to the server.
export MODEL_ID="reality-interface/qwen3.8-27b-agentic-nvfp4"
export TEMPLATE_DIR="./qwen3.8-27b-agentic-nvfp4-template"
hf download "$MODEL_ID" chat_template.jinja --local-dir "$TEMPLATE_DIR"
export CHAT_TEMPLATE="$(pwd)/$TEMPLATE_DIR/chat_template.jinja"
You may replace MODEL_ID with a local checkpoint directory. In that case, point CHAT_TEMPLATE to the chat_template.jinja inside the same directory.
2. Start vLLM
Use standard serving for the first validation run:
vllm serve "$MODEL_ID" \
--served-model-name qwen3.8-27b-agentic-nvfp4 \
--trust-remote-code \
--quantization modelopt_fp4 \
--chat-template "$CHAT_TEMPLATE" \
--kv-cache-dtype fp8 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml
3. Send a request
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="local")
response = client.chat.completions.create(
model="qwen3.8-27b-agentic-nvfp4",
messages=[
{"role": "user", "content": "Outline a practical plan for organizing a research project."}
],
temperature=0.7,
top_p=0.8,
presence_penalty=1.5,
extra_body={
"top_k": 20,
"min_p": 0.0,
"repetition_penalty": 1.0,
"chat_template_kwargs": {"enable_thinking": False},
},
)
print(response.choices[0].message.content)
Model overview
| Capability | Support |
|---|---|
| Agentic workflows | System/developer instructions, structured tools, parallel tool calls, and tool results |
| Multimodal input | Text, images, and video |
| Reasoning control | Thinking and non-thinking modes with adjustable reasoning effort |
| Quantization | ModelOpt NVFP4 weights for compatible serving runtimes |
| Context window | Up to 262,144 tokens; validate memory requirements for your deployment |
| Speculative decoding | Native MTP or external DSpark in vLLM, plus DSpark in SGLang |
The checkpoint is already quantized. --quantization modelopt_fp4 loads the packed weights; it does not quantize them again. Do not apply BitsAndBytes, AWQ, GPTQ, or another conversion while loading this checkpoint.
Serving
Choose one path and confirm ordinary generation before enabling speculative decoding.
| Path | Use it for |
|---|---|
| vLLM standard | First deployment, compatibility checks, and baseline measurements |
| vLLM native MTP | Built-in speculative decoding without a separate draft checkpoint |
| vLLM + DSpark | External DSpark drafting through vLLM's speculative-decoding API |
| SGLang standard | SGLang's OpenAI-compatible server without speculation |
| SGLang + DSpark | External DSpark drafting with a current DSpark-capable SGLang build |
Do not enable native MTP and DSpark in the same server.
vLLM
Standard serving
Use the command in Start here. Its key options are:
--quantization modelopt_fp4loads the existing ModelOpt NVFP4 weights.--chat-template "$CHAT_TEMPLATE"uses this release's corrected prompt format.--reasoning-parser qwen3exposes reasoning through the API.--tool-call-parser qwen3_xmlmatches the template's default XML tool calls.
If the installed vLLM version does not recognize the model architecture, modelopt_fp4, or qwen3_xml, update vLLM rather than changing the checkpoint metadata.
Native MTP
This checkpoint contains a native MTP head, so no separate draft model is required. Use 3 speculative tokens as the recommended starting profile:
vllm serve "$MODEL_ID" \
--served-model-name qwen3.8-27b-agentic-nvfp4 \
--trust-remote-code \
--quantization modelopt_fp4 \
--chat-template "$CHAT_TEMPLATE" \
--kv-cache-dtype fp8 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
Depth 3 follows current vLLM MTP serving guidance and is a practical default. It is not a universal optimum: the model has one native MTP layer, so vLLM reuses that layer recursively for deeper proposals. Acceptance and throughput depend on prompts, sampling, concurrency, hardware, and context length.
For production tuning:
- Measure standard serving with MTP disabled.
- Validate output and tool calls with depth
3. - Compare depths
2and3with the same prompts and concurrency. - Keep the fastest stable result, or disable MTP if it does not help your workload.
Depth 4 may be tested, but it is not the recommended default because the extra draft step can cost more than the accepted tokens save. See the vLLM speculative-decoding documentation for current runtime details.
DSpark speculative decoding
vLLM can also use the external Qwen3.8-27B-DSpark-NVFP4 companion. Its draft block size is 7, so this profile uses 7 speculative tokens:
export DSPARK_MODEL_ID="gittensor-model-hub/Qwen3.8-27B-DSpark-NVFP4"
vllm serve "$MODEL_ID" \
--served-model-name qwen3.8-27b-agentic-nvfp4 \
--trust-remote-code \
--quantization modelopt_fp4 \
--chat-template "$CHAT_TEMPLATE" \
--kv-cache-dtype fp8 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--speculative-config "{\"method\":\"dspark\",\"model\":\"$DSPARK_MODEL_ID\",\"num_speculative_tokens\":7,\"quantization\":\"modelopt_fp4\",\"draft_sample_method\":\"greedy\"}"
This path requires a recent vLLM build with Qwen3DSparkModel, DSpark, Qwen3.8, and ModelOpt FP4 support. Confirm standard serving first. Then compare DSpark against native MTP with identical prompts and concurrency; keep only the mode that improves your workload. Speculative decoding accelerates decode, not prompt prefill.
SGLang
Standard serving
python3 -m sglang.launch_server \
--model-path "$MODEL_ID" \
--served-model-name qwen3.8-27b-agentic-nvfp4 \
--trust-remote-code \
--quantization modelopt_fp4 \
--chat-template "$CHAT_TEMPLATE" \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--port 30000
The qwen3_coder parser matches the template's native XML function-call grammar. If the installed SGLang version does not recognize this parser or modelopt_fp4, update SGLang before connecting agent clients.
DSpark speculative decoding
DSpark uses a separate draft checkpoint to propose candidate tokens before this target model verifies them. Use the compatible Qwen3.8-27B-DSpark-NVFP4 companion and keep its weights separate from this repository.
DSpark integration is evolving. Use a current SGLang build that exposes the DSPARK algorithm:
export DSPARK_MODEL_ID="gittensor-model-hub/Qwen3.8-27B-DSpark-NVFP4"
python3 -m sglang.launch_server \
--model-path "$MODEL_ID" \
--served-model-name qwen3.8-27b-agentic-nvfp4 \
--trust-remote-code \
--quantization modelopt_fp4 \
--chat-template "$CHAT_TEMPLATE" \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--speculative-algorithm DSPARK \
--speculative-draft-model-path "$DSPARK_MODEL_ID" \
--speculative-draft-model-quantization modelopt_fp4 \
--speculative-dspark-block-size 7 \
--port 30000
Keep the target and draft versions paired. The explicit draft quantization and block size match this companion checkpoint. Benchmark conversation, long reasoning, and XML tool calls before production use.
Generation
Reasoning modes
Pass template controls through chat_template_kwargs:
# Thinking mode
extra_body = {
"chat_template_kwargs": {
"enable_thinking": True,
"reasoning_effort": "xhigh",
"preserve_thinking": True,
}
}
# Direct-response mode
extra_body = {
"chat_template_kwargs": {
"enable_thinking": False,
}
}
Recommended sampling
Keep thinking and non-thinking profiles separate. These are starting points; tune them for your application.
| Mode | temperature |
top_p |
top_k |
min_p |
presence_penalty |
repetition_penalty |
Template controls | Use case |
|---|---|---|---|---|---|---|---|---|
| Thinking | 1.0 |
0.95 |
20 |
0.0 |
0.0 |
1.0 |
enable_thinking=true, reasoning_effort="xhigh" |
Planning, reasoning, and difficult agentic work |
| Everyday non-thinking | 0.7 |
0.80 |
20 |
0.0 |
1.5 |
1.0 |
enable_thinking=false |
Natural conversation, instruction following, and general use |
| Deterministic non-thinking | 0 |
— | — | — | — | — | enable_thinking=false |
Repeatable extraction, formatting, and regression tests |
For deterministic requests, set temperature=0 and leave sampling-only controls unset. Greedy decoding is an optional deterministic profile, not the recommended profile for everyday conversation or open-ended reasoning.
Tool calling
The vLLM command enables automatic tool choice. Supply OpenAI-compatible function definitions:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city.",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="qwen3.8-27b-agentic-nvfp4",
messages=[{"role": "user", "content": "What is the weather in Vienna?"}],
tools=tools,
tool_choice="auto",
extra_body={
"chat_template_kwargs": {
"enable_thinking": False,
}
},
)
print(response.choices[0].message.tool_calls)
Execute returned calls in your application, append their results as tool messages, and send the updated conversation back to the model. Keep tool_call_format="xml" when the server uses qwen3_xml; JSON output with an XML parser creates a format mismatch.
Image input
response = client.chat.completions.create(
model="qwen3.8-27b-agentic-nvfp4",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image and list the main objects."},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
],
}
],
)
Chat template options
Always use the current chat_template.jinja. It is intentionally separate from tokenizer_config.json, so automatic discovery may select a different template.
| Option | Default | Purpose |
|---|---|---|
reasoning_effort |
xhigh |
Select xhigh, medium, or low reasoning depth |
enable_thinking |
true |
Enable or disable thinking output |
preserve_thinking |
true |
Preserve earlier thinking in conversation history |
tool_call_format |
xml |
Select xml or json tool-call output |
continue_final_message |
false |
Continue an assistant message instead of opening a new turn |
Use enable_thinking=false explicitly for non-thinking tool calls. The legacy auto_disable_thinking_with_tools option is rejected because changing the prompt mode without changing vLLM's Qwen reasoning-parser state would misclassify reasoning as normal content.
Client integrations
The model and template support developer/system instructions, reasoning history, OpenAI-style tools, parallel calls, tool results, and multimodal placeholders. The serving layer translates the native format for each client.
| Client | Connection |
|---|---|
| Codex CLI and compatible Codex clients | vLLM Responses API at http://localhost:8000/v1 |
| Claude Code | vLLM Anthropic-compatible endpoint at http://localhost:8000 |
| Open WebUI | OpenAI-compatible connection at http://localhost:8000/v1 |
| Hermes Agent | Custom OpenAI-compatible provider at http://localhost:8000/v1 |
| Other agent harnesses | OpenAI Chat Completions or Responses with standard messages, tools, and tool results |
Codex
Add a local provider to ~/.codex/config.toml:
model = "qwen3.8-27b-agentic-nvfp4"
model_provider = "local_vllm"
[model_providers.local_vllm]
name = "Local vLLM"
base_url = "http://localhost:8000/v1"
env_key = "VLLM_API_KEY"
wire_api = "responses"
Set VLLM_API_KEY to the key accepted by your vLLM server. A placeholder such as local is sufficient when server authentication is disabled.
Claude Code
export ANTHROPIC_BASE_URL="http://localhost:8000"
export ANTHROPIC_API_KEY="local"
export ANTHROPIC_AUTH_TOKEN="local"
export ANTHROPIC_DEFAULT_OPUS_MODEL="qwen3.8-27b-agentic-nvfp4"
export ANTHROPIC_DEFAULT_SONNET_MODEL="qwen3.8-27b-agentic-nvfp4"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3.8-27b-agentic-nvfp4"
claude
Regular ChatGPT chat does not accept an arbitrary self-hosted model endpoint. This is a client limitation, not a checkpoint or template limitation.
Transformers prompt construction
Use the processor for prompt construction and load the standalone template explicitly:
from pathlib import Path
from huggingface_hub import hf_hub_download
from transformers import AutoProcessor
model_id = "reality-interface/qwen3.8-27b-agentic-nvfp4"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
template_path = hf_hub_download(repo_id=model_id, filename="chat_template.jinja")
chat_template = Path(template_path).read_text(encoding="utf-8")
messages = [{"role": "user", "content": "Describe a robust agent workflow."}]
prompt = processor.apply_chat_template(
messages,
chat_template=chat_template,
tokenize=False,
add_generation_prompt=True,
)
For a local checkpoint, read chat_template.jinja from the same directory. This example intentionally loads only the processor. Use vLLM, SGLang, or another ModelOpt-aware runtime for the packed NVFP4 weights rather than loading them with stock Transformers.
Model details
The output head (lm_head), MLP projections, and supported linear layers are stored in NVFP4. The vision tower, token embeddings, native MTP components, and precision-sensitive Gated-DeltaNet layers remain in BF16.
| Item | Value |
|---|---|
| Base model | Qwen3.8-27B |
| Architecture | Vision-language, image-text-to-text |
| Quantization | ModelOpt NVFP4 with selected BF16 components |
| Context window | Up to 262,144 tokens |
| Intended use | Agentic, multimodal, conversational, and general-purpose generation |
Evaluation and responsible use
Evaluate response quality, tool reliability, multimodal behavior, safety, context length, memory use, and speculative-decoding performance on your own workloads before production deployment. Runtime compatibility and optimal serving settings vary by hardware and software version.
Attribution
This is a derived checkpoint based on Qwen3.8-27B.
License
This repository is licensed under CC BY-NC-ND 4.0. You may share it with attribution for non-commercial purposes. You may not distribute modified versions.
- Downloads last month
- 112
Model tree for reality-interface/qwen3.8-27b-agentic-nvfp4
Base model
Qwen/Qwen3.8-27B