fbpx

Вакансія

ML/NLP/IR Engineer

Огляд

Вакансія передбачає службу у складі Окремого спеціального центру електронної підтримки. Команда будує ML-платформу для аналізу аудіо та текстової інформації — з високою зашумленістю, складними акустичними умовами та великою різноманітністю лексики. Це повний life-cycle: збір та підготовка даних, тренування моделей (ASR, VAD, класифікація тексту, NER, ембеддинги), експорт у продакшн (ONNX / TensorRT / Triton) та інтеграція у потокові пайплайни (Apache Flink, RabbitMQ, Kafka). Кінцеві споживачі — аналітики, які працюють з великими обсягами інформації, тому якість моделей та якість їх інженерної реалізації одинаково критичні.

Обов'язки

  • тренування та доведення до продакшну моделі у трьох суміжних доменах: ASR (Speech-to-text — fine-tuning сучасних архітектур (CTC, RNN-T, TDT, attention-based) на шумних аудіо, PyTorch Lightning, NeMo, Hydra-конфіги, multi-GPU), VAD (Voice activity detection — fine-tuning рекурентних та CNN-based моделей на спектрограмах, threshold optimization, ROC-аналіз), NLP / IR (текст та пошук)
  • експорт моделі в ONNX, підготовка TensorRT-планів (FP16, optimization profiles, dynamic shapes), інтеграція в NVIDIA Triton (ensemble, BLS, dynamic batching, instance groups)
  • побудова продакшн-сервісів: FastAPI-фронти, асинхронні воркери на RabbitMQ / Kafka / S3 / Redis, інтеграція в Flink-пайплайни
  • проведення ретельних бенчмарків: WER, F1 per-class, ROC-AUC, RTFx, throughput, A/B-тести з людьми розмітниками (Prodigy)
  • читання papers, відтворення state-of-the-art підходи та адаптація їх під наші дані
  • версіонування даних та моделей (DVC + MinIO/S3), трекінг експериментів (Weights & Biases), написання тестів (pytest), проходження code review

Вимоги

  • 5+ років комерційного досвіду в ML / NLP / Information Retrieval (CV-досвід не потрібен)
  • Python як основна мова — впевнене володіння сучасним Python (3.11+), типізація, async/await, написання чистого підтримуваного коду
  • PyTorch на рівні автора кастомних training loops — не лише Trainer.fit(), а й написання своїх loop-ів, distributed training (DDP, gradient accumulation, mixed precision), розуміння, як працюють loss-функції під капотом (CTC, RNN-T, contrastive losses)
  • принаймні один глибокий досвід в одному з напрямків: ASR / sequence-to-sequence, класичний NLP на трансформерах та класичних методах, або Information Retrieval (BM25, dense retrieval, MinHash / LSH, ранжування)
  • здатність читати та відтворювати papers — брати модель або підхід з arXiv, розуміти trade-offs, адаптувати під свої дані, а не лише запускати готові скрипти
  • інженерія продакшну — досвід доведення моделі від ноутбука до сервісу: експорт (ONNX / TorchScript), оптимізація інференсу, побудова REST / gRPC API, написання тестів (unit + integration)
  • HuggingFace екосистема — впевнена робота з transformers, datasets, tokenizers, accelerate, evaluate, hub; досвід fine-tuning, custom training loops, кастомних токенайзерів (BPE, SentencePiece, WordPiece).
  • класичний ML — sklearn, XGBoost, threshold tuning для imbalanced multi-label задач, метрики Precision / Recall / F1 (macro/micro/per-class), ROC-AUC
  • Git, pre-commit, лінтери, CI — сприймати ці речі як норму, а не як перешкоду
  • знання англійської на рівні читання технічної документації та papers без труднощів

Умови

  • служба за контрактом
  • маленька команда, низька бюрократія, рішення приймає інженер, який володіє контекстом
  • кожна зміна моделі або інфраструктури має чіткі бенчмарки до/після — підрозділ не «відчуває, що краще», а міряє
  • Production-mindset з самого початку: будь-яка модель з ноутбука повинна мати план виходу на сервер
  • наявність документації, діаграм архітектур, чесних post-mortem-и, культури writing-it-down
  • переведення чинних військовослужбовців за згодою безпосереднього командира
  • можливість служби для кандидатів, які за висновком ВЛК придатні до служби у військових частинах забезпечення, ТЦК та СП, ВВНЗ, навчальних центрах тощо
  • служба в офісі у місті Київ, 5 днів на тиждень
Для відгуку на вакансію заповнюйте форму, натиснувши на кнопку нижче