llama.cpp Releases更新于

[预发布 / 持续构建版本] b11404

[预发布 / 持续构建版本] metal : 少行数 MMA mat-mul (#29869) * metal : 面向投机解码的少行数 MMA mat-mul 与批量拷贝 投机解码每步验证若干草稿 token。在没有 tensor API 的情况下,Metal 使用 mat-vec 内核执行这些 mat-mul,其耗时随每个 src1 行增加,因此 M3 Ultra 上的 DFlash2 解码比串行解码更慢。- 在 8x8…

预发布 / 持续构建版本:这是实验性构建版本,不是稳定发行版。

metal : 少行数 MMA mat-mul (#29869) * metal : 面向投机解码的少行数 MMA mat-mul 与批量拷贝 投机解码每步验证若干草稿 token。在没有 tensor API 的情况下,Metal 使用 mat-vec 内核执行这些 mat-mul,其耗时随每个 src1 行增加,因此 M3 Ultra 上的 DFlash2 解码比串行解码更慢。 - 在 8x8 simdgroup 矩阵上为 2..16 个 src1 行添加 mat-mul 内核:每个权重对所有行只反量化一次,线程组中的各 simdgroup 分摊 K。Q4_0、Q8_0 和 Q5_K 有各自的内核,F32、F16、Q4_1、Q5_0、Q5_1、Q4_K 和 Q6_K 使用基于 16 个权重反量化器的通用路径,2 行的 Q4_0 使用 mat-vec 内核的 2 行变体 - 仅在没有 tensor API 的 MTLGPUFamilyApple7+ 上,从它们在 M3 Ultra 上胜过 mat-vec 内核的行数起使用(F32:6,F16、Q4_K、Q5_0、Q5_1:3,其他类型:2) - 融合表:MUL_MAT + ADD 在 MMA 存储中添加同形状残差,同一两个张量之间至多 16 个相邻同布局 f32 拷贝作为一次 dispatch 运行 - 融合检查和 ggml_graph_optimize 接收设备属性,因此重排仅在能够融合的设备上打包 MUL_MAT + ADD,且适用于所有 src1 行数 - 当重排打包一个组时,视图不计入 GGML_METAL_FUSION_MAX,因此中间带视图的 16 个循环状态快照拷贝仍保持为一个组 - encoder 检查被融合组的内部节点以判断并发性,按其范围跟踪已写入的视图,并且不把 CPY 的目标计为读取 - CONCAT 在行数很少时将长行拆分到多个线程组 - 测试:test-backend-ops 中的少行数 MUL_MAT、MUL_MAT_ADD、CPY_BATCH 和 CONCAT 用例(带有用于拷贝顺序的 prepare_graph 钩子)、test-metal-graph-optimize、test-metal-cpy-batch-alias * metal : 移除 CPY_BATCH 融合和内存范围更改 按照评审中的建议,移除批量拷贝融合及其内核和测试,并还原 内存范围更改。 内存范围、图重排和 CPY encoder 再次与 master 上相同。 * cont : 清理 * cont : 去除 has_tensor 门控 * cont : 清理 operand/residual 逻辑 * cont : 去除 Q4_0 ne11=2 特殊情况 * cont : 添加 kernels/mul_mv_mma.metal * cont : 整合 mma 流水线选择逻辑 * cont : 将融合逻辑与设备属性解耦 --------- Co-authored-by: Georgi Gerganov

网站: - https://llama.app

证明(Attestations): - https://github.com/ggml-org/llama.cpp/attestations/52722020

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(骁龙:CPU、Adreno GPU、Hexagon NPU) - 安装指南

Android: - Android arm64 (CPU) - Android arm64(骁龙: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: - 已禁用 - openEuler x86 架构(310p) - openEuler x86 架构(910b,ACL Graph) - openEuler aarch64 架构(310p) - openEuler aarch64 架构(910b,ACL Graph)

UI: - UI

原始出处

llama.cpp Releases

内容说明

原始发布及相关权利归来源方。

机器翻译 · 请以原文为准