Instructions to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL # Run inference directly in the terminal: llama cli -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL # Run inference directly in the terminal: llama cli -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL # Run inference directly in the terminal: ./llama-cli -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL # Run inference directly in the terminal: ./build/bin/llama-cli -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Use Docker
docker model run hf.co/unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
- LM Studio
- Jan
- vLLM
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
- Ollama
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with Ollama:
ollama run hf.co/unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
- Unsloth Desktop
- Pi
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with Docker Model Runner:
docker model run hf.co/unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
- Lemonade
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Run and chat with the model
lemonade run user.Qwen3-VL-30B-A3B-Thinking-GGUF-UD-Q4_K_XL
List all available models
lemonade list
- Hermes Agent
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:UD-Q4_K_XL" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Issues with Ollama
Not sure if I'm missing something, but running the model with Ollama (v0.13.5) fails.
I've pulled hf.co/unsloth/Qwen3-VL-30B-A3B-Thinking-GGUF:Q4_K_XL and loading the model works. ollama ps shows that the model was loaded and is running. But in the moment I asked, for example, "write a 200 word story" it crashes:
Ollama Log
[...]
warmup: flash attention is enabled
time=2025-12-31T10:19:35.322Z level=INFO source=server.go:1376 msg="llama runner started in 60.84 seconds"
time=2025-12-31T10:19:35.323Z level=INFO source=sched.go:517 msg="loaded runners" count=1
time=2025-12-31T10:19:35.323Z level=INFO source=server.go:1338 msg="waiting for llama runner to start responding"
time=2025-12-31T10:19:35.323Z level=INFO source=server.go:1376 msg="llama runner started in 60.84 seconds"
llama-context.cpp:1238: GGML_ASSERT((n_outputs_prev + n_outputs)*n_embd <= (int64_t) embd_size) failed
/usr/bin/ollama(+0x110c8d8)[0x5b6b9b4808d8]
/usr/bin/ollama(+0x110ccb7)[0x5b6b9b480cb7]
/usr/bin/ollama(+0x110ce3d)[0x5b6b9b480e3d]
/usr/bin/ollama(+0x11ba0ee)[0x5b6b9b52e0ee]
/usr/bin/ollama(+0x11ba1ec)[0x5b6b9b52e1ec]
/usr/bin/ollama(+0x10c4be1)[0x5b6b9b438be1]
/usr/bin/ollama(+0x37e681)[0x5b6b9a6f2681]
SIGABRT: abort
PC=0x7a36909b0b2c m=5 sigcode=18446744073709551610
signal arrived during cgo execution
goroutine 7 gp=0xc0000bee00 m=5 mp=0xc000100008 [syscall]:
runtime.cgocall(0x5b6b9b438ba0, 0xc000088b88)
runtime/cgocall.go:167 +0x4b fp=0xc000088b60 sp=0xc000088b28 pc=0x5b6b9a6e76eb
github.com/ollama/ollama/llama._Cfunc_llama_decode(0x7a3628bca210, {0x1aa, 0x7a34b17fb1e0, 0x0, 0x7a34b2fb0e40, 0x7a34c4a89f10, 0x7a34b2fb1c60, 0x7a3629638350})
_cgo_gotypes.go:685 +0x4a fp=0xc000088b88 sp=0xc000088b60 pc=0x5b6b9aaa082a
github.com/ollama/ollama/llama.(*Context).Decode.func1(...)
github.com/ollama/ollama/llama/llama.go:173
github.com/ollama/ollama/llama.(*Context).Decode(0xc000088da0?, 0x1?)
github.com/ollama/ollama/llama/llama.go:173 +0xed fp=0xc000088c70 sp=0xc000088b88 pc=0x5b6b9aaa394d
github.com/ollama/ollama/runner/llamarunner.(*Server).processBatch(0xc0000e79a0, 0xc0003a0460, 0xc0003a04b0)
github.com/ollama/ollama/runner/llamarunner/runner.go:494 +0x250 fp=0xc000088ee8 sp=0xc000088c70 pc=0x5b6b9ab5b3d0
github.com/ollama/ollama/runner/llamarunner.(*Server).run(0xc0000e79a0, {0x5b6b9bca0410, 0xc000018050})
github.com/ollama/ollama/runner/llamarunner/runner.go:387 +0x1d5 fp=0xc000088fb8 sp=0xc000088ee8 pc=0x5b6b9ab5b015
github.com/ollama/ollama/runner/llamarunner.Execute.gowrap1()
github.com/ollama/ollama/runner/llamarunner/runner.go:981 +0x28 fp=0xc000088fe0 sp=0xc000088fb8 pc=0x5b6b9ab603e8
runtime.goexit({})
runtime/asm_amd64.s:1700 +0x1 fp=0xc000088fe8 sp=0xc000088fe0 pc=0x5b6b9a6f2a01
created by github.com/ollama/ollama/runner/llamarunner.Execute in goroutine 1
github.com/ollama/ollama/runner/llamarunner/runner.go:981 +0x4c5
[...]
goroutine 290 gp=0xc000103340 m=nil [IO wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0xb?)
runtime/proc.go:435 +0xce fp=0xc0004b15d8 sp=0xc0004b15b8 pc=0x5b6b9a6eab6e
runtime.netpollblock(0x5b6b9a70e338?, 0x9a6842a6?, 0x6b?)
runtime/netpoll.go:575 +0xf7 fp=0xc0004b1610 sp=0xc0004b15d8 pc=0x5b6b9a6afe97
internal/poll.runtime_pollWait(0x7a36485c5cc8, 0x72)
runtime/netpoll.go:351 +0x85 fp=0xc0004b1630 sp=0xc0004b1610 pc=0x5b6b9a6e9d85
internal/poll.(*pollDesc).wait(0xc0001d3e80?, 0xc000279121?, 0x0)
internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0004b1658 sp=0xc0004b1630 pc=0x5b6b9a771f07
internal/poll.(*pollDesc).waitRead(...)
internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001d3e80, {0xc000279121, 0x1, 0x1})
internal/poll/fd_unix.go:165 +0x27a fp=0xc0004b16f0 sp=0xc0004b1658 pc=0x5b6b9a7731fa
net.(*netFD).Read(0xc0001d3e80, {0xc000279121?, 0xc000429198?, 0xc0004b1770?})
net/fd_posix.go:55 +0x25 fp=0xc0004b1738 sp=0xc0004b16f0 pc=0x5b6b9a7e8205
net.(*conn).Read(0xc00011c950, {0xc000279121?, 0x0?, 0x0?})
net/net.go:194 +0x45 fp=0xc0004b1780 sp=0xc0004b1738 pc=0x5b6b9a7f65c5
net/http.(*connReader).backgroundRead(0xc000279110)
net/http/server.go:690 +0x37 fp=0xc0004b17c8 sp=0xc0004b1780 pc=0x5b6b9a9e24b7
net/http.(*connReader).startBackgroundRead.gowrap2()
net/http/server.go:686 +0x25 fp=0xc0004b17e0 sp=0xc0004b17c8 pc=0x5b6b9a9e23e5
runtime.goexit({})
runtime/asm_amd64.s:1700 +0x1 fp=0xc0004b17e8 sp=0xc0004b17e0 pc=0x5b6b9a6f2a01
created by net/http.(*connReader).startBackgroundRead in goroutine 8
net/http/server.go:686 +0xb6
rax 0x0
rbx 0x5e
rcx 0x7a36909b0b2c
rdx 0x6
rdi 0x5a
rsi 0x5e
rbp 0x7a363bffdec0
rsp 0x7a363bffde80
r8 0x0
r9 0x7
r10 0x8
r11 0x246
r12 0x6
r13 0x5b6b9b9923ac
r14 0x16
r15 0x1
rip 0x7a36909b0b2c
rflags 0x246
cs 0x33
fs 0x0
gs 0x0
time=2025-12-31T10:19:36.344Z level=ERROR source=server.go:1583 msg="post predict" error="Post \"http://127.0.0.1:34955/completion\": EOF"
If I instead use the official qwen3-vl:30b-a3b-thinking-q4_K_M provided by ollama library it works without issues.
Same for me with IQ4_XS quants
I worked around this by creating a modelfile (see https://docs.ollama.com/modelfile#build-from-a-gguf-file) and using full-path of .gguf file (FROM /path/to/model.gguf). Hope this helps!