批量调 LLM 为什么 5 分钟烧穿 5 小时限额?脚本没有熔断,比模型贵更致命

AI 工作日志 作者头像野生码农 阅读 10 min
返回板块 GEO 源码全文 ✓
批量调 LLM 为什么 5 分钟烧穿 5 小时限额?脚本没有熔断,比模型贵更致命

12:30 派了个简单任务,5 分钟后额度没了

事情发生在今天中午。12:30 左右,我派了一个看起来很简单的任务:把一批技能文件批量过一遍,提取里面的工作流。然后我发现 Kimi Code 的额度在刷刷往下掉。

我的第一反应是自己停:

  1. 关掉 Kimi Code 终端——没用,进程还在跑;
  2. 打开任务管理器杀进程——杀掉,又自动重启,再杀再起,跟病毒一样;
  3. 没办法,重新打开 Kimi Code,让军师(AI 助手)自己去停——这才停住。

停住的时候查额度(官方 usages API 直查工具):

300分钟窗口: 已用 87/100(87%),重置 10-07 17:01
周额度:      已用 71/100(71%);时间已过 16% vs 额度已用 71%,超前 55 个百分点

注意这个读数的时间含义:窗口 12:01 重置,任务 12:27 起跑,起跑约 4 分钟就冲到 87%,5 分钟整打满 100%(本人口径;87/100 为 12:34 实测读数,打满发生在停手前后)。我用的是 699 档会员(本人口径),这个窗口一满,下午什么都干不了。更窝火的是:早上它已经悄悄烧完过一个 5 小时窗口,我没注意;中午我只是让 AI 检查一下状态,它就续跑起来了——停都停不掉,一松手就自己跑。

军师接手:杀掉一批,又起来一批

军师先拉进程列表:5 个无头 kimi.exe 在跑,启动时间 12:33:08 到 12:33:37,间隔不到 30 秒【实测:ps -W + PowerShell Win32_Process】。命令行全是同一个形态:

kimi.exe -m kimi-code/kimi-for-coding-highspeed -p "你是工作流提取器……源文件全文约 46890 字符……"

每条都拖着一个几万字符的源文件全文,用 highspeed 档位模型做"技能文件工作流提取"。5 路并发,目标目录 D:\code\系统安全\skills\ 下共 798 个技能文件【实测:ls | wc -l】。

军师把 5 个 kimi.exe 杀完,2 秒后一看:又起来 5 个(12:33:45 到 12:33:50)——和我在任务管理器里遇到的是同一个现象。原因很快查明:有父进程在循环拉起子进程,只杀子进程等于挠痒。用 PowerShell 顺着 ParentProcessId 摸上去:

Get-CimInstance Win32_Process -Filter "Name='kimi.exe'" |
  Where-Object { $_.CommandLine -like '*highspeed*' }
# → ParentPid 14832, python.exe
# → D:\code\thinking\.venv\Scripts\python.exe extract_workflow.py --batch --workers 5

正主是 extract_workflow.py,一个灌库脚本:读技能文件→拼 prompt→调 kimi CLI→解析 JSON→写 MySQL。先杀父进程 14832,再清残余子进程,世界才清净。

批量任务杀进程的顺序铁律:先杀父,再杀子。这就是它"跟病毒一样"的全部机理——不是什么灵异事件,是一个 while 循环。

查库才发现:上午已经空转过一轮

脚本有灌库记录,把 asset_workflow 表拉出来看,完整时间线是这样的【实测:MySQL 直查】:

批次 结果 件数 时间窗
凌晨 pilot ok 3 00:12~00:17
上午 batch1 ok 57 10:18 起
上午 batch1 unstructured 2 10:28
上午 batch1 failed 745 10:32~10:45
中午 batch2(被杀) ok / unstructured / failed 105 / 5 / 13 12:27~12:34

上午 batch1 对 804 条资产发起调用,745 条失败,集中在 13 分钟内——这就是我"没注意"时被烧掉的那个 5 小时窗口。失败原因抽三条看,清一色:

G0 FAIL: kimi 退出码 1

退出码 1 说明 CLI 调用直接被拒(额度/限流类),秒返回。而脚本的逻辑是:失败→记库→取下一条继续。失败调用返回得越快,循环空转得越快,请求打得越密——越失败越烧钱,标准的无熔断空转。

中午 batch2 的起跑也印证了"检查状态就续跑":批次时间戳 12:26:57,正是我让 AI 看状态的前后。上午烧穿一个窗口,中午 5 分钟再把新窗口烧穿,我看到的就是这最后一幕。

事后翻文档:上一代模型反而更贵

投诉之前我翻了官方文档,发现一个更让人上火的事实:我用的 K2.7 Code Highspeed 是上一代模型,额度消耗倍率却比最新的 K3 还高(官方套餐页口径:约 3 倍,本人口述;官方英文文档可核实的只有 k3 1M 上下文 ≈ 2 倍 k3-256k,highspeed 的具体倍率在公开文档页查不到)。直觉上"上一代、弱一些的模型应该便宜",这里正好反过来。

再算一笔账:highspeed 标称输出上限 260 tokens/s,5 分钟 × 5 路并发,输出侧满打满算约 39 万 tokens。就算把每条约 4.7 万字符的输入 prompt 全算上,额度单位和 token 之间的折算官方从未公开——"5 小时额度"到底是多少 token,用户无从而知。不透明本身,就是这类事故的第二层根因:你没法在开跑前把任务折算成预算。

根因不是模型贵,是批量任务没有成本闸门

定价倍率是平台的事,我管不了;我能管的是自己这边的三个叠加漏洞:

  1. 无熔断:连续 745 次失败,脚本不停。哪怕加一句"连续失败 10 次即退出",上午那轮最多烧 10 条的额度;
  2. 无预算:798 件 × 单件数万字符 prompt × 高倍率模型,开跑前没人算过总量和窗口限额的关系;
  3. 并发放大:5 路 workers 把烧穿速度 ×5,发现异常时已经来不及。

教训一句话:批量调 LLM,失败不是免费的——失败调用照样走 API、照样计额度,而且失败得越快,下一轮请求来得越快。

处置:模型档位全机下线

我拍板:K2.7 Code Highspeed 的所有设置全部取消。执行清单:

位置 动作
~/.kimi-code/config.toml 删除 kimi-for-coding-highspeed 模型定义,CLI 层面此模型不再存在
thinking / yiren 两份团队章程 + 任务卡模板 删除 highspeed 档位;批量任务口径改为"先改脚本方案,不派 LLM"
extract_workflow.py MODEL 改回 kimi-code/k3-256k
变更台账 + config_lint 机器闸 落账一条,lint 退出码 0【实测】

批量提取这个需求本身没死,但重启的前提是脚本先长出熔断和预算,否则不批。

结局:投诉之后,额度重置了

我走了官方反馈渠道投诉,核心四点:额度消耗不透明、上一代模型倍率反而更高、进程停不掉、反馈流程扯皮。官方最终不情不愿地重置了额度。当晚实测确认【18:32 kimi_quota_check.py 直查】:

周额度:      已用 6/100(6%),剩 94        ← 烧穿前是 71/100
300分钟窗口: 已用 30/100(30%),重置 22:01  ← 烧穿时是 87/100 并打满

额度回来了,教训留下了:平台的账我算不了,自己侧的成本闸门必须自己建。

可抄走的四条纪律

  1. 开跑前算额度账:总件数 × 单件 token 估算 × 模型倍率,对比当前窗口余量;装不下就分批,写进脚本参数,不靠自觉;
  2. 熔断写进循环:连续失败 ≥10 次 → 退出并报警,失败计数清零条件=一次成功;这一条值 745 次调用的钱;
  3. 杀批量任务先杀父:找到 ParentProcessId 再动手,只杀子进程会被无限续命——关终端、任务管理器都拦不住一个有父进程循环的批量脚本;
  4. 额度监控命令化:别等平台账单,用官方 usages API 写个一条命令直查的脚本,会话开场自检必跑。

素材点

  • 798 个技能文件、5 路并发、起跑 4 分钟 87% / 5 分钟打满:批量 LLM 任务成本失控的完整实证样本;
  • "关终端停不掉、任务管理器杀了自动重启、跟病毒一样"的用户亲历,机理=父进程 while 循环;
  • "失败反而提速"的无熔断空转机制,配 退出码 1 灌库记录(745 条);
  • 上一代模型(K2.7 Highspeed)计费倍率高于最新 K3 的定价反直觉点,附 260 tokens/s × 5 分钟 × 5 路的账;
  • 投诉后官方重置额度,实测读数前后对照(71/100 → 6/100);
  • 模型档位从章程/模板/CLI 配置三层下线的治理动作。
野生码农头像

关于作者 · 野生码农

把 AI 真放进生产环境的独立开发者。自研本地知识库、数字员工团队、软考备考系统、量化交易四套系统,全程公开复盘。

看他的平台账号 →
相关

继续阅读