TKintegers三值权重GPU推理,吞吐超FP8三倍
原文:TKintegers K5: 3.21× prefill and 3.10× decode throughput vs TorchAO FP8 on NVIDIA L4 [R] [P]
我构建了 TKintegers,一种平衡三进制权重表示、转换器和 GPU 推理实现。最让我惊讶的结果是:NVIDIA L4 原生支持 FP8 张量核心,但我的 K5 实现吞吐量高于 TorchAO FP8 基线——尽管该 GPU 没有原生 K5 指令。在 Qwen2.5-0.5B-Instruct 上,使用固定匹配工作负载:- 预填充:K5 达到 3,402.85 tokens/s,而 FP8 为 1,061.58——3.21× 吞吐。- 解码:K5 达到 26.75 tokens/s,而 FP8 为 8.63——3.10× 吞吐。基线是标准 TorchAO 动态 E4M3 FP8,在 eager PyTorch 中运行。解码测量的是带 KV 缓存的固定 token 模型前向。什么是 K5?TK 代表 Ternary Kluster。K5 用五个平衡三进制数字表示每个权重代码,给出 243 个可能值。在此布局中,每个代码占一个字节。五个三进制位并不意味着五个二进制位。我的内核扩展有界瓦片进行计算,并使用 FP16 张量核心操作数和 FP32 累加。一些张量保持更高精度。对我来说,这就是为什么运行时与表示同样重要:K5 可以在现有硬件上超越此 FP8 基线,而无需专为 K5 构建的处理器。这些测量适用于此模型、工作负载和实现;它们并不证明能胜过所有 FP8 运行时。FP16 对照组比两者都快。仓库包括转换器、原生内核、基准脚本和记录证据:https://github.com/CodeMasterCody3D/tkintegers https://youtu.be/JFDBuwMoL0s?is=ucya9errGEh4xJ2L 欢迎对内核设计和基准方法的技术反馈,尤其是独立复现。