Downloads · 30 days
597
13% of all-time downloads
taobao-mnn/gpt-oss-20b-MNN
gpt-oss-20b-MNN is a text generation model from taobao-mnn. Use it when you need the model to write or continue text. The card lists the license as apache-2.0.
MNN HQQ 4-bit inference package converted from openai/gpt-oss-20b.
Downloads · 30 days
597
13% of all-time downloads
All-time downloads
4.5K
Public
Repo size
25.4 GB
Likes
2
Public
Click a slice to open those files.
.weight11.5 GB · 91%
From the Hugging Face model README
MNN HQQ 4-bit inference package converted from openai/gpt-oss-20b.
OpenAI's gpt-oss-20b is an open-weight reasoning MoE model with 21B total parameters and 3.6B active parameters. It targets local and specialized applications with configurable reasoning effort and agentic capabilities. It uses the Harmony response format; preserve the bundled template and distinguish the final answer from reasoning or control channels.
Summary adapted from the upstream model card. Original model capabilities and benchmark claims are separate from the MNN smoke checks below.
| Item | Value |
|---|---|
| Original checkpoint | openai/gpt-oss-20b |
| Inputs / outputs in this package | Text → text |
| Layers | 24 |
| Routed experts | 32 |
| Experts selected per token | 4 |
| Text linear quantization | HQQ, 4-bit, group size 64, FP16 scales |
| Token embedding storage | BF16 (16-bit), separate embedding weights |
python -m pip install -U huggingface_hub
python -c "from huggingface_hub import snapshot_download; snapshot_download('taobao-mnn/gpt-oss-20b-MNN', local_dir='./gpt-oss-20b-MNN')"
export MODEL_DIR="$(pwd)/gpt-oss-20b-MNN"
MNN: 7337404b2815b5fb9ddac13f4ac6a1fb37fcbbb4
This revision includes the MoE export fixes used for this release. Linux CPU build:
git clone https://github.com/alibaba/MNN.git
git -C MNN checkout 7337404b2815b5fb9ddac13f4ac6a1fb37fcbbb4
(cd MNN && ./schema/generate.sh)
cmake -S MNN -B MNN/build -DCMAKE_BUILD_TYPE=Release \
-DMNN_BUILD_LLM=ON -DMNN_LOW_MEMORY=ON -DMNN_BUILD_CONVERTER=ON \
-DMNN_SUPPORT_TRANSFORMER_FUSE=ON
cmake --build MNN/build --parallel 4
The quantization arguments match export_args.json. Download the original checkpoint and export it with the revision above:
python -m pip install -r MNN/transformers/llm/export/requirements.txt
python -c "from huggingface_hub import snapshot_download; snapshot_download('openai/gpt-oss-20b', local_dir='./original/gpt-oss-20b', allow_patterns=['*.json', '*.safetensors', '*.model', '*.tiktoken', '*.jinja', '*.txt', '*.py'], ignore_patterns=['original/*', '*.gguf', '*.pt', '*.pth'])"
The original checkpoint uses MXFP4. Enable loading-time dequantization in its local configuration before HQQ export:
python - <<'PY'
import json
from pathlib import Path
path = Path("./original/gpt-oss-20b/config.json")
config = json.loads(path.read_text())
config["quantization_config"]["dequantize"] = True
path.write_text(json.dumps(config, indent=2))
PY
python MNN/transformers/llm/export/llmexport.py \
--path ./original/gpt-oss-20b --export mnn --hqq \
--quant_bit 4 --quant_block 64 --scale_bit 16 --embed_bit 16 \
--lm_quant_bit 4 --lm_quant_block 64 \
--mnnconvert ./MNN/build/MNNConvert --dst_path ./reexported/gpt-oss-20b-MNN
After re-export, reuse this package's verified tokenizer and template. Preserve the newly generated weight offsets and other model configuration:
python - <<'PY'
import json, os, shutil
from pathlib import Path
published = Path(os.environ["MODEL_DIR"])
converted = Path("./reexported/gpt-oss-20b-MNN")
for filename in ("llm_config.json", "config.json"):
path = converted / filename
config = json.loads(path.read_text())
reference = json.loads((published / filename).read_text())
for key in ("jinja", "use_template"):
config.pop(key, None)
if key in reference:
config[key] = reference[key]
if filename == "config.json":
config["tokenizer_file"] = "tokenizer.mtok"
path.write_text(json.dumps(config, ensure_ascii=False, indent=2))
shutil.copyfile(published / "tokenizer.mtok", converted / "tokenizer.mtok")
PY
printf 'What is 2 + 3? Reply with only the number.\n' > prompt.txt
./MNN/build/llm_demo "$MODEL_DIR/config.json" prompt.txt
./MNN/build/llm_bench -m "$MODEL_DIR/config.json"
The original migration passed 6 CPU High/Low smoke cases for this model. These are functional checks, not a broad quality or GPU benchmark.
Weights retain the upstream license and attribution. See the original model card, the license files in this repository and the MNN LLM documentation.