𝟵 ಇನ್ಫರೆನ್ಸ್ ಲೇಟೆನ್ಸಿಯನ್ನು (Inference Latency) ಕಡಿಮೆ ಮಾಡಲು ಮಾರ್ಗಗಳು
AI ಅಪ್ಲಿಕೇಶನ್ ನಿಧಾನವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದಾಗ ಹೆಚ್ಚಿನ ತಂಡಗಳು ಮಾಡೆಲ್ನನ್ನೇ ದೂಷಿಸುತ್ತವೆ.
ಲೇಟೆನ್ಸಿ ಬಜೆಟ್ನಲ್ಲಿ (latency budget) ಮಾಡೆಲ್ ಎಂಬುದು ಕೇವಲ ಒಂದು ಭಾಗ ಮಾತ್ರವಾಗಿರುತ್ತದೆ.
ಒಂದು ಸಾಮಾನ್ಯ ವಿನಂತಿಯು (request) ಅನೇಕ ಹಂತಗಳ ಮೂಲಕ ಸಾಗುತ್ತದೆ:
• ಅಥೆಂಟಿಕೇಶನ್ (Authentication) • ಫೀಚರ್ ರಿಟ್ರಿವಲ್ (Feature Retrieval) • ವೆಕ್ಟರ್ ಸರ್ಚ್ (Vector Search) • ಏಜೆಂಟ್ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ (Agent Orchestration) • LLM ಇನ್ಫರೆನ್ಸ್ (LLM Inference) • ಗಾರ್ಡ್ರೈಲ್ಸ್ (Guardrails) • ರೆಸ್ಪಾನ್ಸ್ ಜನರೇಷನ್ (Response Generation)
ಈ ಪದರಗಳಾದ್ಯಂತ ಲೇಟೆನ್ಸಿ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಹಿರಿಯ ಇಂಜಿನಿಯರ್ಗಳು ಇಡೀ ಪೈಪ್ಲೈನ್ ಅನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುತ್ತಾರೆ.
ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ ಲೇಟೆನ್ಸಿಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಇಲ್ಲಿವೆ 9 ಮಾರ್ಗಗಳು:
ಫೀಚರ್ ಸ್ಟೋರ್ಗಳನ್ನು (Feature Stores) ಬಳಸಿ ಅನೇಕ ಸಿಸ್ಟಮ್ಗಳು ಪ್ರೆಡಿಕ್ಷನ್ ಮಾಡುವതിಗಿಂತ ಡೇಟಾವನ್ನು ಪಡೆಯಲು (fetching) ಹೆಚ್ಚು ಸಮಯವನ್ನು ವ್ಯಯಿಸುತ್ತವೆ. ಡೇಟಾ ರಿಟ್ರಿವಲ್ 450ms ತೆಗೆದುಕೊಳ್ಳುವಲ್ಲಿ, 50ms ಮಾಡೆಲ್ 500ms ಸಿಸ್ಟಮ್ ಆಗಿ ಬದಲಾಗುತ್ತದೆ. ಲುಕ್ಅಪ್ಗಳನ್ನು (lookups) ವೇಗಗೊಳಿಸಲು Redis, DynamoDB ಅಥವಾ Feast ನಂತಹ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ.
ಫೀಚರ್ಗಳನ್ನು ಮೊದಲೇ ಲೆಕ್ಕಹಾಕಿ (Precompute Features) ವಿನಂತಿಯ ಸಮಯದಲ್ಲಿ (request time) ಎಲ್ಲವನ್ನೂ ಲೆಕ್ಕಹಾಕಬೇಡಿ. ಕಸ್ಟಮರ್ ಲೈಫ್ಟೈಮ್ ವ್ಯಾಲ್ಯೂ (customer lifetime value) ನಂತಹ ಡೇಟಾವನ್ನು ಮೊದಲೇ ಲೆಕ್ಕಹಾಕಲು ರಾತ್ರಿ ಸಮಯದ ಬ್ಯಾಚ್ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಬಳಸಿ. ವಿನಂತಿಯ ಸಮಯದಲ್ಲಿ ಇತ್ತೀಚಿನ ವಹಿವಾಟುಗಳಂತಹ (recent transactions) ರಿಯಲ್-ಟೈಮ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಲೆಕ್ಕಹಾಕಿ.
ಕ್ಯಾಷಿಂಗ್ (Caching) ಅನುಷ್ಠಾನಗೊಳಿಸಿ ಅನೇಕ ವಿನಂತಿಗಳು ಪುನರಾವರ್ತಿತವಾಗಿರುತ್ತವೆ. ಸಾಮಾನ್ಯ ಕ್ವೇರಿಗಳಿಗಾಗಿ ರೆಸ್ಪಾನ್ಸ್ಗಳನ್ನು ಕ್ಯಾಶ್ ಮಾಡಲು Redis ಅಥವಾ CloudFront ಬಳಸಿ. ಕ್ಯಾಶ್ ಹಿಟ್ (cache hit) ಲೇಟೆನ್ಸಿಯನ್ನು ಸೆಕೆಂಡುಗಳಿಂದ ಮಿಲಿಸೆಕೆಂಡ್ಗಳಿಗೆ ಇಳಿಸುತ್ತದೆ.
ರಿಟ್ರಿವಲ್ ಅನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ RAG ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ, ಇಡೀ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹುಡುಕುವುದು ನಿಧಾನವಾಗಿರುತ್ತದೆ. ನಿಮ್ಮ ಸರ್ಚ್ ಸ್ಪೇಸ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಇಲಾಖೆಗಳು ಅಥವಾ ಡಾಕ್ಯುಮೆಂಟ್ ಪ್ರಕಾರಗಳಿಗೆ ಸೀಮಿತಗೊಳಿಸಲು ಮೆಟಾಡೇಟಾ ಫಿಲ್ಟರ್ಗಳನ್ನು ಬಳಸಿ.
ಹೈಬ್ರಿಡ್ ಸರ್ಚ್ ಅನ್ನು ವಿವೇಕದಿಂದ ಬಳಸಿ ಕೀವರ್ಡ್ಗಳು ಮತ್ತು ವೆಕ್ಟರ್ಗಳೆರಡನ್ನೂ ಬಳಸಿ ಹುಡುಕುವುದು ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ ಆದರೆ ಸಮಯವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಮೊದಲು ಸಣ್ಣ ಕ್ಯಾಂಡಿಡೇಟ್ ಸೆಟ್ ಅನ್ನು ಹುಡುಕಲು ಕೀವರ್ಡ್ ಸರ್ಚ್ ಬಳಸಿ. ನಂತರ ಆ ಕ್ಯಾಂಡಿಡೇಟ್ಗಳ ಮೇಲೆ ಮಾತ್ರ ವೆಕ್ಟರ್ ರ್ಯಾಂಕಿಂಗ್ ಬಳಸಿ.
ಕಾರ್ಯಗಳನ್ನು ಸಮಾಂತರವಾಗಿ (Parallel) ಚಲಾಯಿಸಿ ಏಜೆಂಟ್ ಟೂಲ್ಗಳನ್ನು ಒಂದರ ನಂತರ ಒಂದರಂತೆ ಚಲಾಯಿಸಬೇಡಿ. ಸೀಕ್ವೆನ್ಷಿಯಲ್ ಎಕ್ಸಿಕ್ಯೂಷನ್ (Sequential execution) ಪ್ರತಿ ಬಾರಿಯೂ ಸಮಯವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಒಟ್ಟು ಸಮಯವನ್ನು ಅತ್ಯಂತ ನಿಧಾನವಾದ ಕಾರ್ಯದ ಅವಧಿಗೆ ಇಳಿಸಲು ಟೂಲ್ಗಳನ್ನು ಸಮಾಂತರವಾಗಿ ಚಲಾಯಿಸಿ.
ಸರಿಯಾದ ಗಾತ್ರದ ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಿ ಪ್ರತಿಯೊಂದು ಕಾರ್ಯಕ್ಕೂ ದೊಡ್ಡ ಮಾಡೆಲ್ ಅಗತ್ಯವಿಲ್ಲ. ವರ್ಗೀಕರಣ (classification) ಮತ್ತು ಇಂಟೆಂಟ್ ಡಿಟೆಕ್ಷನ್ (intent detection) ಗಾಗಿ ಸಣ್ಣ ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಿ. ಸಂಕೀರ್ಣ ತರ್ಕಕ್ಕಾಗಿ (complex reasoning) ಮಾತ್ರ ದೊಡ್ಡ ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಿ.
ಕ್ವಾಂಟೈಸೇಶನ್ (Quantization) ಅನ್ವಯಿಸಿ FP32 ಮಾಡೆಲ್ಗಳನ್ನು INT8 ಅಥವಾ INT4 ಫಾರ್ಮ್ಯಾಟ್ಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ. ಇದು ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ವೇಗಗೊಳಿಸುತ್ತದೆ. ಇದು ಎಡ್ಜ್ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ಗಳು ಮತ್ತು ಹೈ-ಥ್ರೂಪುಟ್ ವರ್ಕ್ಲೋಡ್ಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಎಲ್ಲವನ್ನೂ ಟ್ರ್ಯಾಕ್ ಮಾಡಿ ನೀವು ನೋಡಲಾಗದಿದ್ದನ್ನು ಸರಿಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ರಿಟ್ರಿವಲ್, ಸರ್ಚ್, ಟೂಲ್ ಕಾಲ್ಸ್ ಮತ್ತು ಇನ್ಫರೆನ್ಸ್ ಸೇರಿದಂತೆ ಪ್ರತಿ ಹಂತದ ಲೇಟೆನ್ಸಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ. ನಿಜವಾದ ಬಾಟಲ್ನೆಕ್ಗಳನ್ನು (bottlenecks) ಕಂಡುಹಿಡಿಯಲು Langfuse ಅಥವಾ OpenTelemetry ನಂತಹ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ.
ವಿಳಂಬವು ಡೇಟಾಬೇಸ್ನಿಂದ ಬರುತ್ತಿದೆಯೇ ಅಥವಾ LLM ನಿಂದ ಬರುತ್ತಿದೆಯೇ ಎಂಬುದು ಬಳಕೆದಾರರಿಗೆ ಮುಖ್ಯವಲ್ಲ. ಅವರಿಗೆ ಕೇವಲ ಒಟ್ಟು ಕಾಯುವ ಸಮಯದ ಬಗ್ಗೆ ಮಾತ್ರ ಕಾಳಜಿ ಇರುತ್ತದೆ.
Optional learning community: https://t.me/GyaanSetuAi