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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python15 974
  • Облачные технологии12 746
  • QA вакансии3 431
  • Backend вакансии1 983
  • Инженер данных1 590
  • Продакт-менеджер1 097

Разработка

  • Android1 792
  • iOS1 660
  • AI вакансии924
  • Fullstack вакансии835
  • Frontend вакансии702
  • Mobile вакансии36

По стеку

  • Go8 484
  • Java5 803
  • Node.js1 814
  • Kotlin1 510
  • .NET1 432
  • Rust1 405
  • PHP591
  • C#500
  • C++450

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

  • Kubernetes7 088
  • DevOps вакансии5 330
  • Linux-инфраструктура5 148
  • Terraform / IaC3 908
  • CI/CD2 190
  • Мониторинг и Observability1 724
  • SRE539
  • Кибербезопасность367

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

  • Data Scientist977
  • Бизнес-аналитик828
  • Аналитик данных809
  • Системный аналитик111

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

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

По регионам

  • Вакансии в США44 024
  • Вакансии в Европе19 966
  • Вакансии в Канаде4 349
  • Работа в России3 875

По формату

  • Удалённые вакансии72 075
  • Релокация в США44 024
  • Гибридная работа10 789
  • Офисная работа6 889

По уровню

  • Senior вакансии39 966
  • Middle вакансии19 556
  • Junior вакансии6 496

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

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

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

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

  • Senior Software Engineer (Machine Learning) - Economy ML
  • Staff, Platform Engineer AI Compute (6034)
  • Sr. Model Engineer, Model Training
  • Sr. Model Engineer, Post-Training & RL
  • Sr. Model Engineer, Mid-training

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

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