Süpervizör deseni bir tavana çarpar
Bir süpervizör agent'ı diyagramda zarif görünür. Bir planlayıcı bir hedef alır, onu alt görevlere böler ve her alt görevi bir worker'a yönlendirir. Worker'lar sonuçları döndürür, süpervizör bunları birleştirir ve sistem bir yanıt üretir. Üç veya dört worker için bu desen sorunsuzdur. Otuz eşzamanlı çalıştırma için ise, dağıtık bir kostüm giymiş tek iş parçacıklı bir yönlendiricidir.
Aynı anda iki şey bozulur. Birincisi serileştirme: her alt görev bir worker'a ulaşmadan önce tek bir akıl yürütme adımından geçer, bu yüzden süpervizörün gecikmesi bağımlılık grafiğindeki her atlamaya eklenir. İkincisi prompt büyümesi. N worker rolünü ayırt etmesi gereken bir süpervizör, bağlamında N açıklama, N araç şeması ve N yönlendirme örneği taşır. Yönlendirme doğruluğu bir dikkat problemidir ve aday kümesi büyüdükçe dikkat bozulur. Süpervizör yüksek sesle başarısız olmaz; önce marjinal durumları yanlış yönlendirmeye başlar, sonra yaygın olanları.
OS analojisinin gerçekte ne kazandırdığı
Analoji süsleme değildir. Bir süpervizör prompt'unun ifade edemeyeceği üç mekanizmayı adlandırır.
Kabul kontrolü. Bir çalıştırma başlamadan önce, dispatcher bütçenin, araç kotasının ve bağımlılık grafiğinin buna izin verip vermediğini kontrol eder. Ebeveyni tamamlanmamış bir çalıştırma kabul edilmez. Kiracısı için kalan token bütçesini aşacak bir çalıştırma kabul edilmez. Diğer çalıştırmalar tarafından zaten doyurulmuş bir araca ihtiyaç duyan bir çalıştırma kabul edilmez. Kabul kontrolü, aşırı yüklenmiş bir sistemi öngörülemez şekilde bozulan bir sistemden, tanımlı bir sınırda işi reddeden bir sisteme dönüştürür.
Önceliklendirme. Uzun ufuklu bir çalıştırma, çalışma durumunu kaybetmeden askıya alınabilir ve devam ettirilebilir olmalıdır. Bu, çalıştırmanın durumunun yalnızca bir süreç canlıyken var olan bir konuşma tamponunda yaşayamayacağı anlamına gelir. Somutlaştırılmalıdır: kısmi plan, tamamlanan adımlar, üretilen artefaktlar, halihazırda ödenmiş araç sonuçları. Önceliklendirme, kısa bir etkileşimli isteğin bir toplu analizin önüne geçmesini, toplu analizi çöpe atmadan sağlayan şeydir.

Kiracılar arası adalet. Bir ekibin toplu işi başka bir ekibin etkileşimli agent'ını açlığa sürükleyebildiğinde, sorun artık akıl yürütme kalitesi değildir. Tahsistir. Kiracı başına kuyrukları ve tanımlı bir paylaşım politikası olan bir zamanlayıcı, açlığı ortaya çıkan bir kaza yerine bir politika kararı haline getirir.
Dürüst bir ödünleşim: bir zamanlayıcı, kendisi de işletilmesi gereken bir kontrol düzlemi ekler. Kuyruk durumu, kira süresi dolması ve önceliklendirme mantığı yeni hata modları getirir ve kötü ayarlanmış bir dispatcher, naif bir süpervizör altında sorunsuz tamamlanacak çalıştırmalara gecikme ekleyebilir. Zamanlayıcı, maliyetini yalnızca eşzamanlılık çekişmenin gerçek olduğu kadar yüksek olduğunda hak eder. Bu eşiğin altında, süpervizör daha basit ve daha ucuzdur.
Tasarım kuralları
Planlayıcıyı dispatcher'dan ayırın. Planlayıcı bir DAG yayar: düğümler agent adımlarıdır, kenarlar veri bağımlılıklarıdır ve her düğüm kaynak gereksinimlerini bildirir. Planlayıcı kaç worker olduğunu bilmez. Dispatcher kapasiteye, sıralamaya ve kabule sahiptir. Bu ayrım, yönlendirme kalitesi ile zamanlama kalitesinin tek bir prompt içinde birbirine karşı takas edilmek yerine bağımsız olarak iyileştirilmesini sağlayan şeydir.
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
Her agent adımını idempotent yapın. Önceliklendirilebilen ve yeniden denenebilen bir adım, aynı girdilerle yeniden yürütüldüğünde aynı sonucu üretmeli ya da etkisinin zaten gerçekleştiğini tespit edebilmelidir. İdempotency, önceliklendirmeyi dikkatli işleme yoluyla güvenli olmaktan çıkarıp inşa yoluyla güvenli kılan şeydir. Yan etkisi olan araç çağrıları, duvar
ahtarına ihtiyaç duyar.

Kuyruk derinliğini ve bekleme süresini birinci sınıf telemetri olarak açığa çıkarın. Kuyruk durumunun göründüğü tek yer bir log satırıysa, operatörler yavaş bir modeli doygun bir dispatcher'dan ayırt edemez. Kuyruk derinliği, bekleme süresi, kabul redleri ve önceliklendirme sayıları, token kullanımı ve hata oranlarıyla aynı panoya aittir.
Çalışma durumunu adım sınırlarında kalıcı hale getirin. Askıya alma birimi çalıştırma değil, adımdır. Yedi adımdan dördünü tamamlamış bir çalıştırma, bir ile dördüncü adımlar için yeniden ödeme yapmadan beşinci adımdan devam ettirilebilmelidir.
Ne ölçülmeli
Kuyrukta geçen süre ile akıl yürütmede geçen süre, ayrı ayrı izlenmeli. Bunlar farklı düzeltmeleri olan farklı problemlerdir. Artan akıl yürütme süresi model veya prompt değişikliklerine işaret eder; artan kuyruk süresi kapasite veya kabul politikasına işaret eder. Bunları tek bir uçtan uca gecikme sayısında toplamak, hangisinin hareket ettiğini gizler.
Sabit bir iş yükü altında önceliklendirme oranı ve devam ettirme sadakati. Sabit bir çalıştırma kümesini yeniden oynatın, adım sınırlarında önceliklendirmeleri zorlayın ve devam ettirilen çalıştırmaların kesintisiz olanlarla aynı nihai artefaktları ürettiğini kontrol edin. Devam ettirme sadakati, zamanlayıcı için doğruluk testidir.
Çerçevelemedeki kayma
Süpervizör merkezli orkestrasyon, sürüyü bir akıl yürütme problemi olarak ele alır ve akıl yürütmenin ölçekleneceğini umar. Zamanlayıcı merkezli orkestrasyon ise onu bir kaynak problemi olarak ele alır ve akıl yürütme birimlerini bağımsız, devam ettirilebilir ve hesap verebilir kılar. İlk çerçeveleme, demolar'da çalışan ve üretimde tıkanan sistemler üretir. İkincisi, hata modları okunabilir olan sistemler üretir: bir çalıştırma bekliyor ve nedeni kuyruk durumunda.
İş ortadan kaybolmaz. Prompt mühendisliğinden kontrol düzlemi mühendisliğine taşınır; eşzamanlılık kısıt olduğunda ait olduğu yer de burasıdır.
