# Devstral: 実行とファインチューニング方法

**Devstral-Small-2507** (Devstral 1.1) は、Mistral のソフトウェア工学向けの新しいエージェント型 LLM です。ツール呼び出し、コードベースの探索、コーディングエージェントの強化に優れています。Mistral AI は元の 2505 版を 2025 年 5 月にリリースしました。

からファインチューニング [**Mistral-Small-3.1**](https://huggingface.co/unsloth/Mistral-Small-3.1-24B-Instruct-2503-GGUF)からファインチューニングされており、Devstral は 128k のコンテキストウィンドウをサポートします。Devstral Small 1.1 は性能が向上しており、 [SWE-bench verified](https://openai.com/index/introducing-swe-bench-verified/)で 53.6% のスコアを達成し、(2025 年 7 月 10 日時点で) ベンチマークにおける #1 のオープンモデルとなっています。

Unsloth Devstral 1.1 GGUF には追加の <mark style="background-color:green;">**ツール呼び出しサポート**</mark> および <mark style="background-color:green;">**チャットテンプレートの修正**</mark>が含まれています。Devstral 1.1 は OpenHands でも引き続きうまく動作しますが、現在では他のプロンプトやコーディング環境にもよりよく一般化します。

テキスト専用であるため、Devstral の vision encoder はファインチューニング前に削除されました。私たちは [*<mark style="background-color:green;">**オプションの Vision サポート**</mark>*](#possible-vision-support) をモデルに追加しました。

{% hint style="success" %}
また、デバッグ、テスト、潜在的なバグや問題の修正を支援するために、裏側で Mistral とも協力しました。必ず **Mistral 公式のダウンロードまたは Unsloth の GGUF をダウンロード** ／ dynamic quants を使用して **正しい実装** （つまり、正しい system prompt、正しい chat template など）

を取得してください。 `--jinja` system prompt を有効にするために llama.cpp で使用してください！
{% endhint %}

すべての Devstral アップロードは、私たちの Unsloth [Dynamic 2.0](/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs.md) 手法を使用しており、5-shot MMLU および KL Divergence ベンチマークで最高の性能を提供します。つまり、量子化された Mistral LLM を最小限の精度低下で実行し、ファインチューニングできます！

#### **Devstral - Unsloth Dynamic** quant：

| Devstral 2507（新）                                                                                                       | 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 の実行**

### :gear: 公式の推奨設定

Mistral AI によると、推論に推奨される設定は以下のとおりです：

* <mark style="background-color:blue;">**Temperature は 0.0 から 0.15**</mark>
* Min\_P を 0.01 に設定（任意ですが、0.01 がよく機能します。llama.cpp のデフォルトは 0.1）
* <mark style="background-color:orange;">**使用**</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;">**を有効にしてシステムプロンプトを使います。**</mark>

**system prompt が推奨されます**。これは Open Hands の system prompt を元にした派生版です。完全な system prompt は [こちら](https://huggingface.co/unsloth/Devstral-Small-2505/blob/main/SYSTEM_PROMPT.txt).

```
あなたは Devstral です。Mistral AI によって訓練され、OpenHands の足場を使用する、役立つエージェント型モデルです。タスクを解決するためにコンピュータと対話できます。

<ROLE>
あなたの主な役割は、コマンドの実行、コードの修正、技術的な問題の効果的な解決を通じてユーザーを支援することです。あなたは徹底的で体系的であり、速度よりも品質を優先すべきです。
* ユーザーが「なぜ X が起きているのか」のような質問をした場合は、問題を修正しようとせず、その質問に答えるだけにしてください。
</ROLE>

.... SYSTEM PROMPT は続きます ....
```

{% hint style="success" %}
私たちの dynamic uploads には '`UD`' プレフィックスが付いています。付いていないものは dynamic ではありませんが、それでも私たちの calibration dataset を利用しています。
{% endhint %}

## :llama: チュートリアル: Ollama で Devstral を実行する方法

1. インストール `ollama` まだなら、

```bash
apt-get update
apt-get install pciutils -y
curl -fsSL https://ollama.com/install.sh | sh
```

2. 私たちの dynamic quant でモデルを実行してください。失敗した場合は別のターミナルで `ollama serve &`を呼び出せます！推奨パラメータ（temperature など）はすべて `params` に含まれています！
3. にも含めています。また Devstral は 128K のコンテキスト長をサポートしているので、できれば有効にするのが最善です。 [**KV キャッシュ量子化**](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-set-the-quantization-type-for-the-kv-cache)。私たちはメモリ使用量を 50% 節約できる 8bit 量子化を使用しています。次も試せます： `"q4_0"`

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

## 📖 チュートリアル: llama.cpp で Devstral を実行する方法 <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. 最新の `llama.cpp` を [GitHub こちら](https://github.com/ggml-org/llama.cpp)から取得してください。以下のビルド手順に従うこともできます。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。 **Apple Mac / Metal デバイスの場合**、次を設定して `-DGGML_CUDA=OFF` その後は通常どおり続けてください - Metal サポートは既定で有効です。

```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. もし `llama.cpp` モデルを直接読み込むには、以下のようにできます：（:Q4\_K\_XL）は量子化タイプです。Hugging Face 経由でもダウンロードできます（3 番）。これは次に似ています： `ollama run`

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

3. **または** （をインストールした後に）モデルをダウンロードしてください。Q4\_K\_M や他の量子化版（たとえば BF16 の完全精度）を選べます。 `pip install huggingface_hub hf_transfer` Q4\_K\_M や他の量子化版（たとえば BF16 の完全精度）を選べます。

```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*"], # For Q4_K_XL
)
```

4. モデルを実行します。
5. 編集 `--threads -1` 最大 CPU スレッド数には、 `--ctx-size 131072` コンテキスト長用（Devstral は 128K のコンテキスト長をサポート！）、 `--n-gpu-layers 99` GPU オフロードする層数にはこれを使います。GPU のメモリ不足になる場合は調整してください。CPU のみで推論する場合はこれを削除してください。また、メモリ使用量を減らすために K cache には 8bit 量子化も使用しています。
6. 会話モードの場合：

<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. 会話モード以外で Flappy Bird プロンプトをテストする場合：

<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]あなたは Devstral です。Mistral AI によって訓練され、OpenHands の足場を使用する、役立つエージェント型モデルです。タスクを解決するためにコンピュータと対話できます。\n\n&#x3C;ROLE>\nあなたの主な役割は、コマンドの実行、コードの修正、技術的な問題の効果的な解決を通じてユーザーを支援することです。あなたは徹底的で体系的であり、速度よりも品質を優先すべきです。\n* ユーザーが "why is X happening" のような質問をした場合は、問題を修正しようとせず、その質問に答えるだけにしてください。\n&#x3C;/ROLE>\n\n&#x3C;EFFICIENCY>\n* あなたの各アクションにはある程度コストがあります。可能な限り、複数のアクションを 1 つにまとめてください。たとえば、複数の bash コマンドを 1 つにまとめたり、sed や grep を使って複数ファイルをまとめて編集・表示したりしてください。\n* コードベースを探索する際は、find、grep、git コマンドなどの効率的なツールを適切なフィルタ付きで使い、不要な操作を最小限にしてください。\n&#x3C;/EFFICIENCY>\n\n&#x3C;FILE_SYSTEM_GUIDELINES>\n* ユーザーがファイルパスを提供した場合、それが現在の作業ディレクトリに対する相対パスだと仮定しないでください。作業前にまずファイルシステムを探索してそのファイルを見つけてください。\n* ファイルの編集を求められた場合は、新しい別名のファイルを作成するのではなく、直接そのファイルを編集してください。\n* グローバルな検索・置換操作では、ファイルエディタを何度も開く代わりに `sed` の使用を検討してください。\n&#x3C;/FILE_SYSTEM_GUIDELINES>\n\n&#x3C;CODE_QUALITY>\n* コメントは最小限にして、きれいで効率的なコードを書いてください。コメントの重複は避けてください。コード自体から容易に推測できる情報を繰り返さないでください。\n* 解決策を実装する際は、問題解決に必要な最小限の変更に集中してください。\n* 変更を実装する前に、まず探索を通じてコードベースを十分に理解してください。\n* 関数やファイルに大量のコードを追加する場合は、必要に応じて関数やファイルをより小さな部分に分割することを検討してください。\n&#x3C;/CODE_QUALITY>\n\n&#x3C;VERSION_CONTROL>\n* git 認証情報を設定する際は、特に指示がない限り、既定で user.name に "openhands"、user.email に "openhands@all-hands.dev" を使用してください。\n* git 操作は慎重に行ってください。特に明示的に求められていない限り、危険な変更（例: main への push、リポジトリ削除）は行わないでください。\n* 変更をコミットする際は、`git status` で変更されたすべてのファイルを確認し、コミットに必要なファイルをすべてステージしてください。可能な限り `git commit -a` を使用してください。\n* 通常はバージョン管理に入れるべきでないファイル（例: node_modules/、.env ファイル、build ディレクトリ、cache ファイル、大きなバイナリ）は、ユーザーに特に指示されない限りコミットしないでください。\n* 特定のファイルをコミットしてよいか不明な場合は、.gitignore ファイルの存在を確認するか、ユーザーに確認してください。\n&#x3C;/VERSION_CONTROL>\n\n&#x3C;PULL_REQUESTS>\n* PR を作成する際は、特に指示がない限り、セッション／課題ごとに 1 つだけ作成してください。\n* 既存の PR を扱う場合は、同じ課題に対して追加の PR を作るのではなく、新しいコミットで更新してください。\n* PR を更新する際は、元の PR のタイトルと目的を維持し、説明は必要な場合のみ更新してください。\n&#x3C;/PULL_REQUESTS>\n\n&#x3C;PROBLEM_SOLVING_WORKFLOW>\n1. EXPLORATION: 解決策を提案する前に、関連ファイルを十分に探索し、文脈を理解する\n2. ANALYSIS: 複数のアプローチを検討し、最も有望なものを選ぶ\n3. TESTING:\n   * バグ修正の場合: 修正を実装する前に問題を確認するためのテストを作成する\n   * 新機能の場合: 適切であればテスト駆動開発を検討する\n   * リポジトリにテスト基盤がなく、テスト実装に大規模な準備が必要な場合は、テスト基盤構築に時間を投資する前にユーザーに相談する\n   * 環境がテスト実行用にセットアップされていない場合は、テストをインストールするために時間を使う前に、まずユーザーに相談する\n4. IMPLEMENTATION: 問題に対処するため、焦点を絞った最小限の変更を行う\n5. VERIFICATION: 環境がテスト実行可能であれば、エッジケースを含めて実装を十分にテストする。環境がテスト実行用にセットアップされていない場合は、テストを実行するための時間を使う前にまずユーザーに相談する。\n&#x3C;/PROBLEM_SOLVING_WORKFLOW>\n\n&#x3C;SECURITY>\n* GITHUB_TOKEN やその他の認証情報は、ユーザーが明示的に要求し、想定している方法でのみ使用してください。\n* ユーザーが別途求める場合、またはタスクにブラウジングが必要な場合を除き、GitHub や他のプラットフォームを扱うには API を使用してください。\n&#x3C;/SECURITY>\n\n&#x3C;ENVIRONMENT_SETUP>\n* ユーザーがアプリケーションの実行を求めたとき、アプリがインストールされていなくても止まらないでください。代わりにアプリケーションをインストールして、コマンドを再実行してください。\n* 依存関係が不足している場合：\n  1. まずリポジトリ内に既存の依存関係ファイル（requirements.txt、pyproject.toml、package.json、Gemfile など）があるか確認する\n  2. 依存関係ファイルがあれば、それらを使って一括で依存関係をインストールする（例: `pip install -r requirements.txt`、`npm install` など）\n  3. 個別パッケージを直接インストールするのは、依存関係ファイルが見つからない場合、または特定のパッケージだけが必要な場合に限る\n* 同様に、ユーザーが求めた必須ツールの依存関係が不足している場合は、可能であればインストールしてください。\n&#x3C;/ENVIRONMENT_SETUP>\n\n&#x3C;TROUBLESHOOTING>\n* 何度か問題解決を試みてもテストが失敗する、またはユーザーからまだ壊れていると報告された場合：\n  1. 一歩引いて、問題の原因として考えられる 5〜7 個の別の可能性を検討する\n  2. 各可能性の確からしさを評価する\n  3. 最も可能性の高い原因から順に、体系的に対処する\n  4. 推論の過程を文書化する\n* ユーザーからの計画を実行する中で大きな問題に直面した場合は、直接回避しようとしないでください。代わりに、新しい計画を提案し、続行する前にユーザーに確認してください。\n&#x3C;/TROUBLESHOOTING>[/SYSTEM_PROMPT][INST]Python で Flappy Bird ゲームを作成してください。以下を含める必要があります：\n1. pygame を使用すること。\n2. 背景色はランダムに選ばれる明るい色にすること。開始時は明るい青にすること。\n3. SPACE を複数回押すと鳥が加速すること。\n4. 鳥の形は四角、円、三角形のいずれかをランダムに選ぶこと。色は暗い色をランダムに選ぶこと。\n5. 下部に、ランダムに選ばれた暗い茶色または黄色の地面を配置すること。\n6. 右上にスコアを表示すること。パイプを通過して当たらなければスコアを増やすこと。\n7. 十分な間隔を持つランダム間隔のパイプを作成すること。色は暗い緑、薄い茶色、または濃い灰色からランダムにすること。\n8. 負けたらベストスコアを表示すること。テキストは画面内に収めること。q または Esc でゲームを終了すること。再開は SPACE をもう一度押すこと。\n最終的なゲームは Python の markdown セクション内に入れてください。コードにエラーがないか確認してください[/INST]"
</code></pre>

{% hint style="danger" %}
\<bos> を削除することを忘れないでください。Devstral は自動で \<bos> を追加します！また、 `--jinja` を使用して system prompt を有効にしてください！
{% endhint %}

## :eyes:実験的な Vision サポート

[Xuan-Son](https://x.com/ngxson) は Hugging Face で [GGUF リポジトリ](https://huggingface.co/ngxson/Devstral-Small-Vision-2505-GGUF) において、Mistral 3.1 Instruct の vision encoder を Devstral 2507 に「graft」することが実際に可能であることを示しました。さらに、次のものを使えるように mmproj ファイルもアップロードしました：

```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
```

たとえば：

| 指示と出力コード                                                                                                      | レンダリングされたコード                                                                                                  |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| ![](https://cdn-uploads.huggingface.co/production/uploads/63ca214abedad7e2bf1d1517/HDic53ANsCoJbiWu2eE6K.png) | ![](https://cdn-uploads.huggingface.co/production/uploads/63ca214abedad7e2bf1d1517/onV1xfJIT8gzh81RkLn8J.png) |

## 🦥 Unsloth で Devstral をファインチューニング

Mistral Small 3.1 を含む標準的な Mistral モデルと同様に、Unsloth は Devstral のファインチューニングをサポートします。学習は 2 倍高速で、VRAM 使用量は 70% 少なく、8 倍長いコンテキスト長をサポートします。Devstral は 24GB VRAM の L4 GPU に余裕で収まります。

残念ながら、Devstral は 16GB VRAM のメモリ制限をわずかに超えるため、現時点では Google Colab で無料でファインチューニングすることはできません。ただし、 *できます* 私たちの [Kaggle ノートブック](https://www.kaggle.com/notebooks/welcome?src=https://github.com/unslothai/notebooks/blob/main/nb/Kaggle-Magistral_\(24B\)-Reasoning-Conversational.ipynb\&accelerator=nvidiaTeslaT4)を使えばデュアル GPU にアクセスできます。ノートブックの Magistral モデル名を Devstral モデル名に変更するだけです。

古いバージョンの Unsloth を使っている場合やローカルでファインチューニングしている場合は、最新バージョンの Unsloth をインストールしてください：

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

[^1]: メモリ使用量を減らすための K 量子化。f16、q8\_0、q4\_0 が可能です

[^2]: system prompt を有効にするには --jinja を使用する必要があります


---

# 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/jp/moderu/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.
