Qwen3-VL-Reranker-8B-AWQ

302 downloads 0 likes on ModelScope updated

Model card

Qwen3-VL-Reranker-8B-AWQ

This repository contains a language-only AWQ 4-bit quantized version of Qwen/Qwen3-VL-Reranker-8B.

The quantization target is practical deployment on constrained GPUs such as NVIDIA A10 24GB, especially when colocating the reranker model with the matching embedding model on the same card.

Quantization summary

  • Base model: Qwen/Qwen3-VL-Reranker-8B
  • Quantization: AWQ 4-bit
  • Quantized modules: model.language_model.layers.* linear layers
  • Preserved in fp16/bf16: visual tower, visual projector/merger, embeddings, normalization layers, lm_head
  • AWQ config:
{
  "bits": 4,
  "group_size": 128,
  "modules_to_not_convert": ["visual", "lm_head"],
  "quant_method": "awq",
  "version": "gemm",
  "zero_point": true
}

Size and loading footprint

  • Quantized repository size: about 6.8GB
  • Observed GPU allocation in smoke loading test: about 6.77GiB

This makes it feasible to test this reranker together with the matching AWQ embedding model on a single 24GB GPU, with conservative context length and batch/concurrency settings.

Validation

A small text-only reranking smoke test was run against the original fp16/bf16 checkpoint.

Results:

num_pairs: 12
groups: 3 query groups x 4 docs
top1_match_rate: 1.0
Spearman per group: 0.8 / 0.8 / 0.8

The top-1 result matched for all test query groups. Some non-top1 internal ordering changed slightly, which is expected for a small AWQ smoke test.

Validation artifact:

reranker_awq_consistency_text_only.json

Note: this is a small text-only smoke test, not a full multimodal reranking benchmark. The visual tower is intentionally kept unquantized to reduce multimodal quality loss.

Loading example

This model was produced with a custom Qwen3-VL language-only AutoAWQ wrapper. The quantization script is included in this repository:

quant_qwen3vl_awq_language_only.py

Example:

import sys
sys.path.insert(0, ".")
from quant_qwen3vl_awq_language_only import register_qwen3vl_awq
register_qwen3vl_awq()

from awq import AutoAWQForCausalLM

model = AutoAWQForCausalLM.from_quantized(
    "yobo2u/Qwen3-VL-Reranker-8B-AWQ",
    trust_remote_code=True,
    safetensors=True,
    device_map={"": 0},
    fuse_layers=False,
)

Suggested A10 24GB deployment starting point

When colocating this reranker model with the matching embedding model on one A10 24GB GPU, start conservatively:

max_model_len: 2048-4096
max_num_seqs: 1
max_num_batched_tokens: 2048-4096
limit_mm_per_prompt: {"image": 1}

If serving two separate processes on one GPU, start around:

Embedding gpu_memory_utilization: 0.40-0.45
Reranker  gpu_memory_utilization: 0.40-0.45

Then increase context/concurrency empirically.

License

This derivative quantized model follows the original model license: Apache-2.0.

ModelScope remote snapshot test

This repository version was downloaded back from ModelScope with snapshot_download and tested locally after upload.

Test metadata:

repo_id: yobo2u/Qwen3-VL-Reranker-8B-AWQ
source: ModelScope snapshot_download
test_time: 2026-05-18 09:31:44 CST
max_length: 512
query_groups: 4
query_doc_pairs: 16

Load / memory:

load_ok: true
load_seconds: 7.647
gpu_alloc_gib_after_load: 6.761
gpu_reserved_gib_after_load: 6.812

Reranking smoke result:

top1_expected_relevant_match_count: 4 / 4
top1_expected_relevant_all_match: true
latency_seconds_min: 0.0529
latency_seconds_mean: 0.1646
latency_seconds_max: 1.5346

The remote ModelScope snapshot loaded successfully with the included quant_qwen3vl_awq_language_only.py registration helper and passed a small 4-query / 16-pair text-only reranking smoke test. This is a functional smoke test, not a full retrieval benchmark.

Full JSON result:

modelscope_remote_reranker_awq_test_results.json