【続編】M5 MacBook Pro 16GB で再検証 — Gemma 4 E4B も動いた / Whisper turbo は秒速以下に

目次

はじめに

前回記事では M2 MacBook Air 8GB で
Gemma 4 と Whisper の日本語音声認識を比較しました。
そのとき Gemma 4 E4B は [METAL] Command buffer execution failed: Caused GPU Timeout Error
で動かず、「16GB 機なら動くかも」とだけ書いて締めくくっていました。

その後ハードウェアを M5 MacBook Pro 16GB に入れ替えたので、
同じ4モデル・同じ10サンプルで再ベンチマークしました。
結論から言うと:

  • Gemma 4 E4B が動いた(M2 8GB では時間切れだった)
  • 動作した3モデルで 3〜15 倍の高速化
  • Whisper large-v3-turbo は 1秒未満(0.61s/サンプル)に到達

数字と一緒に、検証中に踏んだ macOS 側の落とし穴も共有します。

計測条件(前回と同じ)

  • 評価データ: macOS の say コマンド (Kyoko 音声) で合成した日本語10サンプル
    (短文5本・中文3本・長文2本、合計約 70 秒)
  • 評価指標: CER(cleaned: Gemma の GenerationResult repr から text= を抽出後)
  • スクリプト: hrtaym1114-github/gemma4-whisper-bench
    benchmark.py
uv sync
uv run python prepare_data.py     # データ生成
uv run python benchmark.py        # 全モデル走らせる
uv run python fix_gemma_results.py  # Gemma の出力をクリーン

ハードウェア比較

項目前回今回
機種MacBook AirMacBook Pro
チップApple M2Apple M5
RAM (Unified)8GB16GB
macOS26.x26.3
Python3.133.11
測定日2026-04-182026-04-29

結果サマリー

平均推論時間(秒/サンプル)

M2 8GB vs M5 16GB の平均推論時間比較棒グラフ
モデルM2 8GBM5 16GB高速化
Gemma 4 E2B3.791.113.4×
Gemma 4 E4B測定不可1.21動作するように
Whisper large-v346.074.709.8×
Whisper large-v3-turbo8.900.6114.6×
M2 → M5 の高速化倍率: E2B 3.4×, large-v3 9.8×, turbo 14.6×

CER(cleaned)

4モデルの日本語CER 棒グラフ Gemma系25.65%/22.33% Whisper系15.96%/14.84%
モデルM2 8GBM5 16GB
Gemma 4 E2B25.65%25.65%
Gemma 4 E4B22.33%
Whisper large-v315.96%15.96%
Whisper large-v3-turbo14.84%14.84%

CER 自体は当然変わりません(モデルの重みは同じ)。
精度面の収穫は「E4B の数字が初めて取れた」点です。
E4B は E2B より約 3 ポイント低 CER で、Whisper には届きませんが、
小型 LLM 系では悪くないラインに乗ってきています。

トピック1: Gemma 4 E4B が動くようになった

E4B は前回 M2 8GB で Caused GPU Timeout Error でクラッシュ。
Apple Unified Memory なので、推論中に他プロセスと物理 RAM を取り合った結果、
Metal コマンドバッファがタイムアウトしていた様子。

M5 16GB では推論中の peak memory(mlx-vlm 自身の報告値)が
サンプルにより 5.4〜6.0 GB で推移しました。
8GB 機ではこのワーキングセットに OS や他アプリの常駐メモリが加わると物理 RAM 不足になり、
swap/compress が走った瞬間に Metal タイムアウトに到達する、
という挙動だったと推測しています(推測なので断定はしません)。

実用観点では:

  • E4B を本気で使うなら 16GB 以上ほぼ必須
  • E2B と E4B のレイテンシ差はほぼ無い(1.11s vs 1.21s)
  • 一方 CER は E4B のほうが 3 ポイント以上良い → 16GB 機なら E4B 一択

トピック2: Whisper large-v3-turbo が秒速以下に

turboの音声長/推論時間倍率 M2 0.8倍 M5 10.9倍
指標M2 turboM5 turbo
平均推論時間 / サンプル8.90s0.61s
10サンプル合計 wall-clock6.12s
10サンプルの音声合計長約 67s約 67s
速度比(音声長 / 推論時間)約 0.75×約 11×

M5 では入力音声長の 10 倍以上のスピード で書き起こしが走るので、
ストリーミング(マイク入力)処理にも余裕で間に合います。

CER 14.84% は前回からの最強モデルそのままなので、
M5 16GB なら Whisper large-v3-turbo を素直に使うのが現実解 という結論は変わらず、
むしろ強化された形です。

トピック3: 踏んだ macOS 側の落とし穴

M5 への移行で uv sync 済みの venv をそのまま持ち込んだら、
初回 import に 30 分以上かかる現象に遭遇しました。
mlx_vlm が transformers + torch + sympy + sklearn + pandas など
重量級ライブラリを連鎖的に読み込むため、
個々の小ファイルアクセスが macOS 側でボトルネックになっている疑いが濃厚です。
原因切り分け中に見つけたものを共有します。

1. com.apple.provenance 拡張属性

macOS Sequoia 以降、ダウンロードしたファイルには
com.apple.provenance という拡張属性が付きます。
新規環境で初めてアクセスする際に検証が走り、
venv 配下に約 3300 個の属性が付いていました。

# 確認
xattr -r .venv | head
# 削除(venv 配下のみ、ユーザーデータには触らない)
xattr -dr com.apple.provenance .venv
xattr -dr com.apple.provenance ~/.cache/huggingface

削除単独での効果は他の対処と切り分けできていませんが、
新規 Mac で venv を引き継いだときの定番ケアとしてやっておく価値はあります。

2. tracemalloc.start() の位置に注意

元の benchmark.pytracemalloc.start()import mlx_vlm で呼んでいました。
import 中のアロケーションを全部トレースしてしまうので、
重量級ライブラリの初回ロードでは overhead が大きくなりがちです。

ローカルで runner 内に閉じ込めるよう修正して、
import が終わった後に tracemalloc.start() するようにしました
(修正は本リポジトリの benchmark.py に反映済み)。

3. HuggingFace Hub への到達不可で [Errno 60] Operation timed out

mlx_vlm.load(model_id) は内部で AutoProcessor / AutoConfig を
ローカルキャッシュから読むのですが、検証のために Hub に問い合わせます。
ネットワークが不調だと 20分超ハングしてからタイムアウト。

# キャッシュだけ使う
HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 uv run python benchmark.py

これで Hub アクセスを完全に切れます。CIで動かす場合も推奨。
今回 Gemma 系を完走させられた決め手はこのフラグでした。

推奨マトリクス(更新版)

推奨マトリクス 用途×RAM別の推奨モデル一覧
用途8GB Mac16GB Mac
一般的な書き起こしWhisper large-v3-turboWhisper large-v3-turbo
最高精度を狙うWhisper large-v3Whisper large-v3
軽量・常駐したいGemma 4 E2BGemma 4 E4B
文脈考慮が欲しいGemma 4 E2B(CER 注意)Gemma 4 E4B

「音声→テキスト」を正確にやるだけなら Whisper large-v3-turbo がベスト。
「音声を踏まえた対話・要約・分類」を 同じモデルで やりたいなら Gemma 4 E4B(16GB 機で)。

まとめ

  • M2 8GB → M5 16GB の入れ替えで、動作した3モデルが 3〜15 倍の高速化
  • 前回測定不可だった Gemma 4 E4B が動作(CER 22.33%)
  • Whisper large-v3-turbo は秒速以下 に到達、リアルタイム書き起こし用途に十分
  • 16GB Mac なら Whisper turbo(精度重視)Gemma 4 E4B(マルチモーダル汎用) の二択構造に

「Apple Silicon でローカル音声 AI を本気でやるなら 16GB から」が、
今回の検証で改めて確認できた線でした。

検証スクリプトと M2/M5 両方の生データは
hrtaym1114-github/gemma4-whisper-bench
results/m2_8gb/ results/m5_16gb/ に置いてあります。


関連記事:
前回: Apple Silicon で Gemma 4 E2B は Whisper を置き換えられるか — 4モデル日本語CER実測と選定ガイド

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次