开源llama.cpp Releases·原文 2026年10月11日本站收录 2026年10月12日

llama.cpp b11557将GGML_RPC_DEBUG改为数值日志级别并统一RPC日志出口

该版本把GGML_RPC_DEBUG从开关解析为 0–3 的详细度级别,并用共享log.h取代ggml-rpc.cpp与transport.cpp中重复的环境变量与宏代码。

AI解读:这次改动涉及llama.cpp的RPC后端日志:GGML_RPC_DEBUG不再按布尔开关处理,而是解析为数字,0 或未设置关闭调试日志,1–3 输出逐级更详细的内容,非数字值回退为 1。

按发布说明的划分,级别 1 记录一次性生命周期事件(后端与缓冲类型创建、缓冲区分配、图计算、图缓存淘汰),级别 2 记录逐张量传输和逐命令处理轨迹,级别 3 涉及传输层细节。

共享log.h成为RPC日志的唯一出口:LOG_ERROR/LOG_WARN/LOG_INFO输出无条件严重级日志,LOG_DBG/LOG_DBG2/LOG_DBG3受详细度级别控制,transport文件不再需要ggml-impl.h,服务器banner也改走ggml logger输出到stderr。

客户端和服务端都补充了日志:客户端覆盖握手、缓冲操作、张量传输、图计算与缓存决策,服务端覆盖逐命令分发和图节点,并通过新增的socket_t::transport_name() 记录协商后的传输方式。

第二遍调整把剩余直接调用GGML_LOG_* 的位置改走本地LOG_* 宏,删除rpc_dispatcher::send中重复的入队轨迹,并把远程分配失败、RDMA回退到TCP、对端意外断开提升为LOG_WARN。

发布说明同时记录一项使用限制:llama.cpp应用会丢弃ggml调试记录,除非用 -lv 5提高详细度阈值。

llama.cpp发布b11557版本,RPC后端日志系统被改写。发布说明称,GGML_RPC_DEBUG现在按数字解析:0 或未设置时关闭调试日志,1 到 3 输出逐级更详细的内容,非数字值回退为 1。

原先在ggml-rpc.cpp和transport.cpp中重复的环境变量与宏代码被共享的log.h取代,后者成为RPC后端所有日志的唯一出口。LOG_ERROR/LOG_WARN/LOG_INFO输出无条件的严重级别日志,LOG_DBG/LOG_DBG2/LOG_DBG3则受详细度级别控制。

transport相关文件不再需要ggml-impl.h,服务器banner现在也通过ggml logger输出到stderr。

各级别记录什么

发布说明给出了级别语义:级别 1 记录一次性生命周期事件,包括后端和缓冲类型创建、缓冲区分配、图计算与图缓存淘汰;级别 2 记录逐张量传输和逐命令处理轨迹;级别 3 涉及传输层细节。

  • 0 或未设置:关闭调试日志
  • 1:生命周期事件(后端与缓冲类型创建、缓冲区分配、图计算、图缓存淘汰)
  • 2:逐张量传输、逐命令处理轨迹
  • 3:传输等更详细输出
  • 非数字值回退为 1

客户端与服务端补充的日志

缺少的日志在客户端和服务端两侧被加入。按发布说明,客户端覆盖握手、缓冲操作、张量传输、图计算和缓存决策;服务端覆盖逐命令分发和图节点。新增的socket_t::transport_name() 用于记录协商后的传输方式。

  • 客户端:握手、缓冲操作、张量传输、图计算、缓存决策
  • 服务端:逐命令分发、图节点
  • 新增socket_t::transport_name() 记录协商传输方式

第二遍调整与使用限制

第二遍提交对第一版做了修正,因为不少调用点没有遵循文档中的级别语义,部分日志还绕过宏直接输出。发布说明列出了具体调整:把剩余直接调用GGML_LOG_* 的位置改走本地LOG_* 宏;把逐张量传输和逐命令处理轨迹放在级别 2,把一次性生命周期事件放在级别 1;删除rpc_dispatcher::send中重复的入队轨迹,因为work() 已记录每个被分发的命令及其往返时间。

  • 远程分配失败、RDMA回退到TCP、对端意外断开被提升为LOG_WARN
  • 图缓存淘汰在客户端与服务端两侧都记录,两者需保持同步才能让增量图更新有效
  • 区分Unknown command(操作码超出范围)与Unhandled command(操作码有效但无处理程序)
  • 修正格式说明符(%zu表示size_t、%u表示设备id、0x表示十六进制指针)以及一条错误日志缺失的换行
  • 发布说明指出:llama.cpp应用会丢弃ggml调试记录,除非用 -lv 5提高详细度阈值

信息来源

llama.cpp Releases原始来源