B2BB2B LLM
Бизнес прозрение

Как да намалим разходите за API на LLM с пакетна обработка без прекъсване на операциите

Практическо ръководство за преместване на допустимите работни натоварвания на LLM от синхронни заявки към групова обработка, като същевременно се запазват границите на SLA, повторните опити, идемпотентността, съгласуването и разпределението на разходите.

Много екипи плащат надплащане за LLM работни натоварвания, защото всяка заявка преминава през един и същ синхронен път. Това е правилният модел за чат, агентски цикли, действия, насочени към потребителите, и решения, които се нуждаят от незабавен отговор. Обикновено грешният модел за оценки, обогатяване на документи, запълване на класификация, опресняване на вграждане, нощни проверки на качеството, сканиране за съответствие и задачи за отчитане може да изчака.

Трудната част не е да решите дали пакетните отстъпки са привлекателни. Трудната част е преместването на работата в асинхронна обработка, без да се губи оперативен контрол. Пакетната обработка променя формата на системата: заявките се превръщат в задачи, грешките пристигат по-късно, резултатите може да са частични и приписването на разходите зависи от съгласуването, а не от метаданните за незабавен отговор.

Това ръководство разделя фактите, препоръките и прогнозите, така че екипите да могат да вземат практическо решение за внедряване, без да третират пакетната обработка като универсален заместител на синхронните API.

Какво всъщност е вярно за LLM batch API

Няколко основни доставчици на модели вече предлагат групови API за асинхронна работа с голям обем. Конкретните формати и ограничения се различават, но търговският модел е подобен: подайте много заявки, изчакайте асинхронна обработка, след което извлечете резултатите по-късно.

  • Факт: OpenAI документира партида API за големи асинхронни партиди с завършвания, върнати в рамките на 24-часов прозорец и 50% отстъпка. Неговите документирани поддържани крайни точки включват отговори, завършвания на чат, вграждания, завършвания и модерации с JSONL входни файлове, качени за обработка.
  • Факт: Anthropic документи пакети съобщения за заявки за асинхронни съобщения с голям обем с 50% намаление на разходите и повишена производителност. В неговата документация се казва, че повечето пакети завършват за по-малко от един час и че моделът е подходящ, когато не се изискват незабавни отговори.
  • Факт: Anthropic също така документира отделно поведение на ограничение на скоростта за пакетите съобщения, включително ограничения за крайните точки на пакета и броя заявки за пакет, които могат да бъдат в опашката за обработка едновременно време.
  • Факт: Google документира Gemini Партида API за големи обеми асинхронни заявки на 50% от стандартната цена, а документацията за ценообразуването изброява Партида API като функция за намаляване на разходите с 50%.
  • Факт: Amazon Bedrock Регистрирането на извикване на модел може да събира данни за заявки, данни за отговор и метаданни за поддържани повиквания по време на изпълнение, с доставка до CloudWatch Logs и/или S3. Регистрираните полета могат да включват requestId, операция, modelId, requestMetadata, брой входни токени и брой изходни токени, които са полезни за съпоставяне.

Тези факти подкрепят ясна препоръка: използвайте групова обработка, когато работното натоварване може да толерира забавено завършване и където бизнес стойността на по-ниските единични разходи надвишава оперативната сложност на асинхронния изпълнение.

Не започвайте с доставчика API

Често срещаната грешка при внедряването е обвързването на кода на приложението директно към груповия файлов формат или модела на състоянието на доставчика. Това работи за прототип, но създава разходи за миграция, които могат да бъдат избегнати, когато екип добави втори доставчик, промени модели или се нуждае от последователно отчитане в синхронен и асинхронен трафик.

По-добра отправна точка е вътрешна абстракция на пакетно задание.Не е необходимо да е подробно, но трябва да нормализира оперативните полета, от които се нуждае вашата платформа, независимо от доставчика.

Минимални полета за пакетно задание

  • job_id: Вашият вътрешен идентификатор за пакетното задание.
  • provider: Доставчикът, избран за изпълнение.
  • provider_batch_id: Външният идентификатор на партида, след като бъде изпратен.
  • workflow: Бизнес потокът, като eval_run, embedding_refresh, doc_enrichment или qa_scan.
  • team_id или customer_id: Отговорният собственик за квоти, отчитане и разпределение на разходите.
  • model: Заявеният модел или политика на модела.
  • endpoint: Тип крайна точка на доставчика, като чат, отговори, вграждания, модериране или съобщения.
  • submitted_at и deadline_at: Времевите клейма, необходими за обработка на SLA.
  • статус: Нормализирано състояние, като на опашка, изпратено, обработващо, завършено, completed_with_errors, неуспешно, отменено или изтекъл.
  • input_uri и result_uri: Указатели към трайни входни и изходни артефакти.
  • item_count, success_count, failure_count: Съгласуване на ниво работа общо.
  • input_tokens и output_tokens: Реализирано използване след обработка.
  • estimated_cost и realized_cost: Прогноза за времето за подаване и разходи след съгласуване.
  • cost_basis: Цената използвано правило, включително дали е приложено групово сконтиране.

Тази абстракция дава на останалата част от организацията един договор. Полетата, специфични за доставчика, все още могат да се съхраняват за отстраняване на грешки, но те не трябва да се превръщат в интерфейс, който всеки екип на приложение трябва да научи.

Класифицирайте натоварванията по SLA преди маршрутизиране

Пакетната обработка трябва да се ръководи от очакванията на ниво услуга, а не от общото желание за намаляване на разходите. Една проста политика за маршрутизиране е по-лесна за работа от една умна.

Интерактивен клас

Интерактивните заявки са обърнати към потребителя или са чувствителни към времето. Примерите включват UX на чат, цикли на агенти, които изискват извикване на инструменти, работни потоци за поддръжка, при които оператор чака, решения за измами или плащания и всеки работен процес, при който забавеният частичен изход е по-лош от липсата на изход. Те трябва да останат синхронни, освен ако продуктът изрично не промени своето потребителско изживяване.

Забавен клас

Забавените работни потоци могат да изчакат, без да навредят на потребителя или бизнес процеса. Примерите включват офлайн оценки, маркиране на документи, запълване на класификация, опресняване на вграждане, историческо модериране, нощни проверки на качеството и генериране на отчети.Това са най-добрите кандидати за партидни API на доставчиците.

Граничен клас

Някои работни натоварвания не са наистина интерактивни, но все пак имат краен срок. Например документ, импортиран от клиент, може да се нуждае от обогатяване в рамките на 20 минути, а не веднага. За тях използвайте вътрешна опашка с краен срок. Ако задачата все още е в очакване близо до крайния срок, тя може да бъде повишена към синхронна обработка, анулирана или пренасочена според правилата.

Тук AI API контролът на разходите се превръща в проблем за инфраструктурата, а не в ценообразуване. Системата се нуждае от политика за маршрутизиране, информираност за крайния срок, отчитане и наблюдение на едно и също място.

Използвайте стабилни идентификатори на заявки за всеки елемент

Пакетните задачи се провалят по по-различни начини от синхронните повиквания. Доставчик може да отхвърли файла. Дадено задание може да завърши с грешки на ниво елемент. Повторен опит може да изпрати отново работа, която е частично успешна. Процесът на поглъщане може да се срине след записването на някои резултати, но преди да маркира заданието за завършено.

Най-важната защита е стабилен ключ за заявка за всеки елемент. Този ключ трябва да бъде детерминистичен от вашите собствени данни, а не генериран произволно по време на изпращане.

Например, ключ за заявка за обогатяване на документ може да бъде:

doc_enrichment:v3:customer_812:document_9912:section_04:model_policy_standard

Ключът за опресняване на вграждане може да бъде:

embedding_refresh:v2:workspace_44:asset_2107:chunk_18:embedding_model_small

Ключът трябва да включва работния процес, версията, границата на клиента, записа на източника, границата на елемента и модел или моделна политика, когато е приложимо. Това позволява записите надолу по веригата да бъдат идемпотентни. Ако един и същ резултат бъде получен два пъти, базата данни може да промени с request_key, вместо да създава дублиращи се редове или двойно отчитане на използването.

Проектирайте изрично машината за състояния

Състоянията на доставчика се различават, така че вътрешната машина за състояния трябва да е малка и издръжлива. Практична версия изглежда така:

  • created: Задачата съществува вътрешно, но не е пакетирана.
  • validated: Входните записи преминаха проверки за схема и допустимост.
  • submitted: Доставчикът прие изпращането на пакета.
  • processing: Доставчикът е започнал или постави на опашка изпълнение.
  • completed: Всички елементи достигнаха успешно крайно състояние.
  • completed_with_errors: Задачата приключи, но някои елементи не успяха и се нуждаят от преглед или повторение.
  • неуспешно: Заданието е неуспешно на доставчика или оркестрационния слой.
  • отменено: Системата или операторът е спрял заданието преди завършване.
  • expired: Заданието е пропуснало крайния си срок и не трябва да пише нормални резултати без преглед.

Всеки преход трябва да бъде само за добавяне в таблица със събития. Това дава на оперативните екипи одитна пътека, когато дадена задача пропусне своя краен срок или когато система надолу по веригата оспорва дали даден запис е обработен.

Изграждане на съгласуване като първокласен работен процес

Изпращането е само половината от системата.Скъпите оперативни грешки обикновено се появяват по време на поглъщане на резултата.

Работникът за съгласуване трябва да прави пет неща всеки път, когато обработва завършен пакет:

  1. Зареждане на оригиналния манифест на подадените ключове на заявка.
  2. Зареждане на резултати от доставчика от изходни файлове, крайни точки за резултати или регистрационни файлове на доставчик.
  3. Съпоставяне на всеки резултат от доставчик обратно към точно една вътрешна заявка ключ.
  4. Запишете успешните резултати безпомощно в целевата система.
  5. Изпратете терминални записи за неуспехи, липсващи елементи, брой токени и реализирани разходи.

Процесът на съгласуване трябва да провери дали всеки изпратен елемент има терминално състояние. Липсващите резултати не трябва да изчезват тихо. Маркирайте ги като липсващи, неуспешни или повторни в съответствие с отговора на доставчика и вашата политика.

Приписването на разходите също трябва да се извършва тук. Прогнозите за времето за подаване са полезни за проверки на бюджета, но реализираните разходи трябва да бъдат получени от действителния брой токени, продукцията на доставчика, експортирането на фактуриране или регистрационните файлове за извикване, когато има такива. Това избягва повтарящ се проблем: екипите отчитат приблизителни спестявания, докато финансовата книга по-късно показва различно число.

Бравете с частични грешки, без да възпроизвеждате всичко

Пакетните системи трябва да приемат частичен отказ. Схемата за подкана може да се провали за 2% от записите. Поднабор от заявки може да достигне ограниченията за дължина. Някои въведени данни може да нарушават правила за модериране или съдържание. Файлът с резултати може да съдържа валидни изходни данни за повечето елементи и структурирани грешки за останалите.

Правилният отговор обикновено не е да се възпроизвежда отново цялата група. Повторете само неуспешните или липсващите ключове за заявка в нова задача с parent_job_id и retry_attempt. Това ограничава разходите, намалява дублиращите се записи и запазва одитната пътека на оригиналната задача непокътната.

Полезен запис за повторен опит включва:

  • request_key
  • parent_job_id
  • retry_attempt
  • original_error_code
  • retry_reason
  • new_job_id
  • final_status

Направи не опитвайте автоматично всички грешки. Преходни повреди на доставчика, изчакване на опашката и възстановими транспортни проблеми може да се опитат повторно. Грешките при бързото валидиране, несъответствията на схемите и грешките в неподдържания размер на входа обикновено изискват коригиране преди повторно възпроизвеждане.

Контролирайте радиуса на blast с размера на пакета и версиите

Големите пакети могат да подобрят пропускателната способност и да намалят разходите за оркестрация, но също така увеличават цената на лошо подканяне, грешна схема или неправилен избор на модел. По-малките партиди дават по-бърза обратна връзка и по-малък радиус на взривяване, но създават повече задачи за проследяване.

Практическият подход е прогресивно внедряване:

  1. Изпълнете малка партида за валидиране с представителни входни данни.
  2. Потвърдете валидността на схемата, качеството на изхода, диапазона на токените и съгласуването поведение.
  3. Увеличаване на размера на партидата по работен поток след първото успешно изпълнение.
  4. Съхранявайте версията на подканата, версията на схемата и правилата на модела в ключа на заявката или манифеста.
  5. Спирайте автоматично, ако процентът на неуспех, използването на токена или проверката на изхода премине праг.

Това е особено важно за обратни насипи.Запълването може бързо да създаде голяма сметка дори с отстъпка, ако обработва милиони записи с неочаквано многословна подкана или изходен формат.

Изложете спестяванията като прогнозни и реализирани

Пакетните отстъпки са привлекателни, но отчитането не трябва да замъглява прогнозите с действителните.

В момента на подаване платформата може да покаже прогнозна цена, използвайки очаквания токен брой, избран модел, брой артикули и известни правила за партидни отстъпки. След съгласуване платформата трябва да показва реализирани разходи въз основа на действителното използване на токени и данни за фактуриране или използване на доставчика.

Полезното табло за управление включва:

  • възраст на опашката по работен процес и доставчик
  • най-старата чакаща задача
  • процент на изпълнение
  • неуспешен елемент процент
  • брой повторни опити
  • подадена прогнозна цена
  • съгласувана реализирана цена
  • уловена ефективна отстъпка
  • синхронен резервен обем
  • задачи, наближаващи крайния срок

Това разграничение също помага на финансите и инженерството да говорят на един език. Инженерингът може да оптимизира маршрутизирането и повторните опити; финансите могат да съгласуват реализираните разходи; продуктовите екипи могат да видят кои работни потоци действително се възползват от забавената обработка.

Препоръки за внедряване

Използвайте следния контролен списък, преди да преместите работно натоварване към пакетна обработка.

Контролен списък за допустимост

  • Работният поток не изисква незабавно лице към потребителя отговор.
  • Бизнесът може да дефинира приемлив прозорец за завършване.
  • Всеки елемент има стабилен ключ за заявка.
  • Записът на местоназначението може да бъде идемпотентен.
  • Частичните резултати са приемливи и съвместими.
  • Отказите могат да бъдат повторени селективно.
  • Записват се подканите и версиите на схемата.
  • Използването може да се припише на екип, клиент, продукт или среда.
  • Регистрирането на чувствителен полезен товар е прегледано за задължения за поверителност и задържане.

Оперативно контролен списък

  • Нормализиране на състоянието на доставчика във вътрешна държавна машина.
  • Съхранявайте трайно оригиналните входни манифести.
  • Проучване или получаване на събития за завършване на доставчика по график.
  • Потвърждаване на всеки резултат спрямо очакваната схема.
  • Сравняване на изпратените ключове на заявка с получения терминал състояния.
  • Изпращане на записи за използване само след съпоставяне.
  • Разделете прогнозната цена от реализираната цена.
  • Сигнал за възраст на опашката, процент на неуспешни елементи, липсващи резултати и риск от краен срок.
  • Документирайте кои работни натоварвания трябва да останат синхронен.

Компромиси, за да направите изрично

Препоръка: Отнасяйте се към пакетната обработка като към отделен клас за изпълнение, а не към скрита оптимизация зад синхронния API път.Екипите трябва да знаят кога даден работен поток се забавя, какъв краен срок се прилага и какво се случва, когато крайният срок е пропуснат.

Компромис: Пакетните приложни програмни интерфейси (API) могат да намалят значително разходите за токени, но те заменят простото поведение заявка-отговор с опашка, анкетиране, поглъщане на резултати, забавени грешки и по-сложна поддръжка работни потоци.

Компромис: Пакетните API на доставчиците не са идентични. Нормализираният вътрешен модел намалява сложността на приложението, но платформата все още трябва да запази специфични за доставчика идентификатори и грешки за отстраняване на грешки.

Компромис: Регистрирането на пълни подкани и изходи може да подобри възможността за проверка и съгласуване, но също така може да създаде задължения за поверителност, сигурност и запазване на данни. Чувствителното съдържание трябва да бъде класифицирано, редактирано или изключено, когато е необходимо.

Прогноза: Повече инфраструктурни екипи на LLM ще третират пакетното изпълнение като стандартен клас за маршрутизиране заедно със синхронни повиквания, поточно повиквания и резервни маршрути. Екипите, които ще се възползват най-много, ще бъдат тези, които изграждат съгласуване и отчитане на разходите рано, вместо да ги добавят, след като финансите или операциите попитат защо числата не съвпадат.

Приложимо заключение

Пакетната обработка е един от най-ясните начини за намаляване на единичните разходи за LLM за забавени натоварвания, но трябва да се внедри като оперативна система, а не просто като по-евтина крайна точка. Започнете с допустимост на работното натоварване, стабилни ключове за заявки, нормализиран модел на работа и работен поток за съгласуване, който доказва, че всеки изпратен елемент е достигнал терминално състояние.

Поддържайте интерактивните заявки синхронни. Преместете забавените работни потоци към партидните API на доставчика, където прозорецът за цена и завършване има смисъл. Използвайте вътрешна опашка за гранични натоварвания с изрични крайни срокове. Докладвайте прогнозните спестявания в момента на подаване, но съпоставете реализираните разходи с действителното използване. Това е моделът, който улавя партидни отстъпки, без да нарушава записите надолу по веригата, екипните счетоводни книги или очакванията за SLA.

Свързано четене

FAQ

Често задавани въпроси

Кои натоварвания на LLM са най-подходящи за групови API?
Най-добрите кандидати се забавят, работни потоци с голям обем като оценки, обогатяване на документи, запълване на класификация, опресняване на вграждане, нощни проверки на качеството, историческо модериране и задачи за отчитане. Чатът, обърнат към потребителя, агентските цикли, спешните решения и работните потоци, изискващи незабавно извикване на инструменти, обикновено трябва да останат синхронни.
Трябва ли екипите на приложенията да извикват директно партидните API на доставчиците?
Обикновено не. Нормализираната вътрешна абстракция на пакетно задание прави маршрутизирането, проследяването на състоянието, повторните опити, съгласуването и отчитането на разходите последователни между доставчиците. Специфичните за доставчика полета все още трябва да се съхраняват за отстраняване на грешки, но те не трябва да стават договор за приложение.
Как трябва да се третират частични повреди в партидна работа на LLM?
Всеки елемент трябва да има стабилен ключ за заявка. Когато пакетът завърши с грешки, повторете само неуспешните или липсващите ключове за заявка в ново задание, като запазите идентификатора на родителското задание, причината за повторен опит, кода на грешката и номера на опита. Избягвайте повторното възпроизвеждане на цялата партида, освен ако цялото изпращане не е невалидно.
Как трябва да се отчитат партидните спестявания?
Докладвайте прогнозните разходи към момента на подаване и реализираните разходи след съгласуване. Прогнозната цена може да използва очаквани токени, избран модел и правила за отстъпка. Реализираните разходи трябва да използват действителните токени, изходни данни на доставчика, данни за фактуриране или регистрационни файлове за извикване, когато има такива.