Вопросы на собеседовании: AI ресерч-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior.
Смотреть пример резюме: AI ресерч-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Хороший исследовательский вопрос называет воздействие, измеряемый результат и условия сравнения.
- Здесь воздействие состоит в добавлении заданного количества синтетических данных определённого типа.
- Результатом может быть macro-F1 на фиксированном нетронутом test split, а не расплывчатое улучшение качества.
- В условиях нужно зафиксировать модель, реальные training data, compute-бюджет и протокол оценки, чтобы на вопрос можно было ответить.
Зачем это спрашивают: Интервьюер проверяет, умеете ли вы превращать общую идею в точный и измеримый исследовательский вопрос.
Я бы заранее сформулировал направленное и измеримое предсказание.
- Например, AdamW достигнет validation loss ниже 0,40 за меньшее число шагов, чем SGD, при одинаковых данных и compute-бюджете.
- Оптимизатор выступает изменяемым фактором, а порог и число шагов делают результат наблюдаемым.
- Утверждение можно опровергнуть, потому что AdamW может не достичь порога первым или не достичь его вообще.
Зачем это спрашивают: Сильный ответ отличает опровержимое предсказание от общего ожидания, что один метод сработает лучше.
Нулевая гипотеза утверждает, что новый вариант не оказывает реального влияния на выбранный результат относительно стандартного attention.
- Если результатом служит validation loss, нулевая гипотеза может утверждать, что средняя разница loss по нескольким seed равна нулю.
- Небольшая наблюдаемая разница всё ещё может объясняться случайной вариативностью в рамках этой гипотезы.
- Альтернативная гипотеза задаёт ожидаемый ненулевой или направленный эффект, который должен подтвердить эксперимент.
Зачем это спрашивают: Интервьюер хочет увидеть, умеете ли вы задавать утверждение об отсутствии эффекта, относительно которого оцениваются доказательства.
Утверждение представляет вывод, который авторы предлагают принять, а доказательства состоят из измерений в его поддержку.
- Прирост accuracy на два пункта становится доказательством только после указания split датасета, метрики, baseline и протокола оценки.
- Утверждение может быть узким, например улучшение на одном benchmark, или более широким, например лучшая генерализация между задачами.
- При внимательном чтении нужно проверить, поддерживают ли таблицы, неопределённость и ablation заявленную широту вывода.
Зачем это спрашивают: Это проверяет, умеете ли вы читать статьи критически, а не считать главный результат самодостаточным доказательством.
При воспроизведении обычно повторяют результат с исходным методом и артефактами, а при репликации проверяют утверждение в независимой постановке.
- Для воспроизведения можно запустить авторский код на том же датасете и сравнить заявленную метрику.
- Для репликации можно взять новую реализацию, новую выборку или другой benchmark, проверяющий ту же гипотезу.
- Термины различаются между областями, поэтому в отчёте нужно точно указать, какой код, данные и протокол были переиспользованы.
Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы, что совпадение одного прогона и независимая проверка утверждения дают разные доказательства.
Baseline задаёт реалистичный ориентир, который нужно превзойти, а oracle оценивает верхнюю границу с информацией, недоступной реальному методу.
- Предиктор мажоритарного класса или стандартная опубликованная модель могут служить baseline.
- Oracle может выбирать правильного кандидата по ground-truth labels, поэтому он полезен для анализа, но не является допустимым рабочим методом.
- Если предложение едва обходит baseline и сильно отстаёт от oracle, эти ориентиры показывают и прирост, и оставшийся потенциал.
Зачем это спрашивают: Сильный ответ объясняет разные роли нижнего ориентира и верхней границы, а не называет baseline любое сравнение.
В контролируемом эксперименте меняют исследуемый метод, сохраняя остальные влиятельные условия неизменными.
- Оба прогона должны использовать одинаковые размер модели, data split, training-бюджет и код оценки.
- Контролем может быть принятый training recipe, а в экспериментальном условии меняется только предложенный метод.
- Повторение обоих условий на совпадающем наборе seed помогает отделить эффект метода от случайности обучения.
Зачем это спрашивают: Интервьюер оценивает, умеете ли вы строить честное сравнение, изолирующее одну причину.
Learning rate является независимой переменной, а validation loss является зависимой переменной.
- Исследователь намеренно задаёт для независимой переменной значения вроде 0,001, 0,0003 и 0,0001.
- Validation loss наблюдают после обучения, и он может изменяться в ответ на эти настройки.
- Архитектуру модели, split, batch size и число шагов нужно контролировать, а не превращать в дополнительные независимые переменные.
Зачем это спрашивают: Это проверяет, умеете ли вы определять, что эксперимент меняет, что измеряет и что сохраняет постоянным.
Смешивающий фактор меняется вместе с исследуемым воздействием и тоже может объяснить измеренную разницу.
- Если модель A обучают 10 000 шагов, а модель B 20 000, training-бюджет смешивается с влиянием архитектуры.
- Тогда более высокую accuracy модели B нельзя приписать только её архитектуре.
- Одинаковый бюджет по шагам или compute устраняет это альтернативное объяснение из сравнения.
Зачем это спрашивают: Интервьюер хочет увидеть, замечаете ли вы альтернативные причины кажущегося экспериментального прироста.
Несколько seed показывают, сохраняется ли результат при обычной случайности процесса обучения.
- Seed может влиять на инициализацию параметров, порядок данных, dropout masks и сэмплированные ответы.
- Публикация только лучшего из пяти seed даёт оптимистичное и смещённое представление о методе.
- Среднее и разброс на одном наборе seed для обоих методов делают сравнение убедительнее.
Зачем это спрашивают: Сильный ответ рассматривает seed как источник вариативности для измерения, а не как волшебную гарантию воспроизводимости.
Разброс показывает, что измеренная accuracy частично зависит от стохастики обучения, а не только от recipe.
- Среднее равно 80%, но отдельные прогоны отличаются от него на величину до двух процентных пунктов.
- Одного результата 81% для нового метода недостаточно на фоне такой межпрогонной вариативности.
- Большее число повторных прогонов точнее оценивает типичный результат и его неопределённость.
Зачем это спрашивают: Интервьюер проверяет, учитываете ли вы вариативность до объявления небольшой разницы в метрике прогрессом.
95-процентный доверительный интервал описывает точность оценки при допущениях использованного метода расчёта.
- Узкий интервал означает, что повторные измерения точнее оценивают среднее, чем при широком интервале.
- Сильно пересекающиеся интервалы могут предупреждать о неопределённости видимой разницы средних, хотя само пересечение не является формальным тестом.
- В частотной интерпретации 95% относится к долгосрочному покрытию процедуры, а не к 95-процентной вероятности нахождения среднего в этом фиксированном интервале.
Зачем это спрашивают: Это проверяет, умеете ли вы обсуждать неопределённость, не превращая доверительный интервал в гарантию.
Размер эффекта показывает величину разницы, а статистическая значимость показывает совместимость данных с нулевой моделью.
- При достаточно большой выборке прирост accuracy на 0,05 пункта может быть статистически значимым, но не иметь научной ценности.
- Абсолютная разница метрики или стандартизированная мера вроде Cohen's d делает величину эффекта явной.
- Полезность результата оценивают вместе по величине, неопределённости и цене или значимости полученного прироста.
Зачем это спрашивают: Интервьюер проверяет, отличаете ли вы обнаруживаемое свидетельство от достаточно крупного и полезного результата.
При множестве сравнений растёт вероятность случайно найти результат, который выглядит значимым.
- При пороге 0,05 каждое сравнение с верной нулевой гипотезой имеет 5-процентный риск ложноположительного результата в рамках своих допущений.
- Выбор наименьшего p-value после просмотра всех 20 результатов скрывает масштаб проведённого поиска.
- Предварительная фиксация главного сравнения или поправка вроде Bonferroni делает доказательства честнее.
Зачем это спрашивают: Сильный ответ распознаёт базовую проблему множественных сравнений и называет простой способ её контроля.
Loss mask упакованного causal-LM batch должна учитывать реальные next-token targets и исключать padding и искусственные переходы между независимыми документами.
- После causal shift валидные целевые токены участвуют в loss, а игнорируемые позиции labels получают значение вроде -100.
- Если документ B идёт сразу после A, можно оставить целевой EOS, но первый токен B нужно замаскировать, если переход A-to-B не входит в objective.
- Loss mask не запрещает B обращать attention к A, поэтому независимым документам также нужна segment-aware или block-diagonal causal attention mask.
Зачем это спрашивают: Интервьюер проверяет, отличаете ли вы маскирование targets на границах упакованных документов от causal attention mask.
Нормализация по sequences даёт одинаковый вес каждой последовательности, а нормализация по nonpadding tokens даёт одинаковый вес каждому валидному target token.
- При token normalization последовательность с 400 targets вносит до усреднения в четыре раза больший вклад, чем последовательность со 100 targets.
- При sequence normalization сначала считается средний loss по валидным токенам каждой последовательности, поэтому короткие и длинные примеры одинаково влияют на batch.
- Padding и ignored labels не должны входить ни в числитель, ни в знаменатель, а выбранное правило должно совпадать во всех сравниваемых runs.
Зачем это спрашивают: Сильный ответ объясняет, как знаменатель нормализации меняет веса примеров и результат эксперимента.
KL divergence измеряет дополнительную стоимость в log-probability при представлении выборок из одного распределения другим.
- KL(P || Q) взвешивает log отношения P к Q вероятностями из P.
- Она равна нулю при совпадении распределений, но асимметрична, поэтому KL(P || Q) обычно не равна KL(Q || P).
- В distillation с её помощью можно учить распределение student совпадать с вероятностями teacher, а не только с жёсткими labels.
Зачем это спрашивают: Интервьюер оценивает понимание KL как направленного сравнения распределений и умение назвать исследовательское применение.
Logits являются неограниченными исходными оценками, а softmax преобразует их в неотрицательные вероятности с суммой один.
- Logits 2, 1 и 0 задают предпочтение классов, но сами не являются вероятностями.
- Softmax экспоненцирует относительные оценки и нормализует их, поэтому добавление одной константы ко всем logits не меняет вероятности.
- Реализации cross-entropy обычно принимают logits напрямую, потому что объединённое вычисление численно устойчивее.
Зачем это спрашивают: Сильный ответ связывает исходные выходы модели, нормализацию и устойчивый интерфейс loss в исследовательском коде.
Grad=None означает, что autograd не нашёл дифференцируемого пути от total loss к этому параметру.
- Я проверю, что в backward передаётся total_loss = main_loss + aux_weight * aux_loss, потому что одно логирование aux_loss не подключает его к graph.
- Я проверю parameter.requires_grad, detach, item, переход в NumPy, no_grad и условия, пропускающие auxiliary head, а затем проверю, что aux_loss.requires_grad имеет значение true.
- torch.autograd.grad с allow_unused=True на маленьком batch поможет найти неиспользуемые параметры; наличие параметра в optimizer влияет на update, но не на вычисление gradient.
Зачем это спрашивают: Интервьюер проверяет, отличаете ли вы разорванный computation graph от просто малого или нулевого gradient.
PyTree градиентов должно иметь те же paths и совместимые leaves, что и PyTree параметров, а зависящая от параметров часть optimizer state должна отслеживать те же leaves.
- Dict keys, вложенность tuple или list и leaves определяют treedef, поэтому добавление или переименование параметра меняет структуру, ожидаемую при updates.
- Внешняя структура optimizer state может отличаться, но subtrees для momentum или variance должны совпадать с paths и shapes отслеживаемых параметров.
- После изменения архитектуры я сравню tree structures и списки path-shape, затем заново создам optimizer state и masks из точного PyTree параметров.
Зачем это спрашивают: Сильный ответ понимает структурное соответствие и не утверждает ошибочно, что вся внешняя структура optimizer state совпадает с PyTree параметров.
Закрытые вопросы
- 21
Почему jitted training step в JAX может перекомпилироваться при изменении shapes batch и как это предотвратить?
batchjax - 22
Что такое weight decay и зачем его используют с AdamW?
adamw - 23
Что делает gradient clipping, когда на шаге обучения возникает очень большой градиент?
grad-clip - 24
Как изменение batch size может повлиять на эксперимент с нейросетью?
experimentsbatch - 25
Что такое tokenizer fertility и как сравнить её между языками?
tokenstokenizer - 26
Как embedding layer представляет token IDs?
nlptokens - 27
Почему каждое скалярное произведение query-key делят на sqrt(d_k) перед attention softmax?
queries - 28
Зачем decoder-only Transformer использует causal attention mask?
nlpcausal-masktransformer - 29
Что добавляет multi-head attention по сравнению с одним вычислением attention?
- 30
Зачем вокруг подслоёв Transformer используют residual connections?
nlptransformer - 31
Что нормализует LayerNorm внутри Transformer?
nlptransformernormalization - 32
Какова роль подслоя MLP в блоке Transformer?
nlptransformer - 33
Как RoPE делает attention score пары query-key зависимым от относительной позиции?
queriesrope - 34
Почему инициализация параметров важна при обучении нейросети?
neural-nets - 35
Что нужно зафиксировать в benchmark protocol до начала model selection?
typing - 36
Как команда может переобучиться на public leaderboard, если benchmark examples не попадают в training или gradients?
- 37
Почему важно дедуплицировать датасет до разбиения или обучения?
dedupqueries - 38
Что такое контаминация бенчмарка в исследованиях языковых моделей?
contamination - 39
Как обнаружить bias к порядку вариантов ответа в multiple-choice benchmark языковой модели?
- 40
Зачем до эксперимента регистрировать одну primary metric и guardrail metrics?
experimentsmonitoringguardrails - 41
Что измеряет perplexity языковой модели и какое важное ограничение есть у её сравнения?
perplexity - 42
Что означает pass@k на benchmark для генерации кода?
- 43
Что меняется при переключении PyTorch-модели между train mode и eval mode?
pytorch - 44
Чем PyTorch autograd и detach различаются в обработке тензора?
pytorchautograd - 45
Чем no_grad отличается от inference_mode в PyTorch?
pytorchinference - 46
Какие задачи выполняет PyTorch DataLoader в небольшом training-эксперименте?
pytorchdataloaderexperiments - 47
Что должен содержать исследовательский checkpoint помимо model state_dict?
checkpoint - 48
Что такое mixed-precision training на концептуальном уровне?
training-efficiencymixed-precision - 49
Зачем при evaluation сохранять per-item predictions и вклады в метрику, а не только aggregate score?
aggregationmonitoring - 50
Что делают zero_grad, forward pass, backward и optimizer.step в небольшом training loop на PyTorch?
pytorchoptimization - 51
В статье указана accuracy 76%, а ваше воспроизведение достигает только 71%. Как вы будете искать причину разрыва?
- 52
Авторы выпустили код, но не записали точный commit и версии зависимостей. Что вы сделаете?
dependencies - 53
Архитектура модели совпадает со статьёй, но воспроизведённый score ниже, и вы подозреваете preprocessing. Как это проверить?
architecture - 54
Выпущенный checkpoint загружается, но его outputs отличаются от статьи, и вы подозреваете tokenizer или vocabulary. Что вы проверите?
checkpointtokenstokenizer - 55
Вы преобразовали checkpoint в другой формат, и новая модель перестала совпадать с исходной. Как вы будете искать ошибку?
checkpoint - 56
Ваш eval-score отличается от статьи из-за возможной разницы в prompt, shot count или decoding. Как вы это выясните?
- 57
Один seed совпадает со статьёй, но ещё четыре seed дают большой разброс. Как вы представите воспроизведение?
- 58
Новый метод выглядит сильным только потому, что в статье его сравнивают со слабым baseline. Какой baseline вы запустите?
- 59
Результат объединяет изменения A, B и C. Какую ablation matrix вы запустите и когда пяти arms недостаточно?
- 60
Предложенное изменение attention повышает accuracy, но вы подозреваете скрытый confound. Как его найти?
- 61
Как организовать в W&B четыре метода с тремя seeds каждый, включая их artifacts?
artifacts - 62
Hydra override указан в команде, но training-run использует default value. Как вы найдёте причину?
- 63
Как доказать, что вы использовали ту же версию датасета, что и другое воспроизведение?
- 64
Validation-score выглядит слишком высоким, и вы подозреваете утечку между train и development. Что вы проверите?
leakagevalidation - 65
Как провести базовую проверку contamination до оценки языковой модели на публичном benchmark?
- 66
Какие настройки sampling должны совпасть при воспроизведении pass@k?
samplingconfig - 67
У вас только 80 eval-примеров. Как оценить неопределённость с помощью bootstrap?
samplingbootstrapestimation - 68
Один checkpoint получает 72,4 при eval batch size 1 и 71,8 при batch size 16. Как это отладить?
checkpointbatch - 69
Как применить проверку переобучения на 32 примерах для валидации нового training loop?
overfittingvalidation - 70
Main loss остаётся конечным, но auxiliary loss равен NaN. Как изолировать причину?
- 71
Gradient norms быстро растут несколько шагов, после чего обучение расходится. Что вы сделаете?
- 72
FP16-run почти не обучается из-за underflow многих gradients. Как вы примените GradScaler для проверки?
precisiongradscaler - 73
Learning-rate schedule выглядит сдвинутым на тысячи steps. Как проверить подсчёт шагов?
- 74
Run использует microbatch 4 на 8 GPU и 16 шагов accumulation. Как token counters для разной длины уточняют effective batch?
tokensbatch - 75
Небольшой эксперимент получает out-of-memory на одной GPU. Что вы измените сначала?
memoryhardwareexperiments - 76
GPU ждёт данные большую часть training steps. Как вы исследуете DataLoader?
hardwaredataloader - 77
GPU utilization низок, хотя training-job не упирается в память. Что вы проверите?
memoryhardware - 78
Как запустить 24 Hydra configs через Slurm job array, сохранив каждый resolved config, seed и output неизменными?
configslurmimmutability - 79
Какие состояния генераторов случайных чисел нужно восстановить для точного resume обучения?
generators - 80
Slurm-job остаётся pending и не запускается. Как выяснить причину?
slurm - 81
Ваш Slurm training-job может прерваться из-за preemption. Как настроить checkpoint и requeue?
checkpointslurm - 82
Базовый DDP-job падает при инициализации NCCL из-за разных настроек ranks. Что вы проверите?
conflictncclddp - 83
Один DDP-rank завис на collective, пока остальные ждут. Как найти базовую причину?
ddp - 84
Вы включили FSDP, но ожидали большего снижения памяти. Какое базовое поведение sharding вы проверите?
shardingmemoryfsdp - 85
Как измерить компромисс activation checkpointing между памятью и step time?
memoryact-checkpointactivation - 86
Как захватить и прочитать базовый trace PyTorch profiler для медленного training step?
pytorch - 87
Как проверить parity новой операции между PyTorch и JAX на маленьком tensor?
pytorchjax - 88
Hugging Face model даёт другие outputs, чем reference script с тем же checkpoint. Что вы проверите?
checkpoint - 89
Как написать unit-test для custom eval-метрики до её использования в воспроизведении статьи?
hypothesis-testingmonitoring - 90
Как добавить простой task adapter в lm-evaluation-harness?
- 91
Eval-датасет содержит malformed records. Как обработать их до scoring?
- 92
Candidate model улучшает eval на 0,2 пункта. Как решить, реален ли lift?
- 93
Как оценить GPU-hours до запуска небольшого sweep гиперпараметров?
hyperparametersestimationhardware - 94
Что вы включите в reproducibility README для реализации статьи?
- 95
Как вести experiment notebook и decision log, не делая notebook единственным источником истины?
experiments - 96
Как построить plot по seeds, чтобы не путать разброс с неопределённостью среднего effect?
spread - 97
Аккуратный эксперимент не нашёл улучшения от предложенного метода. Как вы представите negative result?
experiments - 98
Что делает небольшой open-source PR по research engineering сильным?
code-review - 99
Статья делает сильное утверждение, которое, похоже, не подтверждается таблицей. Как вы его оспорите?
- 100
Как передать воспроизведение так, чтобы другой исследователь точно продолжил работу?