Convert Ollama to llama.cpp
2025-10-262 turns3,706 charsgpt-5archived
Summary
User wants to convert Ollama models from the .ollama folder for use with llama.cpp.
Messages
how to convert from ollama to llama.cpp things to have in mind such as location of models I want to use the ones that ollama has converted in the .ollama folder
To convert models from **Ollama** into a format usable by **llama.cpp**, or to use Ollama’s downloaded models directly in llama.cpp, here’s what you need to know:
---
### ✅ Key Things to Understand
#### 📁 **Where Ollama Stores Models**
Ollama stores its models in this directory:
- **macOS/Linux:**
`~/.ollama/models/`
- **Windows:**
`%USERPROFILE%\.ollama\models\`
Inside each model's folder, you'll typically find:
- A `model` file (this is an **Ollama-specific format**, not directly GGUF/GGML).
- Possibly metadata, tokenizer, or manifest files.
⚠ **Important:** These files are *not directly usable* in `llama.cpp`. Ollama uses its own container format.
---
### 🔄 **How to Use Ollama Models in llama.cpp**
You have 2 options:
---
#### **✅ Option 1: Directly Extract GGUF from Ollama Model**
Ollama models are often built from `.gguf` files internally. You can extract or locate them like this:
1. Run this to inspect a model:
```bash
ollama show --modelfile <model-name>
```
This will reveal where the base `.gguf` file came from.
2. Sometimes the `.gguf` file is stored raw inside:
- `~/.ollama/models/blobs/<hash>`
- You can identify which blob is the model via:
```bash
strings ~/.ollama/models/blobs/* | grep GGUF
```
3. Rename it to something like `model.gguf` and move it to llama.cpp’s `models/` folder:
```bash
cp ~/.ollama/models/blobs/<hash> ~/llama.cpp/models/your-model.gguf
```
---
#### **✅ Option 2: Rebuild the GGUF Model with `llama.cpp` Tools**
If you can't find a GGUF blob (or the model is quantized in an Ollama-only way):
1. Find the original model name from `Modelfile`:
```bash
ollama show --modelfile <model-name>
```
Example output:
```
FROM llama3:8b-instruct
```
2. Download the base model in HuggingFace format.
3. Convert it to GGUF:
```bash
python convert.py --outfile ./gguf-model.gguf ./path-to-hf-model
```
4. (Optional) Quantize to 4-bit/5-bit:
```bash
./quantize ./gguf-model.gguf ./ggml-model-q4_0.gguf q4_0
```
5. Move to llama.cpp’s models folder:
```bash
mv ggml-model-q4_0.gguf ~/llama.cpp/models/
```
---
### 📌 **Key Differences to Keep in Mind**
| Feature | Ollama | llama.cpp |
|---------------------|----------------------------------|----------------------------------|
| Model format | `.ollama` (container) | `.gguf` / `.ggml` |
| Model directory | `~/.ollama/models/` | `./models/` inside llama.cpp |
| Runtime usage | `ollama run model` | `./main -m models/model.gguf` |
| Fine-tuning | External / Modelfile-based | `lora`, `f16`, direct adapters |
---
### 🚀 **Example: Running Ollama’s Llama3 Model in llama.cpp**
```bash
# Find GGUF blob inside ollama
ls ~/.ollama/models/blobs/ | xargs -I {} file ~/.ollama/models/blobs/{}
# Suppose we found a GGUF blob:
cp ~/.ollama/models/blobs/abc123 ~/llama.cpp/models/llama3.gguf
# Run it
cd ~/llama.cpp
./main -m models/llama3.gguf -p "Hello!"
```
---
### ✅ **Summary**
✔ Ollama models aren’t directly usable — they’re in a packed format.
✔ You can **extract the GGUF** file from `~/.ollama/models/blobs/`.
✔ If not available, recreate the model using **convert.py → GGUF → llama.cpp**.
✔ Place final `.gguf` models into `llama.cpp/models/`.
---
Would you like a script that automatically finds and copies all GGUF models from `.ollama` to `llama.cpp`?
gpt-5