Zeely · внутрішній гайд

Батч-тестинг

Батч відповідає на одне питання: A краще за B?

concurrency 50 · 0 / 200■ A  ■ B  ■ fail
00

Мета

найважливіше

До / після або дві гіпотези. Інпути однакові, змінюється одна річ.

A · поточний промпт

    vs

    B · промпт з правкою

      Якщо між A і B відрізняється дві речі — ти не знаєш, яка з них дала ефект. Такий батч можна викидати.

      До / після: коли баг вирішено

      1. Чітко формулюєш проблему і збираєш кейси, де вона відтворюється. Без цього батч не запускаєш.
      2. Батч до на цих кейсах, рахуєш success rate.
      3. Фікс.
      4. Батч після на тих самих кейсах, рахуєш success rate і шукаєш нові проблеми.
      Success rate—
      Вердикт—

      Баг вирішено: ≥70% кейсів і жодних нових проблем. Інакше — ітеруємо далі або фіксуємо, що це технічне обмеження.

      01

      Бюджет

      до запуску

      Рахуй виклики й гроші до запуску. Дорого — ріж матрицю, не повтори.

      Результатів—
      API-викликів—
      + мікробатч—
      Разом—
      02

      Мікробатч

      5–10 ітерацій

      5–10 ітерацій перед повним прогоном. Перевіряєш не якість, а механіку: інпути, промпт, формат, папки.

      // натисни кнопку
      03

      Конкаренсі 50

      картинки й відео

      50 паралельних запитів (семафор). Вище — 429 від провайдера, тому ретраї з backoff.

      Час прогону—
      Послідовно було б—
      Ризик 429—
      04

      Матриця інпутів

      як у спейсі
      1 · Базаproduct_idфото (лінк на бакет) · назва · дескріпшен · [avatar_id] · [video_ref_id]
      2 · Бакетavatars/ · templates/кожен файл має свій ID
      3 · Темплейтвибірпродукт і аватар підставляються автоматом
      4 · Батчвсі комбінаціїран іде по темплейтах
      5 · Результатбакет / папкиrun → темплейт → продукт → варіант
      Комбінацій—
      Формула—

      Комбінації множаться. 5 × 10 × 8 × 2 — це вже 800 генерацій. Спершу рахуй, потім запускай.

      05

      Від мене

      про мислення

      Критерій — до результатів

      Запиши, що вважаєш «краще», до того як відкриєш картинки. Інакше мозок підганяє критерій під ту, що сподобалась.

      Повтори, а не один шот

      Генерація стохастична. Один вдалий результат нічого не доводить — мінімум 3 на кейс, дивимось на розкид.

      Порівнюй наосліп

      A і B поруч, без підписів. Коли знаєш, де «нова версія», хочеш, щоб вона виграла.

      Конфіг поруч з результатом

      У папку кожного рану кладеш config.json: модель, промпт, параметри, дата. Через тиждень без нього батч нічого не вартий.

      Фейли — теж дані

      Не викидай помилки й відмови моделі. Відсоток фейлів — часто головна різниця між A і B.

      Складні кейси в інпутах

      Обирай інпути, які ламають пайплайн: темний продукт, текст на пакуванні, нестандартні пропорції. На легких A і B однакові.

      06

      Оцінка

      тільки людина

      Не довіряй оцінці нейронки. У 99% наших кейсів потрібен human eval.

      Чому

      Композицію, реалістичність, «живість» аватара, схожість продукту з референсом нейронка поки оцінити не може. Вона ставить 8/10, бо картинка загалом гарна, і пропускає криві руки та зламаний текст на пакуванні.

      Як

      Сам дивишся A і B поруч, наосліп, за критерієм, записаним до запуску. Нейронка може лише відсіяти очевидний брак (порожній результат, не той формат).

      07

      Логи

      кожен виклик

      Кожен виклик пишеться в лог рану. Без логів не видно, чому B дешевший, повільніший чи частіше падає.

      { "call_id": "run_0925/tpl_01/prod_03/B/av_02", "model": "gemini-3-pro-image", "params": { "aspect": "2:3", "temperature": 0.7, "seed": 42 }, "latency_s": 23.4, "cost_usd": 0.039, "attempts": 2, "errors": ["SAFETY_BLOCK"], "status": "ok" }

      Ретраї обовʼязкові й записуються кожен окремо. Після рану дивишся на них так само уважно, як на картинки.

      Safety-помилкибільше 2–3 на 100 викликівпромпт або інпут тригерить фільтр, треба розбиратись
      Латенсі нерівномірнаp95 у 3+ рази більше за p50провайдер тротлить або частина запитів висить
      Латенсі завеликавища за норму моделіу проді це не поїде, навіть якщо якість краща
      Ретраїбільше 5–10% викликівконкаренсі зависока або нестабільний ендпоінт
      Костфакт ≠ оцінка з кроку 01десь зайві виклики або ретраї зʼїли бюджет
      ✓

      Перед запуском

      0 / 9 — ще не запускаємо