Как думать про distributed векторный поиск
Команда говорит, что переходит от single-node векторный поиск к distributed vector retrieval system. Какие вопросы и trade-off стоит обсудить?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Нужно обсудить объем индекса, latency SLA, recall, sharding, replication, routing, обновления индекса, hardware profile и компромисс между точностью ANN и скоростью.
Подробный разбор
Переход к distributed vector search обычно нужен, когда single-node индекс перестает помещаться по памяти, не выдерживает QPS или не дает нужный latency. Начать стоит с требований: размер корпуса, размер embedding, QPS, p95/p99 latency, freshness, recall target и стоимость.
Архитектурно нужно решить sharding и replication. Sharding уменьшает нагрузку на узел, но усложняет global top-k merge. Replication помогает читать быстрее и повышает reliability, но дороже по памяти. Routing может быть простым fan-out по шардам или более умным через partitioning/cluster assignment.
Отдельный блок — ANN index: HNSW, IVF/PQ, ScaNN/FAISS-подходы, quantization, CPU/GPU, batch search. Для production важны online updates, rebuild strategy, consistency, monitoring recall/latency и деградация при росте каталога.
Типичные ошибки
- Сразу выбирать конкретную библиотеку без требований.
- Не обсудить global top-k после sharding.
- Забыть про обновления индекса и monitoring recall.
Как сказать на собеседовании
- Начни с требований: corpus size, QPS, latency, recall, freshness.
- Потом разложи sharding, replication, ANN index и merge top-k.
Что такое KV cache в LLM inference
На собеседовании спрашивают про KV cache в LLM inference. Что это такое, зачем он нужен и какие trade-off появляются в production?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
KV cache хранит key/value тензоры уже обработанных токенов, чтобы при autoregressive generation не пересчитывать attention по всему прошлому контексту на каждом шаге.
Подробный разбор
В decoder-only LLM каждый новый токен зависит от всех предыдущих токенов. Без кеша модель на каждом шаге заново считала бы key/value представления для всего префикса. KV cache сохраняет эти представления после первого прохода и на следующих шагах добавляет только новый токен.
Это сильно снижает вычисления и latency при генерации, но переносит часть нагрузки в память. Поэтому в production появляются trade-off: размер контекста, batch size, concurrent users, GPU memory, eviction, prefix caching, paged attention и качество планировщика запросов.
Serving обычно разделяют на prefill и decode. На prefill модель обрабатывает prompt и строит cache, на decode генерирует токены по одному, используя уже сохраненные key/value.
Типичные ошибки
- Говорить только "это кеш токенов", не объясняя key/value в attention.
- Не разделять prefill и decode.
- Забыть, что KV cache экономит compute, но расходует memory.
Как сказать на собеседовании
- Нарисуй мысленно две фазы: prompt prefill и token-by-token decode.
- Сразу назови главный trade-off: быстрее генерация, но больше память на пользователя и контекст.
Сколько draft tokens брать в speculative decoding
Как выбирать число draft tokens в speculative decoding и почему больше не всегда лучше?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Число draft tokens выбирается по acceptance rate, latency target и стоимости draft/target моделей. Слишком длинный draft часто дает больше rejected tokens и лишний compute.
Подробный разбор
Speculative decoding ускоряет decode, если draft model быстро предлагает несколько токенов, а target model принимает значительную часть. Количество draft tokens - trade-off: длиннее блок дает больше потенциальной экономии, но acceptance probability обычно падает с глубиной последовательности.
Практически измеряют tokens/sec, acceptance rate by position, p50/p95 latency и качество. Оптимум зависит от близости draft и target distributions, prompt type, batch size и стоимости проверки target model. Поэтому параметр выбирают экспериментально, а не фиксируют универсально.
Почему acceptance ratio может быть высоким
За счет чего speculative decoding сохраняет высокий acceptance ratio при нескольких draft tokens?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Acceptance высокий, когда draft model хорошо аппроксимирует target distribution на данном домене и ранних позициях блока, особенно для предсказуемого текста.
Подробный разбор
Target model принимает draft tokens, если они совместимы с ее распределением. Acceptance ratio растет, когда draft model обучена на похожем домене, имеет близкую tokenizer/model family, получает тот же context и генерирует короткие предсказуемые continuation.
Даже при хорошем среднем acceptance нужно смотреть распределение по позициям: первый draft token может приниматься часто, а дальние токены хуже. Поэтому throughput оценивается вместе с wasted draft compute, target verification cost и качеством ответа.
Как работает speculative decoding и acceptance ratio
Интервьюер спрашивает: как можно держать высокий acceptance ratio при большом числе draft tokens в speculative decoding?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Speculative decoding ускоряет generation: маленькая draft model предлагает несколько токенов вперед, большая target model проверяет их пачкой. Acceptance ratio показывает, какая доля draft tokens была принята.
Подробный разбор
Базовая схема такая: быстрая draft model генерирует несколько кандидатов вперед, затем основная target model одним проходом проверяет эти токены. Если распределения моделей близки, значительная часть токенов принимается, и мы экономим время на последовательном decode.
Высокий acceptance ratio при большом числе draft tokens возможен, если draft model хорошо согласована с target model: похожая архитектура/токенизация, дообучение на похожем домене, корректная температура, близкое распределение ответов и отсутствие резкого domain shift. Чем дальше draft model от target model, тем чаще будут отклонения.
Trade-off: больше draft tokens потенциально дают больше speedup, но при низком acceptance ratio можно потратить лишний compute и ухудшить latency. Поэтому в production обычно подбирают draft length по задаче, длине ответа, latency SLA и observed acceptance ratio.
Типичные ошибки
- Думать, что draft model просто заменяет основную модель.
- Не объяснить, кто генерирует, а кто валидирует.
- Не связать acceptance ratio с похожестью draft и target распределений.
Как сказать на собеседовании
- Отвечай через пару draft model и target model.
- После механики сразу назови метрики: latency, throughput, acceptance ratio, quality guardrails.
Варианты speculative decoding
Какие варианты speculative decoding встречаются в LLM serving и чем они отличаются на уровне реализации?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Draft может быть отдельной малой моделью, early-exit/head внутри target model или feature-based predictor. Различаются память, integration cost и acceptance behavior.
Подробный разбор
Классический вариант использует отдельную draft model, которая генерирует candidates, а target model параллельно проверяет блок. Другие варианты используют early-exit heads, n-gram/cache predictors или специализированные методы вроде EAGLE, где draft строится не просто малой языковой моделью.
Сравниваются три вещи: стоимость draft, стоимость target verification и acceptance. Отдельная draft model проще концептуально, но требует дополнительной памяти и синхронизации. Внутренние варианты могут быть эффективнее, но сильнее завязаны на архитектуру и runtime.
Что знать про FlashAttention на LLM-интервью
На LLM serving собеседовании спрашивают: знаешь ли ты что-то про FlashAttention? Как объяснить идею без ухода в низкоуровневые детали?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
FlashAttention ускоряет attention за счет более эффективной работы с GPU memory: не материализует всю attention matrix в памяти и считает блоками с учетом SRAM/HBM.
Подробный разбор
Обычный attention дорог не только по FLOPs, но и по обращениям к памяти. На длинных последовательностях большая attention matrix создает сильную нагрузку на memory bandwidth.
FlashAttention перестраивает вычисление attention так, чтобы читать и писать меньше промежуточных данных в медленную GPU memory. Он считает attention блоками, использует tiling и online softmax, поэтому не нужно полностью материализовать матрицу attention.
В интервью достаточно объяснить эффект: быстрее и memory-efficient attention, особенно на длинных контекстах. В production это влияет на latency, throughput и максимальную длину контекста, но его надо рассматривать вместе с KV cache, batching и остальными оптимизациями serving stack.
Типичные ошибки
- Сказать только "это быстрее attention" без причины.
- Путать FlashAttention с quantization или speculative decoding.
- Не упомянуть memory bandwidth и отсутствие полной materialization attention matrix.
Как сказать на собеседовании
- Объясняй через память: меньше чтений/записей, блоковые вычисления, online softmax.
- Свяжи с production-эффектом: длинный context, latency, throughput.
W8A8, W4A16 и схемы quantization
Чем отличаются схемы quantization для LLM inference и какие trade-off нужно назвать?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Quantization уменьшает память и bandwidth. W8A8 квантует веса и активации в 8 бит, W4A16 оставляет активации шире, но сильнее сжимает веса.
Подробный разбор
В LLM inference quantization обычно нужна для уменьшения memory footprint, bandwidth и иногда latency. W8A8 означает 8-bit weights и 8-bit activations; это может ускорять матричные операции при hardware support, но требует аккуратной calibration. W4A16 сильнее сжимает веса, а активации оставляет в более точном формате.
Trade-off: perplexity/quality loss, outlier channels, calibration dataset, kernel support, dequant overhead, KV cache формат и совместимость с batching. Для интервью важно говорить измерениями: качество на eval, memory per token/model, throughput и p95 latency.