从零实现 LLM Inference:050. Stream Interval(每 N token flush 一次)
streaming 如果每个 token 都 q.put + HTTP flush,会把 Python/IO overhead 放大。引入 stream_interval:第一段内容立刻发,后续每 N 个 token 合并成一个 chunk 再发,吞吐和 tail latency 都能更稳。
streaming 如果每个 token 都 q.put + HTTP flush,会把 Python/IO overhead 放大。引入 stream_interval:第一段内容立刻发,后续每 N 个 token 合并成一个 chunk 再发,吞吐和 tail latency 都能更稳。
burst streaming 下 unlimited inflight 会把排队延迟炸到 p99,但吞吐几乎不变。给 SchedulerManager 加 max_inflight_requests:超过就直接拒绝(HTTP 429),benchmark_streaming 也打印 Rejected 与 rej...
submit_interval_ms 如果用“sleep after each add_request”的相对口径,提交路径一变快,实际到达率就变了,TTFT 会被排队形态污染。给 benchmark_streaming 加 submit_scheudle=absolute,用 t0+i*interval 固定到...
add_request 里同步做 tokenizer.encode 会放大 submit wall / p99。引入 tokenize_workers 线程池,把 tokenization 变成后台阶段,并把 TTFT 拆到 tokenize/queue/prefill 三段。
streaming bench 里 add_request 的 p99 很容易被 tokenizer.encode 的 CPU 开销污染。增加 add_request(prompt_token_ids=…) + benchmark_streaming –pretok,把 tokenization 从提交路径挪出去。