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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

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

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

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

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

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

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

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

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

Что такое transfer learning в PyTorch и как заморозить слои предобученной модели?

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

Transfer learning — дообучение предобученной модели на новой задаче. Замораживайте слои через requires_grad=False, передавая в оптимизатор только параметры с requires_grad=True.

Базовый пример: ResNet для классификации

import torch
import torch.nn as nn
from torchvision.models import resnet50, ResNet50_Weights

# Загрузка предобученной модели
model = resnet50(weights=ResNet50_Weights.IMAGENET1K_V2)

# Шаг 1: заморозить весь backbone
for param in model.parameters():
    param.requires_grad = False

# Шаг 2: заменить и разморозить classification head
num_classes = 10
model.fc = nn.Sequential(
    nn.Linear(model.fc.in_features, 256),
    nn.ReLU(),
    nn.Dropout(0.3),
    nn.Linear(256, num_classes),
)
# Новые слои автоматически имеют requires_grad=True

# Передать в оптимизатор только trainable параметры
optimizer = torch.optim.Adam(
    filter(lambda p: p.requires_grad, model.parameters()),
    lr=1e-3,
)

Transfer Learning и заморозка слоёв в PyTorch

Концепция

Transfer learning использует веса, обученные на большом датасете (ImageNet, C4, etc.), как стартовую точку для новой задачи. Типичный сценарий: заморозить feature extractor (backbone), дообучить только classification head. Это позволяет обучаться на малых датасетах и сходиться быстрее.

Частичная заморозка (fine-tuning последних блоков)

model = resnet50(weights=ResNet50_Weights.IMAGENET1K_V2)

# Заморозить всё
for param in model.parameters():
    param.requires_grad = False

# Разморозить layer4 и fc
for param in model.layer4.parameters():
    param.requires_grad = True
for param in model.fc.parameters():
    param.requires_grad = True

# Разные learning rate для разных частей
optimizer = torch.optim.SGD([
    {"params": model.layer4.parameters(), "lr": 1e-4},
    {"params": model.fc.parameters(), "lr": 1e-3},
], momentum=0.9, weight_decay=1e-4)

Проверка состояния заморозки

trainable = sum(p.numel() for p in model.parameters() if p.requires_grad)
total = sum(p.numel() for p in model.parameters())
print(f"Trainable: {trainable:,} / {total:,} ({100*trainable/total:.1f}%)")

Transfer learning для NLP (HuggingFace + PyTorch)

from transformers import AutoModel
import torch.nn as nn

encoder = AutoModel.from_pretrained("bert-base-uncased")

# Заморозить первые 8 слоёв трансформера из 12
for i, layer in enumerate(encoder.encoder.layer):
    if i < 8:
        for param in layer.parameters():
            param.requires_grad = False

classifier = nn.Linear(encoder.config.hidden_size, 3)

optimizer = torch.optim.AdamW([
    {"params": encoder.encoder.layer[8:].parameters(), "lr": 2e-5},
    {"params": classifier.parameters(), "lr": 1e-4},
])

Стратегии fine-tuning

  • Feature extraction: весь backbone заморожен, обучается только head; подходит при малом датасете и сходстве домена.
  • Fine-tuning: разморожены все или последние слои; подходит при достаточном датасете.
  • Gradual unfreezing: постепенно размораживаем слои от head к backbone — стабилизирует обучение.
  • Discriminative learning rates: ранние слои обучаются с очень маленьким lr (1e-5), поздние — с большим (1e-3).

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

  • BatchNorm в frozen backbone: слои с requires_grad=False всё ещё обновляют running_mean/running_var если модель в режиме train(); нужно явно вызывать backbone.eval() для полной заморозки.
  • Создание оптимизатора до заморозки: если передать model.parameters() в оптимизатор, а потом заморозить слои, оптимизатор всё равно хранит состояние для замороженных параметров (память тратится впустую); создавайте оптимизатор после заморозки.
  • Слишком высокий lr при fine-tuning предобученных слоёв разрушает выученные представления — используйте lr на порядок меньше, чем для head.
  • При использовании model.half() или смешанной точности заморозка работает корректно, но requires_grad=False параметры всё равно кастятся — убедитесь в совместимости типов.
  • Некоторые архитектуры (ViT, CLIP) имеют специфичные нормализации (LayerNorm с learnable params); замораживание всего backbone может непредсказуемо повлиять на них.
  • Gradual unfreezing реализуется вручную — PyTorch не имеет встроенного планировщика заморозки; забытый вызов param.requires_grad = True в нужную эпоху оставит слои замороженными навсегда.

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

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

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

  • Может ли связать transfer learning freezing с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

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

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

Источники

  • https://docs.pytorch.org/docs/stable/index.html
←Предыдущий вопросКак сравнить eager, graph/compiled execution и trade-offs production serving?Следующий вопрос→Что такое tensor в PyTorch и чем он отличается от массива NumPy?

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

PyTorchdata-aievaluationmodel-training

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

  • Middle AI/ML Engineer (#5827)
  • Senior AI/ML Engineer (#5902)
  • Senior Quant/ML Researcher
  • Senior Data Scientist (Business & Transaction Platform)
  • Final year internship - Data Scientist & AI Consultant

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

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