Компьютерное зрение
CV на собеседовании (FAANG)
ML Engineer в Meta зарабатывает $350-500k в год. Что отличает их от junior? Не знание архитектур - это гуглится. Умение рассуждать о trade-offs: 'ViT лучше CNN когда данных >10M и есть GPU бюджет, но MobileNetV3 правильный выбор для мобильного деплоя с 100ms бюджетом'. CV-интервью в FAANG - это system design + ML fundamentals + production experience. Эта структура разбирает что именно спрашивают и как отвечать.
- **Google Photos** - system design вопрос: дублирующиеся фото для 15B изображений; ответ: perceptual hashing (pHash) + FAISS + SimCLR embeddings; обсудить offline vs online, precision/recall trade-off
- **Tesla Autopilot** - деплой на embedded GPU (Drive Orin, 254 TOPS); INT8 quantization обязательна; latency <10ms для lane detection; on-device retraining невозможен
- **Meta Content Moderation** - imbalanced dataset: 0.01% harmful content; focal loss + class weights; recall@precision=0.999 как KPI; активное обучение на uncertain samples
Предварительные знания
- Архитектуры CNN и Vision Transformer и их trade-offs
- Основы обучения: overfitting, регуляризация, аугментация
- Production деплой: ONNX, TensorRT, serving и мониторинг из урока 18
Когда CV-собеседования стали собеседованиями по deep learning
Найм в computer vision резко изменился после 2012 года. Когда AlexNet с большим отрывом выиграл соревнование ImageNet, deep learning почти мгновенно заменил вручную сконструированные признаки, и вопросы к CV-кандидатам изменились вместе с ним. Собеседования перестали крутиться вокруг SIFT, HOG и классических пайплайнов и начали проверять архитектуры CNN, динамику обучения, а позже трансформеры. По мере того как глубокие модели в конце 2010-х входили в продукты в масштабе, крупные компании добавили в CV-интервью раунд system design: от кандидата стали ожидать рассуждений о serving latency, индексировании миллиардов изображений, data drift и retraining loop, а не только об accuracy модели. К началу 2020-х senior CV-интервью обрело узнаваемую форму: trade-offs архитектур, рассуждения об обучении и аугментации, деплой и end-to-end system design при явных ограничениях по latency и стоимости.
Архитектурные вопросы
Типичный вопрос на CV-интервью в Google: «Спроектируйте систему поиска дублирующихся изображений для Google Photos (15 млрд фото, 1.5 млрд пользователей)». Интервьюер ожидает не просто 'использовать CNN', а полноценный system design с trade-offs.
Частые архитектурные вопросы: **Чем ViT лучше CNN?** (global attention vs local receptive field, масштабирование с данными), **Когда ResNet лучше EfficientNet?** (legacy системы, известный поведение), **Как работает transfer learning и когда fine-tune все слои?** (малые данные - freeze backbone, большие - fine-tune все).
На интервью спрашивают: 'Когда следует предпочесть CNN перед ViT?' Какой ответ наиболее полный?
Аугментация данных
Датасет кожных заболеваний: 10,000 изображений, 8 классов. Некоторые классы - 50 образцов. Как предотвратить overfitting? Аугментация - создание новых обучающих примеров из существующих преобразованиями, инвариантными к классу.
Стандартные аугментации: **геометрические** (flip, rotate, crop, resize), **фотометрические** (brightness, contrast, saturation, hue), **advanced** (Cutout, MixUp, CutMix, RandAugment, AutoAugment). Для медицинских изображений: осторожнее с flip (left/right lung важны), color jitter может уничтожить диагностически важный цвет.
| Аугментация | Улучшение на ImageNet | Когда применять |
|---|---|---|
| Flip + Crop | +1-2% | Всегда (baseline) |
| ColorJitter | +0.5-1% | Натуральные изображения |
| MixUp | +0.5-1% | Большие датасеты, классификация |
| CutMix | +1-1.5% | Объекты с чёткими границами |
| RandAugment | +1.5-2% | Замена ручного тюнинга аугментаций |
| AutoAugment | +2% | Когда есть вычислительный бюджет для поиска |
Почему CutMix часто превосходит MixUp для object detection задач?
Деплой CV-моделей
PyTorch-модель обучена, accuracy отличная. Следующий шаг: деплой в продакшн с требованием latency <50ms на GPU. Тренировочный checkpoint напрямую - не вариант: Python overhead, нет батчинга, нет оптимизаций. Нужна цепочка: PyTorch -> ONNX -> TensorRT.
Стек деплоя CV: **ONNX** - аппаратно-независимый формат (export из PyTorch, import в TensorRT/ORT), **TensorRT** - NVIDIA-оптимизация: layer fusion, INT8/FP16 quantization, 2-4x speedup. **ONNX Runtime** - CPU/GPU serving без TensorRT. **Triton Inference Server** - production: dynamic batching, multi-model, gRPC/HTTP.
Команда хочет ускорить inference ResNet50 с 80ms до 20ms на NVIDIA A100 без переобучения. Какой порядок действий?
Trade-offs на интервью
CV-интервью в FAANG - это не 'угадай правильный ответ'. Интервьюер ищет понимание trade-offs. Не 'ViT лучше CNN', а 'ViT лучше CNN когда..., но хуже когда...' Структурированное мышление через trade-offs показывает senior-level мышление.
Ключевые trade-offs которые нужно знать: **precision vs recall** (moderation: низкий FPR важнее высокого recall), **model size vs accuracy** (мобильный vs серверный деплой), **real-time vs batch** (fraud detection vs ночные отчёты), **generalization vs specialization** (zero-shot CLIP vs fine-tuned domain model).
На CV интервью достаточно знать архитектуры (ResNet, ViT, YOLO)
FAANG CV интервью проверяет system design (как масштабировать до 1B изображений), ML fundamentals (bias-variance, overfitting), production знания (monitoring, retraining, quantization) и domain reasoning (precision vs recall в контексте задачи).
Junior знает архитектуры. Senior знает когда какую архитектуру выбрать и почему, как её задеплоить за 50ms, как мониторить в продакшне и что делать при деградации. Интервьюер Google и Meta явно спрашивает 'what are the trade-offs?' - это ключевой сигнал что нужен не правильный ответ, а структурированное рассуждение.
На интервью: 'Команда строит CV-систему для обнаружения рака на снимках. Что важнее: precision или recall?' Лучший ответ:
Ключевые идеи
- **Архитектуры**: CNN при малых данных (inductive biases); ViT при >10M данных (global attention); MobileNet для mobile; всегда обосновать выбор через trade-offs
- **Аугментация**: baseline = flip+crop+colorjitter; advanced = MixUp/CutMix/RandAugment; медицинские изображения - осторожно с семантически значимыми преобразованиями
- **Деплой**: PyTorch -> ONNX -> TensorRT FP16 (2-3x speedup); Triton для batching; мониторить embedding drift + precision/recall на holdout
- **Trade-offs**: recall vs precision (зависит от cost of FP vs FN); real-time vs batch; on-device vs server; generalization vs specialization
Связанные темы
CV интервью проверяет знания из нескольких областей:
- CV System Design — System design вопросы - ключевая часть FAANG CV интервью
- Vision-Language Models — VLM вопросы (CLIP, GPT-4V) всё чаще появляются на senior ML интервью
Вопросы для размышления
- Интервьюер спрашивает: 'Как построить систему обнаружения поддельных документов для банка (100K загрузок/день, latency <1s)?' Какие компоненты и trade-offs обсудить?
- Датасет для медицинской CV: 500 изображений рака, 50,000 здоровых. Какие техники аугментации применить и почему CutMix может быть опасен для этой задачи?
- Модель работает 95% accuracy на тесте, но в продакшне через 6 месяцев accuracy упала до 87%. Как диагностировать причину и что исправить - это классический вопрос на ML Engineer интервью?
Связанные уроки
- cv-17 — Внутренности Vision Transformer обязательная тема senior CV-интервью
- cv-15 — Архитектуры детекции (YOLO, DETR) встречаются в system design
- cv-16 — Self-supervised и ViT pretraining частые вопросы ML-design
- arch-19-memory-bandwidth — Latency-бюджеты и сжатие моделей требуют знания железа
- la-01-vectors-intro