Closed6

「Phi-4-mini-instruct」を試す

kun432kun432

https://huggingface.co/microsoft/Phi-4-mini-instruct

モデルの概要

Phi-4-mini-instructは、合成データと一般に公開されているウェブサイトをフィルタリングして構築された軽量なオープンモデルです。 このモデルはPhi-4モデルファミリーに属し、128Kトークンコンテキスト長をサポートしています。 このモデルは、正確な命令順守と強固な安全対策をサポートするために、教師ありの微調整と直接プリファレンス最適化の両方を取り入れた強化プロセスを経ています。

使用目的

主な使用例

このモデルは、広範な多言語での商用および研究使用を目的としています。 このモデルは、以下を必要とする汎用のAIシステムやアプリケーションのための用途を提供します:

  • メモリ/コンピューティングに制約のある環境
  • レイテンシに制約のあるシナリオ
  • 強力な推論(特に数学と論理)

このモデルは、AIによる生成機能のためのビルディングブロックとして使用するために、言語とマルチモーダルモデルに関する研究を加速するように設計されています。

ユースケースに付いての考慮

このモデルは、すべての下流の目的に対して特別に設計または評価されているわけではありません。 開発者は、ユースケースを選択する際に、言語モデルの一般的な限界や言語間の性能差を考慮し、特定の下流のユースケース、特にリスクの高いシナリオで使用する前に、正確性、安全性、公平性を評価し、緩和する必要があります。 開発者は、ユースケースに関連する適用される法律や規制(プライバシー、貿易コンプライアンス法などを含むが、これらに限定されない)を認識し、遵守する必要があります。

本モデルカードに記載された内容は、そのモデルがリリースされたライセンスの制限または修正と解釈されるべきではなく、また、そのようにみなされるべきでもありません。

リリースノート

Phi-4-mini-instructの今回のリリースは、Phi-3シリーズのユーザーからの貴重なフィードバックに基づいています。Phi-4-miniモデルでは、効率性を高める新しいアーキテクチャを採用し、多言語サポートのためのより多くの語彙、および、キー機能の大幅な向上につながる追加データとともに、ポストトレーニング技術を、指示への追従、関数呼び出し、およびその他の用途に活用しています。ほとんどの使用事例において、今回のリリースから恩恵を受けることが期待されますが、ユーザーには、各自のAIアプリケーションでテストを行うことをお勧めします。Phi-4シリーズに対する熱心なサポートに感謝いたします。Phi-4-mini-instructに対するフィードバックは歓迎いたします。また、モデルの進化と改善に不可欠です。

Phi-4が14.7Bに対して、miniは3.8B。

kun432kun432

Colaboratory T4で。

パッケージインストール。torchvisonも必要。

!uv pip install --system "transformers==4.49.0" "torch==2.6.0" "accelerate==1.3.0" "torchvision"
!uv pip install --system "flash_attn==2.7.4.post1" --no-build-isolation

モデルとトークナイザーのロード。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
 
torch.random.manual_seed(0)

model_path = "microsoft/Phi-4-mini-instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    device_map="auto",
    torch_dtype="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_path)

この時点でのnvidia-smiの結果。7.5GBぐらい。

出力
Fri Feb 28 12:41:45 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla T4                       Off |   00000000:00:04.0 Off |                    0 |
| N/A   40C    P0             28W /   70W |    7422MiB /  15360MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

推論

messages = [
    {
        "role": "system",
        "content": "あなたは親切な日本語のアシスタントです。"
    },
    {
        "role": "user",
        "content": "バナナとドラゴンフルーツを組み合わせたレシピを教えて。"
    },
    {
        "role": "assistant",
        "content": "もちろんです!バナナとドラゴンフルーツを組み合わせたレシピはこちらです: 1. バナナとドラゴンフルーツのスムージー: バナナとドラゴンフルーツを牛乳とハチミツと一緒にミキサーにかけます。 2. バナナとドラゴンフルーツのサラダ: スライスしたバナナとドラゴンフルーツをレモン汁とハチミツと混ぜ合わせます。"
    },
    {
        "role": "user",
        "content": "2x + 3 = 7 の方程式の答えは?"
    },
]
 
pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)
 
generation_args = {
    "max_new_tokens": 2048,
    "return_full_text": False,
    "temperature": 0.0,
    "do_sample": False,
}
 
output = pipe(messages, **generation_args)
print(output[0]['generated_text'])

方程式 2x + 3 = 7 を解くために、x を孤立させる必要があります。

ステップ1: 方程式の両側から 3 を引きます。
2x + 3 - 3 = 7 - 3
2x = 4

ステップ2: 方程式の両側を 2 で割ります。
2x / 2 = 4 / 2
x = 2

したがって、方程式 2x + 3 = 7 の解は x = 2 です。

推論後のVRAMは微増程度。

kun432kun432

Function Callingに対応している

https://huggingface.co/microsoft/Phi-4-mini-instruct#tool-enabled-function-calling-format

このフォーマットは、ユーザーが指定したツールに基づいてモデルに関数呼び出しを行わせたい場合に利用します。ユーザーは、システムプロンプトで利用可能なツールを、<|tool|>および<|/tool|>トークンで囲んで指定します。ツールは、JSONダンプ構造を使用してJSONフォーマットで指定します。例:

<|system|>あなたは便利なアシスタントで、いくつかのツールを持っています。<|tool|>[{"name": "get_weather_updates", "description": "RapidAPI Weather API を使用して、指定した都市の天気情報を取得します。", "parameters": {"city": {"description": "天気情報を取得する都市の名前。", "type": "str", "default": "London"}}}]<|/tool|><|end|><|user|>今日のパリのお天気は?<|end|><|assistant|>
kun432kun432

Phi-4、指示追従性が低いというのがあったのだけど、miniはどうかな?

同じパラメータサイズの中だと上位って感じかな。Phi−4よりも高いのか。

リリースノートにも書いてあるので、課題感があったのかもしれないね。

Phi-4-miniモデルでは、効率性を高める新しいアーキテクチャを採用し、多言語サポートのためのより多くの語彙、および、キー機能の大幅な向上につながる追加データとともに、ポストトレーニング技術を、指示への追従、関数呼び出し、およびその他の用途に活用しています。

kun432kun432

このサイズだと使い勝手は良さそうに思うので、しばらく使ってみるつもり。

このスクラップは2ヶ月前にクローズされました