機械学習
記事内に商品プロモーションを含む場合があります

MacBook M4Max LLMベンチマーク結果を公開

Aru

GPU-Benchmarks-on-LLM-InferenceにM4Maxの結果が追加されないので、私の方で実行してみました。M3Maxとどの程度違うのか分かりやすいようにM3Maxのデータを並べて記事にしています。

LLMベンチマーク

GPU-Benchmarks-on-LLM-Inference(リンク)にあるLLMのベンチマークをM4Maxで行ってみました。RTX4090などのデータは上記のリンクにありますので、M4Maxと比較するのに役立つかと思います。

特にM4Max搭載のMacBook ProをLLMを動作させる目的で購入検討している方の参考になるかと思います。実際、私自身、LLMと巨大なデータをpandasで処理するために128GB搭載のM4Maxを購入しました。

上記のリンクのコードはそのまま動かなかったのでllama.cppをインストールし、同じモデルをダウンロードしてコマンドラインで実行しました。

あわせて読みたい
M4 Maxの深層学習ベンチマーク結果を公開|PyTorch, YOLOv8, LM Studio
M4 Maxの深層学習ベンチマーク結果を公開|PyTorch, YOLOv8, LM Studio

ベンチマークに利用されるLLM

ベンチマークに利用されるのはllama 8Bと70Bです。8BはQ4_K_Mとfp16のバージョン。70BはQ4_K_Mのバージョンです。今回購入したM4Maxはメモリが128GBなので、さらに大きなモデルも動作させることはできそうですが、今回はこの3つのモデルだけ実行してみました。

ppはプロンプト処理で、tgはテキスト生成の意味です。また、t/sはトークン/秒です。

今回ベンチマークのために、パフォーマンスを「自動」に変更しましたが、いつも低電力で使っているので「ファン」が久しぶりに回って少し気になりました。

8B Q4_K_M

8B Q4モデルは、tgが少しだけ大きい感じでした。

M3Max

| model                          |       size |     params | test       |              t/s |
| ------------------------------ | ---------: | ---------: | ---------- | ---------------: |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | pp 512     |    693.32 ± 0.42 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | pp 1024    |    678.04 ± 0.46 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | pp 2048    |    652.33 ± 9.50 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | pp 4096    |   573.09 ± 14.08 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | tg 512     |     48.97 ± 0.17 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | tg 1024    |     50.74 ± 2.02 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | tg 2048    |     49.78 ± 0.01 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B | tg 4096    |     44.21 ± 0.01 |

M4Max

| model                          |       size |     params |      test |              t/s |
| ------------------------------ | ---------: | ---------: |---------: | ---------------: |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |     pp512 |   685.25 ± 14.26 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    pp1024 |    638.83 ± 4.63 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    pp2048 |    621.13 ± 4.20 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    pp4096 |   513.26 ± 31.09 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |     tg512 |     54.49 ± 0.84 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    tg1024 |     56.54 ± 1.27 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    tg2048 |     56.06 ± 0.42 |
| llama 8B Q4_K - Medium         |   4.58 GiB |     8.03 B |    tg4096 |     51.32 ± 0.09 |

8B F16

8B F16もtgが少しだけ大きかったです。

M3Max

| model                          |       size |     params | test       |              t/s |
| ------------------------------ | ---------: | ---------: | ---------- | ---------------: |
| llama 8B F16                   |  14.96 GiB |     8.03 B | pp 512     |    769.84 ± 1.23 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | pp 1024    |    751.49 ± 0.52 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | pp 2048    |   695.29 ± 20.23 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | pp 4096    |   609.97 ± 15.87 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | tg 512     |     22.04 ± 0.24 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | tg 1024    |     22.39 ± 0.09 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | tg 2048    |     21.86 ± 0.00 |
| llama 8B F16                   |  14.96 GiB |     8.03 B | tg 4096    |     20.72 ± 0.00 |

M4Max

| model                          |       size |     params |        test |            t/s |
| ------------------------------ | ---------: | ---------: |-----------: |--------------: |
| llama 8B F16                   |  14.96 GiB |     8.03 B |       pp512 | 691.61 ± 29.85 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      pp1024 |  663.42 ± 8.90 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      pp2048 | 628.72 ± 18.60 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      pp4096 |  590.92 ± 4.80 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |       tg512 |   28.70 ± 0.13 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      tg1024 |   28.23 ± 0.05 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      tg2048 |   27.35 ± 0.02 |
| llama 8B F16                   |  14.96 GiB |     8.03 B |      tg4096 |   25.88 ± 0.03 |

70B Q4_K_M

70BはM3Maxの方が性能が高いという結果になりました。結構数値は乱れるのかもしれません。

M3Max

| model                          |       size |     params | test       |              t/s |
| ------------------------------ | ---------: | ---------: | ---------- | ---------------: |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | pp 512     |     70.19 ± 2.91 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | pp 1024    |     62.88 ± 0.13 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | pp 2048    |     64.09 ± 1.46 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | pp 4096    |     64.90 ± 0.09 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | tg 512     |      7.65 ± 0.07 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | tg 1024    |      7.53 ± 0.00 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | tg 2048    |      7.20 ± 0.00 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B | tg 4096    |      6.58 ± 0.00 |

M4Max

| model                          |       size |     params |        test |           t/s |
| ------------------------------ | ---------: | ---------: | ----------: |-------------: |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |       pp512 |  65.87 ± 4.16 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      pp1024 |  62.82 ± 1.10 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      pp2048 |  49.78 ± 1.91 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      pp4096 |  50.77 ± 0.19 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      pp8192 |  47.98 ± 0.12 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |       tg512 |   6.15 ± 0.26 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      tg1024 |   6.25 ± 0.01 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      tg2048 |   6.26 ± 0.19 |
| llama 70B Q4_K - Medium        |  39.59 GiB |    70.55 B |      tg4096 |   6.88 ± 0.15 |

まとめ

以上がベンチマーク結果です。M3Maxの結果とそれほど違わない結果になりました。llama.cppのバージョンが違うのでそのせいかなとか思っています。というのも、他の方のベンチ結果ではもう少し差がある結果が出ているのもあるんですよね。とりあえず、参考になれば幸いです。

ところで、ベンチマーク実行中はCPUのPコアが全然動いていませんでした。GPUは全力で動いていたのでほぼGPUだけで実行していたようです(下図)。ちなみに、GPU0.45W, GPU17Wとなっていまうすが65WのUSB-Cだと電力不足になったので65W以上の電力消費のようでした。

ベンチマーク中のCPU/GPU/NPUの動き

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました