同モデル、同 Q4_K_M ラベルの場合:重みのビット数はそれぞれ 5.02、5.07 および 5.27 です。

2026/07/15 6:06

同モデル、同 Q4_K_M ラベルの場合:重みのビット数はそれぞれ 5.02、5.07 および 5.27 です。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Picchio は、GPU が動作しているように Pretend しながら実際の計算は低速の CPU プロセッシングにフォールバックするといったサイレントな失敗(silent failures)を露見させることで、ローカルの Large Language Model (LLM) のパフォーマンスを正確に測定することを目的とした不可欠な Python 診断ツールです。その核心的な革新点は、メトリクスを prefill、decode、および wallclock ランに分けて分離することで、モデルが単一の固定された設定ではなく、Q4_K_M のようなモデルでは複雑なミックスド・プレシジョン数学計算を実際に利用していることを示す「有効ビット使用量 (effective bit usage)」の真実を明らかにすることにあります。エンジンログと NVML や

ioreg
といった OS レベルのハードウェアメーターを照合することで、標準ベンチマークでは検出できない欺瞞的なアイドル状態を検出し、誤ったパフォーマンスボトルネックの帰属を防ぎます。診断、監視、ログ比較、および整合性検証のために特定のコマンドを提供し、自動化されたスクリッティングを支援する独自の退出コード(例:CPU のサイレントフォールバックは 4)を返します。Apple M5 から Linux RTX 4090 にわたるハードウェアでテストされており、Qwen3.5-9B のようなモデルにとって不可欠なベースラインを設定し、クアンタイザによって有効ビット数が 4 から 32 の間で変動する方法や、MoE モデルにおけるアクティブエクスパートを報告します。サイレントフォールバックが検出された場合、ユーザーは劇的なスローダウンに直面し、毎秒数千のトークンから毎秒約 3.0 トークンのみに低下する可能性があります。開発者とシステム管理者は、報告された GPU スループットが不安定な部分的オフロード失敗ではなく実際の計算作業を反映していることを確認するために Picchio を利用すべきです。

本文

ローカル LLM の評価と分析ツール:picchio

概要

ローカル LLM の性能評価に特化した単一 Python スクリプトです。以下の機能を備えています。

  • **有効なビット数(bit per weight)**の正確な計測
  • 3 つのレーンごとのトス/秒(tok/s)測定
  • サイレント CPU フォールバックの自動検出

GPU の速度に関する「1 つだけの tok/s」という主張は往々にして誤解を招く可能性があります。本ツールでは、以下の3 つの失敗モードをそれぞれ 1 コマンドで特定します。

  • 量子化ラベルの不整合: 同じ
    Q4_K_M
    ラベルでも、有効ビット数はモデルや量子化器によって変動します(例:5.02, 5.07, 5.27)。
  • GPU コストの喪失: プリフィル処理が 22 倍遅くなり、デコード処理も速度が 2 倍未満に落ちる場合を検出。
  • サイレント CPU フォールバック:
    bare llama.cpp
    で記録された高速な数値(例:36 tok/s)が、行列計算のいずれにも対応せず、GPU での処理が行われなかったことを検証。

「picchio」による解析プロセス

プリフィル処理、デコード処理、リアルタイム経過時間を分割して解析し、エンジンログと OS の GPU メーターを比較します。これにより**「GPU が実際に作業を行っているのか」そして「その理由は何なのか」**という判断結果(Verdict)を表示します。


インストール

手順

以下のコマンドを実行してください。

curl -fsSLO https://raw.githubusercontent.com/logxio/picchio/main/picchio.py
python3 picchio.py

動作モード

引数を指定しない場合、ツールは自動的に利用可能なモデルを検出します(Ollama タグ、現在ディレクトリ、Hugging Face リポジトリキャッシュ、LM Studio キャッシュなど)。選択されたモデルを分析し実行します。

  • .gguf
    ファイルパスを指定した場合
    :
    llama.cpp
    による完全な診断結果が表示されます。
  • Ollama のタグを指定した場合: 測定モードが有効になります。

システム要件

  • Python 3
  • llama.cpp
    または
    ollama
    のいずれか

初期処理

実行には固定されたプロンプトを用いた3 つのパスがかかります:

  1. コールドスタート: メモリキャッシュなし(初回パス)。
  2. GPU 活用時は約 1 分ほど。
  3. CPU でのみ実行の場合は時間がかかる場合があります。

キャッシュファイルは

~/.cache/picchio
配下にのみ作成され、それ以上のデータは一切生成しません。

Self-test

コミット済みの判断結果の再現性を検証するには以下を実行します。

python3 picchio.py --selftest

これは

examples/raw/
に生エンジンログを再生成し、すべての Verdict ブロック行を完全再現します。


コマンド一覧

コマンド実装内容特徴
picchio model.gguf
llama.cppによる完全診断:3 パス実行、レイヤー配置、コールドスタート分解、総合判断詳細情報
picchio qwen3.5:9b
Ollama サーバー処理:メモリ分割に基づいたレイヤー配置の自動検出ローカル実行中
picchio http://...
llama-server測定:既存プロセスを監視、ウォーム状態のみ分析起動不要
picchio guard -- <コマンド>
コマンドラップ:レイヤーが GPU から外れる瞬間に警告(強制終了なし)安全チェック
picchio compare A.txt B.txt
2 つのブロックの差分表示:設定差異の原因特定比較分析
picchio verify FILE
ブロック内部の矛盾有無を検出整合性チェック
picchio watch [PID]
OS GPU メーター監視:プロセス全体または GPU 全体にフォーカス(macOS 対応)リアルタイム監視
picchio monitor URL
タイマー駆動プローブ:プリフィル/デコード比率の崩壊を検出サーバー監視
picchio plan [MODEL]
コスト推定:gguf ヘッダーからモデル収容可否と推定コストを表示プランニング
picchio id MODEL
量子化ラベル分解: テンソルタイプ別の構成、有効ビット数、KV データ型、MoE 数詳細分析
picchio --explain 36
測定レーンとの照合:表示された数字の分類と解説(キャッシュ済み)解説
picchio model.gguf --ctx-sweep
コンテキスト深さによるレーン再測定:減衰傾斜率報告応用

watch コマンド詳細

リアルタイム動作。何も起動せず、アンロードも行いません。

python3 picchio.py watch --engine ollama --for 8

オプション引数

  • --passes N
    : 測定パスの数(デフォルト 3。初回のみコールド)
  • --keep-logs DIR
    : 生エンジン出力と NVIDIA Linux の GPU カーブを保存
  • --no-telemetry
    : OS GPU サンプリングをスキップ
  • --json
    : 測定結果を JSON フォーマットで追加出力
  • --bin PATH
    : カスタム llama.cpp バイナリ指定
  • --selftest
    : レポジトリ内のテスト再現検証
  • --version
    : バージョンとプロトコル表示

注意: bare

--
以降の引数は直接
llama.cpp
に渡されます。ターミナル上のみ色付き表示(
NO_COLOR
を尊重)、パイプ経由は ASCII プレーンテキストです。


Exit Codes

スクリプト全体のコード

  • 0: 正常または証拠なし
  • 2: 実行不可能
  • 3: Partial なオフロード(一部のみ GPU)
  • 4: サイレント CPU フォールバック
  • 5: 矛盾する証拠

コマンド固有のコード

コマンドExit Code意味
guard
伝播ラップされたコマンド自身のコード(信号停止時は 128+)
compare
0両方のブロックがパース成功
verify
0 / 5自己整合:0、矛盾:5
watch
0 / 4GPU 作動:0、アイドル(フォールバック):4
monitor
0 / 4GPU 保持:0、フォールバック検出:4

詳細分析機能

量子化ラベル (
picchio id
)

Q4_K_M
や他のラベルは、実際の有効ビット数を保証するものではありません。

  • 自己監査: ヘッダーのバイトオフセットと合計が一致するかを検証します。
  • : 標準の
    Q4_K_M
    5.07 bits/weight を示しますが、他の Qwen3.5-9B 実装では 5.025.27 と変動します(すべて 427 テンソルを共有)。
  • MoE 対応: トークンあたりの覚醒専門家数をレポートします。
  • 動作:
    gguf
    パスまたは Ollama タグに対応。只読取りモードで exit 0 です。

3 つのレーン (Three Lanes)

個別に失敗する可能性のある 3 つのパフォーマンス指標です。

  1. プリフィル (Prefill / PP): プロンプト読み取り速度(「最初のトークン出力までの時間」)。
  2. デコード (Decode / TG / Eval): 回答生成速度。
  3. ウォールクロック (Wallclock): ロード時間とウォームアップ時間を除いた総時間あたりのトークン数。

注意: Mac のスクリーンショットで「500 tok/s」が表示されても、これはほぼ確実にプリフィル処理の数値です。GPU コスト(デコード)とは異なります。

サイレント CPU フォールバック (Silent CPU Fallback)

同じマシン・モデル・ファイルであっても、以下の状況が起きます。

  • bare llama.cpp: 36 tok/s など高数値を記録。
  • アプリ経由: 11.5 tok/s に急落。

このギャップは、CPU と GPU をまたがる32 クラスタの行列計算のいずれセルにも「36」という数値が再現されないためです。これは生成速度ではなく、サイレントなフォールバック(GPU への無意識の遷移)を検出しています。

OS ライン (The os line)

測定パス実行中に背景スレッドで OS の GPU メーターを読み取ります。

  • macOS:
    ioreg
    (4Hz) と powermetrics エネルギーカウンターを使用(sudo 不要)。
  • NVIDIA Linux: NVML(ドライバ)を使用。

判断結果の分類

状態Exit Code説明
CONFLICTING EVIDENCE5OS は GPU 使用と観測しているが、ツールは「完全オフロード」と主張している場合。
SILENT CPU FALLBACK4ビナリ側から GPU の証拠が出ない一方、OS メーターはアイドル(IDLE)状態を監視している場合。実装ミスの兆候。

比較検証:llama-bench vs picchio

ツール設定プロンプト側 (pp256)生成側 (tg64)備考
llama-bench(デフォルト)-597.0620.21バックエンド:BLAS, MTL
llama-bench -ngl 0 (CPU)-27.8211.90CPU 強制実行(RTX 4090 でも CUDA キープ)

結論: CUDA ビルドですら、

-ngl 0
の設定でさえも列挙的に CUDA を保持しようとしますが、実効的な「プロンプト側」の性能は 21 倍もの崩壊を遂げます。CPU 実行における唯一の可視痕跡であり、ロード時間の分割や判断結果には反映されません。


測定結果(Measured)

環境情報

  • マシン: Apple M5 (32 GB), macOS 26.5.1, llama.cpp build 9430, ollama 0.31.1
  • プロトコル: mp1(各ブロックフッターに命名)
  • 負荷: プロンプト 730 トークン / 生成 128 トークン
  • 記録: ウォーム時の中央値、
    --keep-logs
    で生のエンジン出力保存
マシンモデル / エンジンプロトコルプリフィル (tok/s)デコード (tok/s)ウォールクロック (s)判断結果
Apple M5, 32 GBQwen3.5-9B Q4_K_M, llama.cppmp1588.021.115.5HEALTHY
Apple M5, 32 GB同、CPU 強制 (0/33 レイヤー)mp126.812.23.0SILENT CPU FALLBACK
Apple M5, 32 GBqwen3.5:9b, ollamamp1833.821.318.1HEALTHY
Apple M5, 32 GBQwen3.6-35B-A3B UD-Q4, llama.cppmp1787.334.419.1HEALTHY
RTX 4090, LinuxQwen3.5-9B Q4_K_M, llama.cppmp16763.3138.025.2HEALTHY

アナリシス

  • 誤診報告最優先: 正しい判断結果でなくても、「誤った判断(wrong verdict)」こそが本ツールの目的です。
  • MoE の性能: アクティブな MoE(350M パラメータ)でも、高密度な 9B モデルよりも 1.6 倍速くデコードされます。
  • ロード時間: 初回パスの遅延は重みの読み込みによるもの(例:20.6 GiB = 約 13 秒)であり、実際の推論速度ではないことに注意してください。

制限事項

  • 環境: Apple Silicon (llama.cpp/ollama) と Linux RTX 4090 (CUDA) を対象。MLX, LM Studio など他のエンジンについては
    watch
    でのみ部分情報の取得が可能ですが、レーン表からは得られません。
  • Ollama の制約: レイヤーごとの配置やスレッド構成は非公開。メモリ分割から推定されますが、不明瞭な場合があります。
  • Server モード: リモート URL はネットワークラウンドトリップタイムを含みます。
  • 数値ドリフト: ウォームな数値はセッション間で変動します(5〜8%)。「mp1」タグも変更される可能性があります。
  • OS メーター: 全体 GPU (Linux index 0) をカウントするため、アイドル状態から開始した場合のみ判定対象となります。

ライセンス: MIT

同じ日のほかのニュース

一覧に戻る →

2026/07/15 2:50

bonsai27b:スマートフォンで動作する 270 億パラメータモデル

## Japanese Translation: PrismML は、Qwen3.6 を基盤とする画期的なマルチモーダル AI モデルである Bonsai 27B をリリースしました。これは持続可能かつオンデバイス的人工知能へと向かう転換点を示すものです。Bonsai はユニークな構造を採用し、ネットワーク全体で低ビット形式のみで動作します(高精度のエスケープハッチはありません)。これにより未曽有の極限圧縮を実現し、1 ビットバイナリ版は 3.9 GB、ターナリー版は 5.9 GB のサイズです。このブリークスルーにより、モデルは iPhone 17 Pro の約 6 GB というメモリ予算内に収めることが可能となり、従来の構築(16 ビットで約 54 GB、4 ビットで約 18 GB)とは対照的です。この圧縮にもかかわらず、Bonsai は重要な数学、コーディング、ツール呼び出しタスクにおいて、フル精度モデルの知能を 90%〜95% 維持しています。 エンドツーエンドの低ビットアーキテクチャとコンパクトな 4 ビットビジョンタワーを備えた Bonsai は、大規模なコンテキストウィンドウ(262K トークン)をサポートし、高速な推論を実現します(NVIDIA RTX 5090 では最大 163 トークン/秒)。これは標準モデルと比較してギガバイトあたり十倍以上の高い知能密度を提供することで、新たな産業基準を設定しています。この革新により、ユーザーはプライバシーを重視するエージェントワークロードをローカルで実行でき、ファイルや画面入力といったデータをオンデバイスに保持し、追加のコンピューティングコストなしで動作します。最も先進的なタスクがハイブリッド戦略によってクラウド接続を利用することもあるかもしれませんが、Bonsai は即座に Apple デバイス上のネイティブデプロイメント(MLX を通じて)および NVIDIA GPU 上のデプロイメント(CUDA を通じて)をサポートします。Apache 2.0 ライセンスの下でリリースされ、無料の開発者向けプレビュー API が提供されており、データ流出のリスクなしに高度なエージェントワークフローへのアクセス可能な経路を提供します。

2026/07/15 6:15

Dependabot のバージョン更新機能でデフォルトのパッケージ冷却期間が導入されます

## Japanese Translation: GitHub の Dependabot は、バージョン更新用のプルリクエストを自動的に作成する前に 3 日間の待機期間を導入する新たなセキュリティ対策を実装しています。この重要な変更は、パブリケーションの直後にマルウェア攻撃者がパッケージリリースを乗っ取るサプライチェーン攻撃からソフトウェアリポジトリを守ることを目的としています。これらのリクエストの作成を遅らせることで、管理者らはそのコードがビルドプロセスに投入される前に、潜在的に汚染されたコードを検査するための十分な時間を確保できます。重要なのは、この安全バッファは重要なセキュリティ更新には適用されない点です。セキュリティ更新は、不可欠な脆弱性パッチへの即時アクセスを確保するために待機期間を完全に迂回します。GitHub Enterprise Server のバージョン 3.23 以前を管理する組織は、後ほどアップグレードする必要があります。また、他の組織も `.github/dependabot.yml` ファイルを介して設定を即座に構成し、このウィンドウを調整または無効化できます。結論として、この更新により、堅牢なセキュリティ衛生と運用上の柔軟性のバランスが達成され、急速な悪意のあるデプロイのリスクは低減しつつ、必要な依存関係の改善は遮断されることなく対応されます。

2026/07/15 1:57

塔はしきりに高まる

## 日本語訳: 核心となる論点は、AI を支援したプログラミングは、チームがシステムアーキテクチャについての共有理解を失うにつれてソフトウェア開発が引き続き進むという危険なパラドックスを生み出すと主張している。創世記におけるバベルの塔に関する聖書の物語とは異なり、そこでは神は統率能力を取り除くことによる協調性を妨げ、建設を停止させるために共通言語を撤去したが、現代の AI ツールは無休憩の通訳として機能する。これらのエージェントは、チームとの即時的な調整が必要ないかシステム全体モデルを取得することなく、孤立した開発者がローカルな変更(例えば OAuth やキャッシングの追加など)を行うことを可能にする。 この人工知能への依存リスクは、「アーキテクチャ言語」——つまり、概念、境界線、不変条件、所有権、およびシステムの形状に関する集合的な精神地図——が人間の記憶から薄れ去る原因となり得る。以前では摩擦(コードを読むこと、質問すること)が人々を同期させるのに役立っていたが、現在はエージェントがこの摩擦を取り除くことで、共有理解が崩壊しながらも変更が適用されることを可能にしている。その結果、個人は特定の機能を効率的に管理する一方、システム全体はその健全性を保つために必要な集合的知識から切り離されてしまう。その結果、開発者がコンポーネントがどのように互いに組み合わさっているかを説明できなくなった後でも、重要な変更を施す状態が生じる。この変化は、複雑なソフトウェアが誰一人として大局的な含意を完全に理解していないまま進化する可能性のある将来の脆弱性を生み出す恐れがあり、それはブルーゲルによる協力失敗を描いた作品に似た混沌としたプロジェクトにつながりうる。

同モデル、同 Q4_K_M ラベルの場合:重みのビット数はそれぞれ 5.02、5.07 および 5.27 です。 | そっか~ニュース