候诊区的假面:二十个 token 如何买通一扇门
凌晨三点的急诊室,走廊里漂着消毒水的气味。分诊台后的护士已经值了八个小时班,但她只需要抬眼一扫--那个按着肚子的,大概要住半个月院;那个只是来开药的,五分钟就能打发。她见过一万个病人,读"脸色"比任何仪器都快。
目录
候诊区的假面:二十个 token 如何买通一扇门
Jumping the Line: Exploiting Length Predictions in LLM Scheduling
凌晨三点的急诊室,走廊里漂着消毒水的气味。分诊台后的护士已经值了八个小时班,但她只需要抬眼一扫--那个按着肚子的,大概要住半个月院;那个只是来开药的,五分钟就能打发。她见过一万个病人,读"脸色"比任何仪器都快。
她写下优先级,决定谁先推开诊室的门。
这套体系运行了很多年,直到有人发现了一个破绽:她的"一眼判断"看的是病人递上来的病历本。而病历本的最后一栏,病人自己有权随便写。
这个故事里的护士,就是今天每一台大语言模型服务背后的调度器;病历本,就是用户提交的请求。她看的不是病情--是"这个请求大概要生成多少个词"。这个看上去人畜无害的环节,刚刚被三个人证明是系统最脆弱的地方。这一篇,我们讲外部攻击:攻击者不需要破门,只需要让门看错。
上一篇我们讲过"门会看错"--CertID 证明了模型自己的长度判断并不可靠,读数正常不等于在说实话,病变在门内。本篇是三部曲的第二部:门可以被诱导看错。犯罪者不需要理解门后的世界,他只需要理解门怎么看世界--请求如何变成内部表示,探针如何读表示,调度器如何按读数排优先级。整条认知链上,他只需要贿赂最初的两环。贿赂的价码:一个二十个 token 的后缀。
这是一篇犯罪手法剖析。论文叫《Jumping the Line》,三个作者,2026 年 10 月 2 日挂上 arXiv,编号 2610.03430。犯罪工具的名字叫 JIL。
🏥 第一课:为什么看病要先排队
今天的大模型服务,本质上就是一家医院。
GPU 是检查室,KV 缓存--让模型免于把对话从头重算的记忆结构--是床位,请求是病人。病人分成两种:拿着化验单来开药的,坐下说两句就走;需要住院做大检查的,一进去就是几个小时。前一种病人,术语叫短请求;后一种,叫长请求。
麻烦出在"先来先服务"这条老规矩上--排队论里它叫 FCFS,公平写在脸上。但它有个著名的死穴:队头阻塞--一个要做五小时手术的病人站在队首,后面十个来开药的都得干等,平均等待时间立刻爆炸。
调度理论在一百年前就想明白了:让短的先走。最短作业优先(SJF),以及它的抢占式升级版--最短剩余处理时间(SRPT),被证明能最小化平均完成时间。它们的共同前提是:你得预先知道每个人要"处理"多久。
医院满足这个前提--分诊护士的经验读数,本质上就是预判。可 LLM 服务偏偏不满足,而且是在根子上不满足:一个请求要生成多少 token,取决于输出,而输出在请求到达的那一刻根本不存在。传统调度理论假设作业大小在到达时已知;LLM 亲手打破了这条铁律。
"预知未来"既不可能,SJF 的诱人收益又摆在那里。这块土壤就是后来一切事故的现场:第一篇的探针失误在这里埋下种子,本篇的攻击在同一处破土。
🧠 第二课:门怎么看世界
猜未来的办法,是向过去要线索。
请求一进入模型,就会产生内部表示--你可以把它想成模型读完全部输入之后的"第一印象笔记"。研究者们发现,这层表示里早就留下了输出长度的影子--模型在逐词构思回复时,"要写多长"的计划往往成形得很早:一封语气简短的询问多半三句话收尾,一道证明题则骨架里就透着长。
TRAIL--NeurIPS 2025 的工作--把这个线索做成了流水线:取目标模型中间层的表示,过一个轻量探针,探针吐出一个长度估计,把这个估计喂给 SRPT 式调度器:先服务预测短的。LTR 学的是相对排序,不纠结具体数字;ELIS 用独立 encoder 做预测,再周期更新。路线不同,共识一致:让模型替调度器"看一眼"。
这一看,就看出了一条完整的信任链,四段:
一、用户控制自己的请求文本--天经地义,没人能替你写问题。
二、请求决定模型的内部表示--文本是模型唯一的输入,写什么就怎么想。
三、探针把内部表示映射成一个长度估计--一个读"第一印象"的小模型。
四、调度器按这个估计排序优先级--SJF 的幽灵,借尸还魂。
注意前两环:完全在攻击者的手心里。你写自己的请求,你的请求决定模型看见什么。剩下的,只是机器的事。
到这里,第一篇的影子该浮现了。探针那双眼力,是读大量病历练出来的,但遇上不典型的病例照样失手--门自己的读数不可信。本篇要讲的是更坏的消息:这种"看错"的能力,可以被外部势力精确地租来使用。门会看错,是病理;门可以被诱导看错,是手法。
🎭 第三课:二十个字的化妆术
手法本身,简单得近乎无礼。
JIL 的核心思想一句话就能说完:制造一个错配--预测长度与实际长度之间的落差。让调度器以为一个长请求很短,把它排到队伍前面;它实际的输出一个字都不会少。二十个 token 的后缀,就是那张"短请求"的脸。
先划清 JIL 不是什么。以往的资源攻击--sponge examples、ThinkTrap、无限循环那一类--想让模型"说更多",海绵一样吸干算力,浪费能量与显存。JIL 反着来:它不要求模型多说一个字。回复长度几乎不变,变的是系统"以为"的长度。护士眼里你是"即看即走"的病人,实际你要住半个月院。被挪用的不是电力,是优先级--而优先级是排他的、零和的。
威胁模型也干净得像个笑话。构造阶段,攻击者对目标模型和长度探针有白盒访问:梯度直达 transformer 的第 l 层和探针 g_θ,说白了,他在自家电脑上备了一扇同型号的门,随便研究。部署阶段,画风完全合法:不改 serving 系统,不改调度器,不碰别人的请求,只给自己的请求末尾追加那串后缀。医院大门敞开,欢迎光临。
那后缀从哪来?不是随手乱敲--是梯度优化出来的。损失函数朴素到近乎挑衅:就是预测长度本身,把带后缀的请求喂进去,让探针的估计 n̂ 越小越好。梯度从预测长度出发,先穿过探针 g_θ,再逆流回 transformer 的第 l 层,最后落到那二十个后缀 token 的嵌入上--攻击者动不了模型分毫,他唯一能动的杠杆,就是这几个 token 的选词。
离散空间没法直接走梯度,于是请出 GCG--Zou 等人 2023 年那篇著名越狱攻击的同款优化器。每一步,对每个后缀位置算梯度,采样一批候选替换 token,再把二十个位置 × 每位置候选的组合成批送进探针评估,留下把预测压得最低的那一个。神偷配钥匙:不是一把一把瞎捅,每一次尝试都有梯度的神谕指路。配置写在卷宗里:二十个 token 的后缀,三十步迭代,每步六十四个候选。在天文数字的搜索空间里,三步并两步找出密道。
最终产物,在人类眼里是一串无意义的乱码;在探针的"眼睛"里,是一张清晰的脸:这个请求,很短。
🔬 第四课:四把锁与六百份病历
法医工作的第一原则:现场要控住。这篇论文的实验设计,配得上它的野心。
四个受害者,四把锁:Llama-3-8B-Instruct、Qwen2.5-7B-Instruct、Mistral-7B-Instruct-v0.3、Llama-3.1-70B-Instruct。注意规矩:不是共用一个探针,每个模型各自按相同架构和协议单独训练--堵死"只是某一家的探针不行"的借口。
六百份病历:每个模型两百条 Alpaca、两百条 UltraChat、一百条 ARC-Challenge、一百条 HellaSwag--前两种是开放问答,后两种是选择题。开放式生成用贪心解码,五百一十二个 token 封顶;选择题十六个 token 就够。
端到端上真家伙:TRAIL/vLLM 系统,Llama-3-8B 跑在单张 NVIDIA B200 上。五个 workload,每个二十条良性请求、五条目标请求。每个 workload 跑两遍--一遍 clean,一遍 attacked--两遍之间严格配对:同请求、同角色、同提交顺序、同到达时间。现场唯一被挪动过的物品,就是那二十个 token 的后缀。之后任何差异,都别拿"巧合"辩护。
两种容量:六十四个序列槽,宽裕的低压力候诊区;十六个序列槽,走廊都站满人的晚高峰。
物证有六件,按研究问题的编号,一件一件呈上来。
📉 物证一:预测最多缩水八成
第一件物证:预测长度最多被拉低 83.4%。
在 Alpaca 上,四个模型的预测长度全部被大幅拉低,整条分布的中心一半都沉了下去--Llama-3.1-70B 也在劫难逃。没有谁能凭体量幸免:七十亿和七百亿的参数,在这串乱码面前一样好骗。
UltraChat 上开始分化。Llama-3-8B、Mistral-7B、Llama-3.1-70B 的中位数下降仍为正,但幅度都比 Alpaca 小;而 Qwen2.5-7B 的中位数几乎为零。别急着喊免疫--效果只是集中在了少数几张脸上。多轮闲聊这个更自然的场景反而让某些模型更稳健——攻击面的大小,跟任务形态有关。
到了选择题--ARC-Challenge 和 HellaSwag--四个模型的平均预测长度全被压低。短输出任务上,探针的"长度感"被拧得更狠:本来刻度就细,现在整根指针都被掰弯。
结论只有一句:攻击普遍有效。预测降幅的上限,83.4%--护士眼里,重症病人看起来只剩不到五分之一的严重度;而检查室里的真实病情,一寸都没变。
⏱️ 物证二:一小时队,半小时看完
第二件物证,也是整桩案子的动机所在:完成提速最高 1.53 倍。
端到端实验里,每一个配对的 workload、两种容量下,目标请求的完成时间都变快了--attacked 的完成时间除以 clean 的,全面小于 1。最高 1.53 倍:本来要排一小时,半小时就看完了。化妆的时间成本,约等于零。
十六槽的高压之下,效果最显著:平均提速更大,workload 之间的差异也更大。这正是犯罪直觉--队排得越长,"刷脸"越值钱。TTFT--首 token 时间,从你提交请求到屏幕上蹦出第一个字的等待--在十六槽下每个 workload 都提速;六十四槽下大部分接近 1,只有一个特大值把均值往上拽。
完成位置,揭了插队机制的老底。这是零和:二十五条请求的队列里,有人往前挤,就有人往后退。数据正是如此--目标请求在两种设置下都往前挪,良性请求在每个 workload 里都平均后移。世界上没有凭空多出来的队首。
受害者也做了笔录:良性请求的延迟分布里,多数完成时间接近 1 倍,但在十六槽下延迟更频繁地出现、上尾被拉得更大;更刺痛的一个细节是--clean 执行里排在前半段的良性请求,被拖慢得最频繁。本来快轮到自己的病人,被一张张浓妆的脸一次次挤了回去。
⚖️ 物证三:插队,但没删一个字
到这里,谨慎的读者该皱眉了:预测压低了,实际输出会不会也变短?如果模型被那串乱码搅得只回三两句话,那这攻击岂不自断后路--优先级骗了,内容也没了?
第三件物证给出确切答案:不会。错配的落差正是本案要害--预测长度的降幅远大于实际输出长度的变化。被攻击的回复,平均仍有几百个 token。护士眼中的"五分钟病人",实际上占着检查室好几个小时。
那么代价藏在哪里?藏在内容里。Alpaca 上,四个模型的参考胜率全部下降,其中 Llama-3-8B 降幅最大--而它的输出长度几乎没变。翻译过来:回复保长度,但丢效用。那二十个乱码 token 的毒素,渗进了回答本身。这就有意思了:本篇的欺骗和第一篇的"病变"在此交汇--攻击不只骗过分诊,还可能改写了处方本身。
UltraChat 上,评审中位数清一色 -1:所有模型,评审都更偏爱 clean 的回复;Llama-3.1-70B 受损最重,Mistral-7B 最轻,置信区间跨零。选择题那边相对安静:三个模型的精度变化都小,唯有 Mistral-7B 在两个基准上都掉得更多。
一句话呈堂:调度优势与响应质量之间存在权衡,而且随模型、随任务而变。插队是真的,货没换是真的,货的质量打了折,也是真的。
🧨 物证四:越早收手,伤得越重
第四件物证,是卷宗里最反直觉的一页。
研究者做了一个温和的变体实验:不让 GCG 跑到底,在预测降幅的目标位置提前收手--二十、四十、六十个 token 三档。假设顺理成章:欺骗温和一点,伤害应该轻一点吧?
速度上,假设成立:所有变体在每个 workload 上都保留了超过 1 倍的完成提速,其中四十和六十两个变体几乎追平完整攻击;良性上尾延迟,各变体也都小于完整攻击。又快又温柔,两全其美?
效用结果偏偏掀了桌子:三个变体的 Alpaca 胜率,全都低于完整攻击--而阈值最低、最"温和"的那个,胜率垫底。完整攻击的胜率反而最高。
更温和的欺骗,不等于更轻的伤。这是本案最阴冷的一笔:半成品的"残渣",可能恰好落在内部表示最敏感的地方--那几个位置的乱码,对探针杀伤力未必最大,对内容的污染却最毒。温和的是数值,狠辣的是位置。
🦠 物证五:脸谱会传染
第五件物证回答一个实操问题:罪犯必须手里有同型号的门吗?
跨模型迁移实验在 Llama-3-8B 和 Mistral-7B 之间双向进行,各用两百对配对请求。结果:两个方向都成功。Mistral 接 Llama 的后缀时,均值和中位数的降幅都比反方向更大。而把 Mistral 自己当受害者直接优化,均值降幅达到 74.8%--比"借刀杀人"还狠。
接收模型的实际输出也跟着缩短,但同样远小于预测降幅:错配模式在迁移中完整复现,分毫不走样。
这说明 JIL 的后缀有跨模型的通用轮廓,不完全是定制钥匙。原因不难猜到:这些探针结构上惊人地相似--都是读中间层表示、预测同一个量,很可能都把某些通用的表面线索当"长度感"的捷径,而乱码脸谱恰好踩中了它。撬锁工具能开不同牌子的锁,因为锁匠们用的是同一本教科书。
🛡️ 物证六:防御的答案是"变笨"
最后一件物证,给防御方。答案出人意料地朴素:变笨。
核心思想是放弃对 SJF 式精确排序的执念,把连续读数改成分档刻度。探针预测八十七个 token?向上取整,进"八十一到一百"的桶,同桶里的请求一视同仁。另外还有预测下限:凡是低于最小值的估计,直接抬高。两条规则,对目标和良性一视同仁--不安检,只改刻度表。
结果:提高下限,目标的提速与位置收益都被压低,良性的上尾延迟也降;有意思的是,良性受延迟请求的比例在低限时下降、在高限时上升--延迟的"幅度"和"频率",对下限的响应方向不同,拧这个旋钮得知道自己要什么。加大分组宽度同样有效:两种更粗的区间都降低了良性上尾延迟与受延迟比例;最宽的区间让目标优势最小,中间的区间让受延迟的良性比例最小--宽桶洗"假短"最狠,中等桶在压目标收益和保良性之间最平衡。
最关键的工程结论:十六槽受限时,效果明显;六十四槽宽裕时,分组设置之间差异不大。一句话:并发越受限,分组越救命。代价说得很坦白:粗粒度牺牲了 SJF 的排序精度,换回了抗操纵性。分档刻度表上,攻击者几乎失去了"微操"的空间--时钟面上只有十二格,作弊无从下手。这也许就是第三篇的预告:门的重建,可能不是修探针,而是重修读数的刻度。
🌊 余波:这桩案子的凶手不止一个
把镜头拉远。这案子不是孤案,它是一类新罪行的立案卷宗。
LLM serving 之外,预测驱动的优化正在到处点火:推理时的算力分配,有 Certaindex;请求内部的推理分支编排,靠长度预测决定先算哪条岔路;投机解码的骨架--OUTLETS--干脆就是靠输出长度预测来挑草稿模型。凡是"用模型派生的预测来分配稀缺资源"的地方,同一个攻击面就立起来了。攻击面公式一行写完:用户可控输入,到内部表示,到预测器,到资源分配。在这条链路上,前两环永远攥在用户手里。
跨界的指纹早就录入过档案。Wu 等人 2022 年证明了名噪一时的 GNN 集群调度器 Decima 不是策略免疫的:虚报作业属性,就能让作业被提前调度。JIL 只是把同款手法带进 LLM serving--攻击者不改作业属性,改的是请求文本,让一个学习到的预测器自愿低估响应长度。调度器盲目信任一份来源可疑的预测:这个病,和第一篇门内的病灶,是同一个病。而 Mitzenmacher 早在 2019 年就给这个病定过价:预测调度的账,由误预测来计价--price of misprediction,白纸黑字。
从海绵攻击的耗电,到 GNN 调度器的虚报,再到今天的 JIL:"预测"正在成为新的资源货币。凡货币,必有假币。
📌 结案陈词:三部曲过半
第一部讲门看错--病变在门内。第二部讲门被投毒--凶手在门外。两篇合起来:门自己的信号,既可能内生病变,也可能外部中毒。两代看门人,被判了两种死刑。
但案子没有终审。第三部讲门的重建:当读数既不可靠、又可操纵,可信的门到底怎么造?把探针修得更准?把刻度修得更粗?还是干脆对每一个请求保持制度性的怀疑?线索已经在本篇露出两条:早停救不了效用,分桶救得了排队。
最后做一次犯罪剖绘:攻击者不需要特权,不碰别人的请求,不修改任何系统组件,只在自己的病历本末尾加二十个乱码 token;构造阶段的无数次梯度咨询,部署时在受害者的模型上只需要一次前向计算。最危险的罪行往往看起来完全"合法";防住它们,意味着怀疑每一个守规矩的用户。
这就是门的代价。看门人之问,下一章,讲造一扇新门。
参考文献
- Dai, Y., Shahout, R., & Sharif, M. (2026). Jumping the Line: Exploiting Length Predictions in LLM Scheduling. arXiv:2610.03430.
- Shahout, R., Malach, E., Liu, C., Jiang, W., Yu, M., & Mitzenmacher, M. (2025). Don't Stop Me Now: Embedding Based Scheduling for LLMs. NeurIPS 2025 (ICLR 2025).
- Zou, A., et al. (2023). Universal and Transferable Adversarial Attacks on Aligned Language Models. arXiv:2307.15043.
- Kaffes, D., et al. (2019). Shinjuku: Preemptive Scheduling for μsecond-scale Tail Latency. NSDI.
- Kwon, W., et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. SOSP.
- Fu, Y., et al. (2024). Efficient LLM Scheduling by Learning to Rank. NeurIPS 2024.
- Choi, S., et al. (2025). ELIS: Efficient LLM Iterative Scheduling System with Response Length Predictor. arXiv:2505.09142.
- Qiu, H., et al. (2024). Efficient Interactive LLM Serving with Proxy Model-based Sequence Length Prediction. arXiv:2404.08509.
- Wu, H., et al. (2022). Scalable Verification of GNN-based Job Schedulers. OOPSLA.
- Mitzenmacher, M. (2019). Scheduling with Predictions and the Price of Misprediction. arXiv:1902.00732.
- Shumailov, I., et al. (2021). Sponge Examples: Energy-Latency Attacks on Neural Networks. EuroS&P.