LLM が食っているメモリ、
どこで食ってるか 見えてますか?

llama-server / ollama / python(torch) などバックエンドの AI プロセスをメモリダンプし、 モデル重み・KV キャッシュ・アクティベーションが実際にどこにどれだけ食っているか。 ブラウザだけで動く、超軽量のヒートマップ分析ツールです。

ツールを開く チュートリアルを見る
ビルド不要 npm 不要 ブラウザ完結 Web Worker 高速計算

ライブデモ

「サンプル生成 (LLM)」を押すと、仮想的な llama プロセスのメモリ配置が描画されます。

何がわかるのか

ヒートマップで一望

ダンプ全体を 4KB ページ単位のグリッドに分割。非ゼロ率・エントロピー・文字密度で「どこに実データがあるか」を色で瞬時に把握。

領域の重ね合わせ

モデル重み / KV キャッシュ / アクティベーション / ヒープ等の領域を JSON で読み込み、半透明レイヤーとして重ねてどこが大きいか突き止めます。

推定利用量(MiB)

各領域の実データ量を自動集計。どの領域が何 MiB 占めているかをリスト表示します。

丸ごと軽量

依存は D3.js の CDN 1 本のみ。メトリック計算は Web Worker で実行し、大きなダンプでも UI が固まりません。

1980's カセットデッキ調

VU メーター風の緑→黄→赤の LED セグメント、テープカウンタ、ピークホールド表示で、時代錯誤にノスタルジックにメモリを見渡せます。

チュートリアル

対象の LLM / AI プロセスを確認する

backend で稼働中のモデルサーバーや推論プロセスを見つけます。

ps aux | grep -Ei 'llama|ollama|python|torch|token'

# メモリ上の領域レイアウトを確認
vmmap <PID>

メモリをダンプする

lldb で対象 PID にアタッチし、必要なアドレス範囲をバイナリとして書き出します。

sudo lldb -p <PID> \
  -o "memory read --force --binary --outfile dump.bin 0x100000000 0x140000000" \
  -o detach -o quit

ヘルパースクリプトも同梱しています(バイナリ + 領域 JSON を一度に生成)。

sudo ./scripts/acquire_dump.sh -p <PID> -a 0x100000000 -s 0x4000000 \
  -o dump.bin -j regions.json

ブラウザで可視化・分析する

viewer.htmldump.bin をアップロード。 メトリックを「エントロピー」に切り替えると、モデル重みのように高エントロピーな領域がくっきり浮かび上がります。 領域 JSON を読み込んで各領域の推定利用量(MiB)を確認しましょう。

ヒント — モデル重みは高エントロピー(全ビットがまばら)・トークナイザは文字密度が高い・ KV キャッシュは規則的なゼロ混じりの帯、という特徴が出ます。指標を切り替えると領域の特定がはかどります。

解析のヒント

重み ≒ エントロピー大

FP16/BF16 重みはほぼ全バイトが非ゼロで高エントロピー。ヒートマップの「肌色」の帯がモデル重みの可能性大。

KV キャッシュ ≒ 帯状のまだら

ヘッダー長分の使われた領域とゼロ埋めが交互に出る。アクティベーションと同じレイヤー構造の繰り返しが見えます。

文字密度で vocab を探す

トークナイザやプロンプトの文字列は ASCII 比率が高い。文字密度ビューで一発で可視化。

FAQ

SIP や権限が必要ですか?

他プロセスのメモリを読むには sudo と(環境によって)SIP の制限への理解が必要です。ツール自体は取得後のバイナリをブラウザ内だけで処理します。

ブラウザの外へデータは送信されますか?

送信しません。すべての処理はローカルブラウザ内で完結します。ただしダンプにはパスワード・鍵・個人情報が含まれうるため、ファイルは外部にアップロードしないでください。

対応サイズは?

上限 256 MiB までアップロード可能。それ以上の領域は lldb で分割して取得してください。

このページ/CDN がオフラインでも動く?

D3.js を CDN から読み込むため、完全オフラインで使う場合は d3.min.js をローカルに置いて参照を差し替えてください。

GitHub Actions でデプロイ

main への push で .github/workflows/deploy-pages.yml が自動で GitHub Pages へデプロイします。リポジトリ設定 → Pages → 「デプロイ元」を GitHub Actions に変更するだけです。 詳細は README.mdDEV-MEMO.md を参照。