Ana içeriğe geç

Yörünge Maliyeti Bir Çizelgeleme Girdisidir, Sonradan Yazılan Bir Rapor Değil

Bir maliyet toplamı değil, bir maliyet eğrisi, orkestratörün her adımda derinliği harcamayla değiş tokuş etmesini sağlar. Bu yazı, bu değiş tokuşun çizelgeleyicinin içine ait olduğunu savunuyor.

Candlestick chart showing a downward trend in the stock market analysis.

Toplamların sorunu

Çoğu agent platformu maliyeti, bir finans ekibinin bulut harcamasını raporlaması gibi raporlar: bir çalıştırmaya atfedilen, çalıştırma bittikten sonra teslim edilen bir toplam. Bu toplam muhasebe için faydalı, kontrol için faydasızdır. Sayı ortaya çıktığında, onu üreten her karar çoktan verilmiştir.

Retrieval ağırlıklı bir araştırma görevini düşünün. Agent sorguyu çözer, bir arama aracına yayılır, birkaç doküman çeker ve tek bir aday yanıt üretmeden önce bütçesinin çoğunu context derlemeye harcar. Üçüncü adımda yörünge, ödeneğinin çoğunu tüketmiştir. Otuzuncu adımda, agent yanıtının gerçekten desteklenip desteklenmediğini kontrol etmesi gerektiğinde, harcayacak hiçbir şey kalmamıştır. Çalıştırma yüksek sesle başarısız olmaz. Doğrulaması olmayan, kendinden emin bir yanıt döndürür ve maliyet raporu rahat, bütçe içinde bir çalıştırma gösterir.

Maliyeti bir sinyal yerine bir rapor olarak ele almanın temel başarısızlığı budur. Bir çalıştırmanın maliyeti arka planda biriken skaler bir değer değildir; şekli olan bir eğridir ve şekil, agent'ın birazdan neyi karşılayamayacağını söyler.

Çalıştırma başına üst sınırlar neden bunu çözmez

Bariz çözüm bir üst sınırdır: harcama bir eşiği geçtiğinde çalıştırmayı durdurun. Üst sınırlar iki nedenden dolayı kör bir araçtır.

Birincisi, geç devreye girerler. Bir üst sınır toplam üzerinde bir limittir, bir sonraki eylem üzerinde bir kısıt değil. Ödeneğini retrieval'a harcamış bir agent, üst sınıra tam da en az kesmek istediğiniz adımda, doğrulama sırasında çarpacaktır. Üst sınır, bir bütçe sorununu bir doğruluk sorununa dönüştürür.

İkincisi, bütçeyi kullanılmadan bırakırlar. Üst sınırının altında biten bir çalıştırmanın, kalanı faydalı olacağı yere harcamak için hiçbir mekanizması yoktur — ekstra bir doğrulama geçişine, ikinci bir retrieval açısına veya belirsiz bir talimatın yeniden okunmasına. Üst sınır aynı anda hem fazla katı hem fazla gevşektir, çünkü yanlış niceliği yönetir.

Önemli olan nicelik, beklenen adım kazancı başına marjinal maliyettir: bir sonraki aday eylemin maliyeti nedir ve yörüngeyi ne kadar iyileştirmesi beklenir. Bu sinyal yalnızca yürütme sırasında var olur, bu da onu sonradan yeniden inşa etmek yerine runtime tarafından üretilmesi gerektiği anlamına gelir.

Maliyeti birinci sınıf bir çizelgeleme değişkeni yapmak

A scenic view of a bustling town square in Luxembourg city, showcasing classic European architecture.

Ön koşul, her adımın bir fiyat taşımasıdır. Çalıştırmanın sonunda bir tahmin değil, orkestratörün onu değerlendirdiği anda adıma bağlanan hesaplanabilir bir maliyet. Pratikte bu, her adımı en az dört nitelikle etiketlemek anlamına gelir:

  • model — adımın hangi model sınıfını çağıracağı, çünkü yönlendirme ve üretim maliyet açısından büyüklük mertebeleriyle farklılık gösterir;
  • token sınıfı — girdi, çıktı, önbelleğe alınmış girdi ve reasoning token'ları birbirinin yerine geçmez ve tek bir sayıda toplanmamalıdır;
  • araç gecikmesi — duvar saati süresi, çünkü yavaş bir araç token açısından ucuz olsa bile çalıştırmanın zaman bütçesini tüketir;
  • araç fiyatı — dış çağrının kendi maliyeti, ki bu genellikle token muhasebesinde görünmez.

Bu etiketlerle orkestratör, bir sonraki aday eylemi ona bağlanmadan önce fiyatlandırabilir. Bir adım artık opak bir fonksiyon çağrısı değildir; öngörülen bir maliyeti ve öngörülen bir faydası olan bir satır kalemidir.

# Sketch: pricing a candidate action before dispatch
def price(action, context):
    return {
        "model_cost": model_rates[action.model] * estimate_tokens(action, context),
        "tool_cost": tool_rates.get(action.tool, 0),
        "latency": tool_latency[action.tool] if action.tool else 0,
    }

def should_run(action, budget, context):
    cost = price(action, context)
    gain = expected_gain(action, context)  # from the same policy that ranks actions
    return cost["model_cost"] + cost["tool_cost"] <= budget.remaining_for(action.kind)

Önemli olan kısım son satırdır: bütçe tek bir havuz değildir. Adım türüne göre bölümlenmiştir ve bu bölümleme, yürütme sırasının kendiliğinden ortaya çıkan bir özelliği değil, bir politika kararıdır.

Görev sınıfı başına harcama politikaları

Tüm görev sınıfları için tek bir bütçe politikası, bir sınıfın yanlış hizmet almasını garanti eder. İki desen alanın çoğunu kapsar.

Keşif ağırlıklı görevler — açık uçlu araştırma, keşif, genişlik öncelikli arama — azalan bir bütçe ister. Erken adımlar ucuz ve çoktur; orkestratör retrieval ve aday üretimine serbestçe harcamalı, sonra azaltmalıdır. Azaltma, asıl seçim ve sentez yapan sonraki adımlar için bütçeyi koruyan şeydir.

Doğrulama ağırlıklı görevler — çıkarım, uyumluluk kontrolleri, yanlış yanıtın pahalı olduğu her şey — ayrılmış bir kuyruk ister. Çalıştırmanın ödeneğinin sabit bir kesri geri tutulur ve retrieval veya üretim adımları tarafından dokunulamaz. Agent, context ne kadar cazip görünürse görünsün, doğrulama bütçesini daha fazla context'e harcayamaz.

Bu bir değiş tokuştur ve açıkça belirtilmelidir: bir kuyruk ayırmak, çalıştırmayı keşif sırasında daha az yetenekli yapar. Ayrılmış bir doğrulama bütçesine sahip bir agent, bazen doğrulamayı gereksiz kılacak dokümanı bulmakta başarısız olur. Politika, doğrulamanın daha değerli marjinal harcama olduğuna dair bir bahistir ve bazı görev sınıfları için bu bahis yanlıştı

Close-up of stock market trading screen displaying financial growth and charts.

Ucuza yönlendir, kasıtlı olarak yükselt

Maliyet bilinçli çizelgeleme aynı zamanda model yönlendirmeyi de ima eder. Sınıflandırma, niyet tespiti, yönlendirme kararları ve format normalizasyonu frontier çağrıları gerektirmez. Dar bir dağılımda doğru olmaları gerekir ve daha küçük modeller genellikle yeterlidir. Frontier çağrılarını yörüngenin gerçekten belirsiz olduğu adımlara ayırmak — ucuz modelin çıktısının düşük güvenli olduğu veya aday eylemlerin beklenen kazanç açısından birbirine yakın olduğu yerler — pahalı çağrıları sonucu değiştirdikleri yerde yoğunlaştırır.

Mekanizma sabit bir kural değil, bir güven kapısıdır. Orkestratör, ucuz modelin çıktı dağılımını bir eşikle karşılaştırır; eşiğin altında adım, ucuz modelin çıktısı context olarak frontier bir modele yeniden gönderilir. Kapının kendisi bir çizelgeleme kararıdır ve bütçeyle aynı politika nesnesine aittir.

Tasarımda önlem alınacak başarısızlık modları

Maliyet bilinçli çizelgeleme kendi başarısızlık modlarını getirir ve bunlar ince değildir.

Doğrulama açlığı. Marjinal maliyeti en aza indiren bir çizelgeleyici, doğrulamanın pahalı olduğunu ve yanıtı nadiren değiştirdiğini keşfedecektir. Kontrol edilmezse doğrulamayı atlar ve çalıştırma doğrulanmamış çıktıyı ucuza döndürür — ta ki bu çıktılardan biri, doğrulamanın maliyetinden çok daha pahalıya mal olacak şekilde yanlış olana kadar. Ayrılmış kuyruk tam da bu başarısızlığı umutla değil, politikayla imkânsız kılmak için vardır.

Görünmez yeniden deneme enflasyonu. Yeniden denemeler, maliyet kaymasının en yaygın kaynağıdır, çünkü genellikle adım olarak değil, kontrol akışı olarak uygulanırlar. Başarısız olup üç kez yeniden denen bir araç dört adım yürütmüş ama bir adım kaydetmiştir. Yeniden denemeler kendi maliyet girdileriyle birinci sınıf adımlar değilse, çizelgeleyicinin gördüğü eğri, çalıştırmanın gerçekte ürettiği eğriden sapar. Yeniden denemeleri açıkça sayın, fiyatlandırın ve bütçe politikasının onları görmesini sağlayın.

Fan-out çoğalması. Çok agent'lı sistemler eğriyi çoğaltır. Beş worker gönderen ve her birinin üç alt görev gönderdiği bir supervisor, maliyetleri birbiriyle ilişkili on beş yörünge yaratmıştır — context paylaşırlar, retrieval'ı çoğaltırlar ve paylaşılan bir bağımlılık yavaş olduğunda birlikte başarısız olurlar. Worker başına bütçe bir bütçe değildir; kimsenin seçmediği bir şeye toplanan on beş bağımsız bütçedir. Limiti sürü seviyesinde uygulayın; supervisor paylaşılan bir havuzdan tahsis etsin ve worker'lar ona karşı teklif versin.

Değiş tokuşun ait olduğu yer

Argüman, maliyet raporlamasının gereksiz olduğu değildir. Finansın toplamlara ihtiyacı vardır ve ekiplerin sistemlerinin ne tükettiğini anlaması gerekir. Argüman, raporlamanın, yukarı akışta, orkestratörün içinde, her eylemin değerlendirildiği anda üretilmesi gereken bir sinyalin aşağı akış tüketicisi olduğudur.

Bir çalıştırmanın maliyet eğrisi olduğunda, çizelgeleyici bir dashboard'un yapamayacağı bir şeyi yapabilir: her adımda derinliği harcamayla, kasıtlı olarak, bir insanın seçtiği bir politika altında değiş tokuş edebilir. Bu bir çizelgeleme sorunudur ve çizelgelemenin gerçekleştiği yere aittir.

İlgili okumalar

Bunun yanıtladığı sorular

What is the difference between a cost total and a cost curve for an agent run?

A cost total is a single number produced after the run ends, useful for accounting. A cost curve is the per-step cost accumulated during execution, which lets the orchestrator price the next candidate action and decide whether to spend on it. Only the curve can influence scheduling.

Why do per-run cost caps fail?

Caps govern the total rather than the next action. They fire after the damage is done — often truncating verification — and they leave unused budget when a run finishes early. They are simultaneously too strict and too loose because they constrain the wrong quantity.

How should a scheduler handle retries in cost accounting?

Retries must be first-class steps with their own cost entries. If they are implemented as invisible control flow, the curve the scheduler sees diverges from the curve the run actually produces, and budget policy is applied to a fiction.

Why enforce budgets at the swarm level rather than per worker?

Fan-out multiplies the curve. A supervisor dispatching multiple workers creates correlated trajectories that share context and duplicate retrieval. Per-worker budgets sum to a total nobody chose; a shared pool with workers bidding against it keeps the limit meaningful.