🚀 Phi-4-mini-instruct
Phi-4-mini-instructは、合成データと公開されているウェブサイトを基に構築された軽量なオープンモデルで、高品質で推論に富んだデータに焦点を当てています。このモデルはPhi-4モデルファミリーに属し、128Kトークンのコンテキスト長をサポートしています。
🚀 クイックスタート
Phi-4-mini-instructは、合成データと公開されたウェブサイトを基に構築された軽量なオープンモデルです。高品質で推論に富んだデータに焦点を当てており、Phi-4モデルファミリーに属し、128Kトークンのコンテキスト長をサポートしています。モデルは、教師あり微調整と直接的な嗜好最適化を組み合わせた強化プロセスを経て、正確な指示遵守と堅牢なセキュリティ対策をサポートしています。
📰 Phi-4-mini Microsoft Blog
📖 Phi-4-mini Technical Report
👩🍳 Phi Cookbook
🏡 Phi Portal
🖥️ 試してみる Azure, Huggingface
Phi-4:
[mini-instruct | onnx];
multimodal-instruct; gguf
✨ 主な機能
- 多言語対応: 様々な言語での使用が可能です。
- 推論能力: 高度な推論能力を備えています。
- コード生成: コードの生成が可能です。
- 関数呼び出し: 関数呼び出しをサポートしています。
- チャット応答: 自然なチャット応答が可能です。
- メモリ効率: メモリ使用量が少なく、効率的です。
- 低遅延: 低遅延で応答を返します。
- 128kコンテキスト: 128Kトークンのコンテキスト長をサポートしています。
💻 使用例
基本的な使用法
チャット形式
この形式は、一般的な会話や指示に使用されます。
<|system|>Insert System Message<|end|><|user|>Insert User Message<|end|><|assistant|>
ツールを使用した関数呼び出し形式
この形式は、ユーザーがモデルに与えられたツールに基づく関数呼び出しを提供させたい場合に使用されます。ユーザーは、システムプロンプト内で <|tool|>
と <|/tool|>
トークンで囲んで利用可能なツールを定義する必要があります。ツールは、構造化されたJSONダンプを使用してJSON形式で指定する必要があります。
<|system|>
You are a helpful assistant with some tools.
<|tool|>
[
{
"name": "get_weather_updates",
"description": "Fetches weather updates for a given city using the RapidAPI Weather API.",
"parameters": {
"city": {
"description": "The name of the city for which to retrieve weather information.",
"type": "str",
"default": "London"
}
}
}
]
<|/tool|>
<|end|>
<|user|>
What is the weather like in Paris today?
<|end|>
<|assistant|>
📚 ドキュメント
Unslothによるバグ修正
更新 (2025年3月1日)
Unsloth のすべての修正を適用することで、推論の安定性が向上しました。
# |
修正内容 |
修正理由 |
1 |
パディングタグを変更 |
古いパディングタグがトレーニングに問題を引き起こす可能性がありました。 |
2 |
チャットテンプレートから {% else %}{{ eos_token }} を削除 |
推論性能を低下させる可能性のある余分なEOSトークンを防止しました。 |
3 |
EOSを <|end|> に置き換え |
潜在的な推論エラーを回避しました。 |
4 |
unk_token をEOSから � に変更 |
未知のトークンが推論を中断するのを防ぎました。 |
Phi 4 Mini関数呼び出しテスト
もし1分くらい時間があれば、👉 Free Network Monitor で私のPhi-4-Mini-Instructデモをテストしていただけると大変助かります。
💬 メインページとダッシュボードページの右下にある チャットアイコン をクリックしてください。そして、LLMタイプを切り替えて、Phi-4-Mini-Instructが呼び出されるTestLLMに切り替えます: TurboLLM -> FreeLLM -> TestLLM。
テスト内容
私は、ネットワーク監視サービスに対して 関数呼び出し を実験しています。小さなオープンソースモデルを使用して、「どれだけ小さなモデルでも機能するか」という疑問に取り組んでいます。
🟡 TestLLM – phi-4-mini-q4_0.ggufを使用して Phi-4-mini-instruct を実行します。Cpu VMの6スレッドでllama.cppを使用しています (読み込みに約15秒かかるはずです。推論速度はかなり遅く、一度に1つのユーザープロンプトしか処理できません – まだスケーリングに取り組んでいます!)。もし興味があれば、仕組みを共有します!
他の利用可能なAIアシスタント
🟢 TurboLLM – gpt-4o-mini を使用しています。高速です。注意: OpenAIモデルは高価なため、トークンが制限されていますが、ログイン または ダウンロード してFree Network Monitorエージェントを使用することで、より多くのトークンを取得できます。あるいは、TestLLMを使用してください。
🔵 HugLLM – オープンソースのHugging Faceモデル を実行します。高速ですが、小さなモデル (≈8B) を使用しているため、品質は低くなります。Hugging Face APIの可用性に応じて、2倍のトークンを取得できます。
Phi-4-mini-instruct GGUFモデル
適切なモデル形式の選択
正しいモデル形式を選択するには、ハードウェア能力 と メモリ制約 を考慮する必要があります。
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) を使用できる場合。
モデル形式選択のまとめ表
モデル形式 |
精度 |
メモリ使用量 |
デバイス要件 |
最適な使用ケース |
BF16 |
最高 |
高 |
BF16対応のGPU/CPU |
メモリを削減した高速な推論 |
F16 |
高 |
高 |
FP16対応のデバイス |
BF16が利用できない場合のGPU推論 |
Q4_K |
低 |
非常に低 |
CPUまたは低VRAMデバイス |
メモリ制約のある環境に最適 |
Q6_K |
中低 |
低 |
より多くのメモリを持つCPU |
量子化されたままでより高い精度 |
Q8 |
中 |
適度 |
十分なVRAMを持つCPUまたはGPU |
量子化モデルの中で最も高い精度 |
含まれるファイルと詳細
phi-4-mini-bf16.gguf
- モデルの重みが BF16 で保存されています。
- モデルを別の形式に 再量子化 したい場合に使用します。
- デバイスが BF16アクセラレーション をサポートしている場合に最適です。
phi-4-mini-f16.gguf
- モデルの重みが F16 で保存されています。
- デバイスが FP16 をサポートしている場合、特にBF16が利用できない場合に使用します。
phi-4-mini-bf16-q8.gguf
- 出力と埋め込み は BF16 のままです。
- 他のすべてのレイヤーは Q8_0 に量子化されています。
- デバイスが BF16 をサポートしており、量子化バージョンが必要な場合に使用します。
phi-4-mini-f16-q8.gguf
- 出力と埋め込み は F16 のままです。
- 他のすべてのレイヤーは Q8_0 に量子化されています。
phi-4-mini-q4_k_l.gguf
- 出力と埋め込み は Q8_0 に量子化されています。
- 他のすべてのレイヤーは Q4_K に量子化されています。
- メモリが制限された CPU推論 に適しています。
phi-4-mini-q4_k_m.gguf
- Q4_Kと同様です。
- 低メモリのCPU推論 の別のオプションです。
phi-4-mini-q4_k_s.gguf
- 最も小さい Q4_K バリアントで、精度を犠牲にしてメモリ使用量を削減しています。
- 非常に低メモリの設定 に最適です。
phi-4-mini-q6_k_l.gguf
- 出力と埋め込み は Q8_0 に量子化されています。
- 他のすべてのレイヤーは Q6_K に量子化されています。
phi-4-mini-q6_k_m.gguf
- バランスの良い性能を持つ中間的な Q6_K 量子化モデルです。
- 適度なメモリ を持つ CPUベースの推論 に適しています。
phi-4-mini-q8.gguf
- 完全に Q8 量子化されたモデルで、より高い精度を提供します。
- より多くのメモリ が必要ですが、より高い精度を提供します。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
謝辞
Bartowski さんには、imartixのアップロードと量子化に関する指導をいただき、これらのggufファイルを作成することができました。ありがとうございます。
Unsloth さんには、多くのモデルのバグ修正を行っていただきました。ありがとうございます。
ご支援いただき、ありがとうございます!🙌