35 2 weeks ago

vision
ollama run snoop2head/EXAONE-4.5-33B

Models

View all →

Readme

EXAONE 4.5 33B — the complete model, text and vision

LG AI Research’s EXAONE-4.5-33B, the first open-weight vision-language model from LG AI Research, ported whole from the original Hugging Face weights and packaged for Ollama.

This package provides both capabilities of the original model: text and vision. It ships LG’s language model and LG’s official vision encoder/projector, so the model reads images, documents, charts and screenshots directly — no separate captioning model, no mmproj to hunt down. GGUF packagings that carry only the language tower reject pictures with “image input is not supported… you may need to provide the mmproj”. This one does not:

Capabilities
    completion
    vision
    tools
    thinking

Quick start

ollama pull snoop2head/EXAONE-4.5-33B      # ~37 GB

# text
ollama run snoop2head/EXAONE-4.5-33B "확산 모델과 플로우 매칭의 차이를 설명해줘."

# vision — just put the path in the prompt
ollama run snoop2head/EXAONE-4.5-33B "Transcribe every number in this table. ./invoice.png"

Text and image in one API call:

curl http://localhost:11434/api/chat -d '{
  "model": "snoop2head/EXAONE-4.5-33B",
  "messages": [{
    "role": "user",
    "content": "What does this chart show, and what is the trend?",
    "images": ["'"$(base64 < chart.png | tr -d '\n')"'"]
  }],
  "think": true,
  "stream": false
}'
import ollama

ollama.chat(
    model="snoop2head/EXAONE-4.5-33B",
    messages=[{"role": "user", "content": "Describe this page.", "images": ["page.jpg"]}],
)

What is in the package

Layer Size Contents
EXAONE-4.5-33B-Q8_0.gguf 35 GB the language model — 64 transformer layers plus the multi-token-prediction head, Q8_0
mmproj-EXAONE-4.5-33B-BF16.gguf 2.6 GB the vision encoder and projector, 1.29B parameters, BF16 — not quantized
template LG’s own chat template, embedded in the GGUF and used by Ollama as-is
params LG’s recommended sampling (below)
license 13 KB EXAONE AI Model License Agreement 1.2 - NC

Converted from LGAI-EXAONE/EXAONE-4.5-33B (revision 570aa4b1, 68.7 GB of safetensors) with llama.cpp’s convert_hf_to_gguf.py and llama-quantize. The result was checked against LG’s own artifacts: the Q8_0 weights are tensor-for-tensor identical to LG’s official EXAONE-4.5-33B-Q8_0.gguf (all 723 tensors, including the MTP head), the projector is identical to LG’s official mmproj-EXAONE-4.5-33B-BF16.gguf, and llama.cpp tokenizes Korean, English, code and the special tokens exactly like the Hugging Face tokenizer.

Model

From LG’s model card:

  • Model type: causal language model + vision encoder
  • Parameters: 33B total — 31.7B language model, 1.29B vision encoder
  • Context length: 262,144 tokens
  • Hidden dimension: 5,120 · intermediate size 27,392 · vocabulary 153,600
  • Layers: 64 main + 1 MTP layer, hybrid attention — 16 × [3 sliding-window + 1 global]
  • Attention: 40 Q-heads / 8 KV-heads, 128 dims each; sliding window 4,096; NoPE on global layers
  • Vision encoder: grouped-query attention with 2D RoPE
  • Languages: English, Korean, Spanish, German, Japanese, Vietnamese
  • Knowledge cutoff: December 2024

Reasoning, tools, long context

Reasoning is on by default. LG’s template exposes both modes; Ollama drives them for you:

ollama run snoop2head/EXAONE-4.5-33B
>>> /set nothink        # low-latency answers
>>> /set think          # back to reasoning mode (default)

Over the API, "think": false on the request maps to the template’s enable_thinking=False.

Tool use works through Ollama’s tools parameter: the model emits hermes-style <tool_call> JSON and Ollama parses it into message.tool_calls. LG reports τ²-Bench scores in the 56-78 range for agentic tool use, and the model is designed for MCP-style function calling.

Context is 262,144 tokens as trained. The packaged default is num_ctx 32768 so the model loads comfortably; raise it as far as your memory allows:

ollama run snoop2head/EXAONE-4.5-33B
>>> /set parameter num_ctx 131072

Pictures are priced in tokens: roughly one token per 28×28 patch, so a 1000×1000 image costs about 1,300 tokens, a 1600×1025 screenshot about 2,100, and a full-resolution photo up to ~4,100 — resize before sending if latency matters.

Sampling

The packaged defaults are LG’s general-purpose recommendation:

temperature 1.0 · top_p 0.95 · top_k 0 · presence_penalty 1.5 · repeat_penalty 1.0
num_ctx 32768 · stop <|endofturn|>

For OCR, document understanding and Korean prompts LG recommends temperature 0.6, top_p 0.95, top_k 20, presence_penalty 1.5. For text-only chat, temperature 1.0 and top_p 0.95 are enough. The model prefers to answer in \boxed{} form on math problems.

Benchmarks

LG’s reported scores for EXAONE 4.5 33B in reasoning mode (the full tables, with GPT-5 mini, Qwen3-VL and Qwen3.5 comparisons, are on the model card):

Vision-language Language-only
MMMU 78.7 AIME 2025 92.9
MMMU-Pro 68.6 AIME 2026 92.6
MathVision 75.2 GPQA-Diamond 80.5
MathVista (mini) 85.0 LiveCodeBench v6 81.4
AI2D 89.0 MMLU-Pro 83.3
CharXiv (RQ) 71.7 IFEval 89.6
OmniDocBench v1.5 81.2 τ²-Bench (Retail) 77.9
KMMMU (Korean) 42.7 KMMLU-Pro (Korean) 67.6
KRETA (Korean) 91.9 KoBALT (Korean) 52.1

These are LG’s numbers for the original weights. This package is Q8_0, which is the highest-fidelity practical quantization and matches LG’s own Q8_0 release bit for bit; the vision tower is BF16.

Known issue: a system message must not be the first message

LG’s chat template — the one embedded in the GGUF and used verbatim by Ollama — silently drops a system message when it is the first message of the conversation. Measured with prompt_eval_count: a 184-token system prompt sent as messages[0] adds 0 tokens to the rendered prompt, while the same text at any later index adds all 184. Your persona, your format rules, your “answer in one sentence” never reach the model, and nothing reports an error.

The cause is the template’s first-message branch, which ends in {%- continue %} (Jinja’s loopcontrols extension). Ollama 0.33’s Jinja engine does not honour it and discards everything that loop iteration emitted. This is not specific to this package — the template here is byte-identical to the one in LG’s own GGUF release, so every EXAONE 4.5 GGUF served through Ollama/llama.cpp is affected; transformers and vLLM render the same template correctly.

Until the template is fixed, put your instructions somewhere the template does render:

// works — instructions folded into the user turn
"messages": [
  {"role": "user", "content": "You are Aria, a cheerful librarian.\n\nWhat should I read next?"}
]

// also works — a system message at any index except 0
"messages": [
  {"role": "user",   "content": "Hi"},
  {"role": "system", "content": "You are Aria, a cheerful librarian."},
  {"role": "user",   "content": "What should I read next?"}
]

Notes and limits

  • Memory. Plan for about 40 GB free (48 GB+ of unified memory on a Mac). On an M4 Max the model generates around 13 tokens/s for text; an image adds several seconds before the first token.
  • Speculative decoding. The MTP head is in the weights but is off by default. Add "options": {"draft_num_predict": 3} to a text-only request to use it (~80% acceptance). It is not enabled in the Modelfile because Ollama 0.33’s llama-server fails with “failed to process speculative batch” as soon as an image is in the prompt, and on Apple silicon it is currently slower than plain decoding.
  • Video input from the original release is not portable — llama.cpp and Ollama have no video pipeline. Images work fully.
  • Non-commercial license. EXAONE AI Model License Agreement 1.2 - NC: research and educational use, no commercial use, derivatives must keep “EXAONE” at the start of their name. The full text ships with the model (ollama show --license snoop2head/EXAONE-4.5-33B).

Credit

All weights are LG AI Research’s. This package only converts and repackages them; nothing was retrained, merged or distilled.

@article{exaone-4.5,
  title={EXAONE 4.5 Technical Report},
  author={{LG AI Research}},
  journal={arXiv preprint arXiv:2604.08644},
  year={2026}
}