nm-testing/Qwen3-30B-A3B-FP8-block

🤗 Hugging Face sourcetext-generationapache-2.03.3B params3B activated4.0 GBsafetensors✓ 9 checksumsupdated today
Submit in one command

Run it next to your model folder. It makes the torrent, checks your files against Hugging Face, and submits it. You just start seeding and paste your key from your account. It only reads your files and never changes them. Read the script first if you like.

curl -fsSL https://pirateface.co/package.sh | bash -s -- --repo nm-testing/Qwen3-30B-A3B-FP8-block ./model-folder
Needs a seeder →

Qwen3-30B-A3B-FP8-block

Model Overview

  • Model Architecture: Qwen3MoeForCausalLM
    • Input: Text
    • Output: Text
  • Model Optimizations:
    • Weight quantization: FP8
    • Activation quantization: FP8
  • Release Date:
  • Version: 1.0
  • Model Developers:: Red Hat

Quantized version of Qwen/Qwen3-30B-A3B.

Model Optimizations

This model was obtained by quantizing the weights and activations of Qwen/Qwen3-30B-A3B to FP8 data type. This optimization reduces the number of bits per parameter from 16 to 8, reducing the disk size and GPU memory requirements by approximately 50%. Only the weights and activations of the linear operators within transformers blocks of the language model are quantized.

Deployment

Use with vLLM

  1. Initialize vLLM server:
vllm serve nm-testing/Qwen3-30B-A3B-FP8-block --tensor_parallel_size 4
  1. Send requests to the server:
from openai import OpenAI

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://<your-server-host>:8000/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

model = "nm-testing/Qwen3-30B-A3B-FP8-block"

messages = [
    {"role": "user", "content": "Explain quantum mechanics clearly and concisely."},
]

outputs = client.chat.completions.create(
    model=model,
    messages=messages,
)

generated_text = outputs.choices[0].message.content
print(generated_text)

Creation

This model was quantized using the llm-compressor library as shown below.

Creation details
from transformers import AutoProcessor, Qwen3MoeForCausalLM

from llmcompressor import oneshot
from llmcompressor.modeling import replace_modules_for_calibration
from llmcompressor.modifiers.quantization import QuantizationModifier

MODEL_ID = "Qwen/Qwen3-30B-A3B"

# Load model.
model = Qwen3ForCausalLM.from_pretrained(MODEL_ID, dtype="auto")
processor = AutoProcessor.from_pretrained(MODEL_ID)
model = replace_modules_for_calibration(model)

# Configure the quantization algorithm and scheme.
# In this case, we:
#   * quantize the weights to fp8 with per-block quantization
#   * quantize the activations to fp8 with dynamic token activations
recipe = QuantizationModifier(
    targets="Linear",
    scheme="FP8_BLOCK",
    ignore=["lm_head"],
)

# Apply quantization.
oneshot(model=model, recipe=recipe)

# Save to disk in compressed-tensors format.
SAVE_DIR = MODEL_ID.rstrip("/").split("/")[-1] + "-FP8-block"
model.save_pretrained(SAVE_DIR)
processor.save_pretrained(SAVE_DIR)

Evaluation

The model was evaluated on the OpenLLM leaderboard task, using lm-evaluation-harness. vLLM was used for all evaluations.

Evaluation details

Openllm V1

lm_eval \
  --model vllm \
  --model_args pretrained="nm-testing/Qwen3-30B-A3B-FP8-block",dtype=auto,add_bos_token=True,max_model_len=16384,tensor_parallel_size=4,gpu_memory_utilization=0.9,enable_chunked_prefill=True,trust_remote_code=True \
  --tasks openllm \
  --write_out \
  --batch_size auto \
  --show_config

Openllm V2

lm_eval \
  --model vllm \
  --model_args pretrained="nm-testing/Qwen3-30B-A3B-FP8-block",dtype=auto,add_bos_token=False,max_model_len=16384,tensor_parallel_size=4,gpu_memory_utilization=0.7,disable_log_stats=True,enable_chunked_prefill=True,trust_remote_code=True \
  --tasks leaderboard \
  --apply_chat_template \
  --fewshot_as_multiturn \
  --write_out \
  --batch_size auto \
  --show_config

Coding Benchmarks

evalplus.evaluate --model "nm-testing/Qwen3-30B-A3B-FP8-block" \
                  --dataset "humaneval" \
                  --backend vllm \
                  --tp 4 \
                  --greedy

evalplus.evaluate --model "nm-testing/Qwen3-30B-A3B-FP8-block" \
                --dataset "mbpp" \
                --backend vllm \
                --tp 4 \
                --greedy

Accuracy

Category Metric Qwen/Qwen3-30B-A3B nm-testing/Qwen3-30B-A3B-FP8-block Recovery (%)
OpenLLM V1 ARC-Challenge (Acc-Norm, 25-shot) 69.88 69.71 99.76
GSM8K (Strict-Match, 5-shot) 89.16 88.63 99.40
HellaSwag (Acc-Norm, 10-shot) 77.61 77.44 99.78
MMLU (Acc, 5-shot) 79.53 79.39 99.82
TruthfulQA (MC2, 0-shot) 53.25 53.17 99.84
Winogrande (Acc, 5-shot) 73.09 72.77 99.57
Average Score 73.75 73.52 99.69
OpenLLM V2 IFEval (Inst Level Strict Acc, 0-shot) 47.96 48.56 101.25
BBH (Acc-Norm, 3-shot) 32.01 31.71 99.08
Math-Hard (Exact-Match, 4-shot) 19.34 17.22 89.06
GPQA (Acc-Norm, 0-shot) 24.33 26.09 107.24
MUSR (Acc-Norm, 0-shot) 39.15 39.42 100.68
MMLU-Pro (Acc, 5-shot) 23.60 21.94 92.96
Average Score 31.06 30.82 99.23
Coding HumanEval pass@1 93.30 93.90 100.64
HumanEval+ pass@1 87.80 88.40 100.68
MBPP pass@1 86.00 85.20 99.06
MBPP+ pass@1 73.00 73.30 100.41