Text Generation
Transformers
Safetensors
qwen3_5_moe
qwen3.5
Mixture of Experts
fp8
quantized
abliterated
compressed-tensors
vllm
conversational
Instructions to use bjk110/Qwen3.5-122B-A10B-abliterated-FP8 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use bjk110/Qwen3.5-122B-A10B-abliterated-FP8 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="bjk110/Qwen3.5-122B-A10B-abliterated-FP8") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoProcessor, AutoModelForCausalLM processor = AutoProcessor.from_pretrained("bjk110/Qwen3.5-122B-A10B-abliterated-FP8") model = AutoModelForCausalLM.from_pretrained("bjk110/Qwen3.5-122B-A10B-abliterated-FP8", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] 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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use bjk110/Qwen3.5-122B-A10B-abliterated-FP8 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "bjk110/Qwen3.5-122B-A10B-abliterated-FP8" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "bjk110/Qwen3.5-122B-A10B-abliterated-FP8", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/bjk110/Qwen3.5-122B-A10B-abliterated-FP8
- SGLang
How to use bjk110/Qwen3.5-122B-A10B-abliterated-FP8 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 "bjk110/Qwen3.5-122B-A10B-abliterated-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": "bjk110/Qwen3.5-122B-A10B-abliterated-FP8", "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 "bjk110/Qwen3.5-122B-A10B-abliterated-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": "bjk110/Qwen3.5-122B-A10B-abliterated-FP8", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use bjk110/Qwen3.5-122B-A10B-abliterated-FP8 with Docker Model Runner:
docker model run hf.co/bjk110/Qwen3.5-122B-A10B-abliterated-FP8
Ban commited on
Update model card to English
Browse files
README.md
CHANGED
|
@@ -14,40 +14,37 @@ license: apache-2.0
|
|
| 14 |
|
| 15 |
# Qwen3.5-122B-A10B-abliterated-FP8
|
| 16 |
|
| 17 |
-
[wangzhang/Qwen3.5-122B-A10B-abliterated](https://huggingface.co/wangzhang/Qwen3.5-122B-A10B-abliterated)
|
| 18 |
-
**FP8 E4M3 block-wise 양자화** 버전입니다.
|
| 19 |
|
| 20 |
-
[Qwen/Qwen3.5-122B-A10B-FP8](https://huggingface.co/Qwen/Qwen3.5-122B-A10B-FP8)
|
| 21 |
|
| 22 |
-
##
|
| 23 |
|
| 24 |
-
|
|
| 25 |
-
|---
|
| 26 |
-
|
|
| 27 |
-
|
|
| 28 |
-
|
|
| 29 |
-
|
|
| 30 |
-
|
|
| 31 |
-
|
|
| 32 |
-
|
|
| 33 |
-
| Activation | Dynamic (
|
| 34 |
-
| BF16
|
| 35 |
|
| 36 |
-
##
|
| 37 |
|
| 38 |
-
### ⚠️ vLLM
|
| 39 |
|
| 40 |
-
|
| 41 |
-
vLLM v0.17~v0.18에서는 이 아키텍처가 정식 지원되지 않으므로,
|
| 42 |
-
함께 제공되는 `vllm_patches/patch_qwen35_moe_text.py` 패치를 적용해야 합니다.
|
| 43 |
|
| 44 |
-
###
|
| 45 |
|
| 46 |
```bash
|
| 47 |
-
# 1.
|
| 48 |
python vllm_patches/patch_qwen35_moe_text.py
|
| 49 |
|
| 50 |
-
# 2.
|
| 51 |
vllm serve /path/to/Qwen3.5-122B-A10B-abliterated-FP8 \
|
| 52 |
--tensor-parallel-size 2 \
|
| 53 |
--trust-remote-code \
|
|
@@ -56,57 +53,47 @@ vllm serve /path/to/Qwen3.5-122B-A10B-abliterated-FP8 \
|
|
| 56 |
--reasoning-parser qwen3
|
| 57 |
```
|
| 58 |
|
| 59 |
-
### Docker
|
| 60 |
|
| 61 |
-
|
| 62 |
```bash
|
| 63 |
if [ -f /patches/patch_qwen35_moe_text.py ]; then
|
| 64 |
python3 /patches/patch_qwen35_moe_text.py || true
|
| 65 |
fi
|
| 66 |
```
|
| 67 |
|
| 68 |
-
docker-compose.yml
|
| 69 |
```yaml
|
| 70 |
volumes:
|
| 71 |
- ./vllm_patches:/patches:ro
|
| 72 |
```
|
| 73 |
|
| 74 |
-
##
|
| 75 |
|
| 76 |
-
|
|
| 77 |
-
|------|------|-----
|
| 78 |
-
| `Qwen3_5MoeForCausalLM`
|
| 79 |
-
| Hybrid cache page-size
|
| 80 |
-
| Vision encoder
|
| 81 |
-
| TP2 block_k
|
| 82 |
|
| 83 |
-
vLLM
|
| 84 |
|
| 85 |
-
##
|
| 86 |
|
| 87 |
-
|
|
| 88 |
-
|------|:--
|
| 89 |
-
|
|
| 90 |
-
|
|
| 91 |
-
|
|
| 92 |
-
| Swap
|
| 93 |
-
|
|
| 94 |
|
| 95 |
-
|
| 96 |
-
체크포인트 크기 50% 감소 + swap 불필요 + 빠른 로딩.
|
| 97 |
|
| 98 |
-
##
|
| 99 |
|
| 100 |
-
|
| 101 |
-
|------|-----------|------|
|
| 102 |
-
| TP=1 | ~115 GB | H100 80GB 불가, GB200 등 |
|
| 103 |
-
| **TP=2** | **~58 GB/GPU** | DGX Spark, H100×2, A100 80GB×2 |
|
| 104 |
-
| TP=4 | ~29 GB/GPU | A100 40GB×4 |
|
| 105 |
-
|
| 106 |
-
## 양자화 방법
|
| 107 |
-
|
| 108 |
-
calibration 없이 BF16 weight를 128×128 block 단위로 직접 FP8 E4M3 변환합니다.
|
| 109 |
-
[fp8-quantizer](https://github.com/JungkwanBan/fp8-quantizer)로 생성.
|
| 110 |
|
| 111 |
```bash
|
| 112 |
python convert_bf16_to_fp8.py \
|
|
@@ -114,12 +101,18 @@ python convert_bf16_to_fp8.py \
|
|
| 114 |
--output ./Qwen3.5-122B-A10B-abliterated-FP8
|
| 115 |
```
|
| 116 |
|
| 117 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
|
| 119 |
-
[wangzhang/Qwen3.5-122B-A10B-abliterated](https://huggingface.co/wangzhang/Qwen3.5-122B-A10B-abliterated):
|
| 120 |
-
[Prometheus](https://github.com/wuwangzhang1216/prometheus)를 사용한 검열 해제 버전.
|
| 121 |
-
Refusal rate 0.5% (200개 테스트 중 1개), KL divergence 0.0115.
|
| 122 |
|
| 123 |
-
##
|
| 124 |
|
| 125 |
-
|
|
|
|
| 14 |
|
| 15 |
# Qwen3.5-122B-A10B-abliterated-FP8
|
| 16 |
|
| 17 |
+
**FP8 E4M3 block-wise quantized** version of [wangzhang/Qwen3.5-122B-A10B-abliterated](https://huggingface.co/wangzhang/Qwen3.5-122B-A10B-abliterated).
|
|
|
|
| 18 |
|
| 19 |
+
Same checkpoint format as [Qwen/Qwen3.5-122B-A10B-FP8](https://huggingface.co/Qwen/Qwen3.5-122B-A10B-FP8).
|
| 20 |
|
| 21 |
+
## Model Details
|
| 22 |
|
| 23 |
+
| | |
|
| 24 |
+
|---|---|
|
| 25 |
+
| Base Model | [wangzhang/Qwen3.5-122B-A10B-abliterated](https://huggingface.co/wangzhang/Qwen3.5-122B-A10B-abliterated) |
|
| 26 |
+
| Quantization | FP8 E4M3, block-wise 128×128, `weight_scale_inv` (bfloat16) |
|
| 27 |
+
| Checkpoint Size | **115 GB** (50% of original 228 GB) |
|
| 28 |
+
| Active Parameters | ~10B (MoE, 10 of 256 experts active per token) |
|
| 29 |
+
| Total Parameters | 122B |
|
| 30 |
+
| Max Context | 32,768 tokens |
|
| 31 |
+
| Uncensored | ✅ (abliterated, 0.5% refusal rate) |
|
| 32 |
+
| Activation | Dynamic (not stored in checkpoint) |
|
| 33 |
+
| BF16 Preserved | lm_head, embed_tokens, norms, conv1d, router gate, in_proj_a/b |
|
| 34 |
|
| 35 |
+
## Usage
|
| 36 |
|
| 37 |
+
### ⚠️ vLLM Patch Required
|
| 38 |
|
| 39 |
+
This model uses the `qwen3_5_moe_text` (text-only MoE) architecture, which is not natively supported in vLLM v0.17–v0.18. You must apply the included `vllm_patches/patch_qwen35_moe_text.py` before serving.
|
|
|
|
|
|
|
| 40 |
|
| 41 |
+
### Serving with vLLM
|
| 42 |
|
| 43 |
```bash
|
| 44 |
+
# 1. Apply patch (run before vLLM process starts)
|
| 45 |
python vllm_patches/patch_qwen35_moe_text.py
|
| 46 |
|
| 47 |
+
# 2. Serve
|
| 48 |
vllm serve /path/to/Qwen3.5-122B-A10B-abliterated-FP8 \
|
| 49 |
--tensor-parallel-size 2 \
|
| 50 |
--trust-remote-code \
|
|
|
|
| 53 |
--reasoning-parser qwen3
|
| 54 |
```
|
| 55 |
|
| 56 |
+
### Docker Entrypoint Auto-Patch
|
| 57 |
|
| 58 |
+
Add to the beginning of your entrypoint.sh:
|
| 59 |
```bash
|
| 60 |
if [ -f /patches/patch_qwen35_moe_text.py ]; then
|
| 61 |
python3 /patches/patch_qwen35_moe_text.py || true
|
| 62 |
fi
|
| 63 |
```
|
| 64 |
|
| 65 |
+
Mount the patches volume in docker-compose.yml:
|
| 66 |
```yaml
|
| 67 |
volumes:
|
| 68 |
- ./vllm_patches:/patches:ro
|
| 69 |
```
|
| 70 |
|
| 71 |
+
## What the Patch Does
|
| 72 |
|
| 73 |
+
| Issue | Cause | Fix |
|
| 74 |
+
|-------|-------|-----|
|
| 75 |
+
| `Qwen3_5MoeForCausalLM` not recognized | Not in vLLM registry | Registers TextOnlyShim class |
|
| 76 |
+
| Hybrid cache page-size error | Bug in text-only CausalLM path | Reuses multimodal wrapper's cache-spec |
|
| 77 |
+
| Vision encoder init failure | Wrapper forces vision init | Skips vision encoder |
|
| 78 |
+
| TP2 block_k=128 error | vision_config.hidden_size=1152 | Injects dummy vision config |
|
| 79 |
|
| 80 |
+
The patch will become unnecessary once vLLM adds native support for `qwen3_5_moe_text`.
|
| 81 |
|
| 82 |
+
## Benchmark (Korean QA, 12 questions, DGX Spark TP=2)
|
| 83 |
|
| 84 |
+
| Metric | Official Qwen FP8 | **This Model** | BF16 + Runtime FP8 |
|
| 85 |
+
|--------|:--:|:--:|:--:|
|
| 86 |
+
| Completed | 12/12 | **12/12** | 11/12 |
|
| 87 |
+
| Speed | 20.3 tok/s | **29.6 tok/s** | 29.3 tok/s |
|
| 88 |
+
| Size | 119 GB | **115 GB** | 228 GB |
|
| 89 |
+
| Swap Required | No | **No** | Yes (200GB) |
|
| 90 |
+
| Uncensored | ❌ | **✅** | ✅ |
|
| 91 |
|
| 92 |
+
Same output quality as runtime FP8, with half the checkpoint size, no swap needed, and faster loading.
|
|
|
|
| 93 |
|
| 94 |
+
## Quantization Method
|
| 95 |
|
| 96 |
+
Block-wise FP8 E4M3 conversion without calibration — computes per-block max as scale. Built with [fp8-quantizer](https://github.com/JungkwanBan/fp8-quantizer).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
|
| 98 |
```bash
|
| 99 |
python convert_bf16_to_fp8.py \
|
|
|
|
| 101 |
--output ./Qwen3.5-122B-A10B-abliterated-FP8
|
| 102 |
```
|
| 103 |
|
| 104 |
+
## Hardware Requirements
|
| 105 |
+
|
| 106 |
+
| Config | GPU Memory | Notes |
|
| 107 |
+
|--------|-----------|-------|
|
| 108 |
+
| TP=1 | ~115 GB | Requires GB200 or similar |
|
| 109 |
+
| **TP=2** | **~58 GB/GPU** | DGX Spark, H100×2, A100 80GB×2 |
|
| 110 |
+
| TP=4 | ~29 GB/GPU | A100 40GB×4 |
|
| 111 |
+
|
| 112 |
+
## Base Model
|
| 113 |
|
| 114 |
+
[wangzhang/Qwen3.5-122B-A10B-abliterated](https://huggingface.co/wangzhang/Qwen3.5-122B-A10B-abliterated) — uncensored via [Prometheus](https://github.com/wuwangzhang1216/prometheus) abliteration. Refusal rate 0.5% (1/200), KL divergence 0.0115.
|
|
|
|
|
|
|
| 115 |
|
| 116 |
+
## License
|
| 117 |
|
| 118 |
+
Follows the license of the base model.
|