Лет пять назад типичный ML-проект начинался с закупки серверов под будущие модели. Железо выбирали по принципу «возьмём побольше, потом разберёмся», а инженеры data science подстраивали свои эксперименты под то, что удалось выбить у инфраструктурной команды. Сегодня логика развернулась на 180 градусов: требования модели — latency, объём данных, частота переобучения, поведение инференса — диктуют, как должны выглядеть хранилища, сеть, пул GPU, оркестрация и даже политика безопасности. Это и есть AI-native подход — инфраструктура проектируется не абстрактно, а под жизненный цикл данных, обучения, деплоя и непрерывного улучшения моделей.
Для тех, кто каждый день отвечает за прод, это не просто смена модного слова. Меняется сама логика эксплуатации: что мониторить, где искать узкие места, как считать стоимость, как выкатывать новые версии без простоя и почему классический DevOps больше не закрывает все задачи. Дальше разберём, из чего складывается такая инфраструктура и как не превратить её в зоопарк из скриптов и ручных операций.
Что такое AI-native архитектура
Если коротко, это инфраструктура, в которой модель — не просто процесс, запущенный на сервере, а первый класс нагрузки. Под неё проектируют сети, хранилища, пайплайны данных, CI/CD, observability и доступы. Модель перестаёт быть «ещё одним приложением» и начинает определять архитектурные решения, как раньше это делали высоконагруженные веб-сервисы.
Если упростить:
- обычная IT-инфраструктура обслуживает приложения;
- AI-native инфраструктура обслуживает модели, данные и эксперименты;
- MLOps связывает всё это в управляемый цикл.
На практике это означает, что при проектировании нового сервиса вы сначала смотрите на требования инференса — сколько запросов в секунду, какой допустимый p95, сколько памяти нужно под веса модели, — а уже потом подбираете ноды, сетевую связность и схему хранения. Не наоборот.
Чем это отличается от обычного продакшена
В традиционном веб-сервисе главное — стабильность приложения и предсказуемость релизов. Код выкатили, конфигурацию обновили, метрики показывают, что всё работает. В ML-системе появляется целый слой дополнительных переменных, которые напрямую влияют на поведение сервиса:
- качество и свежесть данных;
- дрейф модели;
- стоимость обучения;
- ускорение инференса;
- воспроизводимость экспериментов;
- контроль версий не только кода, но и датасетов и артефактов.
Из-за этих переменных инфраструктура обязана быть гибче и умнее. Например, один и тот же сервис может одновременно обслуживать продакшн на версии модели A, гонять A/B-тест с версией B, а ночью запускать переобучение на свежих данных для версии C. И всё это должно работать без взаимных помех и с чётким пониманием, какая версия в каком окружении живёт.
Почему классический DevOps уже не хватает
DevOps отлично справляется там, где релиз — это код и конфигурация. Запушил, собрал, прогнал тесты, задеплоил. В ML-платформе релиз — это не только код, но и модель, а модель ведёт себя не как обычный бинарник. Бинарник после сборки не меняется, а модель может начать ошибаться через неделю после деплоя, потому что изменились входные данные или поведение пользователей. Поэтому стандартных пайплайнов и мониторинга недостаточно.
Специфика ML-проектов
- Результат зависит не только от кода, но и от данных.
- Поведение модели может ухудшиться без изменений в коде.
- Обучение и инференс требуют разной инфраструктуры.
- Ошибка может быть не в сервисе, а в качестве входных данных.
- Один и тот же пайплайн нужно воспроизводить через недели и месяцы.
Чтобы с этим жить, появляются дополнительные практики:
- versioning для датасетов, фичей и моделей;
- автоматическая валидация данных;
- monitoring качества предсказаний;
- контроль деградации после выката;
- управление GPU/CPU как разными классами ресурсов.
Без этих вещей вы быстро оказываетесь в ситуации, когда «прод» работает на какой-то модели, которую никто не может воспроизвести, а деплой новой версии превращается в русскую рулетку.
Из чего состоит AI-native инфраструктура
Ниже — практический разбор основных слоёв, без которых современная ML-платформа быстро превращается в набор скриптов и ручных операций. Каждый слой требует своего подхода, и часто именно интеграция между ними, а не сами технологии, становится главным вызовом.
| Слой | Зачем нужен | Что обычно ломается |
|---|---|---|
| Данные | Сбор, очистка, подготовка | грязные данные, рассинхрон схем |
| Хранилище | Датасеты, фичи, артефакты | дорогой доступ, узкое место по IOPS |
| Вычисления | Обучение и инференс | нехватка GPU, неэффективное распределение |
| Оркестрация | Запуск пайплайнов и задач | зависшие джобы, плохая ретрай-логика |
| Реестр моделей | Версионирование и публикация | путаница между экспериментом и продом |
| Observability | Метрики, логи, трассировка | позднее обнаружение деградации |
| Безопасность | Доступ к данным и моделям | утечки, отсутствие аудита |
1. Данные как основной актив
В ML инфраструктура строится вокруг данных. Это значит, что думать нужно не только о месте хранения, но и о том, откуда данные пришли, какого они качества, как часто обновляются, согласованы ли схемы, кто имеет к ним доступ по ролям, каковы сроки жизни и как они архивируются.
На практике именно data governance недооценивают чаще всего. Через полгода оказывается, что модель обучалась на датасете, который никто не может воспроизвести: исходники потерялись, схемы поменялись, а версия данных в проде отличается от той, что была в эксперименте. Бизнес при этом не понимает, почему результаты перестали совпадать с тестами. А виноват не ML-инженер, а отсутствие дисциплины в работе с данными.
2. Вычисления: CPU, GPU и не только
Для обучения больших моделей нужны GPU или специализированные ускорители. Но если копнуть глубже, в реальных системах далеко не всё упирается только в ускорение. Важно понимать профиль нагрузки:
- тип нагрузки: обучение, батч-обработка, онлайн-инференс;
- размер модели;
- допустимую задержку ответа;
- стоимость минуты вычисления;
- необходимость масштабирования по запросу.
Одна из типичных ошибок — пытаться все ML-задачи запускать на одинаковом пуле ресурсов. В итоге дешёвые задачи простаивают на дорогих GPU, а тяжёлые очереди растут, потому что ресурсы заняты мелочью. По-хорошему, нужно разделять пулы под обучение, батч-инференс и онлайн-инференс — у них разные требования к latency, пропускной способности и стоимости.
3. Хранилища и сеть
ML-инфраструктура очень чувствительна к скорости доступа к данным. Часто проблема не в модели, а в том, что пайплайн слишком долго читает датасет или не может быстро передать артефакты между этапами. Сетевые задержки и пропускная способность между storage и compute порой важнее, чем количество ядер CPU.
Что важно:
- пропускная способность между storage и compute;
- задержки в сети;
- локальность данных;
- схема кэширования;
- баланс между object storage и быстрыми дисковыми слоями.
Для больших пайплайнов имеет значение даже не столько «сколько CPU», сколько «сколько времени уходит на перемещение данных». Если датасет лежит на холодном S3, а обучение ждёт его по гигабитной сети, то закупка GPU в два раза дороже не спасёт — у вас будет дорогой простой.
MLOps: что это на практике
MLOps — это набор процессов и инструментов, которые делают ML-платформу управляемой. Если DevOps помогает быстро и безопасно выпускать код, то MLOps делает то же самое для моделей, но с поправкой на данные и качество предсказаний. Это не просто набор красивых слов, а конкретные практики версионирования, автоматизации и мониторинга, без которых ML в проде превращается в хаос.
Базовый цикл MLOps
- Сбор данных.
- Подготовка и валидация.
- Обучение модели.
- Проверка метрик и качества.
- Регистрация артефактов.
- Деплой в staging или production.
- Мониторинг качества и дрейфа.
- Переобучение по триггеру или расписанию.
Что обязательно должно быть автоматизировано
- запуск пайплайнов обучения;
- проверка качества входных данных;
- сохранение версий модели и фичей;
- тесты на регрессию качества;
- деплой по согласованному процессу;
- откат к предыдущей версии;
- сбор метрик по продовому поведению.
Если хотя бы один из этих пунктов остаётся на ручном управлении через ноутбук, команда быстро скатывается в режим «деплой по звонку». Это плохо масштабируется и почти всегда ломается в самый неподходящий момент — например, когда нужно срочно откатить модель, а артефакт найти не могут.
Как инфраструктура подстраивается под модель
Самая полезная мысль здесь простая: не существует одной «правильной» ML-инфраструктуры. Она всегда зависит от того, какую модель вы запускаете и какой у неё жизненный цикл. Требования к онлайн-инференсу маленькой модели скоринга и к генеративной модели, которая рендерит картинки по 20 секунд, будут принципиально разными. Рассмотрим три характерных сценария.
Сценарий 1. Небольшая модель с онлайн-инференсом
Подходит для классификации, рекомендаций, скоринга, антифрода. Здесь на первом месте latency и стабильность API.
Что важно:
- минимальная задержка;
- стабильный API;
- горизонтальное масштабирование;
- быстрый rollout новых версий;
- мониторинг латентности и ошибок.
Обычно достаточно контейнеризации, оркестрации, отдельного сервиса инференса и наблюдаемости на уровне запросов. Никаких экзотических решений не нужно — упор на простоту и предсказуемость.
Сценарий 2. Большая модель для генерации текста или изображений
Тут инфраструктура строится вокруг дорогих ресурсов и очередей. Генеративные модели жрут GPU, а очередь запросов может расти быстрее, чем вы успеваете масштабироваться.
Что особенно важно:
- контроль очереди запросов;
- лимиты на токены, размер входа и concurrency;
- GPU-пулы с предсказуемым планированием;
- кэширование повторяющихся запросов;
- защита от резкого роста стоимости.
Для таких систем критичен FinOps-подход: без него нагрузка быстро становится финансово токсичной. Один неосторожный пользователь, который гоняет генерацию картинок без лимитов, может сжечь бюджет на тысячи долларов за час.
Сценарий 3. Платформа для регулярного переобучения
Если модель обновляется часто, инфраструктура должна поддерживать воспроизводимость. Каждый новый цикл должен давать на выходе модель, которую можно сравнить с предыдущей и, если что, откатить.
Нужно:
- хранить версии датасетов;
- фиксировать параметры обучения;
- логировать окружение;
- запускать пайплайны по расписанию или по триггеру;
- сравнивать новые версии с предыдущими.
Здесь особенно полезны feature store, model registry и строгие политики продвижения моделей между средами. Без реестра и версионирования датасетов вы не сможете даже ответить на вопрос «что изменилось?», когда метрики поползли вниз.
Практический стек MLOps-платформы
Ниже — типовой набор компонентов, который встречается в зрелых AI-native системах. Это не догма, но если вы строите платформу с нуля, удобно отталкиваться от этой схемы.
| Компонент | Роль | На что смотреть |
|---|---|---|
| Object storage | Хранение датасетов и артефактов | скорость, стоимость, политика версий |
| Kubernetes | Оркестрация сервисов и джоб | управление GPU, изоляция, масштабирование |
| Workflow engine | Пайплайны ML-задач | retries, расписания, зависимые шаги |
| Model registry | Реестр моделей | версии, статусы, approval flow |
| Feature store | Хранение и подача фичей | согласованность online/offline |
| Monitoring stack | Наблюдаемость | drift, latency, error rate, quality |
| CI/CD | Автоматизация релизов | тесты, rollout, rollback |
Что выбирают чаще всего
В зависимости от масштаба могут использоваться разные комбинации, но логика одна:
- для старта — минимум компонентов и максимум автоматизации;
- для роста — разделение обучения, инференса и аналитики;
- для enterprise — жёсткое разграничение сред, аудит и контроль стоимости.
Начинать с Kubernetes, feature store и кучи интеграций в проекте на трёх человек — значит потратить месяцы на настройку инфраструктуры, которая не окупится. Лучше сначала понять профиль нагрузки, а потом добавлять компоненты по мере необходимости.
Типовые ошибки при построении AI-native платформы
1. Делать инфраструктуру «на вырост», не зная профиля нагрузки
Команда заранее покупает много GPU, но модель ещё не определена. В итоге ресурсы простаивают или используются неэффективно. Это классическая история: заказали ноды с A100 под будущие трансформеры, а пока что на них крутится батч-скоринг, который спокойно отработал бы на CPU.
2. Смешивать эксперименты и прод
Когда исследовательские ноутбуки, тестовые датасеты и production-сервисы живут в одной зоне, возникает хаос:
- трудно откатиться;
- сложно понять, что именно сломалось;
- непонятно, какие данные использовались в релизе.
Рано или поздно кто-то случайно задеплоит экспериментальный артефакт в прод или обучит модель на датасете, который не прошёл валидацию. Разделение контуров — это не бюрократия, а страховка от простых человеческих ошибок.
3. Игнорировать дрейф модели
Даже хорошая модель деградирует, если меняется реальный мир. Если мониторить только uptime, а не качество предсказаний, сбой заметят слишком поздно — когда бизнес уже потерял деньги или пользователей. Дрейф данных и дрейф предсказаний нужно отслеживать так же, как латентность и error rate.
4. Не считать стоимость инференса
Для генеративных моделей это одна из главных проблем. Можно получить красивый сервис, который технически работает, но экономически не масштабируется. Каждый запрос к большой модели стоит денег, и если у вас нет лимитов, квот и кэширования, счёт за облако быстро перекроет всю выручку.
5. Не фиксировать воспроизводимость
Если нельзя повторить обучение через месяц, система не считается зрелой. Это особенно болезненно в регулируемых отраслях и enterprise-среде, где аудит может потребовать объяснить, какая именно версия данных и модели использовалась в конкретном релизе. Отсутствие воспроизводимости превращает ML-платформу в чёрный ящик, за который никто не хочет отвечать.
Как построить устойчивую схему: пошаговый подход
Шаг 1. Определить тип модели и SLA
Ответьте на три вопроса:
- это batch или online?
- важнее latency или точность?
- сколько стоит ошибка и сколько стоит запрос?
От этих ответов зависит почти всё: от выбора сети и типа хранения до политики масштабирования. Если для скоринга онлайн-кредитов latency критична, а стоимость ошибки высока, вы будете строить инфраструктуру с низкой задержкой и строгим контролем качества. А для ночного батч-пересчёта рекомендаций можно использовать дешёвые spot-инстансы и не гнаться за миллисекундами.
Шаг 2. Разделить контуры
Минимум три зоны:
- experimentation;
- staging;
- production.
Это снижает риск случайных выкладок и помогает контролировать изменения. В идеале переход между зонами должен быть автоматизирован, но с явными approval-гейтами.
Шаг 3. Ввести версионирование всего
Версионировать нужно не только код, но и:
- датасеты;
- фичи;
- конфигурации;
- веса модели;
- параметры обучения.
Без этого вы не сможете ответить на вопрос «что изменилось?» при разборе инцидента. Версии должны быть связаны между собой: модель v3 обучена на датасете v2, с фичами v1.2 и конфигом от такого-то коммита.
Шаг 4. Настроить метрики и алерты
Следить нужно не только за сервисом, но и за моделью:
- latency;
- error rate;
- throughput;
- drift данных;
- drift предсказаний;
- качество на контрольной выборке;
- стоимость одного запроса.
Метрики качества в проде — это не роскошь, а необходимость. Если вы не знаете, как модель ведёт себя на реальных данных, вы не можете принимать решения о переобучении или откате.
Шаг 5. Автоматизировать откат
Если новая версия модели ухудшила KPI, должен быть быстрый rollback. Без этого релиз становится экспериментом на проде. Откат должен быть автоматизирован настолько, чтобы дежурный инженер мог вернуть предыдущую версию одной командой, а не искать артефакты вручную.
Чек-лист для аудита ML-инфраструктуры
- Есть ли разделение на dev/stage/prod?
- Можно ли воспроизвести обучение по сохранённым артефактам?
- Версионируются ли датасеты и фичи?
- Есть ли model registry?
- Мониторится ли дрейф данных?
- Измеряется ли качество модели в проде?
- Контролируется ли стоимость инференса?
- Есть ли откат к предыдущей версии?
- Разделены ли вычисления для обучения и продакшена?
- Понимает ли команда, где именно проходит граница ответственности между data, platform и application?
Если хотя бы на половину вопросов ответить «нет», стоит задуматься о том, чтобы навести порядок до того, как случится инцидент.
Когда AI-native подход действительно оправдан
Не каждый проект нуждается в сложной ML-платформе. Если модель одна, обновляется редко и не влияет критически на сервис, избыточная инфраструктура только усложнит жизнь — вы будете платить за поддержку системы, которая не даёт пропорциональной отдачи.
AI-native архитектура оправдана, когда:
- моделей несколько и они часто обновляются;
- данные быстро меняются;
- есть высокие требования к качеству и задержке;
- стоимость ошибки велика;
- нужен непрерывный цикл улучшений;
- нагрузка должна масштабироваться без ручного вмешательства.
Если вы находитесь в начале пути и у вас одна модель в ноутбуке, не стройте Kubernetes-кластер с model registry и feature store. Начните с простого — контейнер, CI/CD, мониторинг. Архитектура должна следовать за реальными потребностями, а не наоборот.
Вывод
AI-native архитектуры меняют саму идею инфраструктуры: теперь она строится не вокруг сервера или приложения, а вокруг модели, данных и непрерывного цикла улучшений. MLOps делает этот цикл управляемым, но работает только тогда, когда под него есть правильная база — разделённые контуры, версионирование, наблюдаемость, контроль стоимости и воспроизводимость.
Главный практический вывод простой: чем раньше команда начнёт проектировать инфраструктуру под модель, а не под абстрактный сервис, тем меньше будет ручной работы, аварий и сюрпризов на проде. Инженерный подход здесь важнее модных терминов: сначала поймите, что именно вы запускаете, а потом решайте, как это обслуживать.
FAQ
Чем AI-native архитектура отличается от обычной облачной архитектуры?
Обычная облачная архитектура строится под приложения, а AI-native — под жизненный цикл данных, обучения и инференса моделей. В облаке вы проектируете сервисы, которые отвечают на запросы, а в AI-native — сервисы, которые учатся, деградируют и требуют переобучения.
MLOps — это то же самое, что DevOps?
Нет. DevOps управляет релизом кода, а MLOps добавляет версионирование данных, моделей, экспериментов и контроль качества предсказаний. DevOps гарантирует, что код собран и задеплоен, а MLOps гарантирует, что модель продолжает работать корректно после деплоя.
Нужен ли Kubernetes для ML-платформы?
Не всегда, но в зрелых системах он часто помогает управлять сервисами, джобами и ресурсами, особенно если есть GPU и несколько сред. Если у вас один сервер с одной моделью, Kubernetes может быть избыточен. Но как только появляются десятки моделей и несколько команд, оркестрация становится почти обязательной.
Почему в ML так важен мониторинг дрейфа?
Потому что модель может начать ошибаться даже без изменения кода, если изменились данные или поведение пользователей. Мониторинг только uptime не покажет, что качество предсказаний упало, а это может стоить бизнесу денег и репутации.
Можно ли обойтись без отдельного model registry?
В маленьком проекте — да, но при росте команды отсутствие реестра почти всегда приводит к путанице версий и проблемам с откатом. Реестр моделей — это не просто база данных, а центральный источник правды о том, какая модель в каком статусе и где задеплоена.