Инженер · архитектор систем

Евгений Демченко

Проектирую и довожу до продакшена инфраструктуру для AI-агентов, GPU-видеоаналитику и локальный инференс LLM. Люблю, когда решение измерено, а не угадано: в каждом проекте ниже есть цифры.

Платформы для AI-агентовспецификации, плагины, конфигурация, наблюдаемость, мультитенантность
GPU и видеоCUDA, NVDEC/NVENC, zero-copy конвейеры, FFmpeg
ML в продеvLLM, TensorRT, ONNX, дообучение OCR, голос и липсинк
ИнфраструктураKubernetes, Docker, MikroTik, PKI на Vault, Prometheus

Основные проекты

От спецификации до работы в проде.

dagstack активная разработка · 0.x

Экосистема спецификаций для инфраструктуры AI-агентов, одинаковая для Python, TypeScript и Go.

У каждого компонента есть свой spec-репозиторий: ADR, JSON Schema и генераторы типов (pydantic, zod, OpenRPC). Реализации на трёх языках проходят общий набор conformance-тестов. Принцип «спецификация главнее кода»: расхождение чинится в биндинге или в спеке, а не замалчивается.

  • plugin-system — манифесты, пять классов диспетчеризации (singleton, broadcast, chain, capability), отображение на MCP;
  • config — иерархичный YAML, подстановка окружения, горячая перезагрузка, маскирование секретов, каноническая сериализация RFC 8785;
  • logger — совместим с OpenTelemetry Log Data Model, расширение для наблюдаемости агентов по OTel GenAI;
  • postgres, tenancy, tenant-registry — транспорт и миграции, единая таксономия ошибок по SQLSTATE, виртуальные ключи, лимиты (token bucket, sliding window), инвалидация через LISTEN/NOTIFY.
6спецификаций
3языка с общими тестами
PythonTypeScriptGoJSON SchemaMCPOpenTelemetryDocusaurus

cuframes в проде · v0.1

Передача декодированных видеокадров между процессами через CUDA IPC — без копирования.

Обычно каждый сервис видеоаналитики (видеорегистратор, детектор, аналитика) сам декодирует один и тот же поток камеры. cuframes декодирует поток один раз на NVDEC, держит кадры в кольцевом буфере в VRAM, и любое число потребителей читает их без копий. В составе: C-библиотека с C++-обёрткой, мост RTSP → IPC, Python-биндинги через DLPack и демультиплексор cuframes:// для FFmpeg.

2 → 1декодирование на поток
0потерянных кадров за 24 ч
~2,8 МБVRAM на кольцевой буфер
CUDAC/C++FFmpegNVDECDLPackLGPL-2.1+

cuframes-composer в проде

CUDA-композитор: мозаика из нескольких камер в один H.264 RTSP-поток.

Заменил монолитный ffmpeg-конвейер. Кадры идут от cuframes до NVENC без копирования. Раскладка меняется сама по событиям детектора (с гистерезисом), PTZ-камеры переключаются с телевизора по ONVIF, оверлеи приходят из MQTT, управление — через ZeroMQ. Отвалившаяся камера даёт пустую ячейку, а не падение потока.

C++CUDANVENCZeroMQMQTTONVIF

Распознавание российских номеров модель в проде

Дообучение PaddleOCR под кириллицу на номерах и честная проверка на «грязных» кадрах.

Штатный OCR в Frigate путал кириллицу с похожей латиницей и цифрами (У → 9, А → 4). Дообучил PP-OCRv4 на открытом датасете с аугментациями; ONNX-модель встаёт в Frigate вместо штатной. Затем собрал стенд, где модели OCR и VLM сравниваются на реальных ночных и дождливых кадрах под углом, — и он показал, насколько валидационная метрика расходится с жизнью. Это и определяет следующий шаг: данные, а не архитектура.

0,9994точность на валидации
≈0,3точное совпадение на реальных кадрах
120–142 мсзадержка p95
PaddleOCRONNXFrigatePARSeqоценка моделей

Говорящий аватар прототип

Локальный фотореалистичный аватар для голосового ассистента — из одной фотографии.

Цепочка: вопрос → ответ LLM (vLLM) → речь (Chatterbox, ударения и нормализация чисел для русского) → липсинк (Ditto) → потоковое fMP4-видео в браузер по WebSocket. Ditto пересобран под TensorRT для Blackwell. MuseTalk отвергнут по замеру подвижности губ: 0,24 против 6,16 у Ditto.

10,1 → 2,8 сгенерация 6,6 с речи
RTF 0,42быстрее реального времени
TensorRTFastAPIvLLMTTSRTX 5090

Домашняя инфраструктура как код в эксплуатации

Лаборатория, в которой всё перечисленное выше работает каждый день.

  • сеть на MikroTik с сегментацией VLAN, приватный центр сертификации на Vault;
  • Kubernetes в виртуальных машинах: Home Assistant, Zigbee2MQTT, учёт электроэнергии;
  • видеонаблюдение на Frigate поверх cuframes, детекция по текстовым запросам (YOLO-World) и уведомления;
  • локальные LLM на vLLM: голосовой ассистент дома и помощник для кода;
  • живая карта трафика сети по каналам и устройствам — RouterOS API, conntrack, топология по LLDP и MAC-таблицам, SSE;
  • гибридная солнечная станция с мониторингом инвертора в Home Assistant.
246 ток/с7B-модель на одной RTX 5090
256kконтекст на 32 ГБ VRAM
KubernetesDockerMikroTikVaultPrometheusHome Assistant

Исследования и ранние проекты

Идеи в работе и то, с чего всё начиналось.

integra

Слой управления над MCP, A2A и AP2 для действий ассистента в реальном мире.

Онтология намерений, движок политик с учётом юрисдикции, мандаты и аудит согласий. Стадия спецификации.

idp-agent

Агент на LangGraph, который пишет шаблоны Backstage по запросу на естественном языке.

Подбирает actions через RAG, проверяет результат JSON-схемами и правит его в цикле.

Ориентирование в Москве

Приложение, которое учит ездить по городу без навигатора.

ADR, исследования и кликабельный концепт на данных OpenStreetMap.

Монитор котельной на ESP32

Прошивка M5Stack: энергия по Modbus, температуры, MQTT с автообнаружением в Home Assistant.

PlatformIO, TFT-интерфейс.