Upgrade to Pro — share decks privately, control downloads, hide ads and more …

量子化 × ファインチューニングはどの組み合わせから試すべき?

Avatar for sin chir0 sin chir0
November 13, 2025
640

量子化 × ファインチューニングはどの組み合わせから試すべき?

Avatar for sin chir0

sin chir0

November 13, 2025
Tweet

Transcript

  1. - Kaggle - Kaggle 2x Master (Competitions, Notebooks) - 業務

    - Sansan株式会社 技術本部 研究開発部 - ファインチューニングしたLLMを用いたプロダクトの 改善 - 趣味 - マラソン(サブ 5.5) - Kagglerランニングクラブ所属 自己紹介 齋藤 慎一朗
  2. 今日説明すること - 量子化とは何か - 浮動小数点数型で持つモデルの重みや活性を、よりメモリ消費量が少ない整数型に変換すること。 - 量子化にはどのような手法があるか - QLoRA、GPTQ、AWQ、SignRound -

    Kaggle MAPコンペのデータにおける、量子化 × ファインチューニングの手法の性 能比較 - フルファインチューニング -> 量子化が最もCVスコアが良かった。 - 量子化 × ファインチューニングはどの組み合わせから試すべきか? - 私の考えとしては、まずはデファクトスタンダードの QLoRAを試すべき。選択肢として、フルファイン チューニング -> 量子化という手法があることも覚えておくと良い。
  3. アジェンダ - はじめに - 昔自分が困ったこと - 発表の目的 - 前提知識 -

    量子化とは - 量子化誤差 - 校正(calibration) - ファインチューニング - 量子化 × ファインチューニングには、 どのような組み合わせがあるのか? - QLoRAファインチューニング vs ファインチューニング -> 量子化はどちらの性能が 高い? - まとめ - 最後に
  4. 量子化の主流な手法 手法 実現するためのライブラリ例 説明 LLM.int8(), NF4 bitsandbytes LLM.int8()は、活性の外れ値はそのままの値を保持 し、通常の値は8bit量子化を行う。 NF4は、bitsandbytesで利用される、量子化に適した

    データ型である。 GPTQ GPTQModel, llm-compressor 勾配情報を用いて、重みを局所的に最適化しつつ量 子化誤差を最小化する。 AWQ llm-awq, llm-compressor 活性の誤差が目立ちやすい部分のみスケーリングで 補正する。 SignRound auto-round 符号に基づく近似誤差を利用して、丸め操作の方向 を最適化する量子化アルゴリズム。
  5. 組み合わせを考える観点 - 順番 - 量子化 → ファインチューニング - ファインチューニング →

    量子化 - 量子化手法 - LLM.int8(), NF4(分かりやすさのため、以降これらをまとめて bitsandbytesと呼ぶ。) - GPTQ - AWQ - SignRound - ファインチューニング手法 - フルファインチューニング - LoRAファインチューニング
  6. 組み合わせの全候補 No. 順番 量子化手法 ファインチューニング 1 量子化 → ファインチューニング bitsandbytes

    フル 2 LoRA 3 GPTQ フル 4 LoRA 5 AWQ フル 6 LoRA 7 SignRound フル 8 LoRA No. 順番 ファインチューニング 量子化手法 9 ファインチューニング -> 量子化 フル bitsandbytes 10 GPTQ 11 AWQ 12 SignRound 13 LoRA bitsandbytes 14 GPTQ 15 AWQ 16 SignRound
  7. 実施する組み合わせ No. 順番 量子化手法 ファインチューニング 実施する? 1 量子化 → ファインチューニング

    bitsandbytes フル しない。簡単に実現できる実装がない。 2 量子化 → ファインチューニング bitsandbytes LoRA する。 3 GPTQ フル しない。簡単に実現できる実装がない。 4 LoRA しない。簡単に実現できる実装がない。 5 AWQ フル しない。簡単に実現できる実装がない。 6 LoRA しない。簡単に実現できる実装がない。 7 SignRound フル しない。簡単に実現できる実装がない。 8 LoRA しない。簡単に実現できる実装がない。 No. 順番 ファインチューニング 量子化手法 実施する? 9 ファインチューニング -> 量子化 フル bitsandbytes しない。bitsandbytes と AWQ/GPTQ の量子化は性質 が異なるので対象外とする。 10 ファインチューニング -> 量子化 フル GPTQ する。 11 ファインチューニング -> 量子化 フル AWQ する。 12 ファインチューニング -> 量子化 フル SignRound する。 13 LoRA bitsandbytes しない。No.2と傾向が近く、対象外とする。 14 GPTQ しない。No.10と傾向が近く、対象外とする。 15 AWQ しない。No.11と傾向が近く、対象外とする。 16 SignRound しない。No.12と傾向が近く、対象外とする。
  8. QLoRA 整理し直すと、次のパターンが存在する。 No. 順番 量子化手法 ファインチューニング 1 量子化 → ファインチューニング

    bitsandbytes LoRA 2 ファインチューニング -> 量子化 GPTQ フル 3 ファインチューニング -> 量子化 AWQ フル 4 ファインチューニング -> 量子化 SignRound フル 知りたいこと デファクトスタンダードの QLoRA(No.1)の性能が良い? もしくは、フルファインチューニングできる環境があるなら、 フルファインチューニング -> 量子化(No.2~4)の方が性能が良い?
  9. 実験設定 - 実験環境 - A100 40GB(会社の環境をお借りしました🙏) - モデル - Qwen/Qwen3-8B(本来はもっと大きなモデルが良いが、時間の関係上小さいモデルで実験した

    ) - ファインチューニングの設定 - SFTTrainerを利用した。 - Learning Rate: 2e-05 - Epoch: 2 - LoRAを利用する場合、r=8、alpha=64 - 量子化 - コンペデータをランダムに512件選び、校正を行った。 - GPTQ、AWQ、SignRoundでは、モデルの重みを4bit、活性を16bitにする。 - GPTQ、AWQの実装には、llm-compressorを利用した。SingRoundの実装にはauto-roundを利用した。 - 推論 - vllm(バージョン0.8.5.post1)を利用した。 - QLoRAについては、vllm.lora.request.LoRAAdapterを利用した。 - データ - 学習: 33,026件 - 評価: 3,670件
  10. 知りたいこと(再掲) No. 順番 量子化手法 ファインチューニング 1 量子化 → ファインチューニング bitsandbytes

    LoRA 2 ファインチューニング -> 量子化 GPTQ フル 3 ファインチューニング -> 量子化 AWQ フル 4 ファインチューニング -> 量子化 SignRound フル デファクトスタンダードの QLoRA(No.1)の性能が良い? もしくは、フルファインチューニングできる環境があるなら、 フルファインチューニング -> 量子化(No.2~4)の方が性能が良い? - 実験する組み合わせ
  11. 実験結果 今回の実験設定においては、No.2(フルファインチューニング -> GPTQ)のCVスコアが最も 高かった。 No. 順番 量子化手法 ファインチューニング CVスコア↑

    1 量子化 → ファインチューニング bitsandbytes LoRA 0.9364 2 ファインチューニング -> 量子化 GPTQ フル 0.9411 3 ファインチューニング -> 量子化 AWQ フル 0.8292 4 ファインチューニング -> 量子化 SignRound フル 0.9393 参考 ファインチューニング(量子化なし) - フル 0.9445
  12. 推論時間は、推論時間はNo.1(QLoRA)が一番長かった ちなみに... No. 順番 量子化手法 ファインチューニング CVスコア↑ 推論時間↓ 1 量子化

    → ファインチューニング bitsandbytes LoRA 0.9364 46秒 2 ファインチューニング -> 量子化 GPTQ フル 0.9411 36秒 3 ファインチューニング -> 量子化 AWQ フル 0.8292 39秒 4 ファインチューニング -> 量子化 SignRound フル 0.9393 33秒 参考 ファインチューニング(量子化なし) - フル 0.9445 31秒
  13. - GPTQは校正データに過剰適合する性質がある。また、今回のデータは、学習データ(=校 正データ)と評価データの性質が非常に近い。 - よって、今回の実験設定においては、GPTQがうまく機能した可能性がある。 考察1 なぜNo.2(GPTQ)の性能が高いか No. 順番 量子化手法

    ファインチューニング CVスコア↑ 1 量子化 → ファインチューニング bitsandbytes LoRA 0.9364 2 ファインチューニング -> 量子化 GPTQ フル 0.9411 3 ファインチューニング -> 量子化 AWQ フル 0.8292 4 ファインチューニング -> 量子化 SignRound フル 0.9393 参考 ファインチューニング(量子化なし) - フル 0.9445
  14. - パラメーター調整不足、与えた校正データ数が不十分だった可能性がある。 考察2 なぜNo.3(AWQ)の性能が低いか No. 順番 量子化手法 ファインチューニング CVスコア↑ 1

    量子化 → ファインチューニング bitsandbytes LoRA 0.9364 2 ファインチューニング -> 量子化 GPTQ フル 0.9411 3 ファインチューニング -> 量子化 AWQ フル 0.8292 4 ファインチューニング -> 量子化 SignRound フル 0.9393 参考 ファインチューニング(量子化なし) - フル 0.9445
  15. - 推論時間はNo.1(QLoRA)が一番長い。これは、4bit量子化した重みを16bitのLoRAア ダプターと合わせるために元に戻す処理(dequantize)に余計な時間がかかることが原 因と考える。 - 4btiと16bitが混ざることによる推論速度低下は、量子化とLoRAファインチューニングを より効率的にする手法を提案した論文(L4Q)でも紹介されている。 考察3 なぜNo.1(QLoRA)の推論時間が長いか No.

    順番 量子化手法 ファインチューニング CVスコア↑ 推論時間↓ 1 量子化 → ファインチューニング bitsandbytes LoRA 0.9364 46秒 2 ファインチューニング -> 量子化 GPTQ フル 0.9411 36秒 3 ファインチューニング -> 量子化 AWQ フル 0.8292 39秒 4 ファインチューニング -> 量子化 SignRound フル 0.9393 33秒 参考 ファインチューニング(量子化なし) - フル 0.9445 31秒
  16. - 今回の実験設定においては、フルファインチューニング -> 量子化の手法が性能が よかった。 - ただし、予備実験として行った0.6Bでの結果では、QLoRAファインチューニングの 性能が最も高かった。そのため、結果が変わりうる可能性がある。 「QLoRAファインチューニング vs

    ファインチューニング -> 量 子化はどちらの性能が高い?」の私なりの結論 私の考えとしては、まずはデファクトスタンダードの QLoRAを試すべき。次に、 条件によってはフルファインチューニング -> 量子化の方が有効な場合もあるこ とも覚えておくと良い。
  17. Kaggle MAPコンペ: https://www.kaggle.com/competitions/map-charting-student-math-misunderstandings QLoRA: https://arxiv.org/abs/2305.14314 GPTQModel: https://github.com/ModelCloud/GPTQModel GPTQ: https://arxiv.org/abs/2210.17323 llm-awq:

    https://github.com/mit-han-lab/llm-awq AWQ: https://arxiv.org/abs/2306.00978 vllm: https://github.com/vllm-project/vllm auto-round: https://github.com/intel/auto-round SignRound: https://arxiv.org/abs/2309.05516 llm-compressor: https://github.com/vllm-project/llm-compressor L4Q: https://arxiv.org/abs/2402.04902 参考文献
  18. sinchir0 メイン著者 寄稿 者 レビュワー レビュワー & 推薦文 u++ さん

    takaito さん sakami さん chumajin さん deoxy さん esprit さん kami さん RihanPiggy さん RabotniKuma さん Inoichan さん charmq さん Kohei さん iwiwi さん flowlight さん currypurin さん 関わっていただいた全ての人に感謝いたします🙏