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枚目のカードだけのスケーリング倍率を示すものではない。
