Views
No views yet
compressed-tensors format.| Component | Precision |
|---|---|
All decoder Linear layers (q/k/v/o_proj, MLP) | INT4 W4A16, g128, symmetric |
embed_tokens, RMSNorms | BF16 |
| Task | BF16 | AWQ | Recovery |
|---|---|---|---|
| STSBenchmark Spearman | 0.884 | 0.881 | 99.6% |
| SciFact nDCG@10 | 0.787 | 0.777 | 98.8% |
| STS score Pearson AWQ vs BF16 | - | - | 0.996 |
qwen3_embedding_8b_awq_vs_bf16.json, plus combined quant_quality_evals.json).Qwen3ForCausalLM - convert it to a pooling/embedding runner.
compressed-tensors is auto-detected - do not pass --quantization awq.1vllm serve LostGentoo/Qwen3-Embedding-8B-AWQ \
2 --runner pooling \
3 --convert embed \
4 --pooler-config '{"pooling_type":"LAST","task":"embed"}' \
5 --trust-remote-code \
6 --max-model-len 8192 \
7 --gpu-memory-utilization 0.90 \
8 --generation-config vllm--runner pooling --convert embed: required so /v1/embeddings is exposed.--pooler-config pooling_type=LAST: matches official Qwen3-Embedding
last-token pooling. L2-normalize client-side if the response is not already
unit-norm.Instruct: <task>\nQuery:<text> (documents: raw text, no instruct). See the
base model card."dimensions":1024 inside --pooler-config.--enforce-eager only if bring-up hits
compile issues.1curl http://127.0.0.1:8000/v1/embeddings \
2 -H 'Content-Type: application/json' \
3 -d '{
4 "model": "LostGentoo/Qwen3-Embedding-8B-AWQ",
5 "input": [
6 "Instruct: Given a web search query, retrieve relevant passages that answer the query\nQuery: What is the capital of France?",
7 "Paris is the capital and largest city of France."
8 ]
9 }'1from sentence_transformers import SentenceTransformer
2
3model = SentenceTransformer("LostGentoo/Qwen3-Embedding-8B-AWQ")
4emb = model.encode(["The capital of France is Paris."])
5print(emb.shape) # (1, 4096)1import torch
2from transformers import AutoModel, AutoTokenizer
3
4model = AutoModel.from_pretrained("LostGentoo/Qwen3-Embedding-8B-AWQ", device_map="auto")
5tok = AutoTokenizer.from_pretrained("LostGentoo/Qwen3-Embedding-8B-AWQ")
6texts = ["The capital of France is Paris."]
7inputs = tok(texts, padding=True, return_tensors="pt").to(model.device)
8with torch.no_grad():
9 hidden = model(**inputs).last_hidden_state
10 lengths = inputs["attention_mask"].sum(dim=1) - 1
11 emb = hidden[torch.arange(hidden.size(0)), lengths]
12 emb = torch.nn.functional.normalize(emb, p=2, dim=1)
13print(emb.shape) # (1, 4096)AWQModifier(duo_scaling=False) + QuantizationModifier(W4A16)Qwen3DecoderLayer) for 16 GB GPUs