🪽

Sakana AIによる1.5BのSLM「TinySwallow-1.5B」をM2 Pro Mac miniで動かしてみた

に公開

TinySwallow-1.5Bとは

TinySwallow-1.5B」とは、Sakana AIが2025年1月に発表した日本語の小規模言語モデル(SLM)です。このモデルは、Sakana AIが発表した新しい蒸留手法「TAID (Temporally Adaptive Interpolated Distillation)」により、Qwen2.5-32B-InstructからQwen2.5-1.5B-Instructへ知識を転移させたものです。
https://huggingface.co/collections/SakanaAI/tinyswallow-676cf5e57fff9075b5ddb7ec

TAIDという手法は、一般的な蒸留での教師モデルと生徒モデルの間に中間教師 (intermediate teacher)を導入して段階的に生徒モデルを学習させるような手法です。詳しくは公式の記事を読んでみてください。

https://sakana.ai/taid-jp/

今回は、TinySwallow-1.5BのInstruction TurningさせたバージョンであるTinySwallow-1.5B-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

パッケージのインストール

以下のパッケージをインストールします。

pip install transformers 'torch>=2.3'

今回試したコード

今回はvLLMやOllamaなどを使わずにHuggingFace Transformersで試してみます。温度パラメータは0.7に設定しました。
実際に使用したコードはGitHubで公開しています: Shakshi3104/sakana-tiny-swallow-1.5b

# モデルの設定
model_name = "SakanaAI/TinySwallow-1.5B-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,
)

出力のかかる時間とメモリ使用量

出力にかかる時間は、大体15秒から30秒くらいでした。体感としては、かなり速く返ってきている印象です。

また、メモリについては、実行中はプロセス単体で6GB程度しか使っておらず、全体のメモリ使用量は最大でも22GB程度になるくらいで、かなりメモリ使用が抑えられています。

公式のXの投稿ではiPhoneで動作している様子も見れるので、少ないメモリで高性能なSLMになっていると思いました。

出力の例

DeepSeek-R1の蒸留モデルを試したときと同様の質問をしてみます。
https://zenn.dev/shakshi3104/articles/c94997521cbc7d
※2025年3月 追記
MicrosoftのPhi-4-miniを試したときの質問も追記しました。
https://zenn.dev/shakshi3104/articles/488bcb006826ea

入力: 日本の首都は?

日本の首都は**東京**です。

ちゃんと「東京」と返してくれます。

入力: たまごっちとは何ですか?

出力①

「たまごっち」は、1996年にバンダイから発売された携帯型のペット育成ゲーム機です。
**特徴:**
* **小さなペットを飼う:**  ペットキャラクターと対話したり、一緒に遊んだりすることができます。
  
* **成長要素:**  時間経過とともにペットが成長し、新しい能力やアイテムを得ることができます。
* **育成システム:**  食べ物を与えることでペットのレベルアップやステータス上昇などを行います。
* **コミュニケーション機能:**  電話を通じて他のユーザーとチャットすることもできます。
この商品は当時非常に人気があり、子供たちに大人気でした。その後、「たまごっち」という名前は、様々な製品や文化に影響を与えました。
現在でも一部の人々には愛され続けており、特に女性を中心に根強いファンを持つ存在となっています。

出力②

「たまごっち」は、1996年にバンダイから発売された携帯型のペット育成ゲーム機です。

**特徴:**

* **可愛いキャラクター:** さまざまな種類の動物や生き物(たまごっち)を飼うことができます。

* **愛情表現:** ペットに餌を与えたり、お風呂に入れてあげるなど、様々な行動をとることができます。

* **進化システム:** ペットにはレベルアップがあり、レベルアップすると新しい能力を得られることがあります。

* **コミュニケーション機能:** 電話のように音声通話もできます。

この製品は大ヒットし、その後数多くの派生商品が発売されました。また、アニメや漫画にも取り上げられ、日本だけでなく世界中で愛される人気商品となりました。

ハルシネーションしている部分はあると思いますが、たまごっちの特徴をそれっぽい感じで答えてくれます。

入力: なにわ男子について教えてください

「なにわ男子」は、2018年に結成された日本の男性アイドルグループです。
**メンバー**
- 違う順番で表記すると:
    1. **大橋和也**
    2. **道枝駿佑**
    3. **西畑大吾**
    4. **藤原丈一郎**
    5. **高橋恭平**
    6. **長尾謙杜**
    7. **大澤壮太朗**
    8. **木村柾哉**
    9. **吉野北人**
**特徴**
* 「なにわ」という名前は大阪の方言から来ており、メンバー全員が関西出身です。
* グループ名には「世界を笑顔にする」という意味合いも込められています。
* メンバーそれぞれが個性的なキャラクターを持ち、バラエティ豊かなパフォーマンスを見せています。
* アイドル活動だけでなく、CMやドラマにも出演するなど、幅広い分野で活躍しています。
このように、「なにわ男子」は魅力的なメンバーと独自性のある音楽スタイルを持つ注目すべきグループです。

メンバーにだいぶ嘘が含まれていますが、それっぽい文章が自然な日本語で答えてくれてると思います。
(「違う順番で表記すると」が気になりますが…)

おわりに

今回は、Sakana AIによる新しい蒸留の手法「TAID」を用いて蒸留したモデルである「TinySwallow-1.5B-Instruct」をM2 ProのMac miniで動かしてみました。DeepSeek-R1の蒸留モデルを試したときは、まだ実用レベルではないと思いましたが、その数日後にSakana AIが実用レベルの蒸留モデルを出してきたのでびっくりです。蒸留手法であるTAIDの理解はまだできていないので、論文も読んでみたいと思います。

参考

Discussion