miutti's picture
Source: kernel, desktop app, tools (snapshot of the GitHub repo)
df41178 verified
|
Raw History Blame Contribute Delete
2.39 kB

研究ノート — 次の一手

現在の主力レシピ

W ≈ A·B (ランク32〜64, 4bit) + PVQ(残差, k=8, コード16, グループ128)
→ 0.78〜0.94 bit/重み、出力誤差 0.41〜0.47

次にやる候補(優先順)

1. 実活性化の取得 【全ての前提】

モデルを実際に走らせ、対象層の入力を採る。これが無いと GPTQ・重要度ハイブリッド・ビット配分の判断が全部空振りする。 既存 LocalAI/ollama-models の ollama 経由か、GGUFを自前で回すか。

2. 低ランク部にも回転を効かせる

低ランク因子 A,B は RTN 4bit で量子化している。実験06より 尖りの大きい行列にはスカラー4bitで回転が破格に効く(0.157→0.116)。 A,B に回転を入れれば、いまの主力レシピがそのまま伸びる可能性が高い。安い。

3. 層ごとのビット配分最適化

層によって感度が違う。全層一律ではなく、感度の低い層を薄く削り 平均を1bit未満に保ったまま全体品質を上げる。感度は測れば分かる。

4. モデル全体を通した評価(perplexity)

1層の誤差0.4が、モデル全体でどれだけの劣化になるのか誰も知らない。 ここを測らないと「実用かどうか」を語れない。

5. 復元せずに計算する(真の高速化)

いまは「復元してから普通に掛け算」=軽いだけで速くない。 コード番号のままテーブル引きで内積を出せれば速度も取れる。難関。

応用先(重み以外への転用)

同じ理屈は重み以外にも効く。特に:

  • KVキャッシュ: 会話が長いほど膨らみ、体感速度の主犯。その場で作られるので 辞書設計の自由度が重みより大きい可能性。次の目玉候補。
  • 埋め込みベクトル(RAGのインデックス)
  • モデル間の差分(LoRA配布の圧縮)

罠のメモ

  • 条件つきエントロピーはサンプル不足で必ず過小評価される。必ずホールドアウトで検証。
  • 低ランクのビット費用は r*(out+in)*bits/(out*in)。因子は2つ要る。
  • 回転は外れ値対策であって万能ではない。ベクトル量子化には効かない。
  • 較正データで評価しない。自己採点になる。