पाठ 3 / 25
Parallelization और Orchestrator-Workers
स्वतंत्र उप-कार्य parallel चलाएँ और orchestrator से वह काम बँटवाएँ जिसका पहले अनुमान नहीं लग सकता।
बाँटें, फिर जोड़ें
Parallelization स्वतंत्र calls एक साथ चलाती है, या तो काम के अलग-अलग हिस्सों पर, या तुलना के लिए एक ही काम के कई प्रयास। Orchestrator-workers में एक model runtime पर तय करता है कि काम कैसे बँटे, टुकड़े worker calls को देता है और नतीजे मिलाता है। इसे तब उपयोग करें जब उप-कार्य पहले से न पता हों, जैसे कई अज्ञात files बदलना।
asyncio से parallel calls
gather सभी reviews साथ शुरू करता है, इसलिए कुल समय योग की जगह सबसे धीमे के क़रीब रहता है। async_llm कोई भी async model call है।
import asyncio
async def review_all(files: list[str]) -> list[str]:
tasks = [async_llm(f"Review this file:\n{f}") for f in files]
return await asyncio.gather(*tasks)हेड शेफ़
हेड शेफ़ ऑर्डर पढ़ता है, तय करता है कौन-सा व्यंजन किस रसोइये को जाए, और अंतिम थाली सजाता है। Orchestrator उप-कार्यों और worker calls के साथ यही करता है।
त्वरित जाँच: Fixed chain की तुलना में orchestrator-workers कब बेहतर है?
- जब उप-कार्य पहले से ज्ञात हों
- जब कोई model call नहीं चाहिए
- जब उप-कार्य input पर निर्भर हों और पहले से सूचीबद्ध न हो सकें
- जब latency बिल्कुल मायने न रखे
Answer
जब उप-कार्य input पर निर्भर हों और पहले से सूचीबद्ध न हो सकें — Orchestrator काम runtime पर खोजता है, जो fixed chain नहीं कर सकती।