Новое: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 196
  • Облачные технологии14 160
  • QA вакансии3 451
  • Backend вакансии2 107
  • Инженер данных1 800
  • Продакт-менеджер1 247

Разработка

  • Android1 855
  • iOS1 695
  • Fullstack вакансии995
  • AI вакансии952
  • Frontend вакансии751
  • Mobile вакансии43

По стеку

  • Go8 754
  • Java6 595
  • Node.js2 038
  • .NET1 738
  • Kotlin1 617
  • Rust1 473
  • C#718
  • PHP692
  • C++582

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

  • Kubernetes7 778
  • DevOps вакансии6 088
  • Linux-инфраструктура5 502
  • Terraform / IaC4 276
  • CI/CD3 275
  • Мониторинг и Observability1 793
  • SRE563
  • Кибербезопасность453

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

  • Data Scientist1 141
  • Бизнес-аналитик921
  • Аналитик данных860
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США44 164
  • Вакансии в Европе24 016
  • Вакансии в Канаде4 533
  • Работа в России3 837

По формату

  • Удалённые вакансии75 134
  • Релокация в США44 163
  • Гибридная работа12 456
  • Офисная работа7 066

По уровню

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

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

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

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

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

Как профилировать модель PyTorch для выявления узких мест по памяти и скорости?

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

Используйте torch.profiler.profile() с ProfilerActivity.CPU/CUDA для замера времени и памяти; результаты смотрите через prof.key_averages() или TensorBoard-плагин.

Базовый сценарий

import torch
from torch.profiler import profile, ProfilerActivity, record_function

model = MyModel().cuda()
x = torch.randn(32, 3, 224, 224, device="cuda")

with profile(
    activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA],
    record_shapes=True,
    profile_memory=True,
    with_stack=True,
) as prof:
    with record_function("model_inference"):
        model(x)

print(prof.key_averages().table(
    sort_by="cuda_time_total", row_limit=20
))

# Экспорт для TensorBoard
prof.export_chrome_trace("/tmp/trace.json")

Профилирование PyTorch: память и скорость

PyTorch предоставляет встроенный профилировщик torch.profiler, заменивший устаревший torch.autograd.profiler. Он охватывает CPU, CUDA, память и позволяет экспортировать трейсы для TensorBoard и Chrome Trace Viewer.

Планировщик (schedule) для реалистичного профилирования

Первые итерации содержат «прогрев» CUDA. Используйте torch.profiler.schedule, чтобы пропустить их:

from torch.profiler import schedule

with profile(
    activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA],
    schedule=schedule(wait=2, warmup=2, active=5, repeat=1),
    on_trace_ready=torch.profiler.tensorboard_trace_handler("./tb_logs"),
    record_shapes=True,
    profile_memory=True,
) as prof:
    for step, batch in enumerate(loader):
        train_step(batch)
        prof.step()  # обязательно вызывать каждый шаг

Анализ памяти

Для детального анализа выделений используйте torch.cuda.memory_snapshot() и визуализатор памяти:

torch.cuda.memory._record_memory_history(max_entries=100_000)

train_loop()

with open("mem_snapshot.pickle", "wb") as f:
    import pickle
    pickle.dump(torch.cuda.memory._snapshot(), f)

# Открыть на https://pytorch.org/memory_viz

Ключевые метрики в выводе key_averages()

  • cpu_time_total — суммарное CPU-время оператора
  • cuda_time_total — суммарное CUDA-время (реальная задержка GPU)
  • self_cpu_memory_usage — память, выделенная самим оператором без дочерних
  • cuda_memory_usage — выделения на GPU

Дополнительные инструменты

  • torch.cuda.memory_summary() — быстрый дамп статистики выделений
  • torch.cuda.max_memory_allocated() — пиковое выделение в байтах
  • NVIDIA Nsight Systems / nvprof — низкоуровневый CUDA-анализ ядер
  • TensorBoard Profiler Plugin — визуальный timeline оператора

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

  • Без prof.step() в цикле schedule профилировщик не переходит между фазами и трейс остаётся пустым.
  • profile_memory=True заметно замедляет обучение (до 2×); не оставляйте его включённым в продакшене.
  • CUDA-операции асинхронны: cpu_time ≠ cuda_time; всегда смотрите на cuda_time_total для оценки реальной задержки.
  • Первые 1–3 итерации включают JIT-компиляцию CUDA-ядер — всегда используйте фазу warmup.
  • with_stack=True генерирует огромные трейсы; на больших моделях Chrome Trace Viewer может зависнуть.
  • Если модель использует torch.compile, профилировщик показывает скомпилированные фьюзированные ядра, а не исходные операции — сопоставление с кодом затруднено.
  • Memory snapshot API экспериментален: _record_memory_history и _snapshot начинаются с подчёркивания и могут измениться.
  • На multi-GPU нужно профилировать каждый ранк отдельно; суммарный трейс не создаётся автоматически.

Типичные ошибки

  • Объяснять profiler memory speed только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать profiler memory speed с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.
  • Предлагает ли observability, rollback, ограничения стоимости и стратегию incident replay.

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

Проверить себя по теме PyTorch →

Источники

  • https://docs.pytorch.org/tutorials/recipes/recipes/profiler_recipe.html
←Предыдущий вопросЧто такое FSDP и когда он нужен вместо DDP?Следующий вопрос→Что такое quantization и как она влияет на inference latency/accuracy?

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

PyTorchdata-aiobservabilityproduction-ml

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

  • 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?