Запускайте модель в ограниченном пуле worker с очередью и backpressure. Жёстко ограничьте ресурсы процесса, а динамически меняйте только конкуренцию в безопасных пределах по метрикам и задержке соседних сервисов.
Эффективное управление нагрузкой сервиса с машинным обучением
Запускайте модель в ограниченном пуле worker с очередью и backpressure. Жёстко ограничьте ресурсы процесса, а динамически меняйте только конкуренцию в безопасных пределах по метрикам и задержке соседних сервисов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создать сервис на Python, который внутри вызывает ML‑модель. В рабочей среде сервис развёрнут на сервере с ограниченными вычислительными ресурсами, поэтому необходимо учитывать, что:
- более мощное оборудование ускоряет работу модели;
- на том же сервере работают другие сервисы, поэтому нельзя полностью захватывать ресурсы. Требуется спроектировать механизм запуска вычислений модели так, чтобы:
- модель использовала доступные ресурсы с максимальной эффективностью;
- её работа не ухудшала производительность остальных процессов;
- система автоматически подстраивалась под текущую нагрузку (например, через приоритеты, очереди, ограничение количества потоков, мониторинг загрузки CPU/GPU и т.п.).
Ответ
Запускайте модель в ограниченном пуле worker с очередью и backpressure. Жёстко ограничьте ресурсы процесса, а динамически меняйте только конкуренцию в безопасных пределах по метрикам и задержке соседних сервисов.
Загрузите модель один раз на worker, ограничьте внутренние BLAS/OpenMP-потоки и число одновременно выполняемых inference. Используйте CPU/memory quotas; один nice не гарантирует изоляцию. Для GPU учитывайте память и конкуренцию kernel, при возможности выделяйте отдельный ресурс.
Контроллер нагрузки уменьшает параллелизм при росте p95, памяти или давления CPU, увеличивает медленно с гистерезисом. Очередь имеет предел и deadline; лишние запросы отклоняются или откладываются. Microbatching повышает throughput ценой задержки. Нельзя гарантировать одновременно максимальную загрузку модели и нулевое влияние на соседей без согласованного ресурсного бюджета.