🚀 EXAONE-4.0-32B GGUF Models
EXAONE-4.0-32B GGUF models are advanced text - generation models. They integrate non - reasoning and reasoning modes, offering excellent usability and advanced reasoning abilities. With new architectural changes, they support multiple languages and are available in different sizes for various applications.
✨ Features
- Hybrid Reasoning: Capable of both non - reasoning and reasoning modes, allowing for flexible use according to different tasks.
- Multilingual Support: Supports English, Korean, and Spanish, expanding its application scope.
- New Architectural Changes: Adopts hybrid attention and QK - Reorder - Norm for better performance.
- Agentic Tool Use: Can be used as agents with tool - calling capabilities.
📦 Installation
You should install the transformers library forked from the original, available in our PR. Once this PR is merged and released, we will update this section.
You can install the latest version of transformers with support for EXAONE 4.0 by following the command:
pip install git+https://github.com/lgai-exaone/transformers@add-exaone4
💻 Usage Examples
Basic Usage
Non - reasoning mode
For general use, you can use the EXAONE 4.0 models with the following example:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "LGAI-EXAONE/EXAONE-4.0-32B"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="bfloat16",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Explain how wonderful you are"
prompt = "Explica lo increíble que eres"
prompt = "너가 얼마나 대단한지 설명해 봐"
messages = [
{"role": "user", "content": prompt}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=128,
do_sample=False,
)
print(tokenizer.decode(output[0]))
Reasoning mode
The EXAONE 4.0 models have reasoning capabilities for handling complex problems. You can activate reasoning mode by using the enable_thinking=True
argument with the tokenizer, which opens a reasoning block that starts with <think>
tag without closing it.
messages = [
{"role": "user", "content": "Which one is bigger, 3.12 vs 3.9?"}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
enable_thinking=True,
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=128,
do_sample=True,
temperature=0.6,
top_p=0.95
)
print(tokenizer.decode(output[0]))
⚠️ Important Note
The model generation with reasoning mode can be affected sensitively by sampling parameters, so please refer to the Usage Guideline for better quality.
Agentic tool use
The EXAONE 4.0 models can be used as agents with their tool calling capabilities. You can provide tool schemas to the model for effective tool calling.
import random
def roll_dice(max_num: int):
return random.randint(1, max_num)
tools = [
{
"type": "function",
"function": {
"name": "roll_dice",
"description": "Roll a dice with the number 1 to N. User can select the number N.",
"parameters": {
"type": "object",
"required": ["max_num"],
"properties": {
"max_num": {
"type": "int",
"description": "Max number of the dice"
}
}
}
}
}
]
messages = [
{"role": "user", "content": "Roll D6 dice twice!"}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
tools=tools,
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=1024,
do_sample=True,
temperature=0.6,
top_p=0.95,
)
print(tokenizer.decode(output[0]))
📚 Documentation
Model Generation Details
This model was generated using llama.cpp at commit bf9087f5
.
Model Configuration
Property |
Details |
Number of Parameters (without embeddings) |
30.95B |
Number of Layers |
64 |
Number of Attention Heads |
GQA with 40 - heads and 8 - KV heads |
Vocab Size |
102,400 |
Context Length |
131,072 tokens |
Deployment
TensorRT - LLM
TensorRT - LLM officially supports EXAONE 4.0 models in the latest commits. Before it is released, you need to clone the TensorRT - LLM repository to build from source.
git clone https://github.com/NVIDIA/TensorRT-LLM.git
After cloning the repository, you need to build the source for installation. Please refer to the official documentation for a guide to build the TensorRT - LLM environment.
You can run the TensorRT - LLM server by following steps:
-
Write extra configuration YAML file
kv_cache_config:
enable_block_reuse: false
-
Run server with the configuration
trtllm-serve serve [MODEL_PATH] --backend pytorch --extra_llm_api_options extra_llm_api_config.yaml
For more details, please refer to the documentation of EXAONE from TensorRT - LLM.
💡 Usage Tip
Other inference engines including vllm
and sglang
don't support the EXAONE 4.0 officially now. We will update as soon as these libraries are updated.
Performance
The following tables show the evaluation results of each model, with reasoning and non - reasoning mode. The evaluation details can be found in the technical report.
- ✅ denotes the model has a hybrid reasoning capability, evaluated by selecting reasoning / non - reasoning on the purpose.
- To assess Korean practical and professional knowledge, we adopt both the KMMLU - Redux and KMMLU - Pro benchmarks. Both datasets are publicly released!
32B Reasoning Mode
|
EXAONE 4.0 32B |
Phi 4 reasoning - plus |
Magistral Small - 2506 |
Qwen 3 32B |
Qwen 3 235B |
DeepSeek R1 - 0528 |
Model Size |
32.0B |
14.7B |
23.6B |
32.8B |
235B |
671B |
Hybrid Reasoning |
✅ |
|
|
✅ |
✅ |
|
World Knowledge |
|
|
|
|
|
|
MMLU - Redux |
92.3 |
90.8 |
86.8 |
90.9 |
92.7 |
93.4 |
MMLU - Pro |
81.8 |
76.0 |
73.4 |
80.0 |
83.0 |
85.0 |
GPQA - Diamond |
75.4 |
68.9 |
68.2 |
68.4 |
71.1 |
81.0 |
Math/Coding |
|
|
|
|
|
|
AIME 2025 |
85.3 |
78.0 |
62.8 |
72.9 |
81.5 |
87.5 |
HMMT Feb 2025 |
72.9 |
53.6 |
43.5 |
50.4 |
62.5 |
79.4 |
LiveCodeBench v5 |
72.6 |
51.7 |
55.8 |
65.7 |
70.7 |
75.2 |
LiveCodeBench v6 |
66.7 |
47.1 |
47.4 |
60.1 |
58.9 |
70.3 |
Instruction Following |
|
|
|
|
|
|
IFEval |
83.7 |
84.9 |
37.9 |
85.0 |
83.4 |
80.8 |
Multi - IF (EN) |
73.5 |
56.1 |
27.4 |
73.4 |
73.4 |
72.0 |
Agentic Tool Use |
|
|
|
|
|
|
BFCL - v3 |
63.9 |
N/A |
40.4 |
70.3 |
70.8 |
64.7 |
Tau - bench (Airline) |
51.5 |
N/A |
38.5 |
34.5 |
37.5 |
53.5 |
Tau - bench (Retail) |
62.8 |
N/A |
10.2 |
55.2 |
58.3 |
63.9 |
Multilinguality |
|
|
|
|
|
|
KMMLU - Pro |
67.7 |
55.8 |
51.5 |
61.4 |
68.1 |
71.7 |
KMMLU - Redux |
72.7 |
62.7 |
54.6 |
67.5 |
74.5 |
77.0 |
KSM |
87.6 |
79.8 |
71.9 |
82.8 |
86.2 |
86.7 |
MMMLU (ES) |
85.6 |
84.3 |
68.9 |
82.8 |
86.7 |
88.2 |
MATH500 (ES) |
95.8 |
94.2 |
83.5 |
94.3 |
95.1 |
96.0 |
32B Non - Reasoning Mode
|
EXAONE 4.0 32B |
Phi 4 |
Mistral - Small - 2506 |
Gemma 3 27B |
Qwen3 32B |
Qwen3 235B |
Llama - 4 - Maverick |
DeepSeek V3 - 0324 |
Model Size |
32.0B |
14.7B |
24.0B |
27.4B |
32.8B |
235B |
402B |
671B |
Hybrid Reasoning |
✅ |
|
|
|
✅ |
✅ |
|
|
World Knowledge |
|
|
|
|
|
|
|
|
MMLU - Redux |
89.8 |
88.3 |
85.9 |
85.0 |
85.7 |
89.2 |
92.3 |
92.3 |
MMLU - Pro |
77.6 |
70.4 |
69.1 |
67.5 |
74.4 |
77.4 |
80.5 |
81.2 |
GPQA - Diamond |
63.7 |
56.1 |
46.1 |
42.4 |
54.6 |
62.9 |
69.8 |
68.4 |
Math/Coding |
|
|
|
|
|
|
|
|
AIME 2025 |
35.9 |
17.8 |
30.2 |
23.8 |
20.2 |
24.7 |
18.0 |
50.0 |
HMMT Feb 2025 |
21.8 |
4.0 |
16.9 |
10.3 |
9.8 |
11.9 |
7.3 |
29.2 |
LiveCodeBench v5 |
43.3 |
24.6 |
25.8 |
27.5 |
31.3 |
35.3 |
43.4 |
46.7 |
LiveCodeBench v6 |
43.1 |
27.4 |
26.9 |
29.7 |
28.0 |
31.4 |
32.7 |
44.0 |
Instruction Following |
|
|
|
|
|
|
|
|
IFEval |
84.8 |
63.0 |
77.8 |
82.6 |
83.2 |
83.2 |
85.4 |
81.2 |
Multi - IF (EN) |
71.6 |
47.7 |
63.2 |
72.1 |
71.9 |
72.5 |
77.9 |
68.3 |
Long Context |
|
|
|
|
|
|
|
|
HELMET |
58.3 |
N/A |
61.9 |
58.3 |
54.5 |
63.3 |
13.7 |
N/A |
RULER |
88.2 |
N/A |
|
|
|
|
|
|
Quantization Beyond the IMatrix
I've been experimenting with a new quantization approach that selectively elevates the precision of key layers beyond what the default IMatrix configuration provides.
In my testing, standard IMatrix quantization underperforms at lower bit depths, especially with Mixture of Experts (MoE) models. To address this, I'm using the --tensor - type
option in llama.cpp
to manually "bump" important layers to higher precision. You can see the implementation here:
👉 [Layer bumping with llama.cpp](https://github.com/Mungert69/GGUFModelBuilder/blob/main/model - converter/tensor_list_builder.py)
While this does increase model file size, it significantly improves precision for a given quantization level.
I'd love your feedback—have you tried this? How does it perform for you?
Click here to get info on choosing the right GGUF model format
Click here to get info on choosing the right GGUF model format
📄 License
This model is under the exaone license.