【Strands Decider】M5 の Mac(16GB)で動かして、MPS・MLX・CPU の速度とメモリを測ってみた

【Strands Decider】M5 の Mac(16GB)で動かして、MPS・MLX・CPU の速度とメモリを測ってみた

Strands Decider 2B を M5 Mac で試してみました。`ask` と `serve` の2つの呼び方、MPS・MLX・CPU の3つの実行方法で、速度とメモリを測定した結果をお知らせします。
2026.10.06

こんにちは、けーまです。

Strands Decider 2B は、選択肢から1つ選ぶ・Yes/No の確率を返す・段階で評価する、の3種類の判定だけを行う小型モデルです。
2B なので手元の Mac でも動きます。
本記事では、M5 の Mac(メモリ16GB)で ask と serve の2つの呼び方、MPS・MLX・CPU の3つの実行方法を試し、速度とメモリを測りました。

0. 前提環境

項目 内容
マシン Apple M5、メモリ16GB、macOS 26.6.2
Python 3.12.13(uv 0.11.3 で venv を作成)
strands-decider PyPI 版 0.1.0(torch 2.14.1、transformers 5.18.0)、MLX はリポジトリの 75c9fd3
モデル StrandsAgents/strands-decider-2B-hobson-v19

1. インストール

mkdir -p ~/work/tools/strands-decider && cd ~/work/tools/strands-decider
uv venv sd-venv --python 3.12
VIRTUAL_ENV=sd-venv uv pip install strands-decider

モデルは初回の呼び出し時に Hugging Face から取得されます。

2. ask で1回だけ聞く

sd-venv/bin/strands-decider ask StrandsAgents/strands-decider-2B-hobson-v19 \
  --state "支払いが3日間失敗し続けています。至急対応してください!" \
  --choice "どのチームが対応すべきか?=請求,営業,店舗" \
  --noul "緊急性を伝えているか"
# 出力例
noul_0 noul = 0.916
choice_0 -> 営業 (confidence 0.417)
    営業                       0.611
    店舗                       0.345
    請求                       0.043
  • noul_0 noul = 0.916: 「緊急性を伝えているか」に Yes と答える確率

  • choice_0 -> 営業: 確率が最も高い選択肢。confidence は確率の偏り具合で、全選択肢が同じなら0、1つに集中すれば1

緊急性は読み取れていますが、担当は「営業」を選びました。
ask の --choice には選択肢の名前しか渡せず、「請求」が何の担当かを伝えられないためです。

ask は呼び出すたびにモデルを読み込むので、1回9〜11秒かかりました。
何度も判定するなら serve を使います。

3. serve で常駐させる

serve は POST /v1/systemone を受け付ける HTTP サーバーを起動します。
リクエストの形は TypeSafe の Jev と同じです。
ポートのデフォルトは8000ですが、私の環境では別のツールが使っていたので8765にしています。

sd-venv/bin/strands-decider serve StrandsAgents/strands-decider-2B-hobson-v19 --port 8765
curl -s localhost:8765/v1/systemone -H 'content-type: application/json' -d '{
  "state": "支払いが3日間失敗し続けています。至急対応してください!",
  "questions": {
    "team": {"type": "choice", "instructions": "どのチームが対応すべきか",
             "criteria": {"請求": "請求・支払いの担当", "営業": "新規契約・商談の担当", "店舗": "店舗運営の担当"}},
    "urgent": {"type": "noul", "instructions": "緊急性を伝えているか"}
  }
}'
// 出力例(2回目のリクエスト)
{"model":"strands-decider-2B-hobson-v19",
 "answers":{"team":{"type":"choice","choice":"請求","probabilities":{"請求":0.9251,"営業":0.0228,"店舗":0.0521},"confidence":0.8877},
            "urgent":{"type":"noul","noul":0.9163}},
 "usage":{"input_tokens":161,"output_tokens":2},"latency_ms":189.03}

criteria に選択肢の説明を書くと、「請求」(確率0.93)を選びました。
1回目のリクエストは約1.1秒、2回目は約0.19秒(189ms)でした。

4. MLX で動かす

Apple シリコンの Mac では --device mlx で MLX(Apple の機械学習フレームワーク)を使えます。
公式 README では MPS の1.4〜1.6倍速いとされていますが、PyPI の 0.1.0 には含まれておらず、リポジトリから入れる必要があります。

On an Apple-silicon Mac, --device mlx runs the model through MLX, 1.4 to 1.6x faster than MPS. It needs the mlx extra, which ships with the next release; until then, install from a clone with pip install -e ".[mlx]".

引用元: README.md | strands-labs/strands-decider | GitHub

cd ~/work/tools/strands-decider
git clone https://github.com/strands-labs/strands-decider.git src
uv venv mlx-venv --python 3.12
cd src && VIRTUAL_ENV=../mlx-venv uv pip install -e ".[mlx]"
cd .. && mlx-venv/bin/strands-decider serve StrandsAgents/strands-decider-2B-hobson-v19 --port 8765 --device mlx

日本語の短文240問を MPS と MLX で解かせたところ、240問すべてで同じ答えが返り、確信度の差は平均0.004でした。どこで動かすかによって確信度は変わらなさそうです。

5. 速度とメモリ

入力の長さを変えたリクエストを30回ずつ送りました(CPU は10回ずつ)。
本文は架空の日本語で、リクエストごとに内容を変えています。
値はサーバーが返す latency_ms の中央値です。

入力(字数 / トークン) MPS MLX CPU
50字 / 118 105ms 45ms 1,763ms
200字 / 209 145ms 65ms -
500字 / 385 266ms 115ms 2,827ms
1,000字 / 690 437ms 185ms -
2,000字 / 1,290 865ms 345ms 5,695ms
4,000字 / 2,488 1,765ms 625ms -
8,000字 / 4,096**(上限で切り詰め)** 3,015ms 1,072ms -
1リクエストの質問数(500字) MPS MLX CPU
1問 266ms 115ms 2,827ms
3問 393ms 169ms 7,665ms
5問 524ms 217ms 8,004ms
項目 MPS MLX CPU
起動から受付開始まで 9.4秒 16.3秒 15.7秒
1回目のリクエスト 1.1秒 3.2秒 4.2秒
メモリ(footprint、計測終了時) 約5.8GB 約5.0GB 約7.9GB

footprint は macOS の footprint コマンドの値で、GPU が使うユニファイドメモリを含みます。

  • 速度:MLX は MPS の約2.2〜2.8倍速く、公式の1.4〜1.6倍を上回りました。CPU は MPS の約7〜17倍遅いです

  • 入力の長さ:時間はトークン数にほぼ比例します。日本語は1字約0.6トークンで、上限の4,096トークンは質問文込みで約6,500字です。超えた分はエラーにならず末尾が切り捨てられます

  • 質問の数:質問1問あたりの増加は MPS で約65ms、MLX で約25ms です。本文の処理は1回で済むので、同じ本文への質問はまとめて送るほうが速くなります

6. まとめ

serve で常駐させれば、短文1問を0.1秒前後で判定できました。
ただし常駐中は約5〜6GB のメモリを使うので、16GB の Mac ではほかのアプリとの兼ね合いがあります。

参考


AI白書2026 配布中

クラスメソッドが独自に行なったAI診断調査をもとに、企業のAI活用の現在地を調査レポートとしてまとめました。企業規模別の活用度傾向に加え、規模を超えてAI活用を進める企業に共通する取り組みまで、自社の現在地を捉えるためのヒントにぜひ。

AI白書2026

無料でダウンロードする

この記事をシェアする

DevelopersIO 2026

関連記事