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

+1 098новых вакансий за сутки·92 474вакансии открыты сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 175
  • Облачные технологии14 136
  • QA вакансии3 451
  • Backend вакансии2 059
  • Инженер данных1 762
  • Продакт-менеджер1 226

Разработка

  • Android1 854
  • iOS1 694
  • Fullstack вакансии983
  • AI вакансии945
  • Frontend вакансии737
  • Mobile вакансии43

По стеку

  • Go8 740
  • Java6 589
  • Node.js2 029
  • .NET1 734
  • Kotlin1 615
  • Rust1 473
  • C#715
  • PHP692
  • C++581

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

  • Kubernetes7 760
  • DevOps вакансии6 073
  • Linux-инфраструктура5 498
  • Terraform / IaC4 270
  • CI/CD3 273
  • Мониторинг и Observability1 791
  • SRE553
  • Кибербезопасность444

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

  • Data Scientist1 115
  • Бизнес-аналитик916
  • Аналитик данных832
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США42 682
  • Вакансии в Европе23 611
  • Вакансии в Канаде4 365
  • Работа в России3 838

По формату

  • Удалённые вакансии72 518
  • Релокация в США42 681
  • Гибридная работа12 458
  • Офисная работа7 066

По уровню

  • Senior вакансии42 247
  • Middle вакансии20 971
  • Junior вакансии6 706

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

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 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

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

  • Ingeniero de Machine Learning & Modelado
  • Sr. Model Engineer, RL Training Framework
  • ML Inference Engineer – Terminal-Bench Task Designer
  • Principal Product Manager, Model Customization & Open-Weight Models
  • Senior Machine Learning Engineer (Growth)

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

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