Skip to content

Releases: 1115714829/llama.cpp-v100

v100-2.0.1.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 08:41

本版更新

  • Qwen3.8-Flash-Next 支持 2 张 V100-16GB:Qwen3.8-Flash-Next(UD-Q4_K_XL + MTP)可以在 2 张 16 GB 的卡上运行,上下文 262144;启动命令见Qwen3.8-Flash-Next 详情页命令 C。上一版在 2 张卡上无法启动。
  • 2 卡需要的主机内存:约 63 GiB(上下文 262144,-c 越小需要的越少)。推荐用分属不同 CPU 插槽的两张卡;同一插槽的两张卡也能跑,但主机内存余量很小,每轮也稍慢。
  • 6 卡与 27B 没有退化:与 2.0.1 同场对比,6 卡 Qwen3.8-Flash-Next 与 27B 各档速度的变化都在测量波动以内,温度 0 输出相同。
  • 显存:6 卡 Qwen3.8-Flash-Next 与 27B 的每卡显存峰值与 2.0.1 相同。
  • 网页界面随源码自带:编译时直接嵌入程序,克隆下来即可离线编译,整个编译过程不需要联网,也不需要 Node.js。上一版自己编译时要从 Hugging Face 下载界面文件,下载不到时编出的服务没有网页界面。
  • Docker 镜像更新为 ghcr.io/1115714829/llama.cpp-v100:2.0.1.1(x86_64 与 IBM Power AC922 多架构)。
  • 命令行参数与默认值与 2.0.1 相同。
  • 文档:README 精简,新增 AI 部署指引;详情页只保留用法,实测数据集中在历次实测数据。

实测:2 卡(开思考 + 模型卡采样参数)与 6 卡对 2.0.1 的同场对比(温度 0、不开思考)见历次实测数据 · 2.0.1.1。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-2.0.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:13

本版更新

性能

  • 大 MoE(Flash-Next)预填充大幅提升:约 20 万 token +48%、约 1.6 万 token +38%。
  • 大 MoE 吐字提升:约 20 万 token +8%、约 1.6 万 token +18%、短提示 +11%。
  • 27B(DFlash2)约 20 万 token 预填充 +3%、吐字 +2%,短提示吐字 +5%。

修复

  • 27B 6 卡长上下文下温度 0 输出跨启动不一致。
  • DFlash2 / MTP 投机解码在温度 0 且多路(-np > 1)时服务中止(Poqianhu7895 报告,PR #4)。
  • 大 MoE 吐字首轮的额外延迟。
  • 单卡 MTP 启动崩溃,以及若干多卡预填充下的越界与启动崩溃。
  • 多模态:FFmpeg 相关诊断信息改进(umacro,PR #3)。

显存

  • 各卡显存峰值都不高于 2.0.0,大 MoE 每卡约省 30~70 MiB,省下的显存用于常驻更多专家。

新增与默认值

  • 新参数 --fit-mmproj on|off(默认 on,与此前行为相同):--fit 是否把多模态投影器的估算显存计入每卡余量。
  • 其余参数的默认值与 2.0.0 相同。

实测

与 2.0.0 同一时段交替测量,温度 0、不开思考;全部表格与条件见 历次实测数据 · 2.0.1。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-2.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 18:33

本版更新

许可证

  • 本版本起采用 GPL-3.0(全文见 LICENSE);1.1.1 及更早版本为 MIT。上游 llama.cpp 的 MIT 许可文本保留为 licenses/LICENSE-llama.cpp,移植的第三方代码保留各自原许可(见 licenses/README.md)。

新增:大 MoE 模型 Qwen3.8-Flash-Next 的 V100 专项支持

  • 多卡切分:--split-mode tensor 时,路由专家按专家分到各卡(专家并行),注意力、线性注意力(GDN)、共享专家与残差流混合等稠密部分按张量并行。推荐配置为 6 × 16 GB、上下文 262144、带 MTP,模型下载、官方推荐采样参数、启动命令与参数说明见 docs/v100/moe-2.0.0.md。(1.1.1 已能用上游代码加载运行这个模型,但没有 V100 专项优化。)
  • 专家放在显存与主机内存两级:启动时按每张卡放下模型其余部分、KV 缓存与计算缓冲之后剩下的显存,自动决定每层常驻显存的专家,其余专家放在 GPU 能直接读取的锁页主机内存里,仍由 GPU 计算,不需要 --n-cpu-moe / -ot;专家并行时默认给每张卡留 800 MiB 运行期余量(-fitt 可改)。主机内存里的专家按 GPU 所在的 CPU 节点(NUMA)放置,启动时实测各 GPU 读取各节点的速度后决定。
  • 专家路由画像:--expert-profile FILE(每行 layer expert count [launches])决定每层哪些专家常驻显存,并按路由次数重新安排专家在各卡之间的分配,使各卡分到的计算量接近;不给画像时放置与分配不变。带画像时多卡求和的顺序随分卡变化,输出与不带画像时有极细微的差别,数值上等价。--dump-expert-routing FILE 在程序正常退出时写出这次运行的路由次数与发射次数(格式与 --expert-profile 相同,多卡时每卡一份);scripts/v100-expert-profile.sh 用一段校准文本生成并校验画像。
  • n-gram 嵌入表与词嵌入表放主机内存:两张表放在映射的锁页主机内存里,各卡共用一份、由 GPU 直接查表,不占显存;不依赖页缓存,每次启动后的第一个长请求与之后的请求预填充一样快。
  • 稀疏注意力(QSA):全注意力层只对选中的位置做注意力,不再建立与上下文长度成正比的稠密打分与掩码张量,6 张 16 GB 的卡可以开到 262144(此前的上游实现在 V100 上实际按全部上下文做稠密注意力)。
  • MoE 专家矩阵乘:预填充时路由专家改用 Volta 张量核的融合内核(支持 Q4_K、Q5_K、Q5_1、Q8_0),gate/up 与 SwiGLU 一起算。
  • MTP 投机解码(--spec-type draft-mtp)的 V100 优化:草稿文件只含 MTP 层时借用主模型的词嵌入与输出头;多步草稿链在 GPU 上连续执行、每轮只回传一次结果;新参数 --spec-draft-window(默认 32768)让草稿层只看最近这么多个位置,长上下文下草稿不再变慢;草稿显存计入启动时的规划并分到各卡。
  • 新参数 --spec-draft-ubatch N:草稿上下文单独的物理批大小,默认继承主模型的 -ub(与 1.1.1 的行为相同);MTP 草稿只需要小批,设小(如 256)可以省下草稿计算缓冲的显存。

运行时与内核

  • 多卡执行计划第一次运行时由各卡的发射线程并行提交;吐字时合并多个小算子;主机输入合并后经锁页暂存一次上传。每轮开销减少,输出逐位不变。
  • 不支持 BF16 的 GPU(如 V100)上,模型里的 BF16 权重在加载时转为 F16(超出 FP16 范围的有限值截到 ±65504)。
  • Volta 上 F32 权重的小批矩阵乘(不超过 4 列)改走向量内核。
  • 层切分(--split-mode layer)的多卡预填充流水:多个批同时在各卡上处理不同的层;卡间 P2P 按硬件能力自动开启,层间激活不经主机中转。

修复

  • 目标模型开启 top-k 输出时(投机解码的设备 top-k 或拒绝采样),没有输出行的预填充批与预留的计算图不一致,导致每批重新规划显存并全卡同步(MoE + MTP 实测每批约 20 ms)。27B 现有 DFlash2 配置不触发,本修复为 27B 后续支持 MTP 预先处理。
  • 层切分(--split-mode layer)配合 DFlash2 草稿时启动即失败(1.1.1 中已存在,张量切分不受影响);启动时的显存规划同时计入 DFlash2 草稿的隐状态缓冲。
  • ggml 分配器对只作叶子出现的输入变大时的覆盖问题。
  • POWER9(ppc64le)上 CPU 计算 IQ1_S 量化点积的结果错误(只影响 CPU 计算,GPU 推理不受影响)。

性能(实测)

2026-10-11,IBM AC922(2 × POWER9,96 GB 内存)+ 6 × Tesla V100-SXM2-16GB,发布构建 4d50148cc,上下文 262144;真实代码 = 一个开源 C++ 项目的源码加一句概括要求,不开思考。

  • Qwen3.8-Flash-Next UD-Q4_K_XL + MTP(shared-Q4_K_M 草稿,每轮 3 个)、带专家路由画像,温度 0,每个请求都新起服务:约 20 万 token(686 token 时自然结束)预填充 2334.8 / 2340.8 tok/s、吐字 107.9 / 109.7 tok/s;约 1.6 万 token(输出 768)预填充 2022.2 / 2069.1 tok/s、吐字 117.4 / 116.3 tok/s;短提示(输出 256)吐字 134.1 / 134.4 tok/s。3 次冷启动与 20 分钟 41 个混合请求 0 失败,单卡显存峰值 14974 MiB。
  • Qwen3.8-27B 与 1.1.1 同一时段交替测量(DFlash2 F16,每轮 7 个):短提示吐字 186.2 / 188.9 → 218.3 / 206.9 tok/s;约 1.6 万 token 预填充 2863.4 / 2842.7 → 3119.1 / 3121.1 tok/s;约 20 万 token(实际处理 195048 token)预填充 2047.8 / 2047.1 → 2066.6 / 2063.2 tok/s、吐字 114.5 / 115.6 → 122.2 / 127.0 tok/s;短提示温度 0 输出逐字相同。
  • 同一台机器上,大 MoE 的约 20 万 token 预填充比 27B 高约 13%,吐字约为 27B 的 87%。

说明

  • 1.1.1 README 预告的专家“显存 → 主机内存 → 硬盘”三级存放,本版只实现了前两级;主机内存放不下时无法启动。
  • README 改为主页加两个详情页:docs/v100/27b.md(27B + DFlash2)与 docs/v100/moe-2.0.0.md(大 MoE + MTP);1.1.1 及更早版本的测试表见对应标签的 README。
  • Docker 镜像随版本更新为 ghcr.io/1115714829/llama.cpp-v100:2.0.0(x86_64 与 IBM Power AC922 多架构)。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.1.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 14:53

本版更新

  • 合并上游 llama.cpp v0.6.0。本项目对投机解码与服务端的改动(DFlash2 设备端注入与按 (序列, 位置) 取特征列、稀疏拒绝采样与只禁 token 的 logit bias、多路注入合并、验证批形状保持、--prefill-pace、先建投机解码再加载视觉模块与 -mmdev、GDN 检查点对数间隔保留、跨 slot 复用更长前缀)移植到上游新的批处理接口(common_batch / llama_process);DFlash2 注入批继续使用旧接口 llama_batch / llama_decode。
  • 合并过程中发现并已消除的一处额外开销(发布版本没有这项开销,性能与 1.1.0 相同):上游 v0.6.0 对普通批也会构建混合批(嵌入 + token)的输入分支,每批多 3 个主机输入张量及其节点,4 卡张量切分下每个 2048 批预填充多约 10 ms。现在混合批分支只在批中确实混合时才构建,这项开销不再存在;上游对递归状态复制的修复(#29856)保持不变。
  • 与 1.1.0 同一时段交替测量:4/6 卡 T=0 输出逐字相同(每 token 5.66 / 5.65 ms);4 卡真实 16K 预填充 2579.0 / 2585.4 tok/s;2 卡 Q4 262144 合成 209715 预填充 1082.6 / 1081.0 tok/s、每轮投机 43.7 / 43.7 ms;6 卡 524288 合成 419430 预填充 1505.9 / 1503.2 tok/s、吐字 239.6 / 239.4 tok/s;4 卡、6 卡两路并发首字相同;6 卡多模态图片、视频正常;各卡显存峰值相同。
  • 为 Qwen3.8-Flash-Next 做准备:随上游 v0.6.0 带入 qwen4exp 架构(Qwen3.8-Flash-Next,大 MoE)的加载与运行支持;尚未做 V100 专项优化,专项优化在 2.0.0 进行。
  • Docker 镜像随版本更新为 ghcr.io/1115714829/llama.cpp-v100:1.1.1(x86_64 与 IBM Power AC922 多架构)。
  • README 参数说明补充:--cache-ram、--ctx-checkpoints 与主机内存占用的关系,请求级思考强度 reasoning_effort,ppc64le 上自动设置的 NCCL_P2P_LEVEL=SYS。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 15:22

本版更新

  • 修复 6 卡多路服务长上下文崩溃:多路同时处理各自超过 32768 的长提示词时(如带大图片的 Agent 会话),空闲 GPU 分担注意力的工作缓冲随多路切换而重建,ggml-cuda 的 CUDA Graph 缓存只比较子图张量、仍重放旧捕获,向已释放的显存写入(illegal memory access 或段错误)。CUDA Graph 缓存现在把挂载的分担描述符纳入是否重新捕获的判断。回归用例(6 卡 -np 2,两路各约 4 万 token + 6 张大图):1.0.9 两次都在约 23 s 时崩溃,1.1.0 两次都完成。
  • 与 1.0.9 同一时段交替测量:4/6 卡 T=0 输出逐字相同;6 卡 200K 合成预填充 2085.5 → 2082.0 tok/s、吐字 300.2 → 300.3 tok/s,6 卡 419430 1469.1 → 1467.0 tok/s;4 卡真实 16K 预填充 2554.5 → 2561.0 tok/s;4 卡 200K 合成(5 轮交替平均)预填充 1754.0 → 1752.2 tok/s、吐字 281.3 → 281.3 tok/s;3 卡、2 卡、并发、多模态持平,显存峰值逐卡相同。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.0.9

Choose a tag to compare

@github-actions github-actions released this 02 Oct 05:28

本版更新

  • Q4 混合量化的小批量矩阵乘:Q4_K 的小批量内核按量化类型做成 codec,扩展到 Q2_K、Q3_K、Q5_K、Q6_K(加载时原地重排、字节数不变,M=1~64);Q4 配置启用 gate/up 融合(SwiGLU 直接写出)与多权重融合(2~4 个共享输入的权重一次启动)。与 1.0.8 同一时段交替测量:2 卡 Q4 合成 102400 吐字 193.0 → 212.2 tok/s(+10%)、预填充 1419 → 1438 tok/s,3 卡 Q4 吐字 220.1 → 240.9 tok/s(+9.5%)、预填充 1902 → 1929 tok/s;2 卡 Q4 真实内容 8 条提示词每 token 耗时 T=0 11.58 → 10.31 ms、T=0.6 11.07 → 10.43 ms;困惑度 2.4097 → 2.4057(-ub 8)、2.4067 → 2.4047(-ub 32)。Q5_K/Q6_K 改为 f16 计算,输出与 1.0.8 有细微差别。逐项消融:gate/up 与多权重融合单独约 +3%。
  • q4_0 KV 缓存反量化向量化(grouped 验证注意力与 vec 路径,逐位不变),2 卡 Q4 100K 吐字约 +1.2%;修复 q4_1 / q5_1 KV 缓存在 SM70 上 32 位未对齐读取导致的崩溃。
  • 以上来自外部贡献者 ATIVX928(PR #2);合入时补了 test-backend-ops 用例(Q2_K~Q6_K 小批量矩阵乘 M=1~65、gate/up 与多权重融合、k 不是 512 倍数的 M=17~32),并修正 M=17~64 且 k 不是 512 倍数时 gate/up / 多权重融合未回退的问题。
  • 说明:PR 中 ssm_alpha/ssm_beta 的 F32 双权重融合实测无收益,未合入。
  • Q8 配置与 1.0.8 相同:4/6 卡 T=0 输出逐字相同,各项速度持平(4 卡真实 16K 预填充 5 轮交替 2576.4 / 2576.5 tok/s)。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.0.8

Choose a tag to compare

@github-actions github-actions released this 02 Oct 05:00

本版更新

  • 6 卡长上下文预填充:6 卡时每个全注意力层有 2 张 GPU 未分到注意力头。上下文达到 32768 且一批不少于 256 个 token 时,这 2 张 GPU 从相邻 GPU 直接读取 KV 后段(不复制)、计算部分注意力,在原 GPU 上按 LSE 合并;切分点在设备上按实际 KV 长度计算。6 卡 524288 合成 209715 预填充 1800 → 2091 tok/s(+16%),419430 1200 → 1490 tok/s(+24%);每卡显存多约 300 MiB。
  • Split-D 预填充注意力:补回 K 双缓冲;GPU 未占满(CTA 数少于 4 倍 SM 数)时每个 KV 窗口分两段同时计算后合并。4 卡 200K 合成预填充 1637 → 1759 tok/s(+7.4%),真实 16K 2551 → 2578 tok/s。
  • grouped 投机验证注意力小幅优化(单次 326 → 306 µs),4 卡 200K 吐字 278.4 → 281.2 tok/s。
  • 视觉模块(mmproj)按层分到主模型使用的全部 GPU(2~6 卡),按各 GPU 加载后剩余显存连续分配、每张 GPU 至少一层,调度器按权重位置自动插入跨卡拷贝。最高一张 GPU 的显存峰值:6 卡 12220 → 11788、5 卡 13911 → 13444、4 卡 14151 → 13547、2 卡 14966 → 14528 MiB,各卡相差 ≤ 170 MiB;图片、视频编码耗时不变(同一图片/视频各重复 6 次取中位数),输出逐 token 相同。显存余量不足、处理图片时显存不够的配置,可降低上下文、改用 Q4,或用 --no-mmproj-offload 把视觉模块放 CPU。
  • meta 后端计划槽 6 → 8,长请求的多种预填充图不再挤掉解码计划。
  • 底线:与 1.0.7 同一时段交替测量,4/6 卡 T=0 输出逐字相同;2 卡 Q4 100K 预填充 1415 → 1419 tok/s,3 卡 Q4 100K 1881 → 1902 tok/s,6 卡 16K 持平;多路并发首字相同或更快。
  • 说明:grouped 验证注意力的 KV 预取、softmax 打包等尝试实测无收益或变慢,已撤回。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.0.7

Choose a tag to compare

@github-actions github-actions released this 01 Oct 05:52

本版更新

  • 3 卡注意力负载均衡:注意力的 Q/gate/输出从每卡 6/6/12 个头改为 8/8/8;K/V 权重与缓存在相邻卡之间重叠分配(每卡 2 个 KV 头)。预填充每卡做两组 FlashAttention 后拼接,投机验证批每卡一次 FlashAttention(验证注意力内核支持每卡不均匀的 Q 头分界)。只在 3 卡、等比例切分时启用。1.0.5 的已知限制“3 卡注意力负载不均”在本版结案。3 卡 Q8、131072 与 1.0.6 交替测量:100K 预填充 1808 → 1972 tok/s(+9.0%)、吐字 232.8 → 239.7 tok/s(+3.0%),16K 预填充 2571 → 2675 tok/s(+4.1%)、吐字 282.8 → 291.5 tok/s(+3.1%);困惑度不变(1.6557 / 1.6554);每卡显存峰值 14800 → 15116 MiB。
  • 长上下文预填充少占显存:Split-D 预填充注意力的 K/V f16 镜像从整份改为最多 131072 行的窗口,超出时逐窗反量化、计算部分结果并在线合并。262144 上下文每卡显存峰值:2 卡 Q4 14140 → 13678 MiB(−462),4 卡 Q8 13299 → 12835 MiB(−464),6 卡 Q8 10234 → 9694 MiB(−540);预填充速度不变(2 卡 Q4 100K 提示词处理 70753 → 70853 ms,噪声内)。窗口取 131072 而不是 65536:后者显存再省约 250 MiB,但 2 卡 Q4 100K 预填充慢 0.46%。
  • 多卡建图的主机开销:多卡切分状态结构从约 4 KB 缩到约 1 KB(段数上限 16 → 4),零碎批次重建计算图更快。4 卡真实 16K 提示词处理 6332 → 6309 ms(1.0.6 → 1.0.7)。
  • Q4_K 小批量矩阵乘覆盖 M=17~64(此前 M>16 展开成 f16 走通用路径):2 卡 Q4、-ub 32 时替掉约 0.68 s 的 f16 展开,困惑度 1.7340 → 1.7323。
  • 非思考模式(presence penalty):penalty 改在设备端 top-k 之前扣分,不再每轮落到主机采样。4 卡(presence 1.5、温度 0.7)每轮 26.2 → 21.8 ms(−17%),吐字 139 → 172 tok/s。
  • 5 卡 all-reduce 分层(3+2);词表 top-k 分片支持各卡行数不均分,3/5/6 卡不再要求词表行数能被卡数整除。all-reduce 单测 2/3/4/5/6 卡全部通过(4 卡 2+2、5 卡 3+2、6 卡 3+3 自动分组)。
  • 多路共享 KV(--kv-unified,多路时):新请求可复用其他 slot 的更长前缀(复制序列并恢复检查点)。unified 默认不启用。
  • GDN 检查点保留策略:改为对数间隔保留(最近 8 个 + 每个 log2 区间的最早与最晚一个),长会话中段改写时不再因靠前的检查点被删而整段重算。40 轮 × 2K 的测试与 1.0.6 命中同一检查点,确认无退步。
  • 修复:1.0.1 起 FA 测试套件的两处崩溃(Volta 上不可用的 mma 变体、共享内存超限)已修复,现在退回 tile 内核;FA 全套 4470/4470。
  • 说明:Q4_K 的 gate/up 融合与多权重融合、Q4_0 验证注意力双块预取,实测无收益或变慢,已撤回,不进入本版。
  • 草稿模型量化对比(4 卡 Q8,各 2 遍):每轮产出 token(短/16K/128K)F16 3.23/2.51/2.46、Q8_0 2.76/2.55/2.75、Q4_K_M 2.84/2.56/2.43;每轮投机耗时 F16 21.3/22.1/26.0 ms、Q8_0 与 Q4_K_M 约 20.6/21.3/25.3 ms;每卡显存峰值 F16 13.3、Q8_0 12.9、Q4_K_M 12.6 GB。短任务 F16 接受率明显更高,长上下文三者在噪声内;显存够用选 F16,紧张时 Q8_0/Q4_K_M 损失很小。
  • 底线:与 1.0.0、1.0.6 同一时段交替测量(4 卡 Q8 262144,各 3 轮):200K 合成预填充 1.0.0 1641.4 / 1.0.6 1640.9 / 1.0.7 1647.2 tok/s(+0.35%),每轮投机耗时 28.75 / 28.72 / 28.67 ms,每卡显存峰值 14333 / 13299 / 12835 MiB;真实 16K 预填充 2547 / 2551 / 2568 tok/s。6 卡 200K 合成预填充 1.0.6 1804 / 1.0.7 1808 tok/s,吐字 294.2 / 297.5 tok/s。4/6 卡 T=0 输出与 1.0.6 逐字相同。并发与 1.0.4 同一时段对照:各场景首字相同或更快(6 卡两路各约 11.5 万 token:55.2 / 117.7 → 51.8 / 110.5 s;4 卡两路各约 11.5 万:57.7 / 123.5 → 57.9 / 124.6 s);6 卡两路结束时每卡显存约 12.99 → 12.02 GB;合计吐字随各路接受率波动(单次测量),例如 4 卡两路各 16K 82.4 → 86.9 tok/s、6 卡两路各 11.5 万 28.1 → 29.3 tok/s。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.0.6

Choose a tag to compare

@github-actions github-actions released this 30 Sep 06:11

本版更新

  • 2、3、5、6 卡预填充提速:GDN 分块预填充支持任意每卡头数(此前只有每卡 12 头的 4 卡走分块,其他卡数退回逐 token 递归)。4 卡仍用原来的 TileLang 生成代码,输出逐位不变;其他头数用运行时参数,cumsum 改为通用扫描。6 卡 200K 合成预填充 1710 → 1801 tok/s(+5.4%),6 卡真实 16K 2568 → 2774 tok/s,2 卡 Q4 +8~10%,3 卡 Q8 +6%;困惑度不变。
  • Q4 配置吐字提速:新增 Q4_K 权重的小批量矩阵乘内核(M=1~16,m8n8k4 HMMA),加载时把 Q4_K 原地重排、字节数不变;M>16(含预填充)展开成 f16 走 cuBLAS。解码按量化类型做成 codec,将来可扩展到其他 K 量化。Q4 配置每轮投机耗时降低 5~9%,输出有细微变化,困惑度不变(2 卡 1.7321 → 1.7320)。gate/up 融合、多权重融合暂不支持 Q4_K。
  • 4 卡 Q8 配置的输出、速度与显存与 1.0.5 相同(与 1.0.0 同一时段交替对照:4 卡 200K 预填充 1641.0 对 1641.6 tok/s);并发与 1.0.4 持平。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。

v100-1.0.5

Choose a tag to compare

@github-actions github-actions released this 30 Sep 03:22

本版更新

  • 新增 Q4 配置:主模型 UD-Q4_K_M、KV 缓存 q4_0。SM70 的注意力内核(Split-D 预填充、grouped 投机验证)支持 q4_0 KV 缓存,此前 q4_0 KV 会退回通用内核(长上下文预填充慢一半以上);q4_0 与 q8_0 的反量化合并为按类型的模板。来自外部贡献者 ATIVX928(PR #1)。
  • 2~6 卡全面实测:每种卡数 × Q8/Q4 按能启动的最高上下文测单路与两路并发,数据见 README“卡数与量化适配”。2 卡用 Q4 配置可运行 262144(草稿用 Q4_K_M),3 卡 Q4 可运行 524288。
  • 修复:2 卡 internal(copy-engine)all-reduce 在精确归约下走了 BF16 线路,且对长度不是 16 字节倍数的张量直接中止(只影响 GGML_CUDA_ALLREDUCE=internal)。来自 ATIVX928(PR #1)。
  • 1.0.4 已知问题结案:“4 卡 200K 预填充比 1.0.3 慢约 0.2%”经同一时段交替测量(1.0.3 / 1.0.4 紧挨着各 4 轮),每个 2048 批只多 0.9~1.6 ms(0.07~0.13%),在本机测量误差内,也无法归到任何一个改动,判定不是回退。
  • 4 卡、6 卡 Q8 配置的输出与 1.0.4 逐字相同,速度与显存不变。

V100(sm_70)专项优化版 llama.cpp。完整的更新日志见仓库里的 CHANGELOG.md。

附件是 x86_64 Linux 版本:用 CUDA 12.6 编译,只含 sm_70(V100)的代码。运行需要 NVIDIA 驱动 525 或更新,以及 CUDA 12 的运行库(cudart、cuBLAS)和 NCCL 2。
POWER9(ppc64le)等其他平台请按 README 自行编译。