MicrosoftのSLM「Phi-4-mini-instruct」をM2 Pro Mac miniで動かしてみた
Phi-4-mini-instructとは
「Phi-4-mini-instruct」の前に、まず「Phi-4」について簡単に紹介します。
Phi-4は、Microsoftによって開発されたパラメータ数が14Bの小規模言語モデル(SLM)です。2025年1月からMITライセンスとなったため、商用利用も可能なモデルです。Phi-4-miniは、パラメータ数が3.8Bとさらに少なくなったSLMで、2025年2月に公開されました。
今回は、パラメータ数が3.8BでInstruction TuningされたモデルであるPhi-4-mini-instructをM2 Pro Mac miniで動かしてみました。
M2 Pro Mac miniで試す
今回使用しているMac miniのスペックは以下の通りです。
- Apple M2 Pro
- CPU: E-core: 4 / P-core: 8
- GPU: 19-core
- Nerual Engine: 16-core
- RAM: 32GB
パッケージのインストール
以下のパッケージをインストールします。transformersは4.49以上である必要がありました。
pip install 'transformers>=4.49' torch
今回試したコード
今回もvLLMやOllamaなどを使わずにHuggingFace Transformersで試してみます。温度パラメータは0.7に設定しました。
実際に使用したコードはGitHubで公開しています: Shakshi3104/phi-4-mini
# モデルの設定
model_name = "microsoft/Phi-4-mini-instruct"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
if torch.backends.mps.is_available():
device = torch.device('mps')
model.to(device)
generator = pipeline("text-generation", model=model, tokenizer=tokenizer,
device="mps" if torch.backends.mps.is_available() else "cpu")
# 入力
input_text = "日本の首都は?"
messages = [
{"role": "user", "content": input_text},
]
# 出力
outputs = generator(
messages,
max_new_tokens=1024,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.pad_token_id,
)
出力のかかる時間とメモリ使用量
出力にかかる時間は、大体1分くらいでした。ちょっと時間がかかる印象です。リアルタイムでの動作は難しいかもしれませんがMac miniで動かしてることを考えるとそれなりの速さなのかなと思います。
また、メモリは実行中は最大でも30GBくらいまで使用量が増えますが、メモリに乗り切っているっぽいので問題なく動作します。
出力の例
DeepSeek-R1の蒸留モデルやSakana AIのTinySwallow-1.5Bを試したときと同様の質問をしてみます。
入力: 日本の首都は?
日本の首都は東京です。
ちゃんと「東京」と返してくれます。
入力: たまごっちとは何ですか?
出力①
たまごっちは、ウサギや他の動物、さらには人間などのキャラクターをデザインしたり、描いたり、アニメーション化したりするためのWebサイトです。
ユーザーは自分自身や他の人々、あるいは想像上のキャラクターに似たアニメーションの「たまごっち」を作成できます。
これらのたまごっちはさまざまな設定やストーリーで活用でき、ユーザーが創造性とユーモアを発揮するための楽しい方法です。
たまごっちはクリエイティブな表現形式であり、特定の製品やサービスとしてはなく、オンラインでのコミュニティや共有のためのプラットフォームとして存在しています。
出力②
たまごっちとは、特定の食べ物やお菓子にちなんで名付けられた、子供たちが楽しめるおやつやお菓子です。たまごっちは、たまご(卵)の名前に遊んだ文字の遊びから来ていることが多いです。たまごっちという名前のお菓子は、たまごや卵に関連する形やデザインを模して作られることがあり、子供たちにとって楽しく、親しみやすい存在です。
たまごっちには、たまごっちのお菓子やおやつとして以下のようなものがあります:
1. たまごっちのお粥やカレーパン:卵の形や卵をデザインした具材の料理。
2. たまごっちのお菓子やスナック:たまごのデザインをしたコーティングや形をしたキャンディ。
3. たまごっちのバスケット:卵の形をしたスナックを詰めたバスケット。
たまごっちという名前のお菓子は、様々な形やデザインで子供たちの間で楽しまれています。たまごっちのお菓子は、食事の際のおやつやおいしい味わいのあるスナックとして楽しめます。
日本語としては意味の通る文章ですが、キャラクター育成ゲームのたまごっちのことではない説明がされています。
入力: アイドルのなにわ男子について教えてください
追加で別の質問もしてみました。
なにわ男子は、2015年7月から現在まで活動している日本のバンドです。メンバーは前田敦裕(ボーカル、ギター)と松村邦洋(ギター)で構成されています。彼らは「まんがなわ」や「マンガなわ」としても知られ、マンガやアニメのキャラクターに基づいた楽曲を多く作成しています。
彼らの代表曲には「シンデレラ・ガール」や「恋のマフィア」などがあります。また、音楽以外にもコスプレやイベント参加などでファンとの交流を楽しんでいます。
なにわ男子は多くの音楽番組に出演し、特にテレビやラジオでの活動も行っています。彼らの人気は絶え間なく、今でも多くのファンに支持されています。
こちらも日本語としてはちゃんとした文章ですが、なにわ男子のことではない内容を返ってきてます。ちなみに「シンデレラ・ガール」は表記は違いますがKing & Princeのデビュー曲なので、ちょっと「おぉ」ってなりました。
おわりに
今回は、Microsoftが出したSLMの「Phi-4-mini-instruct」をM2 ProのMac miniで動かしてみました。所感としては、固有名詞は苦手な印象ですが日本語は自然な形で返ってくるので、単体で使用するというよりもRAGで活用するのがいいのかなと思いました。Microsoftは、マルチモーダルのモデル「Phi-4-multimodal-instruct」も発表しているので、こちらも試してみたいです。
Discussion