Instructions to use LeoHyperlink/Sage-1.5-W4A16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use LeoHyperlink/Sage-1.5-W4A16 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="LeoHyperlink/Sage-1.5-W4A16") 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)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("LeoHyperlink/Sage-1.5-W4A16") model = AutoModelForMultimodalLM.from_pretrained("LeoHyperlink/Sage-1.5-W4A16", 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=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use LeoHyperlink/Sage-1.5-W4A16 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "LeoHyperlink/Sage-1.5-W4A16" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "LeoHyperlink/Sage-1.5-W4A16", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/LeoHyperlink/Sage-1.5-W4A16
- SGLang
How to use LeoHyperlink/Sage-1.5-W4A16 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 "LeoHyperlink/Sage-1.5-W4A16" \ --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": "LeoHyperlink/Sage-1.5-W4A16", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "LeoHyperlink/Sage-1.5-W4A16" \ --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": "LeoHyperlink/Sage-1.5-W4A16", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use LeoHyperlink/Sage-1.5-W4A16 with Docker Model Runner:
docker model run hf.co/LeoHyperlink/Sage-1.5-W4A16
Sage-1.5-W4A16
W4A16 compressed-tensors quantization of InternScience/Sage-A1.5 for fast text serving on Intel Arc GPUs. Follows the base model license (Apache-2.0).
- Quant-first: int4 symmetric weights (group 128), fp16 compute, packed compressed-tensors export — tuned for bandwidth-bound single-stream decode on a single 32 GB card.
- Server-validated: every number below was measured on the same live serve, not estimated.
- Faithful: unquantizable tensors (MTP, vision,
lm_head, shared-expert gates) ship alongside as raw BF16 instead of being silently dropped.
Model details
| Property | Specification |
|---|---|
| Base checkpoint | InternScience/Sage-A1.5, text use (--language-model-only) |
| Parameters | ~36B (Qwen3_5MoeForConditionalGeneration: 40 layers, 256 experts, 8 active) |
| Architecture | MoE decoder (hidden 2048, tied word embeddings), plus MTP and a vision tower (both BF16, text serve unused) |
| Context length | 8192 tokens at serve time (--max-model-len 8192) |
| Quantization | W4A16 compressed-tensors, pack-quantized (int4 symmetric, group 128, no activation quantization) |
| License | Apache-2.0 (follows the base model) |
Inference
Serve with vLLM (XPU fork on Intel GPUs; upstream CUDA vLLM also reads compressed-tensors):
pip install "vllm>=0.32" # XPU fork (vllm-xpu) on Intel GPUs
vllm serve LeoHyperlink/Sage-1.5-W4A16 --trust-remote-code \
--max-model-len 8192 --gpu-memory-utilization 0.9 --language-model-only
Transformers can load it for offline use (compressed-tensors + llmcompressor packages), but expect CPU-class
throughput there; the fused path above is the vLLM one.
Sampling parameters (the validated settings — all numbers below used these):
- General (chat, structured output, evals):
temperature=0, thinking disabled via--default-chat-template-kwargs '{"enable_thinking": false}'. - Thinking must be off for valid string-match and structured-output evals: raw completions with thinking scored 9.9% GSM8K / 26.6% IFEval on this same checkpoint, vs 92.0% / 81.9% with thinking off and the chat template applied. That gap measures the harness, not the quant.
Performance
Speed (measured, not estimated)
Single-stream decode, 128 streamed tokens (temperature 0, prompt: "Explain why the sky is blue in one short paragraph"),
OpenAI-compatible /v1/chat/completions streaming, tokens counted after time-to-first-token:
| Checkpoint | Decode | TTFT | Backend |
|---|---|---|---|
| This repo (Sage W4A16-CT) | 104.3 t/s | 0.06 s | XPUwNa16LinearKernel (fused) |
| intel-ai/Qwen3.6-35B-A3B-MXFP4-Mixed-FP8Attn-CT-AutoRound (same box and protocol, reference) | 60.0 t/s | 0.08 s | XPUExpertsMxFp4 + XPUMxFp8LinearKernel |
Correctness spot-checks on this checkpoint: 8/8 concurrent prompts coherent, plus an 80-request 4-way-concurrency soak
with zero garbage outputs. A/B notes: FP8 KV cache + prefix caching did not move single-stream decode
(102.4 vs 104.3 t/s, noise); the tuner-suggested VLLM_XPU_LM_HEAD_INT8=1 does not exist in the serving build below
and was rejected.
Benchmarks
Three sound-harness proxy scores — every one measured on the same live serve as the speed numbers above (thinking off, temperature 0):
| Benchmark | Sage-1.5 W4A16 |
Setup | Hub card |
|---|---|---|---|
| Math | |||
| GSM8K | 92.0% flex / 91.5% strict | lm-eval, 1319 prompts, chat + template | .eval_results/gsm8k.yaml |
| Instruction following | |||
| IFEval | 81.9% prompt-strict / 87.7% inst-strict | lm-eval, 541 prompts, chat + template, thinking off | README only (unregistered) |
| Structured output | |||
| IFStruct v1.0 | 72.8% pass (1456/2000) | upstream harness, 2000 prompts | .eval_results/ifstruct.yaml |
| Not run here | |||
| HLE | n/a | no HLE task in lm-eval 0.4.13 | — |
Evaluation details
All proxy scores were measured against the live vLLM-XPU 0.32.0 endpoint (single Arc Pro B70, thinking disabled,
temperature 0). GSM8K: lm-eval 0.4.13 local-chat-completions, 1319 prompts, 8-way
concurrency (loose scores: 86.0% prompt / 90.5% instance). IFEval: lm-eval, 541 prompts, chat
completions + template, thinking off. IFStruct: upstream harness
(github.com/Liquid4All/ifstruct) with defaults (temperature 0, max_tokens 2000) — JSON 73.3%,
YAML 72.3%.
The base model card's 12 agentic benchmarks (SWE-Pro 61.2, SWE-Multilingual 72.7, Scicode 44.3, MLE-Lite 65.2, FS-Olympiad 81.0, HLE w/ tools 55.1, CritPt 20.0, CMT 80.0, ALE-CLI 19.1, PinchBench 90.0, BrowseComp 82.8, IFBench 81.6) need tool harnesses (terminals, browsers, multi-turn agents) this box does not run, so they cannot be re-run here. Do not place proxy numbers next to the base chart as recovery percentages — different benchmarks, different harnesses. String-match benchmarks on a thinking model measure the harness unless thinking is off and the chat template is applied: raw completions with thinking scored 9.9% GSM8K / 26.6% IFEval on this same checkpoint.
Recipe
| Setting | Value |
|---|---|
| Tool | Intel auto-round 0.15.1, auto_round:llm_compressor (CT pack-quantized) export |
| Weights | int4 symmetric, group 128 |
| Activations | none quantized (fp16 compute) |
| Calibration | pile-10k default (128 samples x 2048 tokens), auto-round default optimizer settings |
| torch.compile | explicitly disabled (Triton make_ttgir inductor failure on XPU) |
| Quantized | 31030 / 31181 layers |
| Kept in BF16 | lm_head, per-layer mlp.shared_expert_gate, visual tower |
| MTP | NOT quantized: 785 raw BF16 tensors passed through to model_extra_tensors.safetensors |
| Quant time | ~8.7 h on one Intel Arc Pro B70 |
Tested hardware / software
- GPU: Intel Arc Pro B70 32 GB (Battlemage Xe2, 256 XMX engines, 608 GB/s), single GPU, ~90% VRAM in use at serve time
- Host: 64-core CPU, 251 GB RAM
- Serving stack: vLLM-XPU 0.32.0 fork (
vllm-xpu-kernelswithlibgrouped_gemm_xe_2andfused_moe_interface), torch 2.x +XPU, oneCCL - Serve flags:
--trust-remote-code --max-model-len 8192 --gpu-memory-utilization 0.9 --language-model-only --kv-cache-dtype fp8 --enable-prefix-caching(text-only; the visual tower ships BF16 and was not exercised), GPU pinned viaONEAPI_DEVICE_SELECTOR=level_zero:N. Note:ZE_AFFINITY_MASK=0.0crashes engine init on this build (int parsing of"0.0"); this build binds localhost only. - Eval harnesses: lm-eval 0.4.13
local-chat-completionsagainst the live endpoint (8-way concurrency), IFStruct upstream harness against the same endpoint.
Files
model-0000[1-4]-of-00004.safetensors(20 GB) +model.safetensors.index.json— quantized weightsmodel_extra_tensors.safetensors(1.7 GB) — raw BF16 MTP/vision passthrough tensors, kept for faithfulness. vLLM 0.32.0 cannot load them alongside the CT main checkpoint; text-only serving does not need them.quantization_config.json— compressed-tensors pack-quantized spec (int4 symmetric g128, no activation quant)config.json, tokenizer files,preprocessor/processorconfigs,chat_template.jinja,generation_config.json.eval_results/gsm8k.yaml,.eval_results/ifstruct.yaml— machine-readable scores (Hub eval-results schema)
Limitations
- The base chart's agentic benchmarks were not re-run (see Benchmarks); proxy numbers above are not recovery claims.
- Multimodal (vision) path ships BF16 and was not benchmarked here.
- The 80-sample soak is a smoke test, not a proof: the same Qwen family has a known unquantized-
lm_headsustained-concurrency corruption trap on some builds, so soak your own workload before production. - MTP speculative decoding is NOT enabled by this checkpoint (MTP weights are raw; the loader requires packed CT).
Citation
No new training was done for this quant — if you use it, cite the base model (InternScience/Sage-A1.5) and link back to this repo for the quantization recipe and serving numbers.
- Downloads last month
- 98
Model tree for LeoHyperlink/Sage-1.5-W4A16
Base model
InternScience/Sage-A1.5Evaluation results
- Flexible match on GSM8Ktest set Model card (sound harness notes)0.920
- Strict match on GSM8Ktest set Model card (sound harness notes)0.915
- Prompt-level strict on IFEvalModel card (README-only, unregistered benchmark)0.819
- Instruction-level strict on IFEvalModel card (README-only, unregistered benchmark)0.877
- Pass rate on IFStruct v1.0test set Model card0.728
- JSON pass rate on IFStruct v1.0test set Model card0.733
- YAML pass rate on IFStruct v1.0test set Model card0.723