AI ਸਿਸਟਮਾਂ ਵਿੱਚ ਰੇਟ ਲਿਮਿਟਿੰਗ (Rate Limiting) ਅਤੇ ਸਰਕਟ ਬ੍ਰੇਕਰ (Circuit Breakers)
ਡਿਸਟ੍ਰੀਬਿਊਟਡ (Distributed) AI ਸਿਸਟਮ ਗੁੰਝਲਦਾਰ ਹੁੰਦੇ ਹਨ। ਉਹ ਬਹੁਤ ਜ਼ਿਆਦਾ ਰਿਕੁਐਸਟ ਵੌਲਯੂਮ ਅਤੇ ਭਾਰੀ ਮਾਡਲ ਇਨਫਰੈਂਸ (model inference) ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ। ਤੁਸੀਂ GPU ਕਲੱਸਟਰਾਂ, ਡੇਟਾਬੇਸਾਂ ਅਤੇ Third-party APIs 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋ। ਇੱਕ ਖਰਾਬ ਕੰਪੋਨੈਂਟ ਜਾਂ ਟ੍ਰੈਫਿਕ ਵਿੱਚ ਅਚਾਨਕ ਵਾਧਾ ਤੁਹਾਡੇ ਪੂਰੇ ਸਿਸਟਮ ਨੂੰ ਕ੍ਰੈਸ਼ ਕਰ ਸਕਦਾ ਹੈ।
ਆਪਣੇ ਸਿਸਟਮ ਦੀ ਰੱਖਿਆ ਲਈ ਤੁਹਾਨੂੰ ਦੋ ਸਾਧਨਾਂ ਦੀ ਲੋੜ ਹੈ: ਰੇਟ ਲਿਮਿਟਿੰਗ (rate limiting) ਅਤੇ ਸਰਕਟ ਬ੍ਰੇਕਰ (circuit breakers)।
ਰੇਟ ਲਿਮਿਟਿੰਗ (Rate Limiting) ਰੇਟ ਲਿਮਿਟਿੰਗ ਕਿਸੇ ਇੱਕ ਯੂਜ਼ਰ ਜਾਂ ਸਰਵਿਸ ਨੂੰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਰੋਤਾਂ (resources) ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ। ਇਹ ਹਰ ਕਿਸੇ ਲਈ ਬਰਾਬਰ ਪਹੁੰਚ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ।
ਆਮ ਤਰੀਕੇ:
- Token Bucket: AI ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ। ਇਹ ਇੱਕ ਸਥਿਰ ਔਸਤ ਬਣਾਈ ਰੱਖਦੇ ਹੋਏ ਗਤੀਵਿਧੀਆਂ ਦੇ ਛੋਟੇ ਝਟਕੇ (bursts) ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
- Leaky Bucket: ਰਿਕੁਐਸਟਾਂ ਦਾ ਇੱਕ ਨਿਰੰਤਰ ਪ੍ਰਵਾਹ ਬਣਾਈ ਰੱਖਦਾ ਹੈ।
- Fixed Window: ਸਰਲ ਹੈ ਪਰ ਨਵੇਂ ਵਿੰਡੋ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਅਚਾਨਕ ਵਾਧਾ (spikes) ਕਰ ਸਕਦਾ ਹੈ।
- Sliding Window: ਫਿਕਸਡ ਵਿੰਡੋਜ਼ ਨਾਲੋਂ ਵਧੇਰੇ ਸਹੀ ਹੈ।
AI ਲਈ ਪ੍ਰੋ ਟਿਪ (Pro tip): ਸਿਰਫ਼ ਰਿਕੁਐਸਟਾਂ ਦੁਆਰਾ ਨਹੀਂ, ਸਗੋਂ ਟੋਕਨਾਂ ਦੀ ਗਿਣਤੀ ਦੁਆਰਾ ਸੀਮਾ ਨਿਰਧਾਰਤ ਕਰੋ। 4,000 ਟੋਕਨਾਂ ਵਾਲਾ ਇੱਕ ਪ੍ਰੋਂਪਟ (prompt), 10 ਟੋਕਨਾਂ ਵਾਲੇ ਪ੍ਰੋਂਪਟ ਨਾਲੋਂ ਵੱਧ ਸਰੋਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
ਸਰਕਟ ਬ੍ਰੇਕਰ (Circuit Breakers) ਇੱਕ ਸਰਕਟ ਬ੍ਰੇਕਰ ਤੁਹਾਡੇ GPU ਸਰਵਰ ਜਾਂ ਵੈਕਟਰ ਡੇਟਾਬੇਸ (vector database) ਵਰਗੀਆਂ ਸਰਵਿਸਾਂ ਨੂੰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਕਾਲਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਕੋਈ ਸਰਵਿਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵਾਰ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਬ੍ਰੇਕਰ ਖੁੱਲ੍ਹ ਜਾਂਦਾ ਹੈ। ਇਹ ਤੁਰੰਤ ਉਸ ਸਰਵਿਸ ਨੂੰ ਕੀਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ। ਇਹ ਪੂਰੇ ਸਿਸਟਮ ਨੂੰ ਕ੍ਰੈਸ਼ ਹੋਣ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ।
ਸਰਕਟ ਤਿੰਨ ਸਥਿਤੀਆਂ (states) ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:
- Closed: ਸਭ ਕੁਝ ਆਮ ਤੌਰ 'ਤੇ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ।
- Open: ਸਰਵਿਸ ਫੇਲ੍ਹ ਹੋ ਰਹੀ ਹੈ। ਕਾਲਾਂ ਤੁਰੰਤ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦੀਆਂ ਹਨ ਜਾਂ ਫਾਲਬੈਕ (fallback) ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ।
- Half-Open: ਸਿਸਟਮ ਇਹ ਦੇਖਣ ਲਈ ਸਰਵਿਸ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਇਹ ਦੁਬਾਰਾ ਠੀਕ ਹੋ ਗਈ ਹੈ।
ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ (Best practices):
- ਹੌਲੀ ਕਾਲਾਂ (slow calls) ਨੂੰ ਟ੍ਰੈਕ ਕਰੋ। ਜੇਕਰ ਕੋਈ LLM ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਫੇਲ੍ਹ ਹੋਣ ਵਜੋਂ ਮੰਨੋ।
- ਗਲਤੀਆਂ (error) ਦੀਆਂ ਕਿਸਮਾਂ ਨੂੰ ਵੱਖ ਕਰੋ। 400 Bad Request ਵਰਗੀਆਂ ਯੂਜ਼ਰ ਗਲਤੀਆਂ ਲਈ ਬ੍ਰੇਕਰ ਨੂੰ ਟ੍ਰਿਪ ਨਾ ਕਰੋ। ਇਸਨੂੰ ਸਿਰਫ਼ ਕਨੈਕਸ਼ਨ ਗਲਤੀਆਂ ਜਾਂ ਟਾਈਮਆਊਟ (timeouts) ਲਈ ਹੀ ਟ੍ਰਿਪ ਕਰੋ।
ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi