Случайные процессы
Цепи Маркова с непрерывным временем
AWS Lambda cold start: контейнер запускается, обрабатывает запрос, умирает. Среднее время жизни - пуассоновский процесс. Очередь запросов - процесс рождения-гибели M/M/c. Инженеры AWS решают $\pi Q = 0$ для M/M/c - находят стационарное распределение длины очереди - и получают optimal provisioned concurrency. Колмогоров 1931 -> AWS 2024. Та же математика работает в Folding@home (молекулярные симуляции белков) и в эпидемиологических моделях COVID.
- **ML infrastructure:** M/M/c очереди для autoscaling GPU clusters - Microsoft AzureML, Google Vertex AI; Gillespie algorithm для биохимических симуляций в AlphaFold protein dynamics
- **Reinforcement learning:** Markov Decision Process в continuous time - CTMC с управлением; уравнение Гамильтона-Якоби-Беллмана - непрерывный аналог уравнений Колмогорова; policy gradient в continuous-time RL
- **Reliability engineering:** модели отказов и восстановлений компонентов как CTMC; формулы Erlang-B/C в call-routing алгоритмах и SRE p99-latency optimization
Предварительные знания
CTMC и Q-матрица
AWS Lambda cold start. Контейнер просыпается, обрабатывает запрос, умирает. Среднее время жизни - пуассоновский процесс. Очередь входящих запросов - процесс рождения-гибели M/M/c. Инженеры AWS решают одно уравнение - $\pi Q = 0$ - чтобы найти optimal provisioned concurrency и срезать p99 latency. Та же математика работает в Folding@home при симуляции фолдинга белков и в эпидемиологических моделях COVID. Это непрерывное время - CTMC.
В DTMC переходы происходят на шагах 0, 1, 2, ... В **CTMC** (Continuous-Time Markov Chain) система переходит в любой момент непрерывного времени $t \geq 0$. Вместо матрицы вероятностей $P$ - **Q-матрица** (инфинитезимальный генератор), описывающая интенсивности (скорости) переходов. Физический смысл прост: $q_{ij} \cdot dt$ - это вероятность перейти из $i$ в $j$ за малый промежуток $dt$.
**Q-матрица:** $q_{ij} \geq 0$ для $i \neq j$ - интенсивность перехода из $i$ в $j$. Диагональ: $q_{ii} = -\sum_{j \neq i} q_{ij}$, строки суммируются в 0. Среднее время пребывания в состоянии $i$ - это $1/|q_{ii}|$.
Gillespie algorithm (1977) - точное стохастическое моделирование биохимических реакций - это в точности CTMC-симулятор. Alphafold использует его для protein dynamics: каждая конформация белка - состояние, скорости перехода - Q-матрица. Три десятилетия спустя та же математика лежит в основе computational biology и drug discovery.
Почему диагональные элементы Q-матрицы отрицательны?
Процессы рождения-гибели
**Процесс рождения-гибели** - CTMC, где переходы возможны только между соседними состояниями: $n \to n+1$ (рождение, интенсивность $\lambda_n$) и $n \to n-1$ (гибель, интенсивность $\mu_n$). Скромная конструкция - но именно на ней стоит вся queueing theory в ML infrastructure. Microsoft AzureML и Google Vertex AI используют M/M/c очереди для autoscaling GPU clusters: сколько GPU держать горячими, чтобы не было очередей на обучение.
Классика - **очередь M/M/1**: заявки приходят пуассоновским потоком с интенсивностью $\lambda$, обслуживаются с интенсивностью $\mu$. Состояние $n$ = число заявок в системе. Загрузка $\rho = \lambda/\mu < 1$ - условие существования устойчивого режима. При $\rho \to 1$ очередь растёт как $L = \rho/(1-\rho)$ - нелинейный взрыв.
| Модель очереди | lambda_n | mu_n | Применение |
|---|---|---|---|
| M/M/1 | lambda (const) | mu (const) | Один GPU/сервер |
| M/M/c | lambda (const) | min(n,c)*mu | GPU cluster (AzureML, Vertex AI) |
| M/M/1/K | lambda (n<K), 0 (n=K) | mu (const) | Ограниченный буфер запросов |
| M/M/inf | lambda (const) | n*mu | Serverless (каждый запрос - новый worker) |
**Условие стабильности M/M/1:** $\rho = \lambda/\mu < 1$. При $\rho \geq 1$ очередь растёт бесконечно - стационарного распределения нет. M/M/c стабилен при $\rho = \lambda/(c\mu) < 1$ - именно поэтому ML-платформы считают минимальное число GPU $c$ под пиковую нагрузку.
В очереди M/M/1 с $\lambda=4$ и $\mu=5$ загрузка и среднее число заявок равны:
Уравнения Колмогорова и стационарное распределение
1931 год. Колмогоров выводит два уравнения, описывающих эволюцию вероятностей CTMC. Девяносто три года спустя AWS Lambda optimizer решает то же самое - только называет это "cost optimization". **Прямые уравнения:** $\frac{dP(t)}{dt} = P(t)Q$ - как вероятности меняются вперёд по времени. **Обратные:** $\frac{dP(t)}{dt} = QP(t)$ - взгляд назад. В стационарном режиме $\frac{dP}{dt} = 0$, откуда $\pi Q = 0$.
**Стационарное уравнение:** $\pi Q = 0$, $\sum_i \pi_i = 1$. Физический смысл: для каждого состояния $j$ суммарный поток внутрь равен суммарному потоку наружу. Марков Decision Process (MDP) в continuous-time RL - это CTMC с управлением, а уравнение Гамильтона-Якоби-Беллмана - непрерывный аналог $\pi Q = 0$.
Для процессов рождения-гибели $\pi Q = 0$ упрощается до **детального баланса**: $\pi_n \lambda_n = \pi_{n+1} \mu_{n+1}$. Поток из $n$ в $n+1$ равен потоку из $n+1$ в $n$. Это рекуррентное соотношение - решается аналитически, без матричной алгебры. Результат для M/M/1: $\pi_n = (1-\rho)\rho^n$ - геометрическое распределение.
| Формула M/M/1 | Выражение | Смысл |
|---|---|---|
| Загрузка | rho = lambda/mu | Доля времени, когда сервер занят |
| P(n заявок) | pi_n = (1-rho)*rho^n | Геометрическое распределение |
| Среднее в системе | L = rho/(1-rho) | Little's law: L = lambda*W |
| Среднее время | W = 1/(mu-lambda) | Время от прихода до выхода |
Erlang и Колмогоров: от телефона до AWS
1909 год. Датский инженер Агнер Эрланг строит первую модель CTMC для телефонной сети Copenhagen Telephone Company. Вопрос: сколько операторов нужно, чтобы не больше 1% звонков ждало более минуты? Формулы Erlang-B и Erlang-C до сих пор встроены в каждый call-routing алгоритм. В 1931 Колмогоров ставит строгий математический фундамент. Единица телефонной нагрузки "эрланг" - и вся современная SRE-метрика p99 latency - потомки одной формулы.
DTMC и CTMC - одно и то же, только в разном времени
CTMC - не просто DTMC с более частыми шагами. Требует экспоненциально распределённых времён пребывания (memoryless property). Q-матрица описывает интенсивности, а не вероятности. Без memoryless property - нет марковского свойства в непрерывном времени.
Экспоненциальное распределение - единственное непрерывное с memoryless property: $\mathbb{P}(T > s+t \mid T > s) = \mathbb{P}(T > t)$. Если время пребывания не экспоненциально (например, детерминированное время обслуживания), то сколько мы уже прождали - информация о будущем, и марковское свойство нарушается.
Что означает уравнение $\pi Q = 0$ для CTMC?
Ключевые идеи
- **Q-матрица** (генератор): $q_{ij} \geq 0$ для $i \neq j$, $q_{ii} = -\sum_{j \neq i} q_{ij}$, строки суммируются в 0; $P(t) = e^{Qt}$; среднее время в состоянии $i$ равно $1/|q_{ii}|$
- **Процесс рождения-гибели**: переходы только между соседними состояниями; M/M/c - модель GPU-cluster autoscaling; условие стабильности $\rho = \lambda/(c\mu) < 1$
- **Уравнения Колмогорова**: прямые $dP/dt = PQ$, обратные $dP/dt = QP$; стационарное $\pi Q = 0$; детальный баланс $\pi_n \lambda_n = \pi_{n+1} \mu_{n+1}$ для birth-death
- **Memoryless property**: экспоненциальное распределение - единственное непрерывное с $\mathbb{P}(T>s+t|T>s)=\mathbb{P}(T>t)$; именно оно обеспечивает марковость в непрерывном времени
Связанные темы
CTMC - мост от теории к инфраструктуре:
- Цепи Маркова с дискретным временем — CTMC обобщает DTMC на непрерывное время; Q-матрица интенсивностей вместо P-матрицы вероятностей
- Случайные процессы: определения — CTMC - канонический пример стационарного эргодического процесса с марковским свойством
- MCMC и сэмплирование — Metropolis-Hastings и HMC конструируют эргодическую CTMC с нужным posterior как стационарным распределением
Вопросы для размышления
- AWS Lambda optimizer решает $\pi Q = 0$ для M/M/c с пятью состояниями (0..4 горячих контейнера). Какой параметр Q-матрицы отвечает за скорость cold start, а какой - за пропускную способность? Как сдвиг $\mu$ влияет на оптимальное число контейнеров?
- Реальное время обслуживания GPU-задачи не экспоненциально - оно может быть детерминированным (fixed-size batch) или log-normal. Как это меняет точность модели M/M/1? Что такое очередь M/G/1 и почему она сложнее?
- При $\rho = 0.99$ среднее число заявок в M/M/1 равно 99. Система стабильна, но p99 latency катастрофична. Какие два рычага есть у SRE инженера - и как детальный баланс объясняет, почему добавление второго сервера (M/M/2) нелинейно снижает очередь?
Связанные уроки
- sp-02 — CTMC расширяет DTMC - Q-матрица вместо P-матрицы
- sp-01 — Марковское свойство и определение случайного процесса
- sp-04 — Мартингалы и остановки - следующий уровень стохастического анализа
- sp-12 — MCMC строится на эргодических цепях со стационарным распределением
- prob-18-poisson — Пуассоновский процесс - частный случай CTMC с одним состоянием
- prob-17