3 ms·
A simple fix for LLM tail latency
- eigenblake 2mo agoI love this. Simple. Useful. To the point. If AI was used, I can't tell because it is clearly representing the author's beliefs.
- thousand_nights 2mo agoagreed, reads like a breath of fresh air, no fluff
- dvaplima 2mo agoNice turn around, does anyone has a benchmark regarding other types of requests (priority vs send twice) other than voice/call? Or the tests already test that?
- ramon156 2mo agofor a tier thats twice the cost i would expect >2x the speed. somewhere 5-10x e.g. 1.40m would become 0.30s. do people really pay for these priority plans?
- nine_k 2mo agoSending two identical parallel requests is the classic approach. But, logically speaking, it should also double the cost. I would send a second request if the first request fails to return the first token within, say, 1 second. Then there's a chance the first request is stalling, which is an infrequent event. I wonder if higher-availability tiers of LLM providers do a similar thing internally.
- ImPostingOnHN 2mo agoToken caching might help here, but if it returns the same result, faster, for the same price as priority, seems good
- awwaiid 2mo agoI wonder how parallel token caches are, like when exploring a tree of sample continuations.
- crisnoble 2mo agoWhy not send it thrice?
- ball_of_lint 2mo agoIt turns out that best of 2 random draws outperforms best of 1, best of 3, and best of all in many load balancing scenarios: https://brooker.co.za/blog/2012/01/17/two-random.html https://brooker.co.za/blog/2012/01/17/two-random.html It's a bit unintuitive, but they key idea is roughly 'If you're working on stale load data (as always), best of 2 strikes the right balance between distributing load evenly and giving more work to less loaded hosts'. If you do 'best of k', you end up with herd behavior, overloading one host. 'best of 1' sends too much traffic to slow hosts.
- dahart 2mo agoBe careful to not overstate the conclusion of that blog post - best of 3 wins when the cache update rate is more frequent than average task duration, and best of 2 still has herding behavior and loses to 1 random when the update rate is less frequent (which may be high load, or we may also be missing a dimension here). Since the plot chose the window where best of 2 wins, it might bias or prime the reader to believe best of 2 is usually or always best, forgetting that underloaded and overloaded scenarios are in reality more common than all servers having a nice balanced medium size load for long periods.
- moffkalast 2mo agoIf you want a controllable and predictable system, host it yourself. APIs will always have outages, delays and breaking changes every so often. That's the price you pay for not doing it properly and outsourcing your job.
- nomel 2mo ago> host it yourself. APIs will always have outages, delays and breaking changes every so often. Since you've solved all of these problems, including hardware, etc, you should expand this to a business! Many people would be very interested in an "Infinite 9's" (potential business name there) uptime service!
- moffkalast 2mo agoAh but as soon as you start serving clients there's maintaining a public API, juggling prompt caches from different people, etc. It's a completely different use case which vastly complicates your setup than just having one endpoint that's always there that does exactly what you need it to do with zero waiting or internet latency. It's not that complicated to set it up, a GPU or two, vLLM or llama.cpp and you're set, local APIs are drop in replacements. Of course there's a better middle ground with renting a GPU VPS off Runpod or Vast or something, and you get most of the benefits already without having to buy currently overpriced hardware.
- behnamoh 2mo agoThis is half the story; you should show performance per dollar. I doubt your 2x approach would fare well against the priority if you consider the costs.
- ImPostingOnHN 2mo agoThe article mentions that the priority tier costs 2x normal, so the costs of running normal twice should be fine.
- Groxx 2mo agoThis sounds like a job for Fast Fallback instead: https://en.wikipedia.org/wiki/Happy_Eyeballs https://en.wikipedia.org/wiki/Happy_Eyeballs
- ak_t 2mo agoYou don't have to send every single request twice, just the ones that are haven't returned in time. Wait until some threshold, such as your p95 latency, and send your backup request after that. Return whichever request comes back first, and it should cut your tail latency without doubling your cost, since it only duplicates the small % of requests at the tail. Google calls this a 'hedged request': https://cacm.acm.org/research/the-tail-at-scale/ https://cacm.acm.org/research/the-tail-at-scale/
- alikhater30000 2mo ago[flagged]
- sharts 2mo agoIs there a way to do this automatically when using claude/codex?