Devstral Small 2505 GGUF
Model Overview
Model Features
Model Capabilities
Use Cases
🚀 Devstral-Small-2505 GGUFモデル
Devstral-Small-2505 GGUFモデルは、ソフトウェアエンジニアリングタスクに特化したLLMです。このモデルは、低メモリ環境での動作や高精度な推論が可能で、多様なハードウェア環境に対応しています。
🚀 クイックスタート
Devstral-Small-2505モデルを使用するには、まず適切なモデル形式を選択し、それに応じたハードウェア環境で実行する必要があります。具体的な手順やコード例については、以下のセクションを参照してください。
✨ 主な機能
- エージェント型コーディング:ソフトウェアエンジニアリングエージェントに最適化されたコーディングタスクを実行します。
- 軽量性:240億パラメータのコンパクトなサイズで、単一のRTX 4090や32GB RAMのMacでも実行可能です。
- Apache 2.0ライセンス:商用および非商用目的での使用と改変が許可されています。
- コンテキストウィンドウ:最大128kトークンの長いコンテキストウィンドウを持ちます。
- トークナイザー:131k語彙サイズのTekkenトークナイザーを使用しています。
📦 インストール
APIを使用する場合
- こちらの手順に従って、Mistralアカウントを作成し、APIキーを取得します。
- 以下のコマンドを実行して、OpenHandsのDockerコンテナを起動します。
export MISTRAL_API_KEY=<MY_KEY>
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
mkdir -p ~/.openhands-state && echo '{"language":"en","agent":"CodeActAgent","max_iterations":null,"security_analyzer":null,"confirmation_mode":false,"llm_model":"mistral/devstral-small-2505","llm_api_key":"'$MISTRAL_API_KEY'","remote_runtime_resource_factor":null,"github_token":null,"enable_default_condenser":true}' > ~/.openhands-state/settings.json
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
ローカル推論を行う場合
- 以下のコマンドを実行して、OpenHandsのDockerコンテナを起動します。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
- サーバーは
http://0.0.0.0:3000
で起動します。ブラウザで開き、AIプロバイダー設定のタブを表示します。 - 左側のバーのプラス記号をクリックして、エージェントとの新しい会話を開始します。
OpenHandsを使用する場合
Devstral-Small-2505をデプロイするサーバーを起動する
vLLMまたはOllamaなどのOpenAI互換サーバーを起動します。例えば、以下のコマンドでvLLMサーバーを起動できます。
vllm serve mistralai/Devstral-Small-2505 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
サーバーアドレスは http://<your-server-url>:8000/v1
の形式になります。
OpenHandsを起動する
こちらの手順に従ってOpenHandsをインストールします。最も簡単な方法は、Dockerイメージを使用することです。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
その後、http://localhost:3000
でOpenHands UIにアクセスできます。
サーバーに接続する
OpenHands UIにアクセスすると、サーバーに接続するように促されます。詳細モードを使用して、先に起動したサーバーに接続します。以下のフィールドを入力します。
- カスタムモデル:
openai/mistralai/Devstral-Small-2505
- ベースURL:
http://<your-server-url>:8000/v1
- APIキー:
token
(サーバーを起動する際に使用したトークン)
Devstralを使用したOpenHandsの利用
新しい会話を開始することで、OpenHands内でDevstral Smallを使用できます。以下は、To-Doリストアプリを構築する例です。
To-Doリストアプリ
1. 以下のプロンプトを使用して、Devstralにアプリを生成するように依頼します。 ```txt Build a To-Do list app with the following requirements: - Built using FastAPI and React. - Make it a one page app that: - Allows to add a task. - Allows to delete a task. - Allows to mark a task as done. - Displays the list of tasks. - Store the tasks in a SQLite database. ``` -
結果を確認します。 エージェントがアプリを構築し、生成されたコードを確認できます。自動的に行われない場合は、Devstralにアプリをデプロイするように依頼するか、手動でデプロイして、フロントエンドのURLにアクセスしてアプリを確認します。
-
反復作業を行います。 最初の結果が得られたら、エージェントに改善を依頼することで、アプリを改良できます。
💻 使用例
基本的な使用法
# APIを使用する場合のコマンド例
export MISTRAL_API_KEY=<MY_KEY>
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
mkdir -p ~/.openhands-state && echo '{"language":"en","agent":"CodeActAgent","max_iterations":null,"security_analyzer":null,"confirmation_mode":false,"llm_model":"mistral/devstral-small-2505","llm_api_key":"'$MISTRAL_API_KEY'","remote_runtime_resource_factor":null,"github_token":null,"enable_default_condenser":true}' > ~/.openhands-state/settings.json
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
高度な使用法
# ローカル推論を行う場合のコマンド例
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
📚 ドキュメント
モデル生成の詳細
このモデルは、llama.cpp のコミット f5cd27b7
を使用して生成されました。
IQ-DynamicGateによる超低ビット量子化 (1 - 2ビット)
最新の量子化方法では、超低ビットモデル (1 - 2ビット) のための 精度適応型量子化 を導入しており、Llama-3-8B でのベンチマーク検証による改善が見られます。このアプローチでは、レイヤー固有の戦略を使用して、極端なメモリ効率を維持しながら精度を保持します。
ベンチマークの背景
すべてのテストは、Llama-3-8B-Instruct を使用して以下の条件で実施されました。
- 標準的なパープレキシティ評価パイプライン
- 2048トークンのコンテキストウィンドウ
- すべての量子化で同じプロンプトセット
方法
- 動的精度割り当て:
- 最初/最後の25%のレイヤー → IQ4_XS(選択されたレイヤー)
- 中央の50% → IQ2_XXS/IQ3_S(効率を向上)
- 重要コンポーネントの保護:
- 埋め込み/出力レイヤーはQ5_Kを使用
- 標準的な1 - 2ビット量子化と比較して、エラー伝播を38%削減
量子化性能の比較 (Llama-3-8B)
量子化 | 標準PPL | DynamicGate PPL | ΔPPL | 標準サイズ | DGサイズ | Δサイズ | 標準速度 | DG速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5G | 2.6G | +0.1G | 234s | 246s |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7G | 2.8G | +0.1G | 242s | 246s |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7G | 2.9G | +0.2G | 238s | 244s |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2G | 2.5G | +0.3G | 206s | 212s |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1G | 2.4G | +0.3G | 184s | 209s |
キーポイント:
- PPL = パープレキシティ (低いほど良い)
- ΔPPL = 標準からDynamicGateへのパープレキシティの変化率
- 速度 = 推論時間 (CPU avx2, 2048トークンコンテキスト)
- サイズの違いは、混合量子化のオーバーヘッドを反映
主な改善点:
- IQ1_M は、パープレキシティを43.9%削減 (27.46 → 15.41)
- IQ2_S は、0.2GBの追加でパープレキシティを36.9%削減
- IQ1_S は、1ビット量子化でありながら39.7%の精度向上を維持
トレードオフ:
- すべてのバリアントは、わずかなサイズの増加 (0.1 - 0.3GB) があります。
- 推論速度は比較的近い値を維持しています (<5%の差)。
これらのモデルを使用するタイミング
- GPU VRAMにモデルを収める場合
- メモリ制約のあるデプロイメント
- 1 - 2ビットのエラーを許容できるCPUおよびエッジデバイス
- 超低ビット量子化の研究
適切なモデル形式の選択
正しいモデル形式の選択は、ハードウェア能力 と メモリ制約 に依存します。
BF16 (Brain Float 16) - BF16アクセラレーションが利用可能な場合に使用
- 高速な計算 を目的とした16ビット浮動小数点形式で、良好な精度を維持します。
- FP32と 同様のダイナミックレンジ を持ちながら、低いメモリ使用量 を実現します。
- ハードウェアが BF16アクセラレーション をサポートしている場合に推奨されます(デバイスの仕様を確認)。
- FP32と比較して、低メモリフットプリント での 高性能推論 に最適です。
BF16を使用する場合:
- ハードウェアがネイティブの BF16サポート を持っている場合(例: 新しいGPU、TPU)
- メモリを節約しながら より高い精度 が必要な場合
- モデルを別の形式に 再量子化 する予定の場合
BF16を避ける場合:
- ハードウェアがBF16をサポートしていない場合(FP32にフォールバックし、低速になる可能性があります)
- BF16最適化を持たない古いデバイスとの互換性が必要な場合
F16 (Float 16) - BF16よりも広くサポートされている
- 16ビット浮動小数点形式で、高い精度 を持ちながら、BF16よりも値の範囲が狭いです。
- ほとんどの FP16アクセラレーションサポート を持つデバイス(多くのGPUや一部のCPUを含む)で動作します。
- BF16よりもわずかに低い数値精度ですが、一般的に推論には十分です。
F16を使用する場合:
- ハードウェアが FP16 をサポートしているが、BF16 をサポートしていない場合
- 速度、メモリ使用量、精度のバランス が必要な場合
- GPU またはFP16計算に最適化された他のデバイスで実行する場合
F16を避ける場合:
- デバイスがネイティブの FP16サポート を持っていない場合(予想よりも低速になる可能性があります)
- メモリ制限がある場合
量子化モデル (Q4_K, Q6_K, Q8, など) - CPUおよび低VRAM推論用
量子化は、モデルサイズとメモリ使用量を削減しながら、可能な限り精度を維持します。
- 低ビットモデル (Q4_K) - 最小限のメモリ使用量 に最適で、精度が低い場合があります。
- 高ビットモデル (Q6_K, Q8_0) - より高い精度 を提供し、より多くのメモリを必要とします。
量子化モデルを使用する場合:
- CPU で推論を実行し、最適化されたモデルが必要な場合
- デバイスの VRAMが少なく、フル精度モデルをロードできない場合
- 合理的な精度を維持しながら メモリフットプリントを削減 したい場合
量子化モデルを避ける場合:
- 最大の精度 が必要な場合(フル精度モデルの方が適しています)
- ハードウェアに十分なVRAMがあり、より高精度の形式 (BF16/F16) が使用できる場合
超低ビット量子化 (IQ3_XS, IQ3_S, IQ3_M, Q4_K, Q4_0)
これらのモデルは、極端なメモリ効率 のために最適化されており、低電力デバイス または 大規模デプロイメント でメモリが重要な制約となる場合に最適です。
- IQ3_XS:超低ビット量子化 (3ビット) で、極端なメモリ効率 を実現します。
- 使用ケース:Q4_Kでも大きすぎる 超低メモリデバイス に最適。
- トレードオフ:より高いビット量子化と比較して精度が低い。
- IQ3_S:最小のブロックサイズで、最大のメモリ効率 を実現します。
- 使用ケース:IQ3_XSが過度に激しい 低メモリデバイス に最適。
- IQ3_M:中程度のブロックサイズで、IQ3_Sよりも より高い精度 を提供します。
- 使用ケース:IQ3_Sが制限的すぎる 低メモリデバイス に適しています。
- Q4_K:4ビット量子化で、ブロック単位の最適化 により精度が向上します。
- 使用ケース:Q6_Kでは大きすぎる 低メモリデバイス に最適。
- Q4_0:純粋な4ビット量子化で、ARMデバイス 用に最適化されています。
- 使用ケース:ARMベースのデバイス または 低メモリ環境 に最適。
モデル形式選択の概要表
モデル形式 | 精度 | メモリ使用量 | デバイス要件 | 最適な使用ケース |
---|---|---|---|---|
BF16 | 最高 | 高 | BF16対応のGPU/CPU | 低メモリでの高速推論 |
F16 | 高 | 高 | FP16対応のデバイス | BF16が利用できない場合のGPU推論 |
Q4_K | 中低 | 低 | CPUまたは低VRAMデバイス | メモリ制約のある環境に最適 |
Q6_K | 中 | 中程度 | より多くのメモリを持つCPU | 量子化されたままでより高い精度 |
Q8_0 | 高 | 中程度 | 十分なVRAMを持つCPUまたはGPU | 量子化モデルの中で最も高い精度 |
IQ3_XS | 非常に低 | 非常に低 | 超低メモリデバイス | 極端なメモリ効率と低い精度 |
Q4_0 | 低 | 低 | ARMまたは低メモリデバイス | llama.cppがARMデバイス用に最適化可能 |
含まれるファイルと詳細
Devstral-Small-2505-bf16.gguf
- モデルの重みが BF16 で保存されています。
- モデルを別の形式に 再量子化 したい場合に使用します。
- デバイスが BF16アクセラレーション をサポートしている場合に最適。
Devstral-Small-2505-f16.gguf
- モデルの重みが F16 で保存されています。
- デバイスが FP16 をサポートしている場合、特にBF16が利用できない場合に使用します。
Devstral-Small-2505-bf16-q8_0.gguf
- 出力と埋め込み は BF16 のままです。
- 他のすべてのレイヤーは Q8_0 に量子化されています。
- デバイスが BF16 をサポートし、量子化バージョンが必要な場合に使用します。
Devstral-Small-2505-f16-q8_0.gguf
- 出力と埋め込み は F16 のままです。
- 他のすべてのレイヤーは Q8_0 に量子化されています。
Devstral-Small-2505-q4_k.gguf
- 出力と埋め込み は Q8_0 に量子化されています。
- 他のすべてのレイヤーは Q4_K に量子化されています。
- メモリが制限された CPU推論 に適しています。
Devstral-Small-2505-q4_k_s.gguf
- 最小の Q4_K バリアントで、精度を犠牲にしてメモリ使用量を削減します。
- 非常に低メモリの設定 に最適。
Devstral-Small-2505-q6_k.gguf
- 出力と埋め込み は Q8_0 に量子化されています。
- 他のすべてのレイヤーは Q6_K に量子化されています。
Devstral-Small-2505-q8_0.gguf
- 完全に Q8 量子化されたモデルで、より高い精度を提供します。
- より多くのメモリ を必要としますが、より高い精度を実現します。
Devstral-Small-2505-iq3_xs.gguf
- IQ3_XS 量子化で、極端なメモリ効率 を実現します。
- 超低メモリデバイス に最適。
Devstral-Small-2505-iq3_m.gguf
- IQ3_M 量子化で、中程度のブロックサイズで より高い精度 を提供します。
- 低メモリデバイス に適しています。
Devstral-Small-2505-q4_0.gguf
- 純粋な Q4_0 量子化で、ARMデバイス 用に最適化されています。
- 低メモリ環境 に最適。
- より高い精度が必要な場合はIQ4_NLを選択してください。
🔧 技術詳細
このモデルは、Mistral AI と All Hands AI の共同開発によるもので、ソフトウェアエンジニアリングタスクに特化したエージェント型LLMです。Mistral-Small-3.1 からファインチューニングされており、最大128kトークンの長いコンテキストウィンドウを持っています。コーディングエージェントとして、テキストのみで動作し、Mistral-Small-3.1
からファインチューニングする前にビジョンエンコーダーが削除されています。
📄 ライセンス
このモデルは、Apache 2.0ライセンスの下で提供されています。商用および非商用目的での使用と改変が許可されています。
最後に
これらのモデルファイルを作成するためのサーバー、Free Network Monitorサービスの運用、およびNovitaとOpenAIからの推論の費用は、すべて自費で負担しています。モデル作成とFree Network Monitorプロジェクトの背後にあるすべてのコードは オープンソース です。役立つものがあれば、自由に使用してください。
もしこの作業を評価していただける場合は、コーヒーを買ってくれる ことを検討していただけると幸いです。あなたの支援により、サービスのコストを賄い、すべてのユーザーのトークン制限を引き上げることができます。
また、仕事の機会やスポンサーシップも歓迎しています。
ありがとうございます!



