# Devstral: So führst du es aus und feinstimmst es

**Devstral-Small-2507** (Devstral 1.1) ist Mistrals neues agentisches LLM für Softwareentwicklung. Es ist besonders gut im Aufrufen von Tools, beim Erkunden von Codebasen und beim Betreiben von Coding-Agenten. Mistral AI veröffentlichte die ursprüngliche Version 2505 im Mai 2025.

Feinabgestimmt von [**Mistral-Small-3.1**](https://huggingface.co/unsloth/Mistral-Small-3.1-24B-Instruct-2503-GGUF), Devstral unterstützt ein 128k Kontextfenster. Devstral Small 1.1 hat eine verbesserte Leistung und erzielt eine Punktzahl von 53,6% auf [SWE-bench verifiziert](https://openai.com/index/introducing-swe-bench-verified/), womit es (10. Juli 2025) das #1 Open-Model im Benchmark ist.

Unsloth Devstral 1.1 GGUFs enthalten zusätzlich <mark style="background-color:green;">**Tool-Aufruf-Unterstützung**</mark> und <mark style="background-color:green;">**Chat-Vorlagen-Fixes**</mark>. Devstral 1.1 funktioniert immer noch gut mit OpenHands, generalisiert jetzt aber auch besser auf andere Prompts und Programmierumgebungen.

Als reines Textmodell wurde Devstrals Vision-Encoder vor der Feinabstimmung entfernt. Wir haben [*<mark style="background-color:green;">**optionale Vision-Unterstützung**</mark>*](#possible-vision-support) für das Modell hinzugefügt.

{% hint style="success" %}
Wir haben auch hinter den Kulissen mit Mistral zusammengearbeitet, um mögliche Fehler und Probleme zu debuggen, zu testen und zu beheben! Stelle sicher, dass du **Mistrals offizielle Downloads oder Unsloths GGUFs** / dynamische Quants herunterlädst, um die **korrekte Implementierung** (z. B. korrekter System-Prompt, korrekte Chat-Vorlage etc.)

Bitte verwende `--jinja` in llama.cpp, um den System-Prompt zu aktivieren!
{% endhint %}

Alle Devstral-Uploads verwenden unsere Unsloth- [Dynamic 2.0](/docs/de/grundlagen/unsloth-dynamic-2.0-ggufs.md) Methodik und liefern die beste Leistung bei 5-Shot MMLU- und KL-Divergenz-Benchmarks. Das bedeutet, du kannst quantisierte Mistral-LLMs mit minimalem Genauigkeitsverlust ausführen und feinabstimmen!

#### **Devstral - Unsloth Dynamische** Quants:

| Devstral 2507 (neu)                                                                                                    | Devstral 2505                                                                                               |
| ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| GGUF: [Devstral-Small-2507-GGUF](https://huggingface.co/unsloth/Devstral-Small-2507-GGUF)                              | [Devstral-Small-2505-GGUF](https://huggingface.co/unsloth/Devstral-Small-2505-GGUF)                         |
| 4-bit BnB: [Devstral-Small-2507-unsloth-bnb-4bit](https://huggingface.co/unsloth/Devstral-Small-2507-unsloth-bnb-4bit) | [Devstral-Small-2505-unsloth-bnb-4bit](https://huggingface.co/unsloth/Devstral-Small-2505-unsloth-bnb-4bit) |

## 🖥️ **Devstral ausführen**

### :gear: Offiziell empfohlene Einstellungen

Laut Mistral AI sind dies die empfohlenen Einstellungen für die Inferenz:

* <mark style="background-color:blue;">**Temperatur von 0,0 bis 0,15**</mark>
* Min\_P von 0,01 (optional, aber 0,01 funktioniert gut, llama.cpp-Standard ist 0,1)
* <mark style="background-color:orange;">**Verwende**</mark><mark style="background-color:orange;">**&#x20;**</mark><mark style="background-color:orange;">**`--jinja`**</mark><mark style="background-color:orange;">**&#x20;**</mark><mark style="background-color:orange;">**um den System-Prompt zu aktivieren.**</mark>

**Ein System-Prompt wird empfohlen**, und ist eine Ableitung von Open Hands' System-Prompt. Der vollständige System-Prompt wird bereitgestellt [hier](https://huggingface.co/unsloth/Devstral-Small-2505/blob/main/SYSTEM_PROMPT.txt).

```
Du bist Devstral, ein hilfreiches agentisches Modell, das von Mistral AI trainiert wurde und das OpenHands-Gerüst verwendet. Du kannst zur Lösung von Aufgaben mit einem Computer interagieren.

<ROLE>
Deine Hauptaufgabe ist es, Benutzer zu unterstützen, indem du Befehle ausführst, Code änderst und technische Probleme effektiv löst. Du solltest gründlich, methodisch vorgehen und Qualität über Geschwindigkeit stellen.
* Wenn der Benutzer eine Frage stellt, wie „warum passiert X“, versuche nicht, das Problem zu beheben. Gib einfach eine Antwort auf die Frage.
</ROLE>

.... SYSTEM-PROMPT WIRD FORTGESETZT ....
```

{% hint style="success" %}
Unsere dynamischen Uploads haben das '`UD`' Präfix in ihrem Namen. Diejenigen ohne dieses Präfix sind nicht dynamisch, nutzen jedoch weiterhin unseren Kalibrierungsdatensatz.
{% endhint %}

## :llama: Tutorial: Wie man Devstral in Ollama ausführt

1. In Ollama ausführen `Installieren Sie` falls Sie es noch nicht getan haben!

```bash
apt-get update
siehe hier
apt-get install pciutils -y
```

2. Führe das Modell mit unserem dynamischen Quant aus. Beachte, dass du `ollama serve &`in einem anderen Terminal aufrufen kannst, wenn es fehlschlägt! Wir fügen alle empfohlenen Parameter (Temperatur usw.) in `in einem anderen Terminal aufrufen können, wenn es fehlschlägt! Wir fügen alle unsere Fixes und vorgeschlagenen Parameter (Temperatur usw.) in` params
3. Außerdem unterstützt Devstral Kontextlängen von 128K, also ist es am besten, [**KV-Cache-Quantisierung**](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-set-the-quantization-type-for-the-kv-cache)zu aktivieren. Wir verwenden 8bit-Quantisierung, die 50% Speicher einspart. Du kannst auch `"q4_0"`

```bash
export OLLAMA_KV_CACHE_TYPE="q8_0"
ollama run hf.co/unsloth/Devstral-Small-2507-GGUF:UD-Q4_K_XL
```

## 📖 Tutorial: Wie man Devstral in llama.cpp ausführt <a href="#tutorial-how-to-run-llama-4-scout-in-llama.cpp" id="tutorial-how-to-run-llama-4-scout-in-llama.cpp"></a>

1. Hole dir die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Du kannst auch den Build-Anweisungen unten folgen. Ändere `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn du keine GPU hast oder nur CPU-Inferenz möchtest. **Für Apple Mac / Metal-Geräte**, setze `-DGGML_CUDA=OFF` dann wie gewohnt fort - Metal-Unterstützung ist standardmäßig aktiviert.

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split llama-mtmd-cli
cp llama.cpp/build/bin/llama-* llama.cpp
```

2. Wenn du `llama.cpp` direkt zum Laden von Modellen verwenden möchten, können Sie Folgendes tun: (:Q4\_K\_XL) ist der Quantisierungstyp. Sie können auch über Hugging Face herunterladen (Punkt 3). Dies ähnelt `ollama run`

```bash
./llama.cpp/llama-cli -hf unsloth/Devstral-Small-2507-GGUF:UD-Q4_K_XL --jinja
```

3. **ODER** laden Sie das Modell herunter via (nach Installation von `pip install huggingface_hub hf_transfer` ). Sie können Q4\_K\_M oder andere quantisierte Versionen wählen (wie BF16 Vollpräzision).

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/Devstral-Small-2507-GGUF",
    local_dir = "unsloth/Devstral-Small-2507-GGUF",
    allow_patterns = ["*Q4_K_XL*", "*mmproj-F16*"], # Für Q4_K_XL
)
```

4. Führe das Modell aus.
5. Bearbeiten `--threads -1` für die maximalen CPU-Threads, `--ctx-size 131072` für die Kontextlänge (Devstral unterstützt 128K Kontextlänge!), `--n-gpu-layers 99` für GPU-Offloading, wie viele Schichten. Versuche es anzupassen, wenn deine GPU nicht mehr genug Speicher hat. Entferne es auch, wenn du nur CPU-Inferenz hast. Wir verwenden außerdem 8bit-Quantisierung für den K-Cache, um den Speicherverbrauch zu reduzieren.
6. Für den Konversationsmodus:

<pre class="language-bash"><code class="lang-bash">./llama.cpp/llama-cli \
    --model unsloth/Devstral-Small-2507-GGUF/Devstral-Small-2507-UD-Q4_K_XL.gguf \
    --threads -1 \
    --ctx-size 131072 \
    <a data-footnote-ref href="#user-content-fn-1">--cache-type-k q8_0</a> \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 2 \
    --temp 0.15 \
    --repeat-penalty 1.0 \
    --min-p 0.01 \
    --top-k 64 \
    --top-p 0.95 \
    <a data-footnote-ref href="#user-content-fn-2">--jinja</a>
</code></pre>

7. Für den Nicht-Konversationsmodus, um unseren Flappy-Bird-Prompt zu testen:

<pre class="language-bash"><code class="lang-bash">./llama.cpp/llama-cli \
    --model unsloth/Devstral-Small-2507-GGUF/Devstral-Small-2507-UD-Q4_K_XL.gguf \
    --threads -1 \
    --ctx-size 131072 \
    <a data-footnote-ref href="#user-content-fn-1">--cache-type-k q8_0</a> \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 2 \
    --temp 0.15 \
    --repeat-penalty 1.0 \
    --min-p 0.01 \
    --top-k 64 \
    --top-p 0.95 \
    -no-cnv \
    --prompt "[SYSTEM_PROMPT]Du bist Devstral, ein hilfreiches agentisches Modell, das von Mistral AI trainiert wurde und das OpenHands-Gerüst verwendet. Du kannst zur Lösung von Aufgaben mit einem Computer interagieren.\n\n&#x3C;ROLE>\nDeine Hauptaufgabe ist es, Benutzer zu unterstützen, indem du Befehle ausführst, Code änderst und technische Probleme effektiv löst. Du solltest gründlich, methodisch vorgehen und Qualität über Geschwindigkeit stellen.\n* Wenn der Benutzer eine Frage stellt, wie \"warum passiert X\", versuche nicht, das Problem zu beheben. Gib einfach eine Antwort auf die Frage.\n&#x3C;/ROLE>\n\n&#x3C;EFFICIENCY>\n* Jede Aktion, die du ausführst, ist etwas teuer. Wenn möglich, kombiniere mehrere Aktionen zu einer einzigen, z. B. mehrere Bash-Befehle in einem, verwende sed und grep, um mehrere Dateien gleichzeitig zu bearbeiten/anzusehen.\n* Beim Erkunden der Codebasis verwende effiziente Werkzeuge wie find, grep und git-Befehle mit passenden Filtern, um unnötige Operationen zu minimieren.\n&#x3C;/EFFICIENCY>\n\n&#x3C;FILE_SYSTEM_GUIDELINES>\n* Wenn ein Benutzer einen Dateipfad angibt, gehe NICHT davon aus, dass er relativ zum aktuellen Arbeitsverzeichnis ist. Erkunde zuerst das Dateisystem, um die Datei zu finden, bevor du daran arbeitest.\n* Wenn du gebeten wirst, eine Datei zu bearbeiten, bearbeite die Datei direkt, anstatt eine neue Datei mit einem anderen Dateinamen zu erstellen.\n* Für globale Suchen-und-Ersetzen-Operationen ziehe in Betracht, `sed` zu verwenden, anstatt Dateieditoren mehrfach zu öffnen.\n&#x3C;/FILE_SYSTEM_GUIDELINES>\n\n&#x3C;CODE_QUALITY>\n* Schreibe sauberen, effizienten Code mit minimalen Kommentaren. Vermeide Redundanz in Kommentaren: Wiederhole keine Informationen, die leicht aus dem Code selbst abgeleitet werden können.\n* Bei der Implementierung von Lösungen konzentriere dich auf minimale Änderungen, die nötig sind, um das Problem zu lösen.\n* Verstehe die Codebasis gründlich durch Exploration, bevor du Änderungen implementierst.\n* Wenn du viel Code zu einer Funktion oder Datei hinzufügst, erwäge, die Funktion oder Datei bei Bedarf in kleinere Teile zu zerlegen.\n&#x3C;/CODE_QUALITY>\n\n&#x3C;VERSION_CONTROL>\n* Beim Konfigurieren von Git-Zugangsdaten verwende standardmäßig "openhands" als user.name und "openhands@all-hands.dev" als user.email, sofern nicht ausdrücklich anders angewiesen.\n* Sei vorsichtig bei Git-Operationen. Nimm KEINE potenziell gefährlichen Änderungen vor (z. B. Pushen zu main, Löschen von Repositorien), es sei denn, du wurdest ausdrücklich dazu aufgefordert.\n* Beim Committen von Änderungen verwende `git status`, um alle geänderten Dateien zu sehen, und stage alle für den Commit notwendigen Dateien. Verwende nach Möglichkeit `git commit -a`.\n* Committe KEINE Dateien, die üblicherweise nicht in die Versionskontrolle gehören (z. B. node_modules/, .env-Dateien, Build-Verzeichnisse, Cache-Dateien, große Binärdateien), es sei denn, der Benutzer weist dich ausdrücklich dazu an.\n* Wenn du unsicher bist, ob bestimmte Dateien committet werden sollen, prüfe das Vorhandensein von .gitignore-Dateien oder frage den Benutzer um Klärung.\n&#x3C;/VERSION_CONTROL>\n\n&#x3C;PULL_REQUESTS>\n* Beim Erstellen von Pull Requests erstelle pro Sitzung/Issue nur EINEN, sofern nicht ausdrücklich anders angewiesen.\n* Beim Arbeiten mit einem bestehenden PR aktualisiere ihn mit neuen Commits, anstatt zusätzliche PRs für dasselbe Problem zu erstellen.\n* Beim Aktualisieren eines PRs erhalte den ursprünglichen PR-Titel und Zweck bei, und aktualisiere die Beschreibung nur, wenn nötig.\n&#x3C;/PULL_REQUESTS>\n\n&#x3C;PROBLEM_SOLVING_WORKFLOW>\n1. EXPLORATION: Erkunde relevante Dateien gründlich und verstehe den Kontext, bevor du Lösungen vorschlägst\n2. ANALYSE: Betrachte mehrere Ansätze und wähle den vielversprechendsten aus\n3. TESTEN:\n   * Für Bugfixes: Erstelle Tests, um Probleme vor der Implementierung von Fixes zu verifizieren\n   * Für neue Features: Ziehe testgetriebene Entwicklung in Betracht, wenn angebracht\n   * Wenn das Repository keine Testinfrastruktur hat und das Erstellen von Tests umfangreiche Einrichtung erfordern würde, konsultiere den Benutzer, bevor du Zeit in den Aufbau der Testinfrastruktur investierst\n   * Wenn die Umgebung nicht eingerichtet ist, um Tests auszuführen, konsultiere zuerst den Benutzer, bevor du Zeit investierst, alle Abhängigkeiten zu installieren\n4. IMPLEMENTIERUNG: Mache fokussierte, minimale Änderungen, um das Problem zu beheben\n5. VERIFIZIERUNG: Wenn die Umgebung eingerichtet ist, um Tests auszuführen, teste deine Implementierung gründlich, einschließlich Randfällen. Wenn die Umgebung nicht zum Testen eingerichtet ist, konsultiere zuerst den Benutzer, bevor du Zeit in das Ausführen von Tests investierst.\n&#x3C;/PROBLEM_SOLVING_WORKFLOW>\n\n&#x3C;SECURITY>\n* Verwende GITHUB_TOKEN und andere Zugangsdaten nur in der Weise, wie es der Benutzer ausdrücklich angefordert hat und erwarten würde.\n* Verwende APIs, um mit GitHub oder anderen Plattformen zu arbeiten, es sei denn, der Benutzer bittet anderweitig oder deine Aufgabe erfordert das Browsen.\n&#x3C;/SECURITY>\n\n&#x3C;ENVIRONMENT_SETUP>\n* Wenn der Benutzer dich bittet, eine Anwendung auszuführen, halte nicht an, wenn die Anwendung nicht installiert ist. Installiere stattdessen bitte die Anwendung und führe den Befehl erneut aus.\n* Wenn du auf fehlende Abhängigkeiten stößt:\n  1. Suche zuerst im Repository nach vorhandenen Abhängigkeitsdateien (requirements.txt, pyproject.toml, package.json, Gemfile usw.)\n  2. Wenn Abhängigkeitsdateien vorhanden sind, verwende sie, um alle Abhängigkeiten auf einmal zu installieren (z. B. `pip install -r requirements.txt`, `npm install` usw.)\n  3. Installiere einzelne Pakete nur direkt, wenn keine Abhängigkeitsdateien gefunden werden oder nur spezifische Pakete benötigt werden\n* Ebenso, wenn du auf fehlende Abhängigkeiten für wesentliche vom Benutzer angeforderte Werkzeuge stößt, installiere sie, wenn möglich.\n&#x3C;/ENVIRONMENT_SETUP>\n\n&#x3C;TROUBLESHOOTING>\n* Wenn du wiederholt versucht hast, ein Problem zu lösen, die Tests aber weiterhin fehlschlagen oder der Benutzer meldet, dass es immer noch defekt ist:\n  1. Trete einen Schritt zurück und überlege 5–7 verschiedene mögliche Ursachen des Problems\n  2. Schätze die Wahrscheinlichkeit jeder möglichen Ursache ein\n  3. Gehe methodisch die wahrscheinlichsten Ursachen an, beginnend mit der höchsten Wahrscheinlichkeit\n  4. Dokumentiere deinen Denkprozess\n* Wenn du auf ein größeres Problem stößt, während du einen Plan des Benutzers ausführst, versuche nicht direkt, es zu umgehen. Schlage stattdessen einen neuen Plan vor und bestätige ihn mit dem Benutzer, bevor du fortfährst.\n&#x3C;/TROUBLESHOOTING>[/SYSTEM_PROMPT][INST]Erstelle ein Flappy-Bird-Spiel in Python. Du musst diese Dinge einschließen:\n1. Du musst pygame verwenden.\n2. Die Hintergrundfarbe sollte zufällig gewählt werden und ein heller Farbton sein. Beginne mit einer hellblauen Farbe.\n3. Mehrfaches Drücken der LEERTASTE beschleunigt den Vogel.\n4. Die Form des Vogels sollte zufällig als Quadrat, Kreis oder Dreieck gewählt werden. Die Farbe sollte zufällig als dunkle Farbe gewählt werden.\n5. Platziere am unteren Rand etwas Land, das zufällig dunkelbraun oder gelb gefärbt ist.\n6. Zeige eine Punktzahl oben rechts an. Erhöhe sie, wenn du Rohrpaare passiert hast und sie nicht getroffen hast.\n7. Erstelle zufällig platzierte Rohre mit genügend Abstand. Färbe sie zufällig dunkelgrün oder hellbraun oder in einem dunklen Grauton.\n8. Wenn du verlierst, zeige die beste Punktzahl an. Platziere den Text innerhalb des Bildschirms. Drücke q oder Esc, um das Spiel zu beenden. Neustarten durch erneutes Drücken der LEERTASTE.\nDas finale Spiel sollte in einem Markdown-Abschnitt in Python sein. Prüfe deinen Code auf Fehler[/INST]"
</code></pre>

{% hint style="danger" %}
Denk daran, \<bos> zu entfernen, da Devstral automatisch ein \<bos> hinzufügt! Verwende auch bitte `--jinja` um den System-Prompt zu aktivieren!
{% endhint %}

## :eyes:Experimentelle Vision-Unterstützung

[Xuan-Son](https://x.com/ngxson) von Hugging Face zeigte in ihrem [GGUF-Repo](https://huggingface.co/ngxson/Devstral-Small-Vision-2505-GGUF) wie es tatsächlich möglich ist, den Vision-Encoder von Mistral 3.1 Instruct auf Devstral 2507 „anzuheften“. Wir haben auch unsere mmproj-Dateien hochgeladen, die es dir ermöglichen, Folgendes zu verwenden:

```bash
./llama.cpp/llama-mtmd-cli \
    --model unsloth/Devstral-Small-2507-GGUF/Devstral-Small-2507-UD-Q4_K_XL.gguf \
    --mmproj unsloth/Devstral-Small-2507-GGUF/mmproj-F16.gguf \
    --threads -1 \
    --ctx-size 131072 \
    --cache-type-k q8_0 \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 2 \
    --temp 0.15
```

Zum Beispiel:

| Anweisung und Ausgabe-Code                                                                                    | Gerenderter Code                                                                                              |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| ![](https://cdn-uploads.huggingface.co/production/uploads/63ca214abedad7e2bf1d1517/HDic53ANsCoJbiWu2eE6K.png) | ![](https://cdn-uploads.huggingface.co/production/uploads/63ca214abedad7e2bf1d1517/onV1xfJIT8gzh81RkLn8J.png) |

## 🦥 Feinabstimmung von Devstral mit Unsloth

Wie bei standardmäßigen Mistral-Modellen, einschließlich Mistral Small 3.1, unterstützt Unsloth die Feinabstimmung von Devstral. Das Training ist 2x schneller, verbraucht 70% weniger VRAM und unterstützt 8x längere Kontextlängen. Devstral passt bequem auf eine 24GB VRAM L4 GPU.

Leider überschreitet Devstral leicht die Speichermöglichkeiten einer 16GB VRAM, daher ist die Feinabstimmung auf Google Colab derzeit nicht kostenlos möglich. Allerdings *kannst* das Modell jedoch kostenlos mit unserem [Kaggle-Notebook](https://www.kaggle.com/notebooks/welcome?src=https://github.com/unslothai/notebooks/blob/main/nb/Kaggle-Magistral_\(24B\)-Reasoning-Conversational.ipynb\&accelerator=nvidiaTeslaT4), das Zugriff auf Dual-GPUs bietet. Ändere einfach den Modellnamen im Notebook von Magistral auf das Devstral-Modell.

Wenn Sie eine alte Version von Unsloth haben und/oder lokal feinabstimmen, installieren Sie die neueste Version von Unsloth:

```bash
pip install --upgrade --force-reinstall --no-cache-dir unsloth unsloth_zoo
```

[^1]: K-Quantisierung zur Reduzierung des Speicherverbrauchs. Kann f16, q8\_0, q4\_0 sein

[^2]: Du musst --jinja verwenden, um den System-Prompt zu aktivieren


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/de/modelle/tutorials/devstral-how-to-run-and-fine-tune.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
