← Вернуться к списку

Постепенное увеличение нагрузки на ЦПУ при использовании модели векторных представлений предложений (sentence embeddings) совместно с алгоритмом K-means

Краткое содержание

У меня есть производственное приложение, основанное на машинном обучении, использующее Flask и развернутое на сервере Google Cloud Platform с помощью воркеров Gunicorn. В каждом входящем запросе принимается текстовое предложение. Для обработки используется библиотека Sentence Transformers (модель All-MiniLM-L6-v2), загружаемая глобально один раз, чтобы создать эмбеддинги поступающего текста, после чего предварительно натренированный алгоритм K-means (также загружаемый глобально) предсказывает/мэппит результат в кластер намерений. Основная цель — определить намерение предложения. Несмотря на наличие достаточных ресурсов сервера, постоянное количество запросов и схожесть обрабатываемых текстов, нагрузка на процессор постепенно увеличивается каждый день. Среднее время отклика в первый день составляло около 200 мс, сейчас спустя десять дней оно увеличилось до 400 мс. Попытался решить проблему удалением переменной с эмбеддингами через команду `del` прямо в коде приложения, также принудительно вызывал сборщик мусора Python (`gc.collect()`), выполняя этот метод в отдельном потоке после завершения основного процесса, однако проблема сохраняется. Единственная деталь, которую заметил: если не использовать команды `del` и `gc.collect`, то...

Полный текст статьи пока не загружен.