---
title: MLOps и эксплуатация моделей
questionDates:
  q-transfer-0017: '2026-10-01'
  q-transfer-0018: '2026-10-01'
  q-transfer-0019: '2026-10-01'
  q-transfer-0020: '2026-10-01'
  q-transfer-0021: '2026-10-01'
  q-transfer-0022: '2026-10-01'
  q-transfer-0023: '2026-10-01'
seo:
  description: >-
    Тема «MLOps и эксплуатация моделей» для собеседования Data Scientist. Чем
    post-training quantization отличается от quantization-aware training? Почему
    зануление весов не всегда ускоряет инференс модели?
  title: MLOps и эксплуатация моделей — Data Scientist
---

[Все темы Data Scientist](/prep/data-scientist)

Подтемы:

- [MLOps и эксплуатация моделей](#q-transfer-0017)
- [Контейнеризация](#q-14bee738d69b81aabd4ed61ddc4d038c)
- [Линтер](#q-14bee738d69b81c5bb64e8c78c5b6658)

## Чем post-training quantization отличается от quantization-aware training? [#q-transfer-0017]

Post-training quantization переводит уже обученную модель в меньшую разрядность. Для весов это может не требовать данных, а для активаций обычно нужен репрезентативный calibration set. Метод дешевый, но чувствительные модели теряют качество. Quantization-aware training имитирует округление во время обучения или fine-tuning, поэтому веса адаптируются к будущей арифметике. QAT обычно лучше сохраняет качество, но дороже. Сравнивают итоговую метрику, размер, реальную latency и поддержку нужных операций на целевом железе.

:::note[Ссылки для изучения]

1. [PTQ и QAT: калибровка без обучения весов против дообучения — раздел о квантизации LLM](https://habr.com/ru/companies/yandex/articles/801119/)
   :::

---

## Почему зануление весов не всегда ускоряет инференс модели? [#q-transfer-0018]

Неструктурное pruning создает отдельные нули в матрицах, но обычные GPU и BLAS-ядра все равно выполняют плотные умножения и читают плотные тензоры. Без подходящего sparse-формата, достаточной разреженности и специальных kernels latency может не уменьшиться, а служебные индексы добавят расходы. Структурное pruning удаляет целые каналы, головы или блоки и чаще ускоряет стандартные kernels. Выигрыш подтверждают на целевом устройстве по throughput и p95 latency, а не по доле нулей.

:::note[Ссылки для изучения]

1. [Pruning весов и целых нейронов: когда нужны sparse-вычисления и поддержка оборудования](https://habr.com/ru/companies/doubletapp/articles/722798/)
   :::

---

## Как knowledge distillation переносит знания teacher-модели в student? [#q-transfer-0019]

Teacher генерирует распределение вероятностей по классам вместо одной жесткой метки. После деления logits на temperature оно показывает сходство альтернатив, например что кошка ближе к собаке, чем к автомобилю. Student обучают на смеси обычной loss по истинным меткам и distillation loss по soft targets teacher. Temperature и веса слагаемых настраивают на validation. Дистилляция может уменьшить модель и ускорить инференс, но качество, calibration и latency нужно измерить отдельно.

:::note[Ссылки для изучения]

1. [Knowledge distillation: ученик, учитель и смягчение распределения через temperature](https://habr.com/ru/companies/doubletapp/articles/722798/)
   :::

---

## Что мониторить у ML-модели до появления свежих меток? [#q-transfer-0020]

До появления меток нельзя честно пересчитать целевую метрику, поэтому мониторят входы и систему: схему, пропуски, диапазоны, долю новых категорий, drift признаков, распределение score и решений. Отдельно смотрят latency, ошибки, объем трафика и сбои feature pipeline. Proxy-сигналы полезны лишь после проверки связи с целью. Когда метки дозревают, считают качество и calibration по когортам времени и сегментам, сопоставляя прогноз с версией модели и признаков.

:::note[Ссылки для изучения]

1. [Мониторинг признаков и предсказаний при задержке меток: drift, PSI и DQ-проверки в Feature Store](https://habr.com/ru/companies/ru_mts/articles/677516/)
2. [Мониторинг входов и предсказаний без свежих меток. Павел Кикин, с 12:44](https://www.youtube.com/watch?v=fQiQblnADrg&t=764s)

:::

---

## Чем data parallelism отличается от model parallelism? [#q-transfer-0021]

При data parallelism на устройствах лежат копии модели, а батч делится между ними. Каждое устройство считает градиенты, затем они синхронизируются, обычно через all-reduce. При model parallelism сама модель разделена между устройствами, потому что не помещается целиком или вычисления выгодно разнести. Тогда коммуникация идет и внутри forward/backward. На практике сочетают data, tensor и pipeline parallelism, а optimizer state шардируют отдельно. Узкое место выбирают по памяти, вычислениям и сети.

:::note[Ссылки для изучения]

1. [Data Parallel и Model Parallel: копии модели, разделение данных и синхронизация Allreduce](https://habr.com/ru/companies/yandex/articles/525020/)
   :::

---

## Какие слои данных краулера нужны для воспроизводимого ML-датасета? [#q-transfer-0022]

Нужен неизменяемый raw-слой с ответом сервера, URL, временем запроса, статусом и заголовками. Parsed-слой хранит извлеченные поля, canonical URL, версию парсера и ссылку на raw. Следующий слой очищает дубли и фиксирует правила выбора версии страницы. Для каждого запуска нужны `batch_id`, конфигурация, время и статистика ошибок. ML-выборку строят с cutoff по времени, чтобы признаки не знали будущего. Такая схема позволяет перепарсить сырье и отличить изменение сайта от изменения модели.

:::note[Ссылки для изучения]

1. [Сырой слой для повторной обработки и очищенный слой для ML: принцип Medallion в Azure Databricks](https://learn.microsoft.com/ru-ru/azure/databricks/lakehouse/medallion)
   :::

---

## Чем репликация данных отличается от шардирования? [#q-transfer-0023]

Репликация хранит копии одних данных на нескольких узлах. Она повышает доступность и пропускную способность чтения, но требует согласования копий и не увеличивает объем уникальных данных. Шардирование делит строки или ключевое пространство между узлами, увеличивая емкость и параллелизм. Оно требует удачного shard key, маршрутизации запросов и rebalance. Системы часто совмещают подходы: каждый шард имеет реплики. Тогда отдельно решают consistency, failover и восстановление.

:::note[Ссылки для изучения]

1. [Шарды делят данные, реплики хранят копии: распределение и маршрутизация на примере ClickHouse](https://yandex.cloud/ru/docs/managed-clickhouse/concepts/sharding)
   :::

---

## <strong>Вы знакомы с инструментами контейнеризации?</strong> [#q-14bee738d69b81aabd4ed61ddc4d038c]

Да, контейнеризация - это технология, позволяющая упаковывать приложения и их зависимости в изолированные контейнеры, которые могут быть запущены и работать на любой платформе без изменений. Основные инструменты контейнеризации включают <code>Docker</code>, <code>Kubernetes</code> и <code>Podman</code>. <code>Docker</code> - это платформа для разработки, доставки и запуска приложений в контейнерах, <code>Kubernetes</code> - это система для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями, а <code>Podman</code> - альтернатива Docker, которая предоставляет совместимый с API интерфейс командной строки для управления контейнерами без необходимости использования демона. Контейнеризация обеспечивает легкость и надежность развертывания приложений, а также упрощает управление зависимостями и конфигурацией.

:::note[Ссылки для изучения]

1. [Контейнеры и их оркестрация: назначение Kubernetes — документация](https://kubernetes.io/ru/docs/concepts/overview/what-is-kubernetes/)
   :::

---

## <strong>С точки зрения практики MLOps - какой ваш любимый линтер?</strong> [#q-14bee738d69b81c5bb64e8c78c5b6658]

Назовите линтер, которым действительно пользуетесь, и объясните выбор на примере проверок и интеграции в редактор или CI. Если опыта мало, честно укажите, какие проверки уже настроили и что хотите добавить.

:::note[Ссылки для изучения]

1. [Выбор и внедрение Ruff: правила Python, pre-commit и CI — опыт Selectel](https://habr.com/ru/companies/selectel/articles/928272/)
   :::
