How to use from
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 "Weidows/WeMM-Embedding-9B-FP8" \
    --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": "Weidows/WeMM-Embedding-9B-FP8",
		"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 "Weidows/WeMM-Embedding-9B-FP8" \
        --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": "Weidows/WeMM-Embedding-9B-FP8",
		"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"
						}
					}
				]
			}
		]
	}'
Quick Links

WeMM-Embedding-9B (FP8)

FP8 (E4M3) quantization of tencent/WeMM-Embedding-9B, produced with the same per-tensor round-to-nearest procedure used for the 2B variant.

  • Method: per-tensor FP8 (E4M3, scale = absmax/448), applied to all nn.Linear layers — including the vision tower at 8-bit (safe). 4-bit vision-tower quantization is known to degrade multimodal retrieval, so it is intentionally avoided.
  • Size: 18.8 GB (BF16) → 9.8 GB (FP8), ~2× smaller, near-lossless on retrieval benchmarks.
  • Format: model.fp8.safetensors + fp8_scales.json (dequant at load: w = w_fp8 * scale). Loads with transformers / sentence-transformers using the same API as the BF16 base.

Why FP8 (not 4-bit)

The 9B model's multimodal quality is sensitive to vision-tower precision. FP8 (8-bit) keeps the vision tower well above the degradation threshold observed with 4-bit, while still halving weight memory — ideal for serving on FP8-capable GPUs (Ada / Hopper, e.g. RTX 4090, H100).

Usage (transformers / sentence-transformers)

from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Weidows/WeMM-Embedding-9B-FP8", trust_remote_code=True)
emb = model.encode("Represent the meaning of this sentence.")

Usage (vLLM / SGLang)

FP8 is natively supported on Ada/Hopper GPUs. Serve with vLLM:

vllm serve Weidows/WeMM-Embedding-9B-FP8 --task embed

Evaluation

Quantized and evaluated with the identical per-tensor FP8 (E4M3) pipeline used for the 2B variant, on the same engine (transformers) as the BF16 baseline to isolate pure quantization loss.

Metric BF16 FP8 Δ
STS-B (text) — Spearman ρ 0.8225 0.8239 −0.0014
COCO Image→Text R@1 / R@5 / R@10 0.1968 / 0.9002 / 0.9840 0.1978 / 0.9012 / 0.9850 ~−0.001
COCO Text→Image R@1 / R@5 / R@10 0.9331 / 0.9960 / 0.9980 0.9311 / 0.9960 / 0.9980 ~+0.002

COCO split: val2017, 200 images × 5 captions = 1001 captions (hard pool — random baseline ≈0.5% R@1). Every metric moves <0.002 absolute; FP8 rounding is benign at the 9B scale. Weight size: 18.8 GB → 9.8 GB (~2× compression), vision tower kept at 8-bit to avoid the 4-bit degradation path.

Downloads last month
40
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Weidows/WeMM-Embedding-9B-FP8

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(1)
this model