Modern Robotics и Physical AIУрок 1.8 · Flow matching
Глоссарий
1.8 Часть 1 · Обучение по демонстрациям · углубление

Flow matching и прямые пути

Диффузионная политика из урока 1.5 превращает шум в пачку действий за десятки шагов, и каждый шаг — это проход сети. Пока пачка считается, робот стоит или едет по старому плану, поэтому счёт идёт на миллисекунды. Flow matching учит сеть на прямых путях от шума к данным, а по прямой можно идти крупными шагами: так π0, GR00T N1 и SmolVLA строят пачку за 4–10 шагов. Разберём, почему пути генерации всё равно выходят кривыми и одного шага мало, как reflow выпрямляет их почти до одного шага и сколько шагов укладывается в бюджет робота.

≈ 45 минут5 лабораторий, задача и квизмиссии с целью
ПУТИПроведи шум в нужное пятно и проверь, куда приводит один шаг вместо двухсот
ПОЛЕОбучи поле скоростей и найди момент, когда стрелки разворачиваются от центра к пятнам
ШАГИСравни диффузию и flow на одних данных и найди, сколько шагов нужно каждой
REFLOWВыпрями пути так, чтобы хватало одного шага, и найди, чем за это платишь
РОБОТПодбери число шагов для пачки из 50 действий, чтобы Ада объехала чайник и уложилась в бюджет

Начать урок ↓

1 Прямые пути

Скорость на прямой от шума к данным

Диффузионной модели нужны десятки шагов, чтобы превратить шум в данные. В уроке 1.5 каждый шаг стал проходом сети по всей пачке действий, и на одну пачку уходят десятки проходов. Всё это время робот стоит или едет по старому плану.

Путь от шума к данным изогнут. В уроке 1.4 денойзер при сильном шуме указывал к среднему данных, а при слабом — к ближайшей спирали, поэтому точка сначала идёт к центру и только потом сворачивает. Сеть знает направление только в текущей точке, и крупный шаг по нему срезает поворот.

В уроке 1.4 шаги сокращали сэмплером DDIM: та же сеть шагает без свежего шума и держит форму там, где DDPM уже стягивает точки к центру. Но на совсем малом числе шагов форму теряет и DDIM, поэтому диффузионные политики делают на пачку десятки шагов.

Выход — учить сеть на прямых путях от шума к данным: по прямой можно пройти одним шагом, потому что направление в начале ведёт прямо в конец. Так устроены flow matching (Lipman и соавторы, 2022) и близкий к нему rectified flow (Liu и соавторы, 2022).

Возьмём случайную точку шума x0x_0 и случайную точку данных x1x_1 и соединим их прямой. В момент tt точка на прямой — xt=(1−t) x0+t x1x_t = (1 - t)\,x_0 + t\,x_1, скорость движения по ней постоянна и равна x1−x0x_1 - x_0. Сеть v(x,t)v(x, t) учится предсказывать эту скорость по xtx_t и tt. Это обычная регрессия: ничего не нужно моделировать по шагам. Генерация — взять шум и пройти по полю скоростей от t=0t = 0 до t=1t = 1 несколькими шагами Эйлера.

Но прямые от разных пар пересекаются: через одну точку xtx_t идут прямые к разным точкам данных, и правильных ответов в ней несколько. Будут ли тогда прямыми пути генерации и хватит ли одного шага? Проверим на двух пятнах данных. Поле скоростей здесь считается по точной формуле, без сети, поэтому всё, что увидим, следует из самого метода.

🔬 Лаборатория 1
Под капотом: пути, цель обучения и точное поле

У Lipman и соавторов путь задан условно: для каждой точки данных x1x_1 — гауссиана, которая в момент t=0t = 0 совпадает с шумом N(0,I)\mathcal N(0, I), а к t=1t = 1 сжимается вокруг x1x_1. В варианте, который авторы называют путём оптимального транспорта, центр и ширина меняются линейно:

μt=t x1,σt=1−(1−σmin⁡) t,xt=(1−(1−σmin⁡) t) x0+t x1,LCFM=E ∥ vθ(xt,t)−(x1−(1−σmin⁡) x0)∥2.\begin{aligned} \mu_t &= t\,x_1, \qquad \sigma_t = 1 - (1 - \sigma_{\min})\,t,\\ x_t &= \bigl(1 - (1 - \sigma_{\min})\,t\bigr)\,x_0 + t\,x_1,\\ \mathcal L_{\text{CFM}} &= \mathbb E\,\bigl\|\,v_\theta(x_t, t)\\ &\qquad - \bigl(x_1 - (1 - \sigma_{\min})\,x_0\bigr)\bigr\|^2. \end{aligned}

При σmin⁡→0\sigma_{\min} \to 0 это ровно прямая из текста и цель x1−x0x_1 - x_0; такую же цель обучения используют Liu и соавторы. Главная теорема статьи: градиенты этой «условной» цели совпадают с градиентами цели, где вместо x1−x0x_1 - x_0 стоит настоящее поле генерации. Поэтому достаточно учить сеть на случайных парах, а не знать поле заранее.

Какое поле выучит идеальная сеть: среднее всех скоростей, которые проходят через точку, v∗(x,t)=E[x1−x0∣xt=x]v^*(x, t) = \mathbb E[x_1 - x_0 \mid x_t = x]. В момент t=0t = 0 точка xtx_t — это сам шум, и он ничего не говорит о том, куда идти. Поэтому v∗(x,0)=E[x1]−xv^*(x, 0) = \mathbb E[x_1] - x: стрелка указывает на среднее данных.

В лаборатории данные — смесь двух гауссиан, и среднее считается точно. Для компоненты с центром mm и разбросом ss:

xt∼N(t m, (t2s2+(1−t)2) I),E[x1∣xt,m]=m+t s2t2s2+(1−t)2 (xt−t m).\begin{gathered} x_t \sim \mathcal N\bigl(t\,m,\ (t^2 s^2 + (1 - t)^2)\,I\bigr),\\ \mathbb E[x_1 \mid x_t, m] = m + \frac{t\,s^2}{t^2 s^2 + (1 - t)^2}\,(x_t - t\,m). \end{gathered}

Веса компонент — их правдоподобие в точке xtx_t. Пятна — центры (±1,2; 1,0), s=0,22s = 0{,}22. Путь зонда — 200 шагов Эйлера.

Пути генерации кривые, хотя каждая обучающая пара — прямая. Через точки посередине идут прямые к обоим пятнам, а поле равно их среднему. Поэтому точка, как и у диффузии, сначала идёт к среднему данных и только потом сворачивает, а один шаг приводит весь шум в среднее — в пустоту между пятнами. Так же регрессия в уроке 1.3 вела Аду в чайник между объездами слева и справа. Здесь поле посчитано по формуле. Что выучит настоящая сеть, которая видит только случайные пары?

Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.

🔬 Лаборатория 2

Учим поле скоростей

Что выучит сеть, которая видит только случайные пары? Для настоящих данных формулы поля нет, а в каждой точке сети попадаются прямые к разным точкам данных, то есть разные правильные ответы.

Обучим маленькую сеть прямо на странице и проверим две вещи: до какого значения опустится ошибка и куда смотрят стрелки поля в разные моменты t.

Данные сложнее, чем в лаборатории 1: восемь пятен на кольце, 4000 точек. Сеть получает точку и время и выдаёт скорость. Каждый шаг обучения — 128 случайных пар «шум — данные» и случайные моменты t. Стрелки на сцене — то, что сеть думает о скорости в каждой точке в выбранный момент.

По горизонтали — шаги обучения, по вертикали — средний квадрат ошибки скорости.

Под капотом: цикл обучения и почему ошибка не падает до нуля
повторять 1500 раз:
x1←x_1 \leftarrow 128 случайных точек данных, x0←x_0 \leftarrow 128 точек шума N(0,I)\mathcal N(0, I)
t←t \leftarrow 128 чисел из U[0,1]U[0, 1]
xt=(1−t) x0+t x1x_t = (1 - t)\,x_0 + t\,x_1
ошибка = среднее ∥vθ(xt,t)−(x1−x0)∥2\bigl\|v_\theta(x_t, t) - (x_1 - x_0)\bigr\|^2
шаг Adam
  • Сеть. Вход — точка (x,y)(x, y), 32 фурье-признака точки (косинусы и синусы проекций на 16 случайных направлений) и 5 признаков времени: t, sin⁡πt, cos⁡πt, sin⁡2πt, cos⁡2πtt,\ \sin \pi t,\ \cos \pi t,\ \sin 2\pi t,\ \cos 2\pi t. Два скрытых слоя по 48 нейронов с SiLU, выход — скорость (vx,vy)(v_x, v_y). Adam, шаг 0,005, к концу обучения он уменьшается. Без фурье-признаков такая маленькая сеть рисует размытое кольцо вместо восьми пятен.
  • Почему ошибка не уходит в ноль. Через одну точку xtx_t проходят прямые к разным пятнам, и цель x1−x0x_1 - x_0 для неё случайна. Лучшее, что может сеть, — предсказать среднее, а разброс вокруг среднего остаётся ошибкой. Для этих данных поле можно посчитать точно, как в лаборатории 1: даже с ним средняя ошибка равна 1,87. Пунктир на графике — эта граница.
  • Что видно на сцене. Стрелки — поле сети на сетке 15 × 15. Серые тянут к центру, оранжевые — от центра. Облако — 300 точек шума, которые сеть провела по своему полю до момента tt, по 100 шагов Эйлера на весь путь.

Сеть выучила поле, близкое к идеальному: в каждой точке — среднее скоростей всех прямых через неё. Ошибка остановилась чуть выше границы, ниже которой не опуститься никакой сети. Почти вся она — неустранимый разброс целей, поэтому по кривой обучения трудно судить, хорошо ли модель рисует. Примерно до середины пути поле тянет шум к центру кольца и только потом разворачивает к пятнам, так что путь точки снова кривой. Сколько шагов Эйлера нужно, чтобы пройти такой путь, и меньше ли их, чем у диффузии?

🔬 Лаборатория 3 · центральная

Диффузия и flow на одних данных

Сколько шагов нужно flow-модели и меньше ли их, чем у диффузии? Пути у неё кривые, так что выигрыш не очевиден.

Поставим рядом диффузию из урока 1.4 и сравним на равных. Для каждой модели найдём наименьшее число шагов, при котором она держит форму кольца.

Данные те же, сеть такая же, бюджет обучения тот же — 1500 шагов. Разница в двух вещах: диффузионная сеть предсказывает шум и генерирует сэмплером DDIM по расписанию DDPM, flow-сеть предсказывает скорость и генерирует методом Эйлера по прямой. Обе стартуют из одних и тех же 600 точек шума.

Диффузия · DDIMсеть предсказывает шум
Flow matching · Эйлерсеть предсказывает скорость

По горизонтали — число шагов генерации (логарифмическая шкала), по вертикали — доля точек в пятнах. Точки появляются для каждого числа шагов, которое ты попробуешь.

Под капотом: шаг DDIM — это тоже шаг Эйлера

Шаг DDIM (η=0\eta = 0) сначала оценивает чистую точку по предсказанному шуму, а потом смешивает её с тем же шумом в пропорции следующего момента:

x^0=xt−1−αˉt ε^αˉt,xs=αˉs x^0+1−αˉs ε^.\begin{gathered} \hat x_0 = \frac{x_t - \sqrt{1 - \bar\alpha_t}\,\hat\varepsilon}{\sqrt{\bar\alpha_t}},\\ x_s = \sqrt{\bar\alpha_s}\,\hat x_0 + \sqrt{1 - \bar\alpha_s}\,\hat\varepsilon. \end{gathered}

Шаг Эйлера по прямому пути устроен так же. Из скорости vv получаются оценка данных x^1=xt+(1−t) v\hat x_1 = x_t + (1 - t)\,v и оценка шума ε^=xt−t v\hat\varepsilon = x_t - t\,v, а

xs=(1−s) ε^+s x^1=xt+(s−t) v.x_s = (1 - s)\,\hat\varepsilon + s\,\hat x_1 = x_t + (s - t)\,v.

Значит, DDIM и Эйлер — один и тот же сэмплер, если расписание одно. Gao и соавторы в обзоре «Diffusion Meets Flow Matching» формулируют это так: при гауссовом шуме flow matching и диффузия эквивалентны, а сэмплер DDIM совпадает с сэмплером Эйлера.

Откуда тогда разница в лаборатории. Во-первых, расписание: у DDPM почти вся первая половина пути — сильный шум, и равномерная сетка тратит туда шаги впустую. Во-вторых, цель обучения: на первом шаге DDIM получает оценку данных делением на αˉ1000≈0,0064\sqrt{\bar\alpha_{1000}} \approx 0{,}0064, и ошибка сети в предсказанном шуме вырастает примерно в 160 раз. Поэтому при одном шаге точки диффузии разлетаются. У сети, которая предсказывает скорость, такого деления нет.

Lipman и соавторы сравнивали пути оптимального транспорта с диффузионными в одной постановке: первые дают более быстрое обучение и генерацию, а на ImageNet 32 × 32 им нужно примерно 60% вычислений поля, чтобы достичь той же ошибки. Это не значит, что flow всегда лучше: Gao и соавторы показывают, что для широких распределений другое расписание может дать пути прямее. Результат зависит от расписания, цели и сэмплера, а не от названия метода.

Как считается качество. Точка «в пятне», если она ближе 0,2 к центру одного из восьми пятен (2,5 разброса). Пятно «на месте», если в него попала хотя бы четверть его доли точек. Обе сети: 48 × 48 нейронов, 1500 шагов по 128 примеров, одинаковое зерно. У настоящих данных в пятнах около 96% точек.

Flow держит форму с 8 шагов, диффузия — с 16. При этом flow и диффузия — одно семейство: шаг DDIM — тот же шаг Эйлера, а разницу дают расписание шума и то, что предсказывает сеть. Один шаг по-прежнему не работает: flow-модель собирает весь шум в одно пятно в центре кольца, потому что первый шаг ведёт в среднее данных. Можно ли выпрямить сами пути генерации, чтобы хватало одного шага?

🔬 Лаборатория 4

Выпрямление: reflow

Можно ли выпрямить пути генерации, чтобы хватало одного шага? Сейчас один шаг собирает весь шум в центр кольца.

Пути кривые, потому что обучающие прямые пересекаются: через одну точку идут прямые к разным пятнам, и сеть учит их среднее.

До сих пор поворот проходили мелкими шагами: flow-модели в лаборатории 3 нужно было 8, и каждый из них — проход сети.

Значит, учить сеть нужно на парах, прямые которых не пересекаются. Liu и соавторы предложили, где их взять.

Пустим уже обученную модель из шума z0z_0 и запишем, куда она его привела, — z1z_1. Пути модели — решения дифференциального уравнения, они не пересекаются. Значит, и прямые между z0z_0 и z1z_1 пересекаются редко. Обучим ту же сеть ещё раз, на парах (z0,z1)(z_0, z_1) вместо случайных. Это и есть reflow.

Проверим, сколько пересечений останется, хватит ли после этого одного шага и чем за это придётся заплатить.

Случайные парытак учится обычный flow matching
Пары reflowшум и куда его привела модель
Шагов на пары
Под капотом: reflow, дистилляция и одношаговые модели
1. Обучить flow на случайных парах (x0,x1)(x_0, x_1) → модель 1.
2. z0∼N(0,I)z_0 \sim \mathcal N(0, I), z1z_1 — конец пути модели 1 из z0z_0 за много шагов → пары.
3. Обучить ту же цель на парах (z0,z1)(z_0, z_1) → модель 2.
4. При желании повторить или дистиллировать в один шаг.
  • Что доказали авторы. Распределение на выходе reflow то же, что у исходной модели, а транспортная стоимость не растёт. Чем больше повторов, тем прямее могут стать пути, но много повторов авторы не советуют: копится ошибка. Новую модель они дообучают из весов предыдущей, как и мы.
  • Цена. Пары нужно сгенерировать моделью 1 за много шагов и обучить сеть ещё раз. Ошибки модели 1 переходят в пары, поэтому на большом числе шагов выпрямленная модель рисует хуже исходной. На CIFAR-10 у Liu и соавторов один шаг Эйлера дал FID 378 у исходной модели и 12,21 после reflow, а точный решатель — 2,58 и 3,36.
  • В лаборатории. 2000 пар, своя выборка шума. Модель 2 — копия модели 1, которую дообучают 1000 шагов по 128 пар с шагом 0,002. Пересечения считаются для 100 пар, то есть из 4950 пар отрезков.
  • Другие пути к одному шагу. Дистилляция учит сеть сразу выдавать конец пути: InstaFlow так получила одношаговую Stable Diffusion, на это ушло 199 GPU-дней на A100. Consistency models отображают любую точку пути в его конец: FID 3,55 за один шаг на CIFAR-10. MeanFlow (NeurIPS 2025) учит среднюю скорость на отрезке и даёт FID 3,43 за один шаг на ImageNet 256 × 256.

Пары reflow почти не пересекаются, и выпрямленная модель за один шаг кладёт в пятна около двух третей точек и находит все восемь пятен. Платить приходится ещё одним обучением, парами, которые исходная модель строит за много шагов, и качеством на большом числе шагов: ошибки исходной модели переходят в пары. Всё это мы проверяли на точках. Сколько шагов нужно пачке действий робота и сколько миллисекунд они стоят?

2 Пачка действий для робота

Как π0 строит пачку действий

Сколько шагов нужно пачке действий и сколько они стоят? У робота два требования сразу: пачка должна объехать препятствие и посчитаться быстро, потому что, пока она считается, робот стоит или едет по старому плану.

Посмотрим, как это устроено в π0. Рядом с VLM на 3 млрд параметров работает отдельный эксперт действий на 300 млн. Он генерирует пачку из 50 действий: стартует с шума формы 50 × размерность действия и за 10 шагов Эйлера превращает его в движение. Каждый шаг — проход эксперта по 50 токенам действий. Картинки и текст VLM обрабатывает один раз за пачку и кэширует ключи и значения, а эксперт читает их на каждом шаге — так устроена блочная маска π0 из урока 1.6.

На RTX 4090 с тремя камерами вывод занимает 73 мс: 14 мс на энкодеры картинок, 32 мс на проход по наблюдению и 27 мс на все 10 шагов flow. Если модель считается вне робота, добавляется 13 мс на сеть. У GR00T N1 голова действий — трансформер DiT, и ей хватает 4 шагов: пачка из 16 действий за 63,9 мс на L40. π0.7 генерирует пачку из 50 действий за 5 шагов.

Проверим на Аде, сколько шагов нужно, чтобы пачка объехала чайник, и сколько шагов укладывается в бюджет времени.

🔬 Лаборатория 5
⏱

Конвенция времени в курсе: t=0t = 0 — шум, t=1t = 1 — данные, скорость = данные − шум. Так пишут Lipman и Liu, так же время τ\tau введено в статьях π0 и GR00T N1. В коде openpi наоборот: xt=t⋅шум+(1−t)⋅действияx_t = t\cdot\text{шум} + (1 - t)\cdot\text{действия}, цель — шум − действия, генерация идёт от t=1t = 1 к 0 с шагом −0,1-0{,}1. Авторы прямо пишут в комментарии, что это противоположно статье. Так же устроены реализации π0 и SmolVLA в LeRobot. Читая код, проверяй, где шум.

Под капотом: формулы π0 и что стоит за 73 мс
Aτ=τA+(1−τ) ε,ε∼N(0,I),цель: A−ε,обучение: s−τs∼Beta(1,5; 1),s=0,999,вывод: Aτ+δ=Aτ+δ vθ(Aτ,o),δ=0,1.\begin{gathered} A^\tau = \tau A + (1 - \tau)\,\varepsilon, \quad \varepsilon \sim \mathcal N(0, I),\\ \text{цель: } A - \varepsilon,\\ \text{обучение: } \tfrac{s - \tau}{s} \sim \mathrm{Beta}(1{,}5;\ 1), \quad s = 0{,}999,\\ \text{вывод: } A^{\tau + \delta} = A^\tau + \delta\, v_\theta(A^\tau, o),\\ \delta = 0{,}1. \end{gathered}
  • Ошибка знака. В версиях статьи 2024 года цель записана как ε−A\varepsilon - A. При таком пути и шаге +δ v+\delta\,v это вело бы от данных к шуму. В версии от января 2026 года знак исправлен на A−εA - \varepsilon. В коде знак верный в своей конвенции.
  • Выбор τ. Бета-распределение даёт больше обучающих примеров с сильным шумом, то есть малых τ\tau. Моменты τ>0,999\tau > 0{,}999 не нужны, пока шаг интегрирования больше 0,001.
  • Почему 10 шагов дешевле картинок. Эксперт в 10 раз меньше VLM и работает только с 50 токенами действий, а наблюдение считается один раз и лежит в кэше. Поэтому 10 шагов стоят 27 мс, а один проход по камерам и тексту — 46 мс.
  • В лаборатории. Пачка — 50 смещений захвата поперёк стола, по одному на такт 20 мс; захват едет слева направо 60 см за 1 с. Вместо обученной головы здесь точное поле для 40 демонстраций: 20 объезжают чайник сверху, 20 — снизу. Так видно, что делают сами шаги Эйлера, без ошибок обучения; у обученной сети к ним добавятся её собственные ошибки. Задержка в калькуляторе — разбивка π0: 14 + 32 + 2,7 мс на шаг (27 мс / 10) + 13 мс на сеть. Что каждый шаг стоит одинаково — наше упрощение. Простой — доля времени, когда робот стоит: исполнили 25 действий (0,5 с), ждём вывод.
  • Одношаговые головы. FlowPolicy и MP1 генерируют действия за один шаг: 19,9 и 6,8 мс. В техотчёте одного автора (2026) одношаговая голова для GR00T ускорила голову с 45 до 5 мс, но успешность заметно упала: на длинных задачах LIBERO с 74,5 до 26%.

За один шаг все пачки въезжают в чайник: первый шаг из шума ведёт в среднее демонстраций. На точном поле Аде хватает 4 шагов, а на сервере и объезд, и бюджет выдерживают от 4 до 10 шагов. Сами шаги дешёвые: основную задержку даёт проход по наблюдению. Сколько шагов делают настоящие политики?

🧩 Задача

Кто сколько шагов делает

Разложи модели по числу шагов генерации на выводе. Перетащи карточку или нажми её, а потом корзину.

3 Проверь себя

Восемь вопросов о типичных заблуждениях

4 Итог

Итоги урока

  1. Диффузии нужны десятки шагов на пачку, и робот ждёт каждый проход сети. Flow matching учит поле скоростей регрессией на прямых между случайным шумом и случайной точкой данных. Генерация — несколько шагов Эйлера от шума к данным.
  2. Обучающие прямые пересекаются, сеть учит их среднее, поэтому пути генерации кривые. Один шаг из шума приводит в среднее данных.
  3. При гауссовом шуме flow matching и диффузия — одно семейство: DDIM — это шаг Эйлера при другом расписании. Разницу в числе шагов дают расписание и то, что предсказывает сеть.
  4. Reflow учит модель на её же парах «шум → результат». Пути выпрямляются, и одного-двух шагов почти хватает. Цена — ещё одно обучение и немного качества.
  5. У роботов головы на flow matching делают 4–10 шагов: π0, π0.5 и SmolVLA — 10, GR00T N1 — 4, π0.7 — 5. Шаги эксперта дешёвые, основную задержку даёт проход по наблюдению.
  6. Конвенции времени расходятся: в курсе t=0t = 0 — шум, в коде openpi — наоборот.

Открытые вопросы

Почему π0 не генерирует пачку за один шаг, если reflow и дистилляция это позволяют?

Один шаг даёт среднее, если пути кривые, а выпрямление и дистилляция стоят дополнительного обучения и обычно немного качества. При этом 10 шагов эксперта стоят 27 мс из 73: главная часть задержки — проход по камерам и тексту, и один шаг вместо десяти сэкономил бы около трети времени. Для ловких задач потеря точности дороже этих миллисекунд. Одношаговые головы проверяют, но в техотчёте про GR00T такая голова заметно теряла в успешности.

Демонстрации объезжают чайник то слева, то справа. Что сделает каждый шаг Эйлера с пачкой и почему первый шаг самый опасный?

В начале шум ещё ничего не говорит о стороне объезда, и поле тянет пачку к среднему демонстраций — прямо в чайник. Если шаг один, пачка там и остаётся. Если шагов несколько, после первого пачка ещё зашумлена, и следующие шаги уже «видят», к какой стороне она ближе, и уводят её туда. Поэтому качество быстро растёт от одного шага к трём-четырём, а дальше почти не меняется.

Гид по статье

Y. Lipman, R. Chen, H. Ben-Hamu, M. Nickel, M. Le, «Flow Matching for Generative Modeling», ICLR 2023.

X. Liu, C. Gong, Q. Liu, «Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow», ICLR 2023 — reflow, теоремы о непересечении путей и одношаговая генерация.

Материалы

✅

Проверь себя по всей части 1. 15 вопросов по урокам 1.1–1.8 вперемешку и задача на живой сцене: так видно, что держится в памяти. В конце — балл по каждому уроку и разделы, которые стоит повторить.

Проверка части 1 →

➡️

Дальше: часть 2. Голова на flow matching строит пачку за 4–10 шагов и укладывается в бюджет робота. Но сама политика осталась прежней: она умеет одну задачу, на каждый навык ей нужно полсотни демонстраций, и команду словами она не понимает. Как роботу понять, что и где делать? Об этом часть 2: геометрия сцены и язык в Transporter и CLIPort, PerAct и планировщики на больших языковых моделях. Голова действий на flow matching вернётся в части 3: в уроке про π0 она стоит рядом с VLM, а в уроке про GR00T — за медленной System 2.

Урок был понятен?
Нашли ошибку или неточность? Сообщить на GitHub
Урок пригодился? Скажи спасибо — так автор узнает, что курс читают.