पाठ 17 / 29
Little's Law से क्षमता योजना
अनुरोध दर और latency से concurrency और servers का अनुमान लगाएँ।
उड़ान में अनुरोध = दर x समय
यदि आप अपना मॉडल serve करते हैं, या provider की सीमाएँ पहले जानना चाहते हैं, तो सरल अंकगणित बहुत आगे ले जाता है। Little का नियम कहता है कि system में अनुरोधों की औसत संख्या आगमन दर गुणा हर अनुरोध के system में बिताए औसत समय के बराबर है। LLM calls सेकंडों लेती हैं, इसलिए concurrency जल्दी बढ़ती है: प्रति सेकंड 50 अनुरोध, प्रत्येक 4 सेकंड, का अर्थ एक साथ लगभग 200 अनुरोध उड़ान में। इसे एक server (या एक rate-limited key) जितने समवर्ती अनुरोध सँभाल सके उससे भाग दें, और bursts व विफलताओं के लिए गुंजाइश छोड़ें (जैसे क्षमता के 70% पर चलें)। यह भी दिखाता है कि latency और क्षमता जुड़ी हैं: औसत latency आधी करने से आवश्यक क्षमता आधी, और मंदी (लंबे आउटपुट, धीमा मॉडल) उसे गुणा करती है। चरम traffic औसत से अधिक मायने रखता है, इसलिए सबसे व्यस्त घंटे से योजना बनाएँ।
दर और latency से ज़रूरी servers, चलाकर
मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। प्रति सेकंड 5 अनुरोध और प्रत्येक 4 s पर 20 अनुरोध उड़ान में हैं और 70% भार पर 16 slots के 2 servers पर्याप्त हैं। प्रति सेकंड 50 अनुरोध पर 200 उड़ान में हैं और 18 servers चाहिए; latency तिगुनी होकर 12 s हो तो 54 servers; 200 अनुरोध/s और 4 s पर 72 servers। 16-slot servers मान ली गई उदाहरण हैं।
# Little's law: concurrent requests in flight = arrival rate x average time in the system.
def servers_needed(rps, latency_s, per_server_concurrency, headroom=0.7):
in_flight = rps * latency_s
return in_flight, -(-in_flight // (per_server_concurrency * headroom))
for rps, lat in ((5, 4.0), (50, 4.0), (50, 12.0), (200, 4.0)):
inflight, servers = servers_needed(rps, lat, per_server_concurrency=16)
print(f"{rps:4d} req/s x {lat:4.1f} s -> {inflight:6.0f} requests in flight -> {int(servers)} servers of 16 slots at 70% target load")
Output:
5 req/s x 4.0 s -> 20 requests in flight -> 2 servers of 16 slots at 70% target load 50 req/s x 4.0 s -> 200 requests in flight -> 18 servers of 16 slots at 70% target load 50 req/s x 12.0 s -> 600 requests in flight -> 54 servers of 16 slots at 70% target load 200 req/s x 4.0 s -> 800 requests in flight -> 72 servers of 16 slots at 70% target load
सबसे व्यस्त घंटे से योजना बनाएँ
चरम traffic, दैनिक औसत नहीं, तय करता है कि कितनी क्षमता चाहिए।
त्वरित जाँच: उसी अनुरोध दर पर औसत latency दोगुनी हो तो उड़ान में अनुरोधों का क्या होता है?
- वे वैसे ही रहते हैं
- वे आधे हो जाते हैं
- वे दोगुने हो जाते हैं
- वे शून्य हो जाते हैं
Answer
वे दोगुने हो जाते हैं — उड़ान में अनुरोध = दर x latency, इसलिए वे latency के साथ बढ़ते हैं।