CPU vs GPU в системе интеллектуального мониторинга
Введение
На первый взгляд — всё логично. Клиент внедряет систему интеллектуального анализа событий. Фича — краткосрочное прогнозирование метрик ИТ-систем с целью предотвращения сбоев. Аналитика на основе машинного обучения. Решение масштабируется до 100 тысяч метрик. Инженеры просят GPU.
Этот кейс — о том, как одной технической экспертизы хватило, чтобы отказаться от многомиллионных затрат на GPU-инфраструктуру. О том, как алгоритмическая природа задачи определяет архитектуру.
Постановка задачи
Проект: система интеллектуального мониторинга для крупной организации. Цель — раннее выявление аномалий, снижение шума событий, предотвращение сбоев. Фича — краткосрочное прогнозирование: анализ поведения метрик с горизонтом от 10 до 120 минут, с оповещением при отклонении.
Заявленные требования:
- Обрабатывать до 100 000 метрик.
- SLA — до 1 минуты на расчёт.
- Прогноз должен пересчитываться с частотой, соответствующей гранулярности метрики.
На этапе проектирования инфраструктуры команда заявила: «Для обработки такого объёма данных в реальном времени потребуется GPU-кластер. CPU не справится»
Моя задача — проверить это утверждение. Не просто согласиться или возразить, а доказать.
1️⃣ Анализ модели для краткосрочного прогнозирования
Первое, что я сделал — запросил архитектурную документацию и код модуля прогнозирования.
Результат экспресс анализа был неожиданным: Прогнозирование строится на Stan-модели аддитивной регрессии (Prophet), обучаемой перед каждым расчётом.
- Никаких нейросетей
- Никакого предобучения
- Ни одного тензора
Ключевой вывод: это не deep learning. Это статистическая модель, которая каждый раз подстраивается под историю метрики.
И самое важное:
- mcmc_samples=0_ — байесовский вывод отключён
- Интервалы неопределённости не рассчитываются
- Модель обучается быстро, без тяжёлых операций
То есть, задача — не генерация, а быстрая подстройка параметров_.
2️⃣ Правильная оценка нагрузки
Следующий аргумент команды: «100 тысяч метрик — это огромная нагрузка. Нужны тысячи ядер или GPU»
Я снова иду в документацию. Нашёл: «Кластер из 96 vCPU обрабатывает 1 000 метрик в минуту» → ≈10–11 метрик/мин на 1 vCPU.
Вроде бы выглядит медленно. А если ещё и экстраполировать: 100 000 / 10 = 10 000 vCPU — абсурд.
Но это классическая ошибка: смешение количества метрик с пиковой нагрузкой. На самом деле:
- Пересчёт выполняется не одновременно, а по расписанию.
- Частота зависит от гранулярности: 1 раз в 1, 5, 15 минут.
- Реальная нагрузка распределена во времени.
Далее ещё один слой: На встрече с заказчиком прозвучало: «По метрикам ошибок и таймаутов прогнозирование не нужно — это 60% всех метрик». Таким образом:
- Реальный объём: 40 000 метрик, а не 100 000.
- Средняя нагрузка: ~700–800 метрик/мин.
- Требуемая производительность: ~80–100 vCPU.
3️⃣ А что с параллелизмом?
Следующий вопрос: как работает обработка? Ответ:
- Event-driven архитектура на Kafka + Faust (Python).
- Параллелизм через Dask-кластер с жёстким контролем потоков.
- Управление ресурсами через OMP_NUM_THREADS, OPENBLAS_NUM_THREADS.
- Каждый воркер — изолированный процесс с ограниченной памятью.
Вывод: система спроектирована под CPU-параллелизм, а не под GPU. Никаких вызовов CUDA. Ни одного PyTorch/TensorFlow. Optuna + Prophet — все на CPU.
4️⃣ Проверить, где родился запрос на GPU
Я запросил аудиозаписи совещаний. На одной из встреч кто-то сказал: «GPU — это слишком оптимистично и маловероятно. Банально дорого».
Позже выяснилось:
- Вопрос всплыл из-за страха перед масштабом: «100 тысяч метрик — это же big data!»
Но никто не проверил, что именно считается и как часто.
Итог: доказательство и выводы
Этот кейс — пример того, как глубокая техническая экспертиза заменяет дорогое железо. Главное понять, что за задача на самом деле.
- Регрессия - не нейросеть
- Нет матричных умножений высокой размерности
- Все библиотеки CPU оптимизированы
- Нет backpropagation, нет batch-обучения
‼️ Алгоритм определяет архитектуру:
- Нейросеть — GPU.
- Статистическая модель — CPU