预发布 / 持续构建:这是一个实验性构建,不是稳定版本。
cuda: tile the lightning indexer over keys and tokens for 4 heads (#29901) * cuda: tile the lightning indexer over keys and tokens for 4 heads 由于头数太少,无法填满一个 wmma tile,一个 block 将 64 个 key 与 8 个 token 进行打分:key 以半精度一次性载入,query 每次处理一个 头,每个线程持有一个 key 对应两个 token,因此任何点积都不需要 跨线程归约。小于一个 token tile 的批次继续使用 vector kernel。 test-backend-ops 测量为 4 heads。 * cuda: multiply the lightning indexer tile in float 回应 am17an 的评审意见:一旦单个 q * k 超出 f16 范围,half2 乘积就会溢出。query 在共享内存中保持 float,每个 key 的 half2 为两个 token 仅加宽一次,因此每个 乘积与求和都在 float 中计算。 * cuda: widen each lightning indexer key once for all heads tile kernel 同时载入所有头的 query 和权重,因此每个 key 元素只从 half 加宽一次并供给所有头,且只需一次 barrier。F16 key 被直接复制进 tile,无需经过 float 的往返转换。将 key 以 float 保存在共享内存中实测 更慢,占用率下降。 * cuda: stop the lightning indexer tile from spilling registers on ROCm tile kernel 的每个线程现在为单个 token 打分两个 key, 因此一个 warp 共享其 token 且 query 读取为广播:每个元素对 六次共享内存读取,而非九次,乘积数量相同。 内层循环按 8 展开,这使 gfx908 保持在 63 个 VGPRs 且无 溢出,而完全展开的循环需要超过一千个,并使内核在 R9700 上 快了 36x,在 CUDA 上也略有提升。网站: - https://llama.app
证明(Attestations): - https://github.com/ggml-org/llama.cpp/attestations/52734616
macOS/iOS: - macOS Apple Silicon(arm64) - macOS Apple Silicon(arm64,已启用 KleidiAI) 已禁用 - macOS Intel(x64) - iOS XCFramework
Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - CUDA 12.8 库 - Ubuntu x64 (CUDA 13) - CUDA 13.4 库 - Ubuntu arm64 (CUDA 13) - CUDA 13.4 库 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU、Adreno GPU、Hexagon NPU) - 设置指南
Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU、Adreno GPU、Hexagon NPU) - 设置指南
Windows: - Windows x64(CPU 版) - Windows arm64(CPU 版) - Windows arm64(OpenCL Adreno 版) - Windows x64(CUDA 12 版) - CUDA 12.4 DLL 文件 - Windows x64(CUDA 13 版) - CUDA 13.4 DLL 文件 - Windows arm64(CUDA 13 版) - CUDA 13.4 DLL 文件 - Windows x64(Vulkan 版) - Windows arm64(Vulkan 版) - Windows x64(OpenVINO 版) - Windows x64(SYCL 版) - Windows x64(ROCm 10.0 版)
openEuler: - DISABLED - openEuler x86 架构(310p) - openEuler x86 架构(910b,ACL Graph) - openEuler aarch64 架构(310p) - openEuler aarch64 架构(910b,ACL Graph)
UI: - UI