KRAFTON/Raon-1-mini-preview
- License
- apache-2.0
- Size
- 30 GB
- Revision
- main
Mirrored from KRAFTON/Raon-1-mini-preview
All models by KRAFTON →Mirrored from KRAFTON/Raon-1-mini-preview
All models by KRAFTON →

Raon-1 mini is a 30B-A4B Mixture-of-Experts (MoE) language model, designed and trained from scratch by KRAFTON AI. It demonstrates strong capabilities in Korean conversation and agentic tasks. As part of the Raon open model family, it is released under the Apache 2.0 license.
[!TIP] Want to try Raon-1 mini without setting anything up?
Chat with it for free, for a limited time, in the Raon-1 mini playground.
[!NOTE] This is a preview release, not a final model. Specs and results may change before the final version.


Raon-1 mini uses a hybrid Mixture-of-Experts (MoE) architecture, consisting of 18 linear attention layers and 7 full attention layers.
Judge and user simulator: gpt-5.6-luna for all evaluations.
Red = Raon-1 mini preview is best within the MoE group (Raon-1 mini preview, Qwen3.6-35B-A3B, Gemma 4 26B-A4B). Dense models (Qwen3.8-27B, Muse Glimmer 30B) are shown for reference only.
¹ SWE-Verified: evaluated with the mini-SWE-agent harness.
² GDPVal (dataset): metric is a judge score, not Elo.
³ AutomationBench: public split, not the official evaluation set.
⁴ GDP.pdf: official Artificial Analysis (artificialanalysis.ai) text-only version. PDFs are OCR-ed in advance; no image input.
⁵ Chatbot Korean (internal): an internal benchmark measuring Korean colloquial ability in chatbot conversations across diverse situations. Not publicly released.
[!Important] Raon-1 mini is designed for thinking mode; disabling it is not recommended.
Settings shared by all tasks:
Settings that depend on the task:
We release a DFlash2 draft model alongside Raon-1 mini preview to accelerate inference through speculative decoding. In our benchmarks on a single NVIDIA B300, it delivers up to 2.18× higher output throughput than autoregressive decoding. Speedups vary by hardware and workload.
Throughput is measured in output tok/s, with speedup over autoregressive decoding in parentheses. Acceptance length (AL) is the mean number of tokens per verification step, averaged across requests at concurrency 1.
AR: autoregressive decoding; C: concurrency. Throughput is total output tokens divided by end-to-end wall time.Raon-1 mini supports inference with Transformers, vLLM, llama.cpp, and MLX. The examples below show how to run the model locally or launch an OpenAI-compatible server, using thinking mode and the recommended sampling settings above.
The model repositories are gated. Request access once on this page (approval is automatic; it covers every Raon-1 mini preview repository), then log in so the examples below can download them:
Use Hugging Face Transformers to load Raon-1 mini and generate responses directly in Python.
Install the dependencies:
Then run the model:
presence_penalty is applied by the model's remote code, since
Transformers has no built-in presence penalty.
For coding and math, set presence_penalty to 0.0.
On a 32 GB GPU, use the base MXFP8 model with device_map="auto"
and CPU offload.
Use vLLM to serve Raon-1 mini through an OpenAI-compatible API with tool calling and DFlash2 speculative decoding. Tested on NVIDIA B300. The RTX 5090 NVFP4 profile is documented below.
Install from our fork and start the server:
The first start compiles the model's kernels and takes about 10 minutes;
later starts reuse them.
To serve the NVFP4 checkpoint, replace the model with
KRAFTON/Raon-1-mini-preview-nvfp4 in the same command.
It runs on a single GPU (tensor parallel size 1).
Use the NVFP4 checkpoint with the following settings.
CUDA Toolkit 13 with nvcc on PATH is required.
Use the NVFP4 checkpoint with the ARM64 container below. It includes the
Raon vLLM fork and the SM 12.1 compatibility fixes for DGX Spark.
Docker with NVIDIA GPU support is required. This configuration was tested
on GB10 with NVIDIA driver 580.159.03.
After accepting model access and running hf auth login above, download
the tested target and draft revisions:
Start the OpenAI-compatible server with DFlash2 enabled:
The image is public; no GHCR login is required. Model access still uses the Hugging Face download step. If you use a custom Hugging Face cache, replace the host cache path in the volume mount.
The first launch compiles CUDA kernels. Keep the raon-spark-cache
volume and hostname to reuse them on later launches. Wait until
curl -f http://localhost:8000/health succeeds, then send the request below.
The served model name is Raon-1-mini-preview.
This profile uses a 128K context window, at most eight sequences,
a 2,048-token scheduler batch, and a 3 GiB FP8 KV cache. Concurrent long
requests may queue. Set SPEC_TOKENS=0 for autoregressive decoding.
Container source and build instructions.
Image digest: sha256:c116b968d899b98c3941a82ad328fbf4a0a80ce7e5034cc0b21a1aa3d8537f88.
Send a request from another terminal:
Reasoning is returned in message.reasoning;
the answer is in message.content.
For coding and math, set presence_penalty to 0.
Use llama.cpp to run the GGUF checkpoint locally in a terminal or through an OpenAI-compatible API, with optional DFlash2 speculative decoding.
Checkpoint: KRAFTON/Raon-1-mini-preview-gguf
Build from our branch; upstream support is pending. On Windows, see the build guide.
Start a terminal chat. The model downloads automatically.
Or start an OpenAI-compatible server:
For coding and math, use --presence-penalty 0.
For DFlash2 speculative decoding, append these options to either
command with a trailing \ on the preceding line.
The draft model downloads automatically.
Send a request from another terminal:
Reasoning is returned in message.reasoning_content;
the answer is in message.content.
For coding and math, set presence_penalty to 0.
Use MLX to run Raon-1 mini locally on Apple silicon, either directly in Python or through an OpenAI-compatible API.
Checkpoint: KRAFTON/Raon-1-mini-preview-mlx
Install the dependencies with Python 3.11+:
Run in Python:
Or start an OpenAI-compatible server:
Send a request from another terminal:
Use http://localhost:8000/v1 as the base URL
and default_model as the model name.
For coding and math, set presence_penalty to 0.
Raon-1 mini preview can be used with agent harnesses such as Hermes Agent, Pi, and OpenCode through an OpenAI-compatible API. The examples below assume an endpoint at http://localhost:8000/v1 with the model ID Raon-1-mini-preview. Adjust these settings to match your server, ensuring that tool calling and reasoning are properly supported.
[!NOTE] With MLX, use
KRAFTON/Raon-1-mini-preview-mlxas the model ID instead ofRaon-1-mini-preview;mlx_lm serverloads the model named in each request.
Register Raon-1 mini preview as a custom OpenAI-compatible model in ~/.hermes/config.yaml:
Hermes automatically detects the context window from the server when supported. If detection fails, add context_length: 262144 under model:. Replace dummy with your API key if the endpoint requires authentication.
Register Raon-1 mini preview as a custom provider in ~/.pi/agent/models.json:
Select the model using /model inside a session, or launch Pi with --model raon/Raon-1-mini-preview. Replace dummy with your API key if the endpoint requires authentication.
Register Raon-1 mini preview as a custom OpenAI-compatible provider in ~/.config/opencode/opencode.json (or opencode.json in your project root):
The model field sets Raon-1 mini preview as the default model. You can also select it interactively using /models. If the endpoint requires authentication, configure an API key under options or use OpenCode's authentication settings.
For all three agent harnesses, the configured context window and maximum output tokens should not exceed the limits supported by the serving backend.
Raon-1 mini preview is an open-weight model. Access is granted on request.
You can also try it in the Raon-1 mini playground, free for a limited time.
The Raon model, including its model weights, configuration files, and other model components made available for download through this repository, is licensed under the Apache License, Version 2.0. Subject to that license, you may download, use, modify, and redistribute the model and its weights, including for commercial purposes.
Krafton and its licensors retain ownership of their respective intellectual property. The Apache License grants the rights stated in that license and does not transfer ownership. Rights in third-party materials remain subject to their applicable terms.
The Apache License does not extend to Krafton’s proprietary training datasets, training methodologies, undistributed software, hosted API, playground, or other proprietary materials not included in this repository.
Krafton also makes Raon available through its hosted API and playground service (“RAON Service”). The Raon Service is not licensed under Apache 2.0. Access to and use of the Raon Service is governed by separate Hosted Access Terms and Conditions that are provided before access to the service is granted. The Hosted Access Terms and Conditions govern, among other things, permitted service use, suspension, termination, and Krafton’s right to charge fees in the future.
pip install -U huggingface_hubhf auth loginuv venv --python 3.12 --seedsource .venv/bin/activate
pip install \ "transformers==5.16.1" \ "accelerate==1.15.0"from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "KRAFTON/Raon-1-mini-preview"
tokenizer = AutoTokenizer.from_pretrained( model_id, trust_remote_code=True,)model = AutoModelForCausalLM.from_pretrained( model_id, dtype="auto", device_map="auto", trust_remote_code=True,)
messages = [ {"role": "user", "content": "Tell me about KRAFTON AI."}]inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", enable_thinking=True, truncate_history_thinking=False,).to(model.device)
outputs = model.generate( **inputs, max_new_tokens=32768, do_sample=True, temperature=1.0, top_p=0.95, top_k=20, min_p=0.0, repetition_penalty=1.0, presence_penalty=1.5,)
# The reasoning ends at </think>; the answer follows it.response = outputs[0][inputs["input_ids"].shape[-1]:].tolist()think_end = tokenizer.convert_tokens_to_ids("</think>")split = response.index(think_end) + 1 if think_end in response else 0reasoning = tokenizer.decode(response[:split], skip_special_tokens=True).strip()answer = tokenizer.decode(response[split:], skip_special_tokens=True).strip()print("Reasoning:\n" + reasoning)print("\nAnswer:\n" + answer)VLLM_REF="raon-1-mini-preview"
uv venv --python 3.12source .venv/bin/activate
VLLM_USE_PRECOMPILED=1 uv pip install \ "vllm @ git+https://github.com/krafton-ai/vllm.git@${VLLM_REF}"
vllm serve KRAFTON/Raon-1-mini-preview \ --host 127.0.0.1 \ --port 8000 \ --served-model-name Raon-1-mini-preview \ --max-model-len 262144 \ --max-num-batched-tokens 16384 \ --max-num-seqs 128 \ --gpu-memory-utilization 0.85 \ --kv-cache-dtype fp8_e4m3 \ --enable-prefix-caching \ --spec-method dflash \ --spec-model KRAFTON/Raon-1-mini-preview-dflash2 \ --spec-tokens 7 \ --reasoning-parser raon_1 \ --enable-auto-tool-choice \ --tool-call-parser raon_1 \ --default-chat-template-kwargs '{ "enable_thinking": true, "truncate_history_thinking": false }'# WSL2export VLLM_WSL2_ENABLE_PIN_MEMORY=1
vllm serve KRAFTON/Raon-1-mini-preview-nvfp4 \ --host 127.0.0.1 --port 8000 \ --served-model-name Raon-1-mini-preview \ --max-model-len 32768 \ --max-num-batched-tokens 2048 \ --max-num-seqs 8 \ --gpu-memory-utilization 0.85 \ --kv-cache-dtype fp8_e4m3 \ --kv-cache-memory 3221225472 \ --enable-prefix-caching --async-scheduling \ --spec-method dflash \ --spec-model KRAFTON/Raon-1-mini-preview-dflash2 \ --spec-tokens 7 \ --reasoning-parser raon_1 \ --enable-auto-tool-choice --tool-call-parser raon_1 \ --default-chat-template-kwargs '{"enable_thinking":true,"truncate_history_thinking":false}'hf download KRAFTON/Raon-1-mini-preview-nvfp4 \ --revision 0b0f06ac2b3d03abea62dd221fe7839fddf36dfehf download KRAFTON/Raon-1-mini-preview-dflash2 \ --revision 6450d1546d17ee1bb1cb942f316c7fb91cdd868adocker run --rm --name raon-spark-quickstart \ --hostname raon-spark --gpus all --ipc=host \ -p 127.0.0.1:8000:8000 \ -v "$HOME/.cache/huggingface:/hf" \ -v raon-spark-cache:/cache \ -e HF_HOME=/hf -e HF_HUB_OFFLINE=1 \ -e MODEL_ID=/hf/hub/models--KRAFTON--Raon-1-mini-preview-nvfp4/snapshots/0b0f06ac2b3d03abea62dd221fe7839fddf36dfe \ -e DRAFT_MODEL_ID=/hf/hub/models--KRAFTON--Raon-1-mini-preview-dflash2/snapshots/6450d1546d17ee1bb1cb942f316c7fb91cdd868a \ -e SPEC_TOKENS=7 \ -e MAX_MODEL_LEN=131072 \ ghcr.io/krafton-ai/raon-vllm-spark:sm121-4e09534curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Raon-1-mini-preview", "messages": [ { "role": "user", "content": "Tell me about KRAFTON AI." } ], "max_tokens": 8192, "temperature": 1.0, "top_p": 0.95, "top_k": 20, "min_p": 0.0, "repetition_penalty": 1.0, "frequency_penalty": 0.0, "presence_penalty": 1.5, "chat_template_kwargs": { "enable_thinking": true, "truncate_history_thinking": false } }'git clone -b raon-1-mini-preview \ https://github.com/krafton-ai/llama.cppcd llama.cpp
# Omit -DGGML_CUDA=ON on Apple silicon.cmake -B build -DGGML_CUDA=ONcmake --build build --config Release -j./build/bin/llama-cli \ -hf KRAFTON/Raon-1-mini-preview-gguf:Q4_K_M \ --ctx-size 262144 \ --n-predict 32768 \ --temp 1.0 \ --top-p 0.95 \ --top-k 20 \ --min-p 0.0 \ --repeat-penalty 1.0 \ --frequency-penalty 0.0 \ --presence-penalty 1.5 \ --reasoning on \ --chat-template-kwargs '{ "enable_thinking": true, "truncate_history_thinking": false }'./build/bin/llama-server \ -hf KRAFTON/Raon-1-mini-preview-gguf:Q4_K_M \ --host 127.0.0.1 \ --port 8000 \ --alias Raon-1-mini-preview \ --ctx-size 262144 \ --parallel 1 \ --n-predict 32768 \ --temp 1.0 \ --top-p 0.95 \ --top-k 20 \ --min-p 0.0 \ --repeat-penalty 1.0 \ --frequency-penalty 0.0 \ --presence-penalty 1.5 \ --reasoning on \ --chat-template-kwargs '{ "enable_thinking": true, "truncate_history_thinking": false }' --spec-type draft-dflash \ --spec-draft-n-max 7 \ --spec-draft-sampling probabilisticcurl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Raon-1-mini-preview", "messages": [ { "role": "user", "content": "Tell me about KRAFTON AI." } ], "max_tokens": 32768, "temperature": 1.0, "top_p": 0.95, "top_k": 20, "min_p": 0.0, "repeat_penalty": 1.0, "frequency_penalty": 0.0, "presence_penalty": 1.5, "chat_template_kwargs": { "enable_thinking": true, "truncate_history_thinking": false } }'python3 -m venv .venvsource .venv/bin/activate
python -m pip install \ "mlx==0.32.4" \ "mlx-lm==0.32.2" \ "transformers==5.20.1"from mlx_lm import load, generatefrom mlx_lm.sample_utils import ( make_logits_processors, make_sampler,)
model, tokenizer = load( "KRAFTON/Raon-1-mini-preview-mlx", trust_remote_code=True,)
messages = [ {"role": "user", "content": "Tell me about KRAFTON AI."}]prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=True, truncate_history_thinking=False,)
response = generate( model, tokenizer, prompt=prompt, max_tokens=32768, sampler=make_sampler( temp=1.0, top_p=0.95, top_k=20, min_p=0.0, ), logits_processors=make_logits_processors( repetition_penalty=1.0, frequency_penalty=0.0, presence_penalty=1.5, ),)print(response)python -m mlx_lm server \ --model KRAFTON/Raon-1-mini-preview-mlx \ --trust-remote-code \ --host 127.0.0.1 \ --port 8000 \ --max-tokens 32768 \ --chat-template-args '{ "enable_thinking": true, "truncate_history_thinking": false }' \ --decode-concurrency 2 \ --prompt-concurrency 2curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "default_model", "messages": [ { "role": "user", "content": "Tell me about KRAFTON AI." } ], "max_tokens": 32768, "temperature": 1.0, "top_p": 0.95, "top_k": 20, "min_p": 0.0, "repetition_penalty": 1.0, "frequency_penalty": 0.0, "presence_penalty": 1.5, "chat_template_kwargs": { "enable_thinking": true, "truncate_history_thinking": false } }'model: provider: custom default: Raon-1-mini-preview base_url: http://localhost:8000/v1 api_key: dummy{ "providers": { "raon": { "baseUrl": "http://localhost:8000/v1", "api": "openai-completions", "apiKey": "dummy", "models": [ { "id": "Raon-1-mini-preview", "name": "Raon-1 mini preview", "reasoning": true, "contextWindow": 262144, "maxTokens": 32768 } ] } }}{ "$schema": "https://opencode.ai/config.json", "provider": { "raon": { "npm": "@ai-sdk/openai-compatible", "name": "Raon", "options": { "baseURL": "http://localhost:8000/v1" }, "models": { "Raon-1-mini-preview": { "name": "Raon-1 mini preview", "limit": { "context": 262144, "output": 32768 } } } } }, "model": "raon/Raon-1-mini-preview"}