llama.cpp发布b12000,新增OCP FP8 E4M3量化支持
llama.cpp的b12000版本合并PR #27512,为GGUF转换和CPU推理加入OCP FP8 E4M3支持,同时附带多项FP8转换修复与限制说明。
llama.cpp发布b12000版本,合并PR #27512,为项目加入OCP FP8 E4M3量化格式支持。该版本说明列出了转换、CPU内核、测试与后端限制等多处配套改动。
发布说明由仓库自动化账号github-actions[bot] 发布,PR作者信息与代码审查署名涉及Sigbjørn Skjæret。
FP8改动覆盖转换链路
PR #27512 的改动集中在GGUF转换环节。说明中提到,转换时FP8需要一并物化input_scales;逐行FP8此前会错误地落入NVFP4转换路径,原因是NVFP4仅按维度判断,现在增加了对FP8的dtype检查。
FP8的QKV投影scale需要与权重相同的方式重排。转换期间允许其余FP8张量被反量化,仅含FP8的压缩张量checkpoint可使用tensor-strategy。说明还提到修复了RedHatAI/Qwen3.8-27B-NVFP4的转换,以及Qwen3-Next中融合qkvz与FP8的转换。
- 转换时FP8与权重一同物化input_scales
- 逐行FP8误入NVFP4路径的问题已修复
- FP8 QKV投影scale按权重方式重排
- 仅含FP8的压缩张量checkpoint支持tensor-strategy
- 修复Qwen3-Next融合qkvz与FP8的转换
融合与后端限制
说明写明,FP8的QKV融合被暂时禁用;使用 --fuse-gate-up-exps时也避免融合FP8,原因是权重可能不同。转换过程中未融合FP8时会发出警告。
Metal后端最终选择将FP8加入黑名单,而不是采用白名单方案。CPU侧新增F8_E4M3快速内核,并支持FP8的跨步拷贝;快速FP8 CPU路径在RISC-V上留待后续处理,arm原本已被排除在快速路径之外。
- FP8的QKV融合暂时禁用
- --fuse-gate-up-exps不融合FP8,并发出警告
- Metal后端将FP8列入黑名单
- CPU新增F8_E4M3快速内核与跨步拷贝支持
- RISC-V的快速FP8 CPU路径留待后续
测试与发布产物
说明提到新增FP8专用编码器与解码器测试,将test_conversion_fp8.py移入behavior-check.yaml执行,并把FP8测试从llama-arch抽为独立test-fixture。此外还修复了Windows上惰性张量在清理前未unmap的问题,以及若干类型检查与CI失败。
b12000提供macOS arm64/x64、iOS XCFramework、Ubuntu(含CUDA 12/13、ROCm 10.0、Vulkan、SYCL、OpenVINO)、Windows(含CUDA、Vulkan、SYCL、ROCm)、Android arm64与Snapdragon等平台的二进制包。openEuler构建标注为DISABLED,macOS arm64的KleidiAI版本同样标注DISABLED。
- 新增FP8编码器与解码器测试
- test_conversion_fp8.py移至behavior-check.yaml执行
- FP8测试抽为独立test-fixture
- Windows惰性张量清理前先unmap
- openEuler构建与macOS KleidiAI版本标注DISABLED