10月12日、Project MayaのリポジトリにRTX 3090 1枚と2枚の構成の速度報告が投稿された。貢献者briepalaは、デコード(回答生成)の平均速度を1枚で26.0 tok/s、2枚で53.0 tok/sと測定した。

どちらのカードも電力上限を225Wに下げていた。作者は工場出荷時の上限のほうが高いため、標準設定の3090の数値ではないと述べている。

エキスパートをGPU・RAM・SSDに分けて置くエンジン

Project MayaはGLM-5.3-Flashという1つのモデル専用のエンジンだ。READMEによると、会話で最もよく使うエキスパートをGPUに、次のものをRAMに、残りをNVMe SSDに置き、会話中に移動させる。

Mayaの量子化モデルはすべて元のモデルのMTPブロックを残している。MTPは、この先のトークンを先回りして提案(ドラフト)するブロックだ。

報告に記された測定条件

環境はMaya v1.1.2(コミット83044ba)、モデルMaya-S24、Threadripper 3970X、DDR4 126GB、CachyOS Linuxだった。各3090は24GBでPCIe 4.0 x16接続、NVLinkはなかった。

デコードはgreedy方式で思考(thinking)モードをオフにし、256トークンの回答3つを平均した。この記事で試したものではなく、貢献者の測定だ。

1枚構成はすべてのレイヤーをCUDA0に置き、ドラフトはしなかった。2枚構成はレイヤーを0〜23と24〜44に分け、MTPブロックでドラフトした。

2枚での実行のある回答では、254個のドラフトのうち243個(95.7%)が採用された。プリフィルのチャンクサイズは1枚で32,768、2枚で8,192だった。

メンテナーは、2枚目のカードで速度がほぼ倍になった理由として、VRAMに載るエキスパートの割合の増加(65%から約80%)とMTPのドラフトを挙げた。

注意点:測定されていない条件

8Kプロンプトのプリフィルは1枚で913 tok/s、2枚で885 tok/sだった。2Kプロンプトでは565と592 tok/sだった。

コンテキストは131,072トークンに設定されたが、作者は8Kより長いプロンプト、並列リクエスト(--parallel)、工場出荷時の電力上限との比較を測定していないと明記した。

2枚構成でプリフィルのチャンクを32,768にそろえた実行も、測定していない項目に入っている。

デコードとプリフィルが作業ごとに及ぼす影響

長い回答を多く生成する作業なら、デコード速度が全体の時間の大きな割合を占める。

大きな入力を繰り返し送る作業は、最初のトークンが出る前のプリフィルにより多くの時間を使う。この報告では、2枚にしてもプリフィルは速くならなかった。

2回の実行では切り分けられない要因

2枚構成では、VRAM上のエキスパートの割合、レイヤー配置、MTPドラフトが同時に変わった。2回の実行だけでは、各要因が速度にどれだけ寄与したかを分けられない。

そのためこの結果は、GPUを1枚足した効果ではなく、完成した2つの構成の振る舞いを比べたものだ。

自分のシステムで改めて比べる項目

似たハードウェアで比べるなら、モデルパック、プロンプト、出力長、電力上限、ドラフトの有無をそろえ、実際のレイヤー分割とプリフィルのチャンクを記録する方法がある。

Project Mayaの3090 2枚の報告は、GPU数とMTPドラフトが一緒に変わった構成の比較であり、2枚目のカードだけのスケーリング倍率を示すものではない。