الگوی ناظر به سقف میخورد
یک ایجنت ناظر در نمودار زیبا به نظر میرسد. یک برنامهریز هدفی را دریافت میکند، آن را به زیرکارها تجزیه میکند و هر زیرکار را به یک کارگر مسیردهی میکند. کارگرها نتایج را برمیگردانند، ناظر آنها را ادغام میکند و سیستم پاسخی صادر میکند. برای سه یا چهار کارگر این الگو خوب است. برای سی اجرای همزمان، یک روتر تکرشتهای است که لباس توزیعشده پوشیده است.
دو چیز همزمان میشکند. اولی سریالیزاسیون است: هر زیرکار قبل از رسیدن به کارگر از یک مرحله استدلال عبور میکند، بنابراین تأخیر ناظر به هر گام در گراف وابستگی اضافه میشود. دومی رشد پرامپت است. ناظری که باید بین N نقش کارگر تمایز قائل شود، N توصیف، N اسکیمای ابزار و N مثال مسیردهی را در کانتکست خود حمل میکند. دقت مسیردهی یک مسئله توجه است و توجه با رشد مجموعه کاندیدها تحلیل میرود. ناظر با صدای بلند شکست نمیخورد؛ شروع به مسیردهی اشتباه موارد حاشیهای میکند، سپس موارد رایج.
قیاس با سیستمعامل واقعاً چه چیزی به دست میدهد
قیاس تزئینی نیست. سه مکانیزم را نام میبرد که یک پرامپت ناظر نمیتواند بیان کند.
کنترل پذیرش. قبل از شروع یک اجرا، دیسپچر بررسی میکند که آیا بودجه، سهمیه ابزار و گراف وابستگی اجازه آن را میدهند. اجرایی که والدش کامل نشده پذیرفته نمیشود. اجرایی که بودجه توکن باقیمانده برای مستأجرش را تجاوز کند پذیرفته نمیشود. اجرایی که به ابزاری نیاز دارد که قبلاً توسط اجراهای دیگر اشباع شده پذیرفته نمیشود. کنترل پذیرش یک سیستم بارگذاریشده را از سیستمی که بهطور غیرقابل پیشبینی تخریب میشود به سیستمی تبدیل میکند که کار را در یک مرز تعریفشده رد میکند.
پیشدستی. یک اجرای بلندمدت باید بدون از دست دادن حالت کاری خود قابل تعلیق و ازسرگیری باشد. این یعنی حالت اجرا نمیتواند در یک بافر مکالمه زندگی کند که فقط تا زمانی که یک پردازش زنده است وجود دارد. باید مادی شود: برنامه جزئی، مراحل تکمیلشده، مصنوعات تولیدشده، نتایج ابزاری که قبلاً پرداخت شدهاند. پیشدستی چیزی است که به یک درخواست تعاملی کوتاه اجازه میدهد بر یک تحلیل دستهای اولویت بگیرد بدون دور انداختن تحلیل دستهای.

انصاف بین مستأجرها. وقتی کار دستهای یک تیم میتواند ایجنت تعاملی تیم دیگر را گرسنه نگه دارد، مسئله دیگر کیفیت استدلال نیست. تخصیص است. یک زمانبند با صفهای بهازای هر مستأجر و یک سیاست سهم تعریفشده، گرسنگی را به یک تصمیم سیاستی تبدیل میکند نه یک تصادف نوظهور.
یک معاوضه صادقانه: یک زمانبند یک صفحه کنترل اضافه میکند که خودش باید اداره شود. حالت صف، انقضای لیز و منطق پیشدستی حالتهای شکست جدیدی معرفی میکنند و یک دیسپچر بدتنظیم میتواند به اجراهایی که تحت یک ناظر ساده بهخوبی کامل میشدند تأخیر اضافه کند. زمانبند فقط زمانی ارزش هزینهاش را دارد که همزمانی بهقدری بالا باشد که رقابت واقعی باشد. زیر آن آستانه، ناظر سادهتر و ارزانتر است.
قواعد طراحی
برنامهریز را از دیسپچر جدا کنید. برنامهریز یک DAG صادر میکند: گرهها مراحل ایجنت هستند، یالها وابستگیهای دادهای، و هر گره نیازهای منابع خود را اعلام میکند. برنامهریز نمیداند چند کارگر وجود دارد. دیسپچر مالک ظرفیت، ترتیب و پذیرش است. این جداسازی چیزی است که اجازه میدهد کیفیت مسیردهی و کیفیت زمانبندی بهطور مستقل بهبود یابند بهجای اینکه درون یک پرامپت با هم معاوضه شوند.
plan -> DAG { node: { role, inputs, tools, budget } }
|
v
dispatcher: admit(node) if deps_done && budget_ok && quota_ok
enqueue(node) by priority and tenant share
lease(node) -> worker
on timeout or preempt: release lease, persist state
هر مرحله ایجنت را idempotent کنید. مرحلهای که میتواند پیشدستی و دوباره تلاش شود باید هنگام اجرای مجدد با همان ورودیها همان نتیجه را تولید کند، یا باید بتواند تشخیص دهد که اثرش قبلاً رخ داده است. Idempotency چیزی است که پیشدستی را بهطور ساختاری ایمن میکند نه با مدیریت دقیق. فراخوانیهای ابزار با اثرات جانب
نه از زمان ساعت دیواری.

عمق صف و زمان انتظار را بهعنوان تلهمتری درجهیک نمایان کنید. اگر تنها جایی که حالت صف ظاهر میشود یک خط لاگ باشد، اپراتورها نمیتوانند یک مدل کند را از یک دیسپچر اشباعشده تشخیص دهند. عمق صف، زمان انتظار، ردهای پذیرش و شمارش پیشدستیها به همان داشبوردی تعلق دارند که مصرف توکن و نرخ خطا در آن است.
حالت کاری را در مرزهای مرحله مادی کنید. واحد تعلیق مرحله است، نه اجرا. اجرایی که چهار مرحله از هفت مرحله را کامل کرده باید از مرحله پنجم قابل ازسرگیری باشد بدون پرداخت مجدد برای مراحل یک تا چهار.
چه چیزی را اندازه بگیریم
زمان در صف در مقابل زمان در استدلال، جداگانه ردیابی شوند. اینها مسائل متفاوتی با راهحلهای متفاوت هستند. افزایش زمان استدلال به تغییرات مدل یا پرامپت اشاره دارد؛ افزایش زمان صف به ظرفیت یا سیاست پذیرش. تجمیع آنها در یک عدد تأخیر سرتاسری پنهان میکند که کدام یک تغییر کرده است.
نرخ پیشدستی و وفاداری ازسرگیری در یک بار کاری ثابت. مجموعهای ثابت از اجراها را بازپخش کنید، پیشدستیها را در مرزهای مرحله اجباری کنید و بررسی کنید که اجراهای ازسرگیریشده همان مصنوعات نهایی را تولید میکنند که اجراهای بدون وقفه. وفاداری ازسرگیری آزمون درستی برای زمانبند است.
تغییر در چارچوببندی
ارکستراسیون ناظرمحور ازدحام را یک مسئله استدلال میبیند و امیدوار است استدلال مقیاس بگیرد. ارکستراسیون زمانبندمحور آن را یک مسئله منبع میبیند و واحدهای استدلال را مستقل، قابل ازسرگیری و پاسخگو میکند. چارچوب اول سیستمهایی تولید میکند که در دموها کار میکنند و در تولید متوقف میشوند. دومی سیستمهایی تولید میکند که حالتهای شکستشان خوانا است: یک اجرا در انتظار است و دلیلش در حالت صف است.
کار ناپدید نمیشود. از مهندسی پرامپت به مهندسی صفحه کنترل منتقل میشود، که همان جایی است که وقتی همزمانی محدودیت است به آن تعلق دارد.
