Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 467новых вакансий за сутки·93 721вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 267
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

DevOps и инфраструктура

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

Другие направления

  • Проджект-менеджер616
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме PyTorchВсе вопросы
PyTorchSeniorОпыт

Представьте, pipeline на PyTorch даёт хорошие результаты в dev, но плохо работает на новых данных. Как вы будете разбираться?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Проверяйте последовательно: data drift (KS-test), data leakage, соответствие параметров нормализации train/inference, режим model.eval(), корректность загрузки checkpoint и анализ ошибочных примеров по паттернам.

Шаг 1. Проверить сдвиг распределения (data drift)

Первый вопрос: похожи ли новые данные на обучающие? Сравните базовые статистики входных признаков.

import torch
import numpy as np
from scipy import stats

def check_drift(train_tensor, new_tensor, feature_names):
    """KS-test для каждого признака."""
    train_np = train_tensor.numpy()
    new_np = new_tensor.numpy()
    for i, name in enumerate(feature_names):
        stat, p = stats.ks_2samp(train_np[:, i], new_np[:, i])
        if p < 0.05:
            print(f'DRIFT detected: {name}, KS={stat:.3f}, p={p:.4f}')

Если p-value ниже порога для многих признаков — данные изменились, нужно дообучение или ретренинг.

Диагностика: pipeline хорошо работает на dev, плохо — на новых данных

Расхождение между dev и продакшн метриками — один из самых частых и опасных сценариев. Причины делятся на несколько групп: проблемы с данными, утечки, особенности обучения, deployment. Ниже — систематический процесс разбора.

Шаг 2. Проверить утечку данных (data leakage)

Если в dev метрики были завышены из-за утечки, на новых данных они упадут. Проверьте:

  • Нормализация (mean/std) вычислялась по всему датасету до сплита?
  • Временные признаки (future data) случайно попали в обучение?
  • Одни и те же примеры оказались и в train, и в val?
# Проверка пересечения train/val id
train_ids = set(train_dataset.ids)
val_ids = set(val_dataset.ids)
overlap = train_ids & val_ids
if overlap:
    print(f'Leakage! {len(overlap)} samples in both splits')

Шаг 3. Проверить preprocessing pipeline

Самая частая причина: параметры нормализации (mean/std, scaler) вычислены на train и не применяются одинаково к новым данным. Проверьте, что при инференсе используются те же самые значения.

# Сохраняем статистики при обучении
normalization_params = {
    'mean': train_mean.tolist(),
    'std': train_std.tolist()
}
import json
with open('norm_params.json', 'w') as f:
    json.dump(normalization_params, f)

# При инференсе загружаем их же
with open('norm_params.json') as f:
    params = json.load(f)
mean = torch.tensor(params['mean'])
std = torch.tensor(params['std'])
new_data_normalized = (new_data - mean) / std

Шаг 4. Проверить режим модели при инференсе

model.eval()  # обязательно!
with torch.no_grad():
    predictions = model(new_data_normalized)

BatchNorm в режиме train использует статистики текущего батча, что даёт другие результаты на малых батчах или одиночных примерах.

Шаг 5. Анализ ошибок на новых данных

Посмотрите на примеры, где модель ошибается наиболее сильно. Ищите паттерны: определённые категории, диапазоны значений, временные интервалы.

model.eval()
errors = []
with torch.no_grad():
    for x, y, meta in new_loader:
        pred = model(x.to(device))
        err = (pred.cpu() - y).abs()
        for i in range(len(err)):
            if err[i] > threshold:
                errors.append({'meta': meta[i], 'error': err[i].item()})

# Группируем по категории
from collections import Counter
category_errors = Counter(e['meta']['category'] for e in errors)
print(category_errors.most_common(10))

Шаг 6. Проверить версионирование модели и артефактов

Убедитесь, что для инференса загружается именно та версия модели и тех же самых весов, которые показали хорошие результаты на dev. Случайная инициализация части весов из-за несовпадения checkpoint — частая ошибка.

checkpoint = torch.load('model_best.pt', map_location=device)
model.load_state_dict(checkpoint['model_state_dict'])
print('Loaded epoch:', checkpoint['epoch'])
print('Val loss:', checkpoint['val_loss'])

Подводные камни

  • Разные параметры нормализации в train и inference — самая частая причина деградации. Всегда сохраняйте scaler/params как артефакт рядом с моделью.
  • Забытый model.eval(): Dropout и BatchNorm в режиме train дают стохастические результаты — каждый инференс будет другим.
  • Temporal leakage: при работе с временными рядами случайный сплит вместо временного разделения даёт оптимистичный val, но плохой прод.
  • Концептуальный сдвиг (concept drift): даже при правильном preprocessing поведение пользователей или бизнес-правила меняются со временем — модель устаревает.
  • Разные версии зависимостей: разные версии torchvision transforms или других пакетов могут давать разные результаты трансформаций.
  • Half-precision ошибки: fp16/bf16 в продакшне при обучении в fp32 может добавлять погрешность, особенно для чувствительных к численной точности операций.
  • Маленькие тестовые батчи при использовании BatchNorm: с batch_size=1 running_mean/var не обновляются правильно, если model не переключена в eval.

Что портит ответ

  • Сразу обвинять PyTorch, не проверив соседние слои системы
  • Чинить симптом без минимального воспроизведения и evidence
  • Не учитывать версии, конфигурацию, окружение и recent changes

Что слушает интервьюер

  • Умеет локализовать проблему вокруг PyTorch
  • Двигается от симптома к гипотезам и проверкам
  • Отличает баг инструмента от ошибки использования или окружения

Как вы знаете этот вопрос?

Проверить себя по теме PyTorch →
←Предыдущий вопросКак реализовать gradient accumulation в PyTorch и зачем это нужно?Следующий вопрос→Какие ключевые абстракции PyTorch нужно понимать, чтобы не получать формально рабочие, но неверные результаты?

Связанные темы

PyTorchDebuggingtechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

  • Software Engineer, Full Stack (Data & Video Analysis)
  • Sr. Software Engineer, Full Stack (Data & Video Analysis)
  • Senior AI Engineer (REMOTE)
  • Google Cloud AI Architect
  • AI/AI Agent Developer (Python)

Частые вопросы на собеседовании

  • Как сохранять и загружать веса модели в PyTorch (state_dict vs полная модель)?
  • Объясните разницу между режимами model.train() и model.eval().
  • Зачем нужен optimizer.zero_grad() и почему его необходимо вызывать перед каждым обратным проходом?
  • В каких data/AI-задачах PyTorch даёт реальный выигрыш, а где лучше выбрать другой инструмент или более простой pipeline?