Устранение узких мест маршрутизации в корпоративном шлюзе LLM и реализация распределенной архитектуры
В корпоративной среде, когда несколько команд одновременно вызывают генеративные ИИ-модели, централизованная структура прокси легко вызывает истощение потоков из-за тысяч вводимых и выводимых токенов и длинных сессий. Чтобы устранить сетевую задержку между VPC, достигающую от 15 до 40 миллисекунд, и проблему «шумных соседей» между арендаторами, необходимо физически изолировать путь среды выполнения трафика и центральную плоскость управления политиками.
Проектирование раздельной архитектуры распределенных инстансов по доменам и центральной плоскости управления политиками
Единый центральный шлюз становится эпицентром узких мест в условиях масштабного трафика. Внедрение двухуровневой топологии позволяет изолировать передачу трафика в плоскость данных по доменам, сохраняя плоскость управления централизованной.
В среде Kubernetes декларативно применяется спецификация Envoy AI Gateway 1.0. Ресурсы Gateway создаются в пространствах имен каждого бизнес-домена для завершения HTTPS-трафика, а связь с BackendSecurityPolicy обеспечивает синхронизацию ключей аутентификации API из центрального хранилища секретов. Определение ресурсов AIServiceBackend и AIGatewayRoute позволяет считывать параметры модели из тела запроса и распределять маршрутизацию.
Даже в случае сбоя центрального сервера политик или корпоративной сетевой магистрали каждый домен продолжает обрабатывать трафик инференса без прерываний, используя кэш-политики последней синхронизации. Настройка размера сообщений контроллера увеличивается до 25 мегабайт и более, а период опроса стабилизируется для предотвращения скачков ЦП, вызванных частыми перезагрузками.
Проектирование метрик Prometheus для диагностики узких мест P99 по маршрутам, скрытых за общей средней задержкой
Если собирать общее время выполнения (turnaround time) в виде единой метрики, производительность может быть искажена из-за смешивания времени инференса больших и малых моделей. Чтобы определить, является ли всплеск показателя P99 перегрузкой очереди префилла GPU внешнего вендора или задержкой блокировки внутри шлюза, необходимо измерять жизненный цикл раздельно на уровне промежуточного ПО (middleware).
Напишите промежуточное ПО непосредственно для сбора метрик гистограммы Prometheus в конвейере шлюза. Перехватите время входа клиента с помощью промежуточного ПО ASGI и сохраните идентификатор арендатора и заголовок домена маршрута в значениях состояния. Время задержки очереди внутреннего промежуточного ПО записывается в объект Histogram и собирается в виде бакетов от 0.001 до 2.5 секунд. В процессе перенаправления потока восходящего клиента определяется момент приема первого байта токена, что позволяет наблюдать чистую задержку TTFT поставщика в виде независимой гистограммы.
Согласно опыту управления инфраструктурой Uber, размещение внутренней задержки очереди P99 в промежуточном ПО и чистой задержки TTFT для каждого бэкенд-поставщика рядом на панели Grafana позволило сократить время обработки ответов в конвейере генерации сводок для службы поддержки клиентов на 6 секунд.
Реализация обработки исключений для перенаправления трафика на резервную модель при задержке получения первого байта
Большинство серверов инференса LLM мгновенно возвращают код состояния 200 OK, после чего на несколько секунд останавливают передачу полезной нагрузки до тех пор, пока не будет сформирован KV-кэш. Чтобы пользователи не сталкивались с зависшим экраном, необходимо запустить механизм среды выполнения, который в реальном времени обнаруживает задержку получения первого байта токена и переключает трафик на резервную модель.
Реализуйте отказоустойчивую маршрутизацию среды выполнения, объединив асинхронный цикл событий и логику управления потоком. Определите словарь конфигурации, содержащий конечные точки и заголовки аутентификации основного и вторичного поставщиков, и установите пороговое значение тайм-аута на уровне 2.0 секунды. Вызовите поток основного поставщика с помощью асинхронного итератора и используйте функцию asyncio.wait_for для проверки поступления первого байта в пределах заданного порога. При возникновении тайм-аута основной поток немедленно отменяется для высвобождения сокетов и ресурсов, и трафик мгновенно переключается на поток вторичного поставщика в бескомпромиссном состоянии, когда клиенту вниз по течению не был передан ни один байт токена.
Согласно данным бенчмарка адаптивного хеджирования, эксплуатация транспортного уровня, генерирующего резервные запросы при возникновении задержки, снизила хвостовую задержку P99 с 64.3 до 17.0 миллисекунд, обеспечив сокращение задержки на 73.6 процента. Это позволяет полностью защитить пользователей от ощутимого простоя даже в условиях частичного сбоя у основного поставщика.