Model setup recipes
Last updated
Qwen3.8 27B in 7.89 GB? Install Saluki and Plan for an 8 GB GPU
Before switching to a smaller model, consider smaller weights for a 27B model.
Underdog Saluki 27B 1.0 compresses Qwen3.8-27B with roughly two-bit mixed quantization1. Load its 7.89 GB GGUF2 in llama.cpp to answer questions locally and serve replies to connected apps. Conversation state needs memory alongside the weights, so start with a short context and expand it after checking available memory.
Saluki puts Qwen3.8 27B into a smaller file
If memory has kept you on smaller models despite wanting to try Qwen3.8-27B, Saluki offers another option. It keeps the 27 billion parameters while reducing the bits used to store their weights. The download is a 7.89 GB GGUF, a format supported by many local runners.
Here we load the model in llama.cpp and start a server on port 8080 of your own computer. Once ready, it can connect to web chat or an OpenAI-compatible app. The weights are released under Apache 2.0, supporting personal workflows and services that follow the license terms.
- Saluki download and runtime settings
- Context length, RoPE and sliding-window attention
- GGUF vs MLX: which model format should you download?
- How much VRAM or unified memory does a local LLM need?
- GLM-5.3-Flash Serving Guide: A 320B Server-Scale MoE Recipe
- Building a Korean RAG index with Kakao's Kanana-2 3B embedding

Budget for conversation state on an 8 GB GPU
A 7.89 GB file looks close to an 8 GB graphics card's capacity, but running it uses more than the weights. KV cache3 for the conversation, intermediate calculations, and display applications share GPU4 memory. A long document can exhaust the remaining space early.
The example below limits context to 4,096 tokens5 and chooses the GPU load automatically. Parts that do not fit in GPU memory can use system RAM6, which must also have room for the model and operating system. Start with your existing 8GB GPU, then use Task Manager or Activity Monitor to check RAM and GPU memory use and the time to the first answer.
On Apple Silicon, the CPU7 and GPU share unified memory8. Close other apps and start with a short prompt9 to see how much room your Mac has. If longer conversations sharply increase swap or slow replies, reduce the context.

Prepare a folder and download the model
On Mac or Linux, prepare Python 3, Git, and CMake. Mac also needs Xcode Command Line Tools. If you use Homebrew, brew install git cmake installs the build tools; run xcode-select --install and complete its installation dialog for Xcode tools.
These commands create a Python environment inside saluki-local and save the model under models. The weights alone download nearly 8 GB; leave additional disk space for the runner and temporary files. Run the following steps from the same saluki-local folder.
mkdir -p saluki-local
cd saluki-local
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U huggingface_hub
hf download ConwayResearch/Underdog-Saluki-27B-1.0 Underdog-Saluki-27B-1.0-IQ2-mix.gguf --local-dir modelsUse Metal on Mac and CUDA on NVIDIA
Building llama.cpp gives you a runner for your device. Mac builds enable the Metal10 GPU backend by default. After the Mac commands finish, llama.cpp/build/bin/llama-server is the executable for the next step.
On Linux with an NVIDIA GPU, install the driver and CUDA11 Toolkit, then use the CUDA build commands instead of the Mac commands. Check that nvidia-smi lists the GPU and nvcc --version reports the toolkit before building.
On Windows, extract a CUDA build from the llama.cpp releases and run llama-server.exe in PowerShell. Replace the executable path in the server command below. A source build also needs Visual Studio C++ tools and the CUDA Toolkit.
git clone https://github.com/ggml-org/llama.cpp.git
cmake -S llama.cpp -B llama.cpp/build
cmake --build llama.cpp/build --config Release --target llama-server -j 4git clone https://github.com/ggml-org/llama.cpp.git
cmake -S llama.cpp -B llama.cpp/build -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release --target llama-server -j 4Start the server and send a first prompt
Start the server in one terminal. Wait for model loading and the listening message, then open a second terminal. Once /health reports a healthy state, send the prompt below. Binding to 127.0.0.1 keeps access on the current computer.
For this short setup check, thinking is disabled so the answer can arrive directly. A sentence in choices[0].message.content confirms generation. Next, replace the question with an excerpt from a document you normally summarize. For tasks needing longer reasoning, set enable_thinking to true and allow more output tokens.
./llama.cpp/build/bin/llama-server -m models/Underdog-Saluki-27B-1.0-IQ2-mix.gguf --alias saluki27b --jinja -ngl auto -fa on -c 4096 --host 127.0.0.1 --port 8080curl -sS http://127.0.0.1:8080/health
curl -sS http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"saluki27b","messages":[{"role":"user","content":"Explain local AI in two sentences."}],"max_tokens":128,"temperature":0,"chat_template_kwargs":{"enable_thinking":false}}'Test tool calls and math tasks separately
If you want Saluki to power an agent as well as summarize documents, test ordinary replies and tool calls12 separately. In a tool call, the model selects a function name and arguments: for example, a search phrase for a notes function, followed by a reply based on the results returned by the app.
In the developer's 120-task tool-call run, Saluki passed 88 tasks and the original Qwen3.8-27B passed 84. For complex mathematical reasoning, compare solution quality alongside memory savings. Saluki scored 79.2 on AIME 2025; the original model's public reference score was 96.7.
| Model | Tasks passed |
|---|---|
| Underdog Saluki 27B 1.0 | 88 / 120 |
| Qwen3.8-27B | 84 / 120 |
Developer evaluation · Tool calls: 120 UnderdogBench tasks, thinking off, temperature 0. AIME 2025: Saluki average@4; the original's public reference uses a different evaluation setup.
Start with read-only tools such as notes search rather than deletion or payments. Keep roughly ten prompts from your real work so you can compare search phrases, argument formatting, and final replies when changing models.

Add a separate file for image input
Once text prompts work, you can add image input. Download an mmproj file beside the weights and pass it to the server so images can be encoded for the model. The Q8_0 file is 629 MB; F16 is 928 MB. Q8_0 is a smaller starting option.
After downloading, stop the running server with Ctrl+C and append --mmproj models/mmproj-Underdog-Saluki-27B-1.0-Q8_0.gguf to its command. Restart, attach a simple screenshot in the web chat if image upload is available, and ask for a summary. Add this after checking the memory left by text-only operation, since image processing also consumes memory.
hf download ConwayResearch/Underdog-Saluki-27B-1.0 mmproj-Underdog-Saluki-27B-1.0-Q8_0.gguf --local-dir modelsResolve the first-run problems in this order
For hf: command not found, reactivate the environment with source .venv/bin/activate. If the command is still missing, run python -m pip install -U huggingface_hub again. For a missing model file, check that the current folder is saluki-local and the path begins with models.
If auto is not recognized or the model format fails to load, update llama.cpp to a current release first. For GPU memory errors, close GPU-using apps and try a context below 4,096. If loading still fails, replace -ngl auto with -ngl 0 to test from system RAM; the extra CPU work can make replies slower.
For connection refused, check that the server terminal is still running and using port 8080. If another app occupies that port, change both --port and the request URL. Ctrl+C stops the server when you finish; the model stays on disk for the next run.
For faster answer generation on NVIDIA, continue with the NInfer guide. If long documents delay the first answer on Mac, see the Splash guide for ways to reduce input-processing time.
Terminology notes
Quantization — A way to represent model weights or values with fewer bits, reducing storage and memory use. The coarser representation can also affect accuracy.
Back to the textGGUF — A file format for model data, widely used by llama.cpp-based tools.
Back to the textKV cache — Memory that stores attention keys and values from earlier tokens for reuse during later token generation. Its size depends on context length and batch size.
Back to the textGPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.
Back to the textToken — A unit into which a model divides input or output for processing.
Back to the textSystem RAM — System memory that temporarily holds data while programs run.
Back to the textCPU — The central processor that runs the operating system and general-purpose instructions; in AI workloads it also handles tasks such as preprocessing and data movement.
Back to the textUnified memory — An architecture where the CPU and GPU share one physical memory pool.
Back to the textPrompt — The input text sent to a model. For generative models it describes the desired result and strongly shapes the output.
Back to the textMetal — Apple’s low-level technology for graphics and parallel GPU computation.
Back to the textCUDA — A software platform for general-purpose computing on NVIDIA GPUs.
Back to the textTool call — A structured request from a model for an external function such as reading a file, searching, or running a command. The agent runtime and its permission settings decide whether the request is actually executed.
Back to the text
Frequently asked questions
- What should you check first in this article?
- Underdog Saluki 27B 1.0 compresses Qwen3.8-27B with roughly two-bit mixed quantization. Load its 7.89 GB GGUF in llama.cpp to answer questions locally and serve replies to connected apps. Conversation state needs memory alongside the weights, so start with a short context and expand it after checking available memory.
- How much memory does it need?
- If memory has kept you on smaller models despite wanting to try Qwen3.8-27B, Saluki offers another option. It keeps the 27 billion parameters while reducing the bits used to store their weights. The download is a 7.89 GB GGUF, a format supported by many local runners.
- Where can you check the conditions and sources?
- Here we load the model in llama.cpp and start a server on port 8080 of your own computer. Once ready, it can connect to web chat or an OpenAI-compatible app. The weights are released under Apache 2.0, supporting personal workflows and services that follow the license terms.
Read next
Model setup recipes
Qwen3.8-27B setup by hardware: Mac oMLX and RTX llama.cpp
memory and model
LLM quantization: choosing Q4, Q8 or FP16
Executable programs and extensions
llama.cpp: finding which settings are slowing you down
Executable programs and extensions
Run Qwen3.8 Locally with NInfer: RTX 5090, MTP, and DFlash2
