fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit
<p align="center"> <img src="assets/banner_4bit.png" alt="gpt-oss-20b · Hermes-Agent tool finetune · MXFP4" width="100%" /> </p>
gpt-oss-20b · Hermes-Agent tool finetune · MXFP4
4-bit MXFP4 quantization of the BF16 checkpoint. Fits in 16 GB of VRAM, runs on a Colab T4, keeps the full 8k context.
- Format — Safetensors, MXFP4
- Size on disk — ~12 GB
- VRAM (inference) — ~14-16 GB
- Recommended runtime — Unsloth, Transformers + bitsandbytes
What this is
A tool-use finetune of OpenAI's gpt-oss-20b for Hermes-Agent, a local agent framework that needs models which call tools reliably, follow multi-turn instructions, and don't argue with system prompts.
The base model is the 21B-parameter (3.6B active) Mixture-of-Experts release from OpenAI. This finetune preserves the Harmony chat template and the reasoning-effort knob, and improves:
- Function-calling adherence (correct JSON, no commentary mid-call)
- Long agent loops (10+ turns of tool → observe → plan)
- System-prompt fidelity (respects role boundaries and refusal/allow-list rules)
It is not affiliated with NousResearch's Hermes model series. "Hermes-Agent" here refers to the local agent framework only.
Quickstart
Unsloth (recommended)
from unsloth import FastLanguageModel
model, tok = FastLanguageModel.from_pretrained(
"fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit",
max_seq_length=8192,
load_in_4bit=True,
)
FastLanguageModel.for_inference(model)Transformers
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch
tok = AutoTokenizer.from_pretrained("fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit")
model = AutoModelForCausalLM.from_pretrained(
"fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit",
quantization_config=BitsAndBytesConfig(load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_quant_type="nf4"),
device_map="auto",
)Hermes-Agent integration
Add a profile in ~/.hermes/config.yaml:
profiles:
gpt-oss-20b-tools:
provider: openai
base_url: http://127.0.0.1:1234/v1 # LM Studio / vLLM / mlx_lm.server
model: fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit
temperature: 0.7
top_p: 0.95
min_p: 0.1 # important for MoE stability
max_tokens: 8192
tool_choice: autoThen hermes profile use gpt-oss-20b-tools and the agent loop will route tool calls through this model.
Sampling
Harmony reasoning effort: set the system message to Reasoning: low|medium|high. high is roughly 3-4x more output tokens but noticeably better on multi-step tool plans.
Training
- Base:
openai/gpt-oss-20b - Method: LoRA SFT (rank 64, alpha 16) merged back into BF16
- Frame: Unsloth + TRL on a single H100 (80 GB)
- Data: ~42k tool-use traces from Hermes-Agent sessions, filtered for successful tool calls and clean JSON. No synthetic distillation.
- Length: 8192 tokens, packing on
- Loss: assistant-only, mask user/system/tool
The _16bit repo holds the merged BF16 weights. The _4bit, _mlx, and _gguf repos are quantizations of that checkpoint.
Limitations
- Math and code-generation are unchanged from the base — this finetune optimizes the agent loop, not raw reasoning.
- The model can over-call tools when given vague instructions. Add a "if you can answer directly, do so" line to the system prompt.
- English only. Other languages were not in the training mix.
- Not safety-tuned beyond what
gpt-oss-20balready provides.
Other formats
- BF16 reference — full precision, vLLM / Transformers
- MXFP4 4-bit — fits a 16 GB GPU
- MLX — Apple Silicon native
- GGUF — llama.cpp / Ollama / LM Studio
License
Apache-2.0, inherited from the base model. No additional restrictions.
Citation
@misc{fesalfayed_gptoss20b_hermesagent_2025,
author = {Fayed, Fesal},
title = {gpt-oss-20b Hermes-Agent tool finetune (4bit)},
year = {2025},
url = {https://huggingface.co/fesalfayed/gpt-oss-20b-hermes_agent-tool-finetune_4bit},
}