TensorRT-LLMのFP8比較設計:GPUと品質を固定する

CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針

TensorRT-LLMのBF16・FP8・W4A16とFP8 KV cacheを、GPU世代、model revision、calibration、品質、memory、latencyの固定条件から比較する机上の検証設計です。

GPU世代とcalibrationを先に固定し、FP8・AWQ・GPTQを品質と性能で比較する検証設計

先に結論

TensorRT-LLMのFP8採用は、bit数だけで決めません。GPU世代、model revision、TensorRT-LLM/ModelOpt、calibration data、KV cache方式を固定し、BF16 baselineと同じ入力で品質・peak memory・TTFT・decode throughputを比較して初めて判断できます。公式support matrixで適用外を先に落とし、公式guideの性能表にある値を自分の環境の結果へ置き換えないことが重要です。

確認日時: 2026年8月24日(Asia/Tokyo)
対象仕様: TensorRT-LLM Quantization page(2026年8月9日更新、commit 1cef02e)、FP8 Quantization guide(2025年9月15日更新、commit 0c9430e)、Generation with Quantization example(2025年6月29日更新、commit de97799)。
検証区分: 公式仕様から組み立てた机上の比較設計です。GPU上のbuild、推論、benchmark、品質評価、network負荷は未実施で、数値結果や採用可否を断定しません。

前提と固定条件

Quantization pageはFP4、FP8 per-tensor、FP8 block scaling、FP8 rowwise、FP8 KV cache、NVFP4 KV cache、W4A16/W4A8 AWQ・GPTQなどを別recipeとして掲載しています。model matrixとhardware matrixは同じ列構成でも値が異なるため、「modelが対応」と「GPUが対応」を別々に通過させます。BF16 checkpointから作る条件には公式資料内でも表現差があり、FP8 guide本文はcompute capability 8.9超と記す一方、公式exampleの判定コードは8.9以上を有効化し、support matrixもAdaをFP8 per-tensor対応としています。使用するreleaseのmatrixと対象GPUを照合し、既成checkpointを読む場合とCalibConfigを使うoffline量子化の条件を混ぜません。

最初の比較runでは、次の値をmanifestへ保存します。

固定する値変えてよい値
hardwareGPU型番・台数、compute capability、driver、CUDA、電力設定なし。GPU世代を変えるrunは別実験
softwareTensorRT-LLM、ModelOpt、PyTorch、container digest、commitなし。更新は別実験
modelmodel revision、tokenizer、chat template、prompt set量子化方式、KV cache方式
workloadinput/output token長、batch、concurrency、warm-up、試行回数方式ごとのscaleとcalibration設定

比較方法と観測項目

baselineは同じmodel revisionのBF16または公式に指定した高精度checkpointです。比較対象は、GPU・model matrixで許可された範囲だけに絞り、たとえばFP8 per-tensor/block、W4A16 AWQ/GPTQ、FP8 KV cacheを一度に全部有効にしません。まずweight/activationの方式、次にKV cacheを加える二段階に分けます。FP8 weight/activationではcalibration dataset、batch、最大sequence長、tokenizerの長さ制限を固定し、calibration dataの代表性を品質評価へ含めます。

from tensorrt_llm.llmapi import QuantAlgo, QuantConfig

quant_config = QuantConfig(
    quant_algo=QuantAlgo.FP8,
    kv_cache_quant_algo=QuantAlgo.FP8,
)
# 既成checkpointと自作calibrationのrunを同じmanifestで比較しない

上の設定形は公式exampleにあるFP8とFP8 KV cacheの指定を示すだけで、実行結果ではありません。実験では、方式ごとに生成したengine/checkpointのhash、build時間、artifact size、起動時間、load errorを保存します。公式FP8 guideのperformance tableは4枚のH100-SXM-80GBと特定のLlama構成など、ページ内の条件に依存する実例です。そこにあるthroughputやlatencyを、別GPU・別modelの期待値として流用しません。

結果の読み方とトレードオフ

観測軸見るもの誤った結論
品質固定taskの正解、schema、拒否、長文、tool callの差短いpromptが同じなので品質も同じ
memoryweight load、KV cache増加、warm-up、steady state、peak、OOMweightが小さいので長文も安全
性能TTFT、ITL、decode throughput、queue、timeoutを長さ別に分離公式demoのtok/sを自環境へ移植
運用build再現性、artifact rollback、metrics、known issue、license一度engineが作れたのでproduction投入

KV cacheをFP8へ変えると、長文や高concurrencyで使えるmemoryの余地が変わる可能性がありますが、quality degradationのリスクも公式guideが明記しています。したがって、短い単発応答だけでなく、実際に許容するsequence長とconcurrencyの組み合わせを固定した評価が必要です。量子化方式ごとの優劣は、対象model、GPU、kernel、batch、prompt distributionに依存します。

適用範囲とpromotion gate

productionへ進める最低条件は、(1) modelとhardware matrixの対応、(2) 固定corpusの品質が既定範囲、(3) memory・TTFT・throughput・timeoutがSLO内、(4) health・metrics・logで失敗を検知できること、(5) 旧artifactへ戻す手順を再実行できることです。thresholdは組織のSLOとcapacity planから決め、この資料から新しい数値を作りません。

適用外は、support matrixにないmodel/GPU、未固定のlatest package、calibration dataを別modelから流用するrun、特定の4枚GPU実例を単一GPUへ一般化する判断です。FP8を使える世代でも、NVFP4、W4A16、FP8 block scalingのすべてが同じように使えるわけではありません。

入門記事

初めて量子化の位置を確認する場合は、TensorRT-LLM量子化の基本でweight、activation、KV cacheと対応表を先に確認してください。

参考資料