Qwen3.8-27B-Escha-W2-Vision

Qwen3.8-27B-Escha-W2-Vision is an experimental community-built vision-language hybrid that combines:

The result brings image understanding back to the compact Escha checkpoint. No training or fine-tuning was performed: this repository is a component-level checkpoint reconstruction using two derivatives of the same Qwen3.8-27B base model.

Experimental community release. This repository is not an official Qwen or Escha Labs release and is not endorsed by either project. No formal vision benchmark results are published for this hybrid.

Weight size breakdown

Component Tensor data Decimal size
Escha-W2 language model, embeddings and head 10,152,675,712 bytes 10.15 GB
Official Qwen visual encoder and merger 921,460,192 bytes 0.92 GB
Combined model weights 11,074,135,904 bytes 11.07 GB

Model summary

Item Value
Architecture Qwen3_5ForConditionalGeneration
Language model Qwen3.8-27B, Escha mixed 2/3-bit W2 format
Vision encoder Official Qwen3.8 visual tower, 333 tensors
Vision precision BF16 on disk; the Escha launch configuration below serves it as FP16
Interface OpenAI-compatible SGLang server
Training performed for this release None
Qwen3.8-27B-Escha-W2-Vision
├── model.language_model.*  ← EschaLabs W2 language weights
├── lm_head.*               ← EschaLabs int8-as-stored head
└── model.visual.*          ← official Qwen BF16 visual encoder + merger

The Escha SGLang fork already constructs the visual module with quant_config=None, so the Escha quantizer is applied only to the language model. The visual weights load through the standard unquantized path.

Requirements

This checkpoint does not load in a stock Transformers pipeline because the language weights use Escha's custom quantization format and CUDA kernels. Use the official dense Escha runtime:

Installation

# Download this hybrid checkpoint.
hf download centraly/Qwen3.8-27B-Escha-W2-vision \
  --local-dir ./Qwen3.8-27B-Escha-W2-vision

# Download the official Escha dense runtime bundle.
hf download EschaLabs/escha-runtime-qwen3dense \
  --local-dir ./escha-runtime-qwen3dense

# Create the pinned runtime required by the Escha wheel.
python3.12 -m venv .venv
source .venv/bin/activate
pip install -U pip wheel
pip install "torch==2.9.*" \
  --index-url https://download.pytorch.org/whl/cu128
pip install ./escha-runtime-qwen3dense/sglang/escha-*.whl

Sanity-check the installation:

python -c "import torch,escha,sglang; print(torch.cuda.is_available(), hasattr(torch.ops.escha, 'escham_decode_gemv'), sglang.__version__)"

Serving with image input

Two independent switches are required:

  1. SGLANG_VLM_TEXT_ONLY=0 constructs the visual tower.
  2. --enable-multimodal enables SGLang's image preprocessing and request path.

Start the server:

SGLANG_VLM_TEXT_ONLY=0 \
MODEL=./Qwen3.8-27B-Escha-W2-vision \
SERVED_NAME=Qwen3.8-27B-Escha-W2-vision \
bash ./escha-runtime-qwen3dense/sglang/serve.sh --enable-multimodal

Tune the runtime's memory, context and concurrency settings for the target hardware and workload.

The server listens on http://127.0.0.1:30000/v1 by default. Keep it bound to localhost unless you add authentication and appropriate network controls.

Confirm that image understanding is active:

curl -s http://127.0.0.1:30000/model_info | python -m json.tool

The response should contain:

{
  "has_image_understanding": true,
  "model_type": "qwen3_5",
  "architectures": ["Qwen3_5ForConditionalGeneration"]
}

OpenAI-compatible image request

Install the OpenAI Python client if needed with pip install openai, then send an ordinary image_url request. HTTP(S) URLs and base64 data URLs are supported by the server.

from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:30000/v1", api_key="local")

response = client.chat.completions.create(
    model="Qwen3.8-27B-Escha-W2-vision",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"
                    },
                },
                {"type": "text", "text": "Describe this image precisely."},
            ],
        }
    ],
    max_tokens=256,
    temperature=0,
    extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)

print(response.choices[0].message.content)

Text-only requests continue to work through the same endpoint.

Checkpoint construction and provenance

The release was built reproducibly as follows:

  1. Start with EschaLabs/Qwen3.8-27B-Escha-W2 at revision b1fff11fb1606a0ba6965f4c76751cfabe64d5c4.
  2. Read the official Qwen/Qwen3.8-27B index at revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0.
  3. Extract every tensor whose name starts with model.visual. from official shard model-00001-of-00018.safetensors.
  4. Save those 333 tensors unchanged as model-vision-bf16.safetensors.
  5. Add the vision shard to the Escha safetensors index and include the official image/video processor configuration files.

The two Escha language shards, tokenizer, chat template and generation settings are unchanged. HYBRID_PROVENANCE.json provides machine-readable details.

Intended use

This release is intended for:

  • experimentation with a compact Qwen3.8 VLM;
  • image description, visual question answering and multimodal prototyping;
  • evaluating whether Escha-W2 language quantization remains useful with the original Qwen visual encoder.

It is not intended as evidence of production readiness, safety certification or vision benchmark parity with the original BF16 model.

Limitations and safety

  • This hybrid has not been trained or calibrated after combining the components.
  • No standardized evaluation results are included with this release.
  • The compatible video processor configuration is included, but this release does not claim direct video-request support.
  • Vision-language quality may differ from both source repositories, especially on OCR, spatial reasoning, fine-grained recognition, long videos and multilingual prompts.
  • The language model remains heavily quantized; cross-modal reasoning can expose quantization errors not visible in text-only evaluations.
  • The model inherits biases, inaccuracies and safety limitations from its source models. Users are responsible for evaluating outputs for their application.
  • Do not rely on the model for high-stakes medical, legal, financial or safety decisions, or for inferring sensitive personal traits from images.

Files

File Purpose
model-00001-of-00002.safetensors Escha-W2 language weights, shard 1
model-00002-of-00002.safetensors Escha-W2 language weights, shard 2
model-vision-bf16.safetensors Official Qwen visual encoder and merger
model.safetensors.index.json Combined 3-shard tensor index
preprocessor_config.json Official Qwen image processor configuration
video_preprocessor_config.json Official Qwen video processor configuration
config.json Qwen3.8 multimodal architecture plus Escha quantization metadata
HYBRID_PROVENANCE.json Machine-readable component and revision provenance

License and attribution

This repository is distributed under the Apache License 2.0, consistent with both source repositories. See LICENSE and NOTICE.md.

Credit belongs to the Qwen team for Qwen3.8-27B and to Escha Labs for the Escha-W2 checkpoint, custom quantization format and serving runtime.

Downloads last month
84
Safetensors
Model size
7B params
Tensor type
F32
·
I32
·
F16
·
I16
·
I8
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for centraly/Qwen3.8-27B-Escha-W2-vision