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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 748
  • Облачные технологии6 616
  • QA вакансии2 169
  • Android1 320
  • Инженер данных872
  • Продакт-менеджер302

Разработка

  • iOS1 232
  • Backend вакансии1 204
  • AI вакансии543
  • Fullstack вакансии497
  • Frontend вакансии417
  • Mobile вакансии28

По стеку

  • Go5 212
  • Java3 116
  • Kotlin1 090
  • Node.js995
  • Rust845
  • .NET661
  • PHP320
  • C++271
  • C#208

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

  • Kubernetes3 913
  • Linux-инфраструктура2 852
  • DevOps вакансии2 678
  • Terraform / IaC2 167
  • Мониторинг и Observability1 066
  • CI/CD923
  • SRE301
  • Кибербезопасность26

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

  • Аналитик данных533
  • Data Scientist436
  • Бизнес-аналитик400
  • Системный аналитик68

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

  • Проджект-менеджер90
  • 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

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

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

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

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

Что такое @tf.function и каковы его ограничения (побочные эффекты Python, трейсинг)?

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

@tf.function компилирует функцию в граф при трейсинге. Ограничения: Python side-effects игнорируются после трейсинга, повторный трейсинг при смене формы/типа, нельзя использовать произвольные Python-объекты внутри графа.

Ограничение 1: Python side-effects работают только при трейсинге

import tensorflow as tf

call_count = 0

@tf.function
def f(x):
    global call_count
    call_count += 1          # Python side-effect!
    print(f"Tracing #{call_count}")  # тоже только при трейсинге
    return x * 2

f(tf.constant(1))  # Tracing #1 — трейсинг
f(tf.constant(2))  # Молчит — граф уже закеширован
print(call_count)  # 1, а не 2!

# Правильно: используйте tf.print для логирования внутри графа
@tf.function
def f_correct(x):
    tf.print("Value:", x)  # выполняется при каждом вызове графа
    return x * 2

Механизм трейсинга @tf.function

При первом вызове декорированной функции TF запускает трейсинг: исполняет Python-тело, записывает TF-операции в граф и кеширует результат как ConcreteFunction. Последующие вызовы с теми же сигнатурами аргументов используют кеш, минуя Python-интерпретатор. Это источник как производительности, так и большинства ловушек.

Ограничение 2: повторный трейсинг при изменении формы/типа

@tf.function
def compute(x):
    print(f"Tracing: dtype={x.dtype}, shape={x.shape}")
    return tf.reduce_sum(x)

compute(tf.constant([1.0, 2.0]))       # Tracing: shape=(2,)
compute(tf.constant([1.0, 2.0, 3.0])) # Tracing: shape=(3,) — новый граф!
compute(tf.constant(1.0))             # Tracing: shape=() — третий граф!

# Решение: зафиксировать сигнатуру
@tf.function(input_signature=[tf.TensorSpec([None], tf.float32)])
def compute_fixed(x):
    return tf.reduce_sum(x)

# Теперь любой 1D float32 тензор — один граф
compute_fixed(tf.constant([1.0, 2.0]))
compute_fixed(tf.constant([1.0, 2.0, 3.0]))  # без трейсинга

Ограничение 3: Python-скаляры как аргументы вызывают трейсинг для каждого значения

@tf.function
def scale(x, factor):  # factor — Python int
    return x * factor

scale(tf.constant([1.0]), 2)  # трейсинг для factor=2
scale(tf.constant([1.0]), 3)  # трейсинг для factor=3, НОВЫЙ граф!
scale(tf.constant([1.0]), 4)  # ещё один...

# Решение: передавайте Python-константы как tf.Tensor
@tf.function
def scale_tensor(x, factor):  # factor — тензор
    return x * factor

scale_tensor(tf.constant([1.0]), tf.constant(2))
scale_tensor(tf.constant([1.0]), tf.constant(3))  # без трейсинга

Ограничение 4: произвольные Python-объекты не сериализуются в граф

import numpy as np

@tf.function
def bad_fn(x):
    arr = np.array([1, 2, 3])  # NumPy создаётся при трейсинге и "вмораживается"
    return x + tf.constant(arr)  # OK, но arr фиксируется на момент трейсинга

# Изменение arr снаружи НЕ повлияет на граф после первого трейсинга
# Решение: передавайте как аргумент или конвертируйте явно

Ограничение 5: циклы и условия с Python-значениями

@tf.function
def loop_python(x, n):  # n — Python int
    for i in range(n):  # разворачивается в n отдельных операций при трейсинге!
        x = x + 1
    return x

# При n=1000 граф содержит 1000 операций сложения
# Решение: используйте tf.while_loop для динамических итераций
@tf.function
def loop_tf(x, n):  # n — tf.Tensor
    return tf.while_loop(
        cond=lambda i, _: i < n,
        body=lambda i, v: (i + 1, v + 1),
        loop_vars=[tf.constant(0), x],
    )[1]

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

  • Утечка памяти при частом трейсинге: каждый ConcreteFunction хранит граф в памяти. При динамическом создании функций (tf.function внутри цикла) графы накапливаются.
  • Использование tf.Variable, созданной внутри @tf.function, при повторном вызове вызывает ошибку — переменные должны создаваться вне функции.
  • Исключения Python внутри @tf.function превращаются в ошибки TF и теряют Python-трейсбэк — для отладки временно убирайте декоратор.
  • Предупреждение «5 out of the last 5 calls to <fn> triggered tf.function retracing» — сигнал о чрезмерном трейсинге; проверяйте типы и формы аргументов.
  • Вложенные @tf.function трейсятся независимо — outer-функция не «видит» inner-граф напрямую.
  • Генераторы и итераторы Python нельзя передать в граф — используйте tf.data.Dataset.
  • При использовании jit_compile=True (XLA) динамические формы не поддерживаются — все операции должны иметь статические или частично статические размеры.

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

  • Как работает tf.data API и почему он важен для построения эффективных пайплайнов загрузки данных?
  • Что такое tf.function и как он улучшает производительность за счёт компиляции графа?
  • Как бороться с переобучением в моделях TensorFlow (dropout, L2-регуляризация, аугментация данных)?
  • Как работает tf.keras.Model.compile() — что такое loss, optimizer и metrics?

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

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

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

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

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

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

Источники

  • https://www.tensorflow.org/guide/function
←Предыдущий вопросЧто такое TensorFlow Serving и как задеплоить модель в продакшен?

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

TensorFlowdata-aievaluationmodel-training

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

  • Senior Data Scientist
  • Senior Data Scientist
  • Senior AI Engineer (Defence)
  • Senior Systems Software Engineer, GPU Compute
  • Agentic AI Architect-Anthropic-UK