Ты пишешь
await openai.chat(...), ждёшь ответ и думаешь, что тормозит твой код. Чаще всего код тут ни при чём. Между твоим fetch и текстом ответа лежит физика, железо и география — и большую часть задержки ты не оптимизируешь ни одной строчкой.Разберём путь запроса по частям.
🌍 1. Дорога до дата-центра (это физика, а не баг) Сигнал в оптоволокне идёт примерно на 2/3 скорости света — это жёсткий предел, его не обойти. От Лагоса до Лондона ~5000 км, и только на дорогу туда-обратно уходит минимум ~50 мс — ещё до того, как сервер начал думать. С учётом маршрутизации и заторов набегает 100–200 мс чистой географии.
Почему так? Потому что почти вся LLM-инфраструктура живёт в us-east-1 (Вирджиния) и eu-west (Ирландия/Франкфурт). В Нигерии, для контраста, 17 дата-центров, в США — больше 5500. Чем ты дальше от железа, тем дороже тебе обходится каждый вызов — просто по расстоянию.
⚙️ 2. GPU считает ответ по одному токену Промпт приходит на GPU, и та прогоняет миллиарды операций слой за слоем, чтобы предсказать следующий токен (это примерно 3/4 слова). Дальше — ещё один, и ещё, строго по очереди. Ответ не появляется целиком: он собирается токен за токеном.
Отсюда два следствия: — Длинный промпт грузит вход, длинный ответ грузит выход. Оба стоят компьюта. — Rate limits — это не вредность вендора, а отражение физического потолка железа. Один Nvidia H100 стоит ~$30 000, и он не резиновый.
❄️ 3. Cold start Модель — это сотни гигабайт весов, которые надо загрузить в память GPU. Если запросов давно не было, система могла выгрузить модель, чтобы освободить ресурсы. Первый запрос после простоя ждёт, пока веса заедут обратно — поэтому он заметно медленнее следующих. Тот самый «почему первый ответ тупил, а дальше полетело».
🛠 Что с этим делать на практике — Стримь ответ. Показывай токены по мере поступления, а не жди весь блок. Реальная задержка та же, но воспринимается сильно быстрее. — Кэшируй агрессивно. Повторяющиеся и почти одинаковые промпты — из кэша. Экономишь и инференс, и дорогу. — Бери модель под задачу. Для классификации, извлечения и коротких ответов 7B обычно быстрее и дешевле 70B — и по качеству не хуже.
Мораль простая: когда LLM «тормозит», сначала посмотри, где именно — на дороге, на железе или на холодном старте. Промпт-инжиниринг тут не поможет, а стриминг и кэш — очень даже.
А вы что делаете с латентностью LLM — стрим, кэш, свой прокси поближе к региону? 🤔
#ai #llm #webdev #backend #dev #performance