Netflix самостоятельно управляет всем стеком больших языковых моделей, осуществляя развертывание и инференс напрямую. Они интегрировали это в существующую производственную среду, а не в отдельный "силос" машинного обучения. Этот подход включал тщательный выбор движка инференса, решение о том, как будут упаковываться модели, проектирование интерфейса API, определение стратегий развертывания и обеспечение ограничений на вывод.Выбранный движок инференса — vLLM, отобранный за его операционную пригодность, способность загружать пользовательские архитектуры, расширяемость, отлаживаемость и знакомство среди специалистов. Модели упаковываются с использованием бэкенда vLLM в Triton для обеспечения динамической спецификации входных/выходных тензоров, способствуя независимому развитию моделей и фронтендов. Наряду с существующим gRPC-интерфейсом был добавлен HTTP-фронтенд, совместимый с OpenAI, для более широкой совместимости с экосистемой.Для развертывания Netflix использует стратегию версионирования для обработки потенциальных изменений схемы между версиями моделей, позволяя потребителям обновляться независимо. Когда интерфейсы моделей стабильны, применяется менее затратная стратегия развертывания "красное-черное". Одной из ключевых операционных проблем было медленное время запуска моделей, которое они решили путем материализации больших моделей на Amazon FSx для более быстрого доступа.Наблюдаемость была улучшена путем создания унифицированной конечной точки /metrics, которая агрегирует данные как из vLLM, так и из Triton. Важной функцией является масштабируемое ограниченное декодирование, реализованное с помощью пользовательского процессора логитов vLLM. Это позволяет моделям напрямую генерировать соответствующие требованиям выходные данные, избегая коррекции после инференса.Первоначальная реализация ограниченного декодирования на чистом Python столкнулась с проблемами масштабирования из-за Global Interpreter Lock (GIL) и последовательной обработки на ЦП. Это стало очевидным только при высокой конкуренции, что привело к значительным задержкам в хвосте. Система полагается на Java-площадку управления для управления развертыванием, версионированием и автоматическим масштабированием. Система обслуживания поддерживает как пути инференса в пакетном режиме в реальном времени, так и с кэшированием. Эта унифицированная система обрабатывает полный поток потребителей, включая маршрутизацию, генерацию кандидатов и логирование.
/metrics, которая агрегирует данные как из vLLM, так и из Triton. Важной функцией является масштабируемое ограниченное декодирование, реализованное с помощью пользовательского процессора логитов vLLM. Это позволяет моделям напрямую генерировать соответствующие требованиям выходные данные, избегая коррекции после инференса.Первоначальная реализация ограниченного декодирования на чистом Python столкнулась с проблемами масштабирования из-за Global Interpreter Lock (GIL) и последовательной обработки на ЦП. Это стало очевидным только при высокой конкуренции, что привело к значительным задержкам в хвосте. Система полагается на Java-площадку управления для управления развертыванием, версионированием и автоматическим масштабированием. Система обслуживания поддерживает как пути инференса в пакетном режиме в реальном времени, так и с кэшированием. Эта унифицированная система обрабатывает полный поток потребителей, включая маршрутизацию, генерацию кандидатов и логирование.