Yunit 7 / 11

Mga Batch at Asynchronous na Workload

Mga nadagdag:

  • Tinutukoy kung aling mga workload ang batch processing ay angkop para sa
  • Nauunawaan ang cost/latency tradeoff sa pagitan ng synchronous, asynchronous at batch processing
  • Nagdidisenyo ng isang mahusay na batch workflow na tumutugma sa custom_id sa mga resulta

Karamihan sa mga pagsasama ng LLM ay nakatuon sa mga "live" na sitwasyon kung saan ang isang user ay naghihintay ng tugon sa harap ng isang screen. Ngunit ang karamihan sa mga propesyonal na workload ay hindi aktwal na live: pag-tag ng libu-libong mga dokumento sa magdamag, pagbubuod ng isang buong dataset, pag-uuri ng buong pag-record ng tawag sa archive. Sa mga bagay na ito, walang umaasa ng agarang sagot; Ang mahalaga ay tapusin ang trabaho sa mura at mapagkakatiwalaan. Eksaktong para sa mga workload na ito ang batch. Sa unit na ito, malalaman mo ang pagkakaiba sa pagitan ng synchronous, asynchronous, at batch processing, kapag batch ang tamang pagpipilian, at isang matatag na daloy na kumpiyansa na tumutugma sa custom_id at mga resulta.

Tatlong Working Mode

mode

Paano ito gumagana

pagkaantala

Karaniwang gastos

angkop na trabaho

magkasabay

Gumawa ka ng isang kahilingan at maghintay para sa tugon

segundo

Pamantayan

Live chat, instant assistant

asynchronous

Pumila ka sa trabaho at maabisuhan kapag tapos na ito.

Segundo–minuto

Pamantayan

Mga gawain sa background, mga hakbang sa automation

Batch

Nagpapadala ng libu-libong kahilingan sa isang pakete, pagkatapos ay makukuha ang mga resulta

Minuto–oras

Karaniwang may diskwento

Mataas na dami, mapagparaya sa mga trabaho

Ang batch processing ay ito: nagpapadala ka ng daan-daang/libu-libong kahilingan bilang isang "trabaho" sa provider; Pinoproseso ng provider ang mga ito sa sarili nitong bilis at ibinabalik ang lahat ng resulta nang maramihan kapag nakumpleto na. Bilang kapalit, makakakuha ka ng dalawang bagay: (1) sa pangkalahatan ay mas mababang halaga ng yunit, (2) ang kakayahang ilipat ang mataas na volume nang hindi na kailangang harapin ang mga limitasyon ng bilis. Ang presyo ay ang mga resulta ay hindi dumating kaagad, ngunit pagkatapos ng ilang oras.

Kailan Batch, Kailan Hindi?

Ang desisyon ay bumaba sa isang tanong: Naghihintay ba ang user para sa resulta ngayon?

  • Hindi, kaya ko itong hawakan → batch candidate. Night tagging, batch summarization, archive classification, data enrichment, evaluation (eval) execution.
  • Oo, naghihintay sa screen → sync. Live chat, instant na payo, tulong kapag pinupunan ang mga form.
Tip: Maaaring magsama ang dalawang mode sa parehong produkto. Gumagana ang user nang sabay-sabay sa live chat; Sa gabi, ibibigay mo ang lahat ng pag-uusap sa araw na iyon sa batch para sa pagsusuri ng kalidad. Ang paghihiwalay ng "pamumuhay na pangangailangan" mula sa "kolektibong pangangailangan" ay ang unang desisyon ng arkitektura.

Anatomy ng Matatag na Batch Daloy

Ang pinakamahalagang teknikal na tuntunin ng pagproseso ng batch ay ang pagtutugma ng resulta.

  1. Bigyan ang bawat kahilingan ng natatanging `custom_id`. Ito ang iyong nabuong ID na tumutukoy sa kahilingan (hal. invoice-2026-07-18-000431).
  2. Isumite ang trabaho. Ang lahat ng mga kahilingan ay pumunta sa isang pakete; bawat isa ay may sariling custom_id.
  3. Poll ang sitwasyon. Humihingi ka ng katayuan sa pagitan hanggang sa "tapos na" ang trabaho.
  4. Itugma ang mga resulta sa `custom_id`. Maaaring ibalik ang mga resulta sa ibang pagkakasunud-sunod kaysa sa utos ng pagsusumite; kaya hindi kailanman tumugma ayon sa posisyon ngunit sa pamamagitan ng custom_id na dala ng bawat resulta.
  5. Suriin ang uri ng bawat resulta. Maaaring magtagumpay ang isang kahilingan, maaaring mabigo ang isa, maaaring mag-expire ang isa. Proseso batay sa tagumpay/kabiguan.

{ "requests": [ { "custom_id": "invoice-000431", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Classify invoice. Ibalik ang JSON only.", "messages": [{ ""{content": "user"; } }, { "custom_id": "invoice-000432", "params": { "model": "claude-haiku-4-5", "max_tokens": 128, "system": "Classify invoice. Ibalik ang JSON only.", "messages": [{ "role": "user_}}] } ]}

Babala: Ang pagtutugma ng mga resulta batay sa pagkakasunud-sunod ng pagsusumite ay ang numero unong pagkakamali sa batching. Hindi napreserba ang pila. Kung walang custom_id hindi mo matitiyak na malalaman kung aling resulta ang nabibilang sa kung aling dokumento — ang maling pagtutugma ay tahimik na humahantong sa maling data.

Mga Kopyadong Template

# custom_id generation rule (natatangi at traceable)Format: <isture>-<date>-<sequence>. Halimbawa: kahilingan-20260718-000431Panuntunan: hindi na mauulit sa trabaho; I-embed ang resource record ID dito.

# Batch job card (template ng pag-iskedyul)Pangalan ng trabaho: .............Bilang ng mga tala: .............Modelo: ............. (simpleng trabaho → mabilis na modelo)Max_tokens bawat kahilingan: .............Inaasahang pagpapaubaya sa oras ng paghahatid: ......... oras Result matching key: custom_idSa kaso ng error: muling subukan / pila / ulat

# Iisang kahilingan na prompt sa batch (maikli at eskematiko)I-classify ang dokumentong ito. Ibalik lang itong JSON, na nagkokomento:{"category":"...","urgency":"low|medium|high"}Document: """{{document}}"""

# Pagproseso ng resulta ng pseudo-code para sa bawat resulta: kung result.status == "success": record = find(custom_id) save(record, result.output) kung hindi: add_to_fail(custom_id, result.error) # pagkatapos ay subukang muli

Mahinang prompt / Malakas na prompt (batch job design)

# WEAK (fragile design)Magpadala ng 10,000 na dokumento sa pagkakasunud-sunod gamit ang malakas na modelo, i-save ang mga ibinalik na resulta sa pagkakasunud-sunod ng pagdating.

# STRONG (matibay na disenyo) Magpadala ng 10,000 dokumento sa isang batch na may mabilis na modelo. Bigyan ang bawat dokumento ng natatanging custom_id na naglalaman ng source-record ID. Itugma ang mga resulta sa custom_id; ipila ang mga nabigo at subukang muli. Tumakbo sa window ng gabi; Pagpapahintulot sa paghahatid 6 na oras.

Napakahusay na bersyon; Paunang tinukoy nito ang pagpili ng modelo, susi sa pagtutugma, paghawak ng error at timing. Ito ang pagkakaiba sa ligtas na pagpoproseso ng libu-libong mga talaan.

Tatlong Mini Case

Case 1 — Pag-tag sa gabi. Ang isang e-commerce team ay mag-uuri ng 200,000 review ng produkto sa mga tag ng sentimento. Ang live na synchronous streaming ay napapailalim sa mga limitasyon ng bilis at magastos. Dinala nila ang trabaho sa gabi bilang isang batch na may isang mabilis na modelo; Bumaba ang halaga ng unit, handa na ang buong set sa umaga, at walang mga problema sa speed limit.

Kaso 2 — Pagkalito sa order. Ang isang pangkat ng pangkat ng pananaliksik ay nag-abstract ng 5,000 mga artikulo, ngunit isinulat ang mga resulta sa mga file sa pagkakasunud-sunod ng kanilang pagdating. Dahil ibinalik ang mga resulta sa ibang pagkakasunud-sunod, humigit-kumulang 900 sa 5,000 abstract ang na-link sa maling artikulo. Ibinalik nila ito sa custom_id; nalutas ang problema at naging permanenteng panuntunan ang karanasang ito: "Palaging custom_id sa batch."

Case 3 — Live standby sa maling mode. Sinubukan ng isang team ng suporta na ibigay ang batch ng mga live na tugon na inaasahan ng user sa screen; Inabandona ng mga user dahil dumating ang mga resulta makalipas ang ilang minuto. Inilipat nila ang live na trabaho pabalik sa pag-synchronize, na iniiwan lamang ang pagsusuri sa kalidad ng gabi-gabi sa batch. Aralin: ang batch ay hindi para sa live standby.

Mga karaniwang pagkakamali

  • Pagtutugma ng mga resulta ayon sa posisyon: Ang order ay hindi pinapanatili; Gumamit ng custom_id.
  • Paglilipat ng live na trabaho sa batch: Hindi makapaghintay ang user ng ilang minuto; ang batch ay para sa mga delay tolerant na trabaho.
  • Hindi humahawak ng mga kaso ng error: Maaaring bumalik ang ilang kahilingan na nabigo/nag-expire; Ilagay ito sa isang hiwalay na pila at subukang muli.
  • Malakas na reflex sa paggamit ng modelo sa batch: Ang mabilis na modelo + batch ay ang pinakamurang kumbinasyon sa mga simpleng trabaho.
  • Hindi ginagawang custom_id traceable: Kung walang source record ang naka-embed sa ID, magiging mahirap na i-link ang resulta pabalik.
  • Nakakalimutang suriin ang sitwasyon: Inaasahan ang mga resulta bago matapos ang trabaho; Suriin ang katayuan ng pagkumpleto.

Mas malalim: Pagsubaybay sa Batch at Pamamahala ng Bahagyang Pagkabigo

Ang pinaka-mature na aspeto ng batch processing ay nangangailangan ito ng ibang mindset kaysa sa mga indibidwal na tawag: ang isang batch job ay isang "proseso", hindi isang "kaganapan". Ipagpalagay na ang sampu-sampung libong mga kahilingan ay magtatagumpay lahat ay marupok; Ang makatotohanang disenyo ay tumatanggap ng bahagyang pagkabigo mula sa simula. Maaaring magkaiba ang status ng bawat resulta: matagumpay, nabigo (hal. invalid na input), nakansela o nag-expire. Ang isang matatag na daloy ay nagpoproseso ng katayuan ng bawat resulta nang hiwalay habang ito ay naglalakbay dito, inilalagay ang mga pagkabigo sa isang hiwalay na "retry queue" at pinapatakbo ang queue na iyon nang hiwalay.

Ang pangalawang kasanayan ay ang disenyo para sa idempotency (na ang pagpapatakbo ng parehong trabaho nang dalawang beses ay hindi nagdudulot ng anumang pinsala). Kung ang isang batch ay naantala at i-restart mo ito, hindi mo dapat iproseso muli at isulat nang dalawang beses ang naprosesong mga tala. Gumagana rin dito ang pag-binding ng custom_id sa iyong source record: "naproseso na ba ang record na ito?" bago i-save ang resulta. Pinipigilan ng pagsuri ang dobleng pag-type.

Ang ikatlong punto ay ang pagsuray-suray ng mga live stream na may batch. Ang ilang trabaho ay may parehong live at batch na dimensyon: kapag nag-load ang user ng dokumento, bibigyan mo sila ng mabilis na paunang buod (kasabay), at muling iproseso ang parehong dokumento para sa mas malalim na pagsusuri sa gabi (batch). Ang sinasadyang paghihiwalay sa dalawang mode ay nag-o-optimize sa parehong karanasan at gastos ng user.

Sa wakas, ang batching ay isa ring paraan upang harapin ang mga limitasyon ng bilis (unit 8). Ang pagpapadala ng mataas na volume sa live na kasabay na daloy ay gumagawa ng pare-parehong 429, habang ang pagpapadala ng parehong volume sa mga batch transfer ay naglilimita sa presyon sa sariling pag-iiskedyul ng provider at ginagawang mas predictable ang trabaho.

Sa buod

Ang batch processing ay karaniwang isang mas mura at mas matatag na mode para sa latency-tolerant at mataas na dami ng workload. Ang kanyang desisyon ay "hinihintay ba ng user ang resulta ngayon?" tinutukoy ang tanong. Ang pinakamahalagang teknikal na panuntunan ay bigyan ang bawat kahilingan ng natatanging custom_id, itugma ang mga resulta ayon sa ID sa halip na lokasyon, at hiwalay na tratuhin ang tagumpay/kabiguan ng bawat resulta.

Gawain ng aplikasyon

Pumili ng isang mataas na dami ng trabaho (hal. pag-uuri ng archive). (1) Magpasya kung ang gawaing ito ay live o kolektibo at bigyang-katwiran ito. (2) Magdisenyo ng custom_id na format (isama ang resource record). (3) Punan ang batch job card (modelo, max_tokens, tolerance, error policy). (4) Isulat ang pseudocode sa pagpoproseso ng resulta upang isama ang mga nabigong kahilingan.

checklist

  • [ ] Maaari kong makilala ang mga synchronous, asynchronous at batch mode sa cost/delay axis.
  • [ ] Maaari akong magpasya kung ang isang trabaho ay angkop para sa batch o hindi sa pamamagitan ng pagtatanong ng tamang tanong.
  • [ ] Binibigyan ko ang bawat kahilingan ng natatanging custom_id at itinutugma ang mga resulta ayon sa ID.
  • [ ] Kakayanin ko nang hiwalay ang mga nabigo/nag-expire na resulta.
  • [ ] Alam ko ang mga benepisyo ng pagpili ng mabilis na modelo sa mga simpleng batch na trabaho.