llama.cpp 项目发布了版本 b10242,引入了一个新的用于惩罚的后端采样器,允许将惩罚处理卸载到 GPU。此更改增强了 `common_sampler_init` 函数,并更新了 `llama_sampler_penalties` 结构以继承自 `llama_sampler_backend`,从而在后端实现频率和存在性调整。

  • 该实现包括后端初始化逻辑、惩罚应用以及后端采样中对 top-k 惩罚的支持。
  • 通过保留掩码后的 logit 为 -Inf,防止在采样过程中生成 NaN,从而提高了数值稳定性。
  • 验证确保重复惩罚值为有限值且大于 0,并针对无效参数添加了测试。
  • 该版本提供了适用于 macOS(Apple Silicon 和 Intel)、Linux(CPU、Vulkan、ROCm、OpenVINO、SYCL)、Android、Windows(CPU、CUDA 12/13、Vulkan、OpenCL、HIP、OpenVINO、SYCL)以及 openEuler 架构的二进制文件。