新型の「Mac mini」と「Mac Studio」が、一部構成を除き9月22日に発売される。8月26日の発表では、Mac miniでデビューを果たした「M6チップ」、そしてMac Studioでデビューを果たした「M5 Ultraチップ」について、Appleは様々な「数字」を掲げている。本記事では、それらの数字を整理し、その意味を読み解く。
Appleの「数字」の比較対象を整理する
Appleのニュースリリースや製品情報のページは、比較基準が入り交じる傾向にある。何と何を比較しているのか、注意しないと混乱してしまう。
今回の発表に関して言えば、チップ(SoC)に関するリリースでは、M6チップを「M5チップ」と「M1チップ」、M5 Ultraチップを「M3 Ultraチップ」「M1 Ultraチップ」と比較している。一方、Mac miniとMac Studioに関するリリースでは、M6チップ搭載のMac miniは「M4チップ」「M1チップ」搭載モデルと、M5 Ultraチップ搭載のMac Studioは「M3 Ultraチップ」「M1 Ultraチップ」搭載モデルと比較している。後者はさておき、前者は基準がバラけてしまっている。
これを「そろえて」見ることで、性能の伸びた面をきちんとチェックできる。
CPUコアとGPUコアの性能を比較する
まずM6チップのM5チップ比で「40パーセント高速なCPUパフォーマンス」は、信頼できる値だ。
M5チップは「M4チップ比でマルチスレッド性能が15%高速」で、M6チップは「M5チップ比で(マルチスレッド性能が)最大1.2倍」となっている。これらを総合すると、M6チップは「M4チップの1.15倍×1.2倍=1.38倍」ということになり、Appleが言っていることとほぼ一致する。
ただし、M5チップの比較対象はMac miniではない(14インチMacBook Pro)ことには注意が必要だ。
なお、Mac StudioのM5 Ultraチップについては先代のM3 Ultraチップ搭載モデルとの「直接比較」で「最大1.3倍高いマルチスレッドのパフォーマンス」となっている。ここは素直に取ってよいだろう。
一方で、GPUコアについては「AIパフォーマンス比較の数字がちょっと控えめなのでは?」と感じる。
M6チップ搭載のMac miniでは「最大4倍高速なAIパフォーマンス」をうたっている。GPUを使ったAI処理パフォーマンスにおいて、M6チップは「M5チップ比で約1.3倍」、M5チップは「M4チップ比で3倍超」をうたっている。これを単純に計算すると「1.3倍×3倍超≒4.9倍くらい」となるので、公称の「最大4倍」よりも向上幅が大きい。
「どういうことだろう?」と同じリリースを見てみると、「LM Studio」のプロンプト処理において、M6チップがM4チップ比で4.8倍のパフォーマンスだったという旨の記載がある。こちらの方が計算上の性能向上に近い。ともあれ、M6チップの「最大4倍高速なAIパフォーマンス」は“控えめ”なアピールだと思われる。
なお、M6チップでは「Dual 16コアNeural Engine」を売りとしており、16コア構成のNeural Engine(NPU)を2基搭載している。ピーク演算性能は2倍を向上したというが、メモリ帯域がM5チップ比で10%しか増えていないので、メモリの律速による実際に2倍のパフォーマンスを発揮できる局面は限られる。
M5 UltraチップのAI性能向上の秘密
一方、Mac StudioのM5 Ultraチップの方はどうだろうか。M5 UltraチップのGPUコアは、M3 Ultraチップと同じく最大80基構成だ。それでいて、AI演算パフォーマンスは最大4.5倍と大きな性能向上を発揮している……のだが、グラフィックスパフォーマンスの向上は最大40%に留まっている。
この「開き」を生み出しているのが、M3 UltraチップのGPUコアにはなかった「Neural Accelerator」である。全てのGPUコアに行列演算を専門とするロジックを組み込んだことで、AI演算パフォーマンスが大きく改善したのだ。
なお、M5 Ultraチップも16コア構成のNeural Engineを2基搭載しているが、M6チップのように「Dual 16コアNeural Engine」ではなく、「32コアNeural Engine」とアピールしている。これはM6チップでは2基のNeural Engineが協調動作するのに対して、M5 Ultraチップでは2基のNeural Engineが「別個に」動作することに起因すると思われる。
M6チップとM5 Ultraチップは、いずれも32コア構成のNeural Engineを搭載しているが、その動作は両者で異なる。ただし、どちらにしてもOS側が動作の差配を行うので、ユーザーやアプリ側はそれを意識する必要はない。



