ローカルLLMが実際より賢くないと感じる理由:アテンションバックエンドが出力を静かに変える
詳細な実験により、vLLMでアテンションバックエンドを切り替えると、同一の重みとハードウェアでも、実際のエージェントワークロードでモデルのトップ1トークン選択が変わることが示されました。原因はモデルではなく、実装固有の数学です。

量子化されたGGUFをOllamaに取り込んでモデルの性能が低いと感じたエンジニアは皆、モデルが悪いのか、それとも自分の設定が悪いのかと考えたことがあるでしょう。Level1Techsフォーラムでのthr3eによる新しい技術記事は後者に焦点を当て、同一の重みとハードウェアでも、ソフトウェアスタックがモデルの出力トークンを変えることを示しています。
核心的な発見:vLLMでアテンションバックエンドをFlashAttention 2、Flash Inference、Triton Attentionの間で切り替えると、長いプロンプトの後半部分でモデルが貪欲な次のトークンについて不一致を起こします。テストでは、RTX PRO 6000 Blackwell GPU上でQwen3.6-27Bの公式BF16チェックポイントを使用し、実際のエージェントワークフローから取得した100kトークンのコンテキストを使用しました。実行間で変更されたのはアテンションバックエンドのみで、他のすべては固定されていました。
最初の数千トークンでは、すべてのバックエンドが一致しました。しかし、プロンプトが進むにつれて、バックエンドは乖離し始めました。記事によると、後半の8kトークンウィンドウでは、サンプリングされた位置のうち測定可能な割合でトップ1のフリップが発生しました。つまり、バックエンドがベースラインとは異なるトークンを選択していた可能性があります。同じバックエンドでの繰り返し実行ではロジットはビット単位で同一であり、乖離はプリフィルの行列演算に起因することが特定されました。
また、記事は量子化モデルカードのKLダイバージェンス主張について警告しています。低いKLD数値は、著者が参照チェックポイント、実行環境、評価テキスト、コンテキスト長、および測定の集計方法を開示しない限り無意味です。方法論は数値と同じくらい重要です。
ローカルLLMユーザーにとっての教訓は実用的です:実際のワークロードをベンチマークし、ゼロショットプロンプト3つだけではありません。モデルカードに指定されたサンプラー設定を使用してください—温度を低く設定しすぎるとループが発生する可能性があります。そして、推論エンジンの実装詳細が方程式の一部であることを理解してください。
すべての隠れ状態での実行間のロジットはビット単位で同一でした。つまり、この特定の乖離は、trt/fa2/fi内のプリフィル中に発生する行列乗算と加算演算にのみ由来します。
| バックエンド | タイプ | ベースラインからの乖離 |
|---|---|---|
| FlashAttention 2 | フルアテンション | 後半ウィンドウでトップ1フリップ |
| Flash Inference | フルアテンション | 後半ウィンドウでトップ1フリップ |
| Triton Attention | フルアテンション | ベースライン(量子化テスト用に選択) |
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。