実行プログラムと拡張機能
最終更新
ローカルLLMの速度を測る:sparkDashの使い方
sparkDashで単一リクエスト速度と同時throughputを分けて測り、機器・モデル・負荷条件を記録して比較します。
sparkDashはDGX SparkやNVIDIA GPU1 host、ローカルLLM2 serverを1画面で監視し、decode3、prefill4、quality benchmarkを実行するdashboardです。decode testでは同時request数とprose・code・structured・JSONを選び、prefillは1K〜300Kのcontext sizeを順に試してTTFT5とprefill tok/sを記録します。request数と入力長が違えば別の負荷を表すため、engine、model、GPU電力、prompt6、回答長をそろえて比較します。
まず測る作業とserverを決めます
sparkDashのdecode benchmarkはserverが回答を生成するときのtoken7速度を測定します。prefill benchmarkはprompt処理throughput8と最初のtokenまでの時間を記録します。長い文書を読ませる作業ではprefillとTTFT、長い回答を生成する作業ではdecodeを優先します。
現行READMEはsparkDash 2.40.0を案内しています。remote GPU hostはSSHで登録でき、各LLM serverのaddressとportを追加するとbackendとmodelを検出します。ローカルLLMを追加する前にserver portを確認し、remote unitにはsparkDashからSSH接続できるaccountを用意します。

公式repositoryからdashboardを起動します
repositoryをcloneしてproduction用Docker Composeを起動します。既定ではloopbackのみでlistenするため、同じhost上でhttp://127.0.0.1:5555を開きます。dashboardはserver監視とbenchmark結果表示を行い、LLM model自体の導入やdownloadはしません。
git clone https://github.com/MiaAI-Lab/sparkDash.git
cd sparkDash
docker compose up --build -dAdd unitでThis hostを選ぶか、remote機器のLAN addressとSSH userを入力します。続いてTensorFoldの既定port 8888、または稼働中API9の実portを追加します。remote Linuxの収集にはSSH公開鍵がDocker container内から見える必要があります。別のPCからdashboardを見る場合、直接公開せずloopbackのSSH tunnelを使います。
ssh -N -L 5555:127.0.0.1:5555 user@sparkdash-host
decode benchmarkでrequest数を変えます
LLM unitでbenchmarkを開き、prose、structured、code、JSONからrequest typeを選び、同時request数とreply長を設定します。lab protocolはtemperature 0、thinking offです。実行中はstreamからtok/sを計算して結果を保存します。同時request数を増やしたらaggregate tok/sとrequestあたり速度を両方読みます。
たとえば 4 件のリクエストがそれぞれ平均 25 tok/s なら、サーバー全体では 100 tok/s です。個々の利用者が感じる速度は、リクエストごとの token 速度と最初のトークンまでの時間(TTFT)で別に確認します。prose リクエスト同士、structured リクエスト同士で比較します。
prefillと機器条件を記録して再比較します
prefill benchmarkはcontext sizeを1Kから300Kまで変え、tok/sとTTFTを記録します。各prompt sizeでunique prefixを使うため、cache hitと初回prompt処理を区別できます。32K promptのprefill rateと一緒に最初のtokenまでの時間も確認します。
結果の横にGPU modelと電力制限、TensorFoldとmodel version、quant、context、KV cache10、parallel数を記録します。backendが対応すればhealth panelにKV使用量と実行中・待機中requestも表示されます。結果が大きく異なる場合は、同じ負荷を再実行する前にunitのGPUとAPI接続を確認します。

用語の注釈
GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。
本文に戻る大規模言語モデル — 大量のテキストデータから言語パターンを学び、文脈に沿ったテキストを処理・生成するモデルです。
本文に戻るトークンのデコード — 入力とそれまでの回答をもとに、次の出力トークンを順に生成する段階です。
本文に戻るプリフィル — LLMが入力プロンプトを読み、各トークンの内部表現を計算する段階です。プロンプトが長いほど処理するトークンが増えます。
本文に戻る最初のトークンまでの時間 — リクエスト送信から最初の出力トークンが届くまでの時間です。
本文に戻るプロンプト — モデルに送る入力文です。生成モデルでは作りたい結果を説明する文になり、出力の構成や内容を大きく左右します。
本文に戻るトークン — モデルが入力や出力を分けて処理する単位です。
本文に戻るスループット — 一定時間に処理・生成した作業量です。トークン/秒やリクエスト/秒など、単位を合わせて比較します。
本文に戻るAPI — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。
本文に戻るKVキャッシュ — 過去トークンのAttention用キー・バリューを保存し、後続トークン生成で再利用するメモリです。容量はコンテキスト長やバッチサイズで変わります。
本文に戻る
よくある質問
- この記事で最初に確認すべきことは何ですか?
- sparkDashはDGX SparkやNVIDIA GPU host、ローカルLLM serverを1画面で監視し、decode、prefill、quality benchmarkを実行するdashboardです。decode testでは同時request数とprose・code・structured・JSONを選び、prefillは1K〜300Kのcontext sizeを順に試してTTFTとprefill tok/sを記録します。request数と入力長が違えば別の負荷を表すため、engine、model、GPU電力、prompt、回答長をそろえて比較します。
