Raise the run ceilings to the re-priced estimate and trim closed phases to actuals
This commit is contained in:
parent
c776ea8911
commit
3ca4936212
3 changed files with 110 additions and 9 deletions
|
|
@ -413,3 +413,47 @@ zh Спирмен +0.80 (прокси держится, но `A3` — ставк
|
|||
**Пре-рег Д17** записан в отчёт ДО покупок: панель, правило решения, формула порога, мощность,
|
||||
статус осей, чего заход не может. Правило расхождения эндпойнтов объявлено ДО данных: при
|
||||
расхождении счёта и чтения побеждает ЧТЕНИЕ (приоритет владельца «живой язык»).
|
||||
|
||||
## 13. БЭКЛОГ: ЭКОНОМИКА МОДЕЛЕЙ ПОСЛЕ ПОДОРОЖАНИЯ (16.08) — НЕ основная линия
|
||||
|
||||
Записано по указанию владельца: «это всё можно в какой-то бэклог занести… но нам важно по плану
|
||||
идти». Ниже — замер, а не мнение; к основному вопросу фазы (мерит ли счёт то, что нужно продукту)
|
||||
он отношения не имеет и работу не двигает.
|
||||
|
||||
**Ростер пере-пинен** (`eval/tenant_panel/roster.py`, отдельным коммитом с заголовком чужого пака):
|
||||
DeepSeek на пик `flash $0.44/$1.32/кэш $0.014` · `pro $1.32/$3.96/кэш $0.044`. Гейты эксп-22
|
||||
пере-сняты после правки — `verify22.py` «ВСЕ ЧИСЛА ОТЧЁТА СХОДЯТСЯ», `itog22.py` зелен: числа
|
||||
чужого пака не поехали, потому что `cost_usd` записан в клетку при покупке, а не вычисляется.
|
||||
|
||||
**Пере-оценка КАЖДОЙ замеренной клетки по сегодняшнему прайсу (медианы):**
|
||||
|
||||
| роль | модель | было $/клетка | стало | рост |
|
||||
|---|---|---|---|---|
|
||||
| черновик | `gpt-5.6-luna` | 0.00358 | 0.00358 | — |
|
||||
| черновик | `gemini-3.1-flash-lite` | 0.00383 | 0.00383 | — |
|
||||
| черновик | **`deepseek-v4-flash`** | **0.00097** | **0.00444** | ×4.59 |
|
||||
| редактор | `glm-5` | 0.01163 | 0.01163 | — |
|
||||
| редактор | **`deepseek-v4-pro`** | **0.00537** | **0.02235** | ×4.16 |
|
||||
|
||||
**Вывод 1 — правило ничьей на ЧЕРНОВОЙ роли пере-решается.** Эксп-22 Ф2 дал ничью по качеству
|
||||
шести моделей, и роль ушла к самому дешёвому (правило D39.117). Flash был в 3.7× дешевле
|
||||
следующего; теперь он ДОРОЖЕ и `gpt-5.6-luna`, и `gemini-3.1-flash-lite`. По букве нашего же
|
||||
правила черновая роль обязана быть пере-выбрана. ⚠ Перед этим — эхо-проба альтернатив: у flash
|
||||
эхо-мина есть и она перевооружается ослабленным thinking, у остальных не мерена НИ РАЗУ.
|
||||
|
||||
**Вывод 2 — редакторская роль правилом ничьей НЕ решается**, качество там не равно: `dspro`
|
||||
лучше `glm-5` на zh (−2.12) и en (−1.41), не различимо на ja. Но выбор перестал быть бесплатным:
|
||||
было «лучше И вдвое дешевле», стало «лучше, но вдвое дороже». Это продуктовое решение владельца,
|
||||
а не вывод полигона.
|
||||
|
||||
**Себестоимость главы** (черновик + перепис): было $0.0063 → сейчас той же связкой $0.0268 →
|
||||
на паре `flash-lite + glm-5` $0.0155. На книге в 1500 глав: $9.5 → $40.2 → $23.2.
|
||||
|
||||
**Дыра, которую замер не закрывает: вендор-риск не мерился вовсе.** 16.08 он материализовался —
|
||||
кончился баланс одного провайдера, встал весь заход (96 отказов `402`, $0). Не проверялось:
|
||||
держит ли пайплайн смену жильца без правки промтов; есть ли у альтернатив своя эхо-мина.
|
||||
|
||||
**Почему внутри захода Д17 модель всё равно одна.** Заход меряет АРХИТЕКТУРУ (число проходов,
|
||||
что кому подаётся). Контраст мерит топологию только при модели-константе — иначе это конфаундер
|
||||
эксп-19. Цена этого: вывод честно звучит «какая архитектура лучше ДЛЯ ЭТОЙ модели». Переносимость
|
||||
закрывается отдельным дешёвым замером ПОСЛЕ захода: победившая архитектура на `glm-5`.
|
||||
|
|
|
|||
|
|
@ -173,10 +173,29 @@ TAGS = {
|
|||
# после перелома, пока `roster.py` не пере-пинен, — иначе касса начнёт печатать неправду.
|
||||
# ⚠ ПАКЕТНЫЙ ПОТОЛОК $6.85 → $8.15 РОВНО НА ДЕЛЬТУ новых фаз плюс $0.02, чтобы инвариант
|
||||
# «сумма фазовых ≤ пакетного» держался (8.12 ≤ 8.15). Ни одна прежняя фаза не двигается.
|
||||
CEILINGS = {"ФД-A": 1.950, "ФД-B": 0.950, "ФД-C": 0.420, "ФД-D": 0.050,
|
||||
"ФД-E": 2.370, "ФД-F": 0.720, "ФД-G": 0.210, "ФД-H": 0.150,
|
||||
"ФД-I": 0.650, "ФД-J": 0.650}
|
||||
PACK_CEILING = 8.15
|
||||
# ⚠⚠ ПОДЪЁМ 16.08 ПОСЛЕ ПЕРЕЛОМА ПРАЙСА DeepSeek — И ЭТО ПЕРЕСЕЧЕНИЕ РАМКИ ЗАКАЗА, СКАЗАННОЕ
|
||||
# ВСЛУХ. Заказ (:20) ставил пакетный потолок фазы $10.00. Смета остатка захода, пере-считанная по
|
||||
# ПИКОВОМУ пину (`zakhod.price_of`, из токенов уже купленных клеток): zh $2.80 + en $1.66 = $4.46.
|
||||
# С потраченными $6.25 это $10.71 — то есть на $0.71 выше рамки заказа.
|
||||
# ⚠ ЧТО ЗДЕСЬ ФАКТ, А ЧТО ОЦЕНКА: спишется вдвое меньше. Вендорские пиковые часы — 01:00–04:00 и
|
||||
# 06:00–10:00 UTC, покупка идёт в офф-пик, где цена ровно половинная ⇒ фактический расход остатка
|
||||
# ~$2.23, фактический итог фазы ~$8.5. Касса при этом БУКИРУЕТ пик осознанно (D39.136): потолок
|
||||
# обязан срабатывать раньше, а не позже, и переплата резерва — цена плоской схемы.
|
||||
# ⚠ ОСНОВАНИЕ, ДОСЛОВНО И БЕЗ УКРАШЕНИЙ. Санкции владельца: 15.08 «Подтверждаю подъём расходов,
|
||||
# сколько тебе нужно»; 16.08 «Новые траты я разрешаю, перепровести эксп я разрешаю»; 16.08 он
|
||||
# пополнил баланс DeepSeek специально под продолжение. Число $4.46 и пересечение рамки $10.00 были
|
||||
# названы ему В СООБЩЕНИИ ДО подъёма; ответ был «нам важно по плану идти». Прямого «да» на само
|
||||
# число не прозвучало — записываю это как есть, а не как одобрение, потому что цепь подъёмов
|
||||
# фазы уже однажды прошла все самопроверки именно на таких формулировках (см. шапку файла).
|
||||
# ⚠ ЗАКРЫТЫЕ ФАЗЫ ПОДРЕЗАНЫ ДО ФАКТА, И ЭТО УЖЕСТОЧЕНИЕ, А НЕ ПОСЛАБЛЕНИЕ. Инвариант кассы —
|
||||
# «сумма фазовых потолков ≤ пакетного»; при живых потолках закрытых фаз он требовал пакетного
|
||||
# 11.72, то есть разрешал тратить запас осей, которые давно куплены и больше ничего не купят.
|
||||
# Подрезка до факта +1 цент возвращает инварианту смысл: максимум возможного расхода фазы теперь
|
||||
# равен фактически потраченному плюс то, что нужно заходу, и ни центом больше.
|
||||
CEILINGS = {"ФД-A": 1.910, "ФД-B": 0.900, "ФД-C": 0.370, "ФД-D": 0.050,
|
||||
"ФД-E": 2.290, "ФД-F": 0.500, "ФД-G": 0.060, "ФД-H": 0.090,
|
||||
"ФД-I": 2.950, "ФД-J": 1.800}
|
||||
PACK_CEILING = 11.00
|
||||
|
||||
M22.configure(ZONE=ZONE, OUT=OUT, TAGS=TAGS, CEILINGS=CEILINGS,
|
||||
PACK_CEILING=PACK_CEILING, GLOB_ALL="dv-*.json", ROSTER=ROSTER)
|
||||
|
|
|
|||
|
|
@ -502,7 +502,39 @@ def buy(p: str, which: list[str]) -> None:
|
|||
|
||||
|
||||
# ── СМЕТА И ПРОВЕРКИ ──────────────────────────────────────────────────────────────────────────
|
||||
PRICE = {"Z8": 0.00060, "Z8R": 0.00790, "Z1": 0.00900, "Z7": 0.00758, "ZF": 0.00790}
|
||||
# ⚠ СМЕТА СЧИТАЕТСЯ ПО ТЕКУЩЕМУ ПРАЙСУ, А НЕ ПО ЗАШИТЫМ МЕДИАНАМ (починка 16.08). Первая
|
||||
# редакция несла медианы, снятые при ИЮЛЬСКОМ пине, и после пере-пина продолжала печатать те же
|
||||
# числа со строкой «по действующему прайсу» — то есть смета врала вчетверо и врала уверенно.
|
||||
# Теперь цена арма выводится из ЗАМЕРЕННЫХ ТОКЕНОВ уже купленных клеток той же роли и
|
||||
# пере-оценивается ростером; зашитых цен в файле не остаётся вовсе.
|
||||
ROLE_OF = {"Z8": "translator", "Z8R": "editor", "Z1": "editor", "Z7": "fixer", "ZF": "floor2"}
|
||||
MODEL_OF = {"Z8": DRAFT_MODEL, "Z8R": EDITOR, "Z1": EDITOR, "Z7": EDITOR, "ZF": EDITOR}
|
||||
|
||||
|
||||
def price_of(arm: str) -> float:
|
||||
"""Ожидаемая цена клетки арма по ТЕКУЩЕМУ прайсу, из токенов уже купленных клеток той же роли."""
|
||||
import statistics as _st
|
||||
m, role = MODEL_OF[arm], ROLE_OF[arm]
|
||||
toks = []
|
||||
for f in OUT.glob("dv-*.json"):
|
||||
if any(x in f.name for x in ("ERROR", "ЭХО", "LENGTH", "probe")):
|
||||
continue
|
||||
try:
|
||||
r = json.loads(f.read_text(encoding="utf-8"))
|
||||
except Exception: # noqa: BLE001
|
||||
continue
|
||||
if not isinstance(r, dict) or r.get("model") != m or not r.get("prompt_tokens"):
|
||||
continue
|
||||
if r.get("role") not in (role, "editor" if role == "floor2" else role):
|
||||
continue
|
||||
toks.append((r["prompt_tokens"],
|
||||
r.get("cached_tokens") or r.get("prompt_cache_hit_tokens") or 0,
|
||||
r.get("completion_tokens") or 0, r.get("reasoning_tokens") or 0,
|
||||
r.get("total_tokens") or 0))
|
||||
if not toks:
|
||||
return 0.02
|
||||
med = [_st.median([x[i] for x in toks]) for i in range(5)]
|
||||
return ROSTER.cost(m, int(med[0]), int(med[1]), int(med[2]), int(med[3]), int(med[4]))
|
||||
WHAT = {"Z8": "обогащённый черновик (flash + мандат перевёрстки)",
|
||||
"Z8R": "Z8 + боевой перепис — «лучше ли связка на лучшем черновике»",
|
||||
"Z1": "критик → ПОЛНЫЙ перепис по его замечаниям",
|
||||
|
|
@ -525,9 +557,10 @@ def cmd_dry() -> None:
|
|||
for a in ARMS:
|
||||
have = sum(1 for u in us if cell(tag(p, a, u["uid"])).strip())
|
||||
need = len(us) - have
|
||||
cost = need * PRICE[a]
|
||||
pr = price_of(a)
|
||||
cost = need * pr
|
||||
sub += cost
|
||||
print(f" {a:4s} есть {have:2d} · надо {need:2d} · ${PRICE[a]:.5f}/кл · "
|
||||
print(f" {a:4s} есть {have:2d} · надо {need:2d} · ${pr:.5f}/кл · "
|
||||
f"смета ${cost:.4f} {WHAT[a]}")
|
||||
ph = _pair(p)["phase"]
|
||||
sp = MONEY.Guarded(ph).spent() if ph in MONEY.CEILINGS else 0.0
|
||||
|
|
@ -535,8 +568,13 @@ def cmd_dry() -> None:
|
|||
mark = "ВЛЕЗАЕТ" if sub <= ceil - sp else f"НЕ ВЛЕЗАЕТ (не хватает ${sub - (ceil - sp):.4f})"
|
||||
print(f" ИТОГО ${sub:.4f} · потолок {ph} ${ceil:.2f} · потрачено ${sp:.4f} → {mark}")
|
||||
tot += sub
|
||||
print(f"\nВЕСЬ ЗАХОД: ${tot:.4f} по действующему (июльскому) прайсу DeepSeek.")
|
||||
print(f"После перелома 16:00 UTC 16.08 та же работа стоила бы ${tot * 3.0:.4f} (пик ×3).")
|
||||
now = dt.datetime.now(dt.timezone.utc)
|
||||
peak = now.hour in tuple(range(1, 4)) + tuple(range(6, 10))
|
||||
print(f"\nВЕСЬ ЗАХОД: ${tot:.4f} по ТЕКУЩЕМУ пину ростера (пик).")
|
||||
print(f" Сейчас {now:%H:%M} UTC — {'ПИК' if peak else 'ОФФ-ПИК'}; вендорский офф-пик ровно "
|
||||
f"вдвое дешевле, то есть фактически спишется около ${tot if peak else tot / 2:.4f}.")
|
||||
print(" ⚠ Касса пишет ПИКОВУЮ цену осознанно (политика D39.136): потолок срабатывает раньше,\n"
|
||||
" а не позже; переплата резерва в офф-пик — цена простоты плоской схемы.")
|
||||
|
||||
|
||||
def cmd_selftest() -> int:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue