Jednotka 7 / 11

Dávkové a asynchronní zátěže

zisky:

  • Určuje, pro které úlohy je dávkové zpracování vhodné
  • Chápe kompromis mezi cenou a latencí mezi synchronním, asynchronním a dávkovým zpracováním
  • Navrhne robustní dávkový pracovní postup, který přiřazuje custom_id k výsledkům

Většina integrací LLM se zaměřuje na „živé“ scénáře, kdy uživatel čeká na odpověď před obrazovkou. Většina profesionálních úloh však ve skutečnosti neprobíhá: označování tisíců dokumentů přes noc, shrnutí celé datové sady, klasifikace celých nahrávek hovorů v archivu. V těchto věcech nikdo neočekává okamžitou odpověď; Důležité je dokončit práci levně a spolehlivě. Dávka je přesně pro tyto zátěže. V této jednotce se naučíte rozdíl mezi synchronním, asynchronním a dávkovým zpracováním, kdy je dávkové zpracování tou správnou volbou, a robustním tokem, který s jistotou odpovídá custom_id a výsledkům.

Tři pracovní režimy

režimu

Jak to funguje

zpoždění

Typická cena

vhodnou práci

synchronní

Podáte žádost a čekáte na odpověď

sekund

Standardní

Živý chat, okamžitý asistent

asynchronní

Úlohu zařadíte do fronty a dostanete upozornění, až bude hotová.

Sekundy – minuty

Standardní

Úlohy na pozadí, kroky automatizace

Dávka

Odešle tisíce požadavků v jednom balíčku a poté získá výsledky

Minuty – hodiny

Obvykle se slevou

Velkoobjemové úlohy odolné vůči zpoždění

Dávkové zpracování je toto: stovky/tisíce požadavků posíláte jako jednu „práci“ poskytovateli; Poskytovatel je zpracovává vlastním tempem a po dokončení vrací všechny výsledky hromadně. Na oplátku získáte dvě věci: (1) obecně nižší jednotkové náklady, (2) schopnost pohybovat se ve velkém objemu, aniž byste museli řešit omezení rychlosti. Cenou je, že výsledky se nedostaví okamžitě, ale až po nějaké době.

Kdy dávkovat, kdy ne?

Rozhodnutí spočívá v jedné otázce: Čeká uživatel na výsledek nyní?

  • Ne, můžu to držet → šarže kandidát. Noční značkování, sumarizace dávek, klasifikace archivů, obohacování dat, provádění vyhodnocení (vyhodnocení).
  • Ano, čekám na obrazovce → synchronizace. Živý chat, okamžité rady, pomoc při vyplňování formulářů.
Tip: V jednom produktu mohou koexistovat dva režimy. Uživatel pracuje synchronně v živém chatu; V noci dáte všechny konverzace toho dne šarži ke kvalitní analýze. Oddělení „živé potřeby“ od „kolektivní potřeby“ je prvním rozhodnutím architektury.

Anatomie robustního dávkového toku

Nejdůležitějším technickým pravidlem dávkového zpracování je párování výsledků.

  1. Každému požadavku přiřaďte jedinečné `custom_id`. Toto je vaše vygenerované ID, které identifikuje požadavek (např. faktura-2026-07-18-000431).
  2. Odešlete úlohu. Všechny požadavky jdou v jednom balíčku; každý s vlastním custom_id.
  3. Dotazujte se na situaci. Ptáte se na stav v intervalech, dokud není úloha „hotová“.
  4. Porovnejte výsledky s `custom_id`. Výsledky mohou být vráceny v jiném pořadí, než je pořadí odeslání; takže se nikdy neshodujte podle pozice, ale podle custom_id, které každý výsledek nese.
  5. Zkontrolujte typ každého výsledku. Jeden požadavek může být úspěšný, jeden může selhat, jeden může vypršet. Proces založený na úspěchu/neúspěchu.

{ "requests": [ { "custom_id": "invoice-000431", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasifikovat fakturu. Vrátit pouze JSON.", "messages": [{ "rolecontent"""" "{}", "user_ }, { "custom_id": "invoice-000432", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Klasifikace faktury. Vraťte pouze JSON.", "messages": [{ "role": "user", "text"_}" ]}

Upozornění: Shoda výsledků na základě příkazu k odeslání je chyba číslo jedna v dávkovém zpracování. Fronta není zachována. Bez custom_id nemůžete s jistotou vědět, který výsledek patří ke kterému dokumentu – nesprávná shoda tiše vede k nesprávným datům.

Kopírovatelné šablony

# pravidlo generování custom_id (jedinečné a dohledatelné)Formát: <isture>-<date>-<sekvence>. Příklad: request-20260718-000431Pravidlo: nikdy neopakovat v práci; Vložte do něj ID záznamu prostředku.

# Karta dávkové zakázky (šablona plánování)Název zakázky: .............Počet záznamů: .............Model: ............. (jednoduchá zakázka → rychlý model)Max_tokenů na požadavek: .............Očekávaná tolerance dodací lhůty: ......... hodin Klíč pro shodu výsledků: custom_idV případě chyby: opakovat / fronta / sestava

# Výzva k jedné žádosti v dávce (krátká a schematická) Klasifikujte tento dokument. Stačí vrátit tento JSON s komentářem:{"category":"...","urgency":"low|medium|high"}Dokument: """{{document}}"""

# Pseudokód zpracování výsledku pro každý výsledek: if result.status == "úspěch": záznam = find(custom_id) save(record, result.output) jinak: add_to_fail(custom_id, result.error) # pak to zkuste znovu

Slabá výzva / Silná výzva (návrh dávkové úlohy)

# SLABÝ (křehký design) Odešlete 10 000 dokumentů v pořadí se silným modelem, uložte vrácené výsledky v pořadí, v jakém došly.

# SILNÝ (odolný design) Odešlete 10 000 dokumentů v jedné dávce pomocí rychlého modelu. Přidělte každému dokumentu jedinečné custom_id obsahující ID zdrojového záznamu. Porovnejte výsledky s custom_id; zařaďte ty neúspěšné do fronty a zkuste to znovu. Spusťte v nočním okně; Tolerance doručení 6 hodin.

Výkonná verze; Předdefinuje výběr modelu, odpovídající klíč, zpracování chyb a načasování. To je rozdíl v bezpečném zpracování desítek tisíc záznamů.

Tři mini pouzdra

Případ 1 – Noční značkování. Tým elektronického obchodu by roztřídil 200 000 recenzí produktů do značek sentimentu. Živé synchronní streamování podléhalo rychlostním limitům a bylo nákladné. Práci nosili do noci jako várku s rychlým modelem; Jednotkové náklady klesly, celá souprava byla ráno připravena a nebyly žádné problémy s omezením rychlosti.

Případ 2 – Záměna objednávky. Dávka výzkumného týmu odebrala 5 000 článků, ale výsledky zapsala do souborů v pořadí, v jakém dorazily. Protože výsledky byly vráceny v jiném pořadí, přibližně 900 z 5 000 abstraktů bylo spojeno s nesprávným článkem. Přemapovali to na custom_id; problém vyřešen a tato zkušenost se stala trvalým pravidlem: "Vždy custom_id v dávce."

Případ 3 — Pohotovostní režim ve špatném režimu. Tým podpory se pokusil poskytnout dávkové živé odpovědi, které uživatel očekával na obrazovce; Uživatelé se vzdali, protože výsledky dorazily o několik minut později. Přesunuli živou úlohu zpět do synchronizace a v dávce ponechali pouze noční analýzu kvality. Lekce: dávka není pro pohotovostní režim.

Časté chyby

  • Shoda výsledků podle pozice: Pořadí není zachováno; Použijte custom_id.
  • Přenos živé úlohy do dávky: Uživatel nemůže čekat minuty; dávka je pro úlohy odolné vůči zpoždění.
  • Neřeší případy chyb: Některé požadavky se mohou vrátit neúspěšně/vypršela; Umístěte jej do samostatné fronty a zkuste to znovu.
  • Silný reflex využití modelu v dávce: Rychlý model + dávka je nejlevnější kombinace v jednoduchých zakázkách.
  • Neumožnění sledovatelnosti custom_id: Pokud není v ID vložen žádný zdrojový záznam, je obtížné propojit výsledek zpět.
  • Zapomínání prozkoumat situaci: Očekávání výsledků před dokončením úlohy; Zkontrolujte stav dokončení.

Deeper: Monitorování dávky a řízení částečného selhání

Nejvyspělejším aspektem dávkového zpracování je, že vyžaduje jiný způsob myšlení než jednotlivá volání: dávková úloha je „proces“, nikoli „událost“. Předpokládat, že desítky tisíc žádostí budou všechny úspěšné, je křehké; Realistický design akceptuje částečné selhání od začátku. Stav každého výsledku se může lišit: úspěšný, neúspěšný (např. neplatný vstup), zrušený nebo vypršela platnost. Robustní tok zpracovává stav každého výsledku samostatně, když jím prochází, zařazuje selhání do samostatné „fronty opakování“ a spouští tuto frontu samostatně.

Druhým postupem je navrhnout idempotenci (že spuštění stejné úlohy dvakrát nezpůsobí žádnou škodu). Pokud je dávka přerušena a restartujete ji, neměli byste znovu zpracovávat a zapisovat dvakrát již zpracované záznamy. Svázání custom_id s vaším zdrojovým záznamem funguje i zde: "byl tento záznam již zpracován?" před uložením výsledku. Kontrola zabraňuje dvojímu psaní.

Třetím bodem je rozložení živých přenosů s dávkou. Některé úlohy mají jak aktivní, tak dávkové rozměry: když uživatel načte dokument, poskytnete mu rychlé předběžné shrnutí (synchronní) a znovu zpracujete stejný dokument pro hlubší analýzu v noci (dávka). Vědomé oddělení těchto dvou režimů optimalizuje jak uživatelskou zkušenost, tak náklady.

Dávkování je také způsob, jak se vypořádat s rychlostními limity (jednotka 8). Odesílání velkého objemu v živém synchronním toku vytváří konstantní 429, zatímco odesílání stejného objemu do dávky přenáší limitní tlak na vlastní plánování poskytovatele a dělá úlohu předvídatelnější.

V souhrnu

Dávkové zpracování je obecně levnější a robustnější režim pro zátěže odolné vůči latenci a velké objemy. Jeho rozhodnutí bylo "čeká uživatel na výsledek nyní?" určuje otázku. Nejkritičtějším technickým pravidlem je přidělit každému požadavku jedinečné custom_id, porovnávat výsledky podle ID, nikoli podle umístění, a posuzovat úspěch/neúspěch každého výsledku samostatně.

Aplikační úkol

Vyberte úlohu s velkým objemem (např. klasifikace archivu). (1) Rozhodněte, zda je toto dílo živé nebo kolektivní, a zdůvodněte to. (2) Navrhněte formát custom_id (zahrňte záznam zdroje). (3) Vyplňte kartu dávkové úlohy (model, max_tokens, tolerance, chybová politika). (4) Napište pseudokód zpracování výsledků tak, aby zahrnoval neúspěšné požadavky.

kontrolní seznam

  • [ ] Dokážu rozlišit synchronní, asynchronní a dávkový režim na ose náklady/zpoždění.
  • [ ] Správným položením otázky se mohu rozhodnout, zda je zakázka vhodná pro dávkové nebo ne.
  • [ ] Každému požadavku přidělím jedinečné custom_id a výsledky porovnám podle ID.
  • [ ] Mohu zpracovat neúspěšné/vypršené výsledky samostatně.
  • [ ] Znám výhody volby rychlého modelu v jednoduchých dávkových úlohách.