LLMDeployASCEND · DEPLOYMENT NOTESView on GitHub ↗
DOCUMENTATION / 昇腾部署实践

本机 token 统计

deploy_usage 是固定 vLLM 版本的 Stat Logger 插件;不增加网络监听,不依赖网关、Windows 或通知服务。每个 API 进程独立保存 SQLite WAL,按秒聚合其实际收到的引擎统计增量,查询时汇总所有 DP 和 API 进程。数据目录须挂载到宿主机并长期保留,不能随容器删除。

启用与查询

在既有渲染命令增加 --usage。生成器仍不执行部署;显式启动时注册本仓插件,写入宿主机 artifacts_dir/usage,代码和元数据通过 PYTHONPATH 加载,不需要联网或安装依赖。每次启动产生独立运行标识,默认配方期望 8 个 API 进程;手工改变 --api-server-count 时必须同步 LLMDEPLOY_USAGE_WRITERS。

python3 scripts/render.py --host local/host.json --output local/run.sh --usage
python3 -m deploy_usage.report --root /srv/artifacts/usage

启用需要重建容器,按通知文档先暂停告警,保留旧容器与配置,验证后恢复。固定模型、镜像和两个源码补丁不变。普通重启只产生新账本,不重置累计值;回退到未启用插件的容器期间不记账,会体现为未覆盖时间。

口径与边界

项目 定义
输入 与 vllm:prompt_tokens_total 相同,包含每次请求的历史上下文及图片 token;在引擎前端收到相应 prefill 统计时计入
输出 与 vllm:generation_tokens_total 相同,包含推理过程、首 token 和中止前已观测到的输出,不保证客户端收到
缓存 与 vllm:prompt_tokens_cached_total 相同,前缀 KV 命中与外部 KV 传输之和;已包含在输入中,不是 Engram 或图片预处理缓存
均速 窗口输出 / 窗口墙钟秒数,包含空闲及未覆盖时间;今天为零点至查询时刻,累计为首次记账至查询时刻
生成速度 已结束请求的 sum(max(output-1,0)) / sum(decode_seconds),是按解码时间加权的请求速度,不能当作并发总吞吐;请求跨日时该项归入结束所在窗口

今天按北京时间零点切分;24 小时、3 天、7 天分别为滚动 24/72/168 小时。输入、输出及缓存按统计事件时间归属,边界精度 1 秒;报表不含尚未结束的当前秒。累计覆盖所有保留的账本。历史请求、原始 token、回答正文、请求 ID 和凭据均不保存。

回调只向容量为 4096 的队列非阻塞入队,独立线程写盘并每约 5 秒更新心跳。心跳只证明记录器在对应时间段工作。缺失 API 记录器、心跳超过 30 秒、队满、数据库损坏和写入失败均不能宣称完整;查询显示起点、截止时间和未覆盖时长,未知不当作零。记账故障不向推理抛出异常;数据丢失或损坏时应保留现状并恢复存储,不能删除账本后沿用旧累计。

SQLite 使用 WAL / NORMAL;已提交记录可跨普通进程退出保留,正常退出限时排空队列,异常退出可能丢失队列尾部,断电还可能丢失最近事务。引擎产生但前端尚未消费的输出,也可能遗漏。因此这是持续运行的用量统计,不是可保证故障下逐 token 零丢失的计费账本,也无法补齐启用前的历史。升级需要重新核验统计接口、与 Prometheus 增量一致性、8 个记录器及存储失败行为。

小鲁班状态

在私有通知配置的 usage 对象中,以既有节点端口为键配置 target(已有 SSH 信任的目标)、code_dir(本仓代码所在目录)、data_dir(宿主机账本目录)。示例结构:

{"usage":{"19001":{"target":"example-primary","code_dir":"/srv/LLMDeploy","data_dir":"/srv/artifacts/usage"},"19002":{"target":"example-backup","code_dir":"/srv/LLMDeploy","data_dir":"/srv/artifacts/usage"}}}

通知进程每约 30 秒在后台通过 SSH 只读查询,两台分别超时,查询不会阻塞健康观察。仅允许固定报告命令、已验证的路径与目标;远端结果仅提取有界数字,原始文本和异常不进入消息。以通知机本地接收时间判断缓存是否超过 90 秒,避免跨机时钟偏差造成误判。事件与窗口仍按部署机时间;与通知机的估计偏差超过 5 秒时显示提示,不自动修改系统时钟。

@小鲁班 状态 保留部署数量和健康状态,并按实例返回五个窗口的输入、输出、缓存、命中率、均速和生成速度。IP 仍只显示最后一段;查询游标、投递去重及失败不自动重发的合同不变。统计故障不等同于 vLLM 故障。

本文源于仓库文档 · 查看 Markdown 源文件
仅分享已使用经验;新环境与新工件需重新验证。敏感信息不提供。