Modern Robotics и Physical AIУрок 2.2 · PerAct
Глоссарий
2.2 Часть 2 · Пространственные представления, язык и планирование · углубление

PerAct: 3D-представления и язык

Карта по пикселям стола из урока 2.1 задаёт место на плоскости и поворот вокруг вертикали. Чтобы открыть ящик или поставить чашку на верхнюю полку, нужна поза захвата в объёме. PerAct (2022) получает её тремя приёмами. Длинную демонстрацию он сжимает до нескольких ключевых поз, а между ними руку ведёт планировщик движения. Следующую позу ищет как самый ценный воксель — кубик пространства — в сетке 100 × 100 × 100. Миллион вокселей и команду словами обрабатывает трансформер Perceiver, который сначала сжимает их в небольшой набор из 2048 внутренних векторов. Одна такая модель выучила 18 задач в симуляции и 7 задач на настоящей руке.

≈ 40 минут3 лаборатории, интерактив и квизмиссии с целью
КЛЮЧЕВЫЕ ПОЗЫПодбери порог остановки и сожми демонстрацию из 325 кадров до шести поз, по которым планировщик поставит чашку на полку
ВОКСЕЛИСравни регрессию координат и выбор вокселя, когда демонстрации ставят чашку на разные полки
ПОЛЕ ЗРЕНИЯНайди, какую часть сцены должна видеть модель, чтобы отличить верхнюю полку от нижней
ЛАТЕНТЫПосчитай, сколько памяти займёт внимание по миллиону вокселей и как его укладывает Perceiver

Начать урок ↓

1 Объём

От точки на столе к позе в объёме

В уроке 2.1 действие было точкой на виде стола сверху. Transporter оценивает каждый пиксель и берёт лучший, а поворот ищет среди 36 углов вокруг вертикали. Но попробуй поставить чашку на верхнюю полку: сверху верхняя и нижняя полки — один и тот же пиксель. Чтобы открыть ящик, захват берёт ручку сбоку и тянет на себя. Чтобы повернуть кран, захват поворачивается вокруг горизонтальной оси. Картой стола такие действия не описать.

Таким задачам нужна поза захвата в объёме: три координаты, три угла и состояние захвата, открыт он или закрыт. Такое действие называют 6-DoF — по числу степеней свободы (degrees of freedom). Агенты, которые переводят картинку прямо в 6-DoF-действия, учатся медленно: авторы PerAct приводят примеры, где данные для многих задач собирали неделями и месяцами.

PerAct (Perceiver-Actor; Shridhar, Manuelli, Fox, CoRL 2022 — авторы CLIPort) переносит карту действий в объём. Кубический метр над столом делят на сетку 100 × 100 × 100 вокселей. Воксель — объёмный пиксель, кубик пространства, здесь со стороной 1 см. Действие ищут как самый ценный воксель. Чтобы это заработало, авторы решают три задачи, и им посвящены три следующих раздела: как не принимать решение на каждом кадре, как выбрать позу в объёме классификацией и как обработать миллион вокселей трансформером.

Начнём с первой. Демонстрация — это сотни кадров. Сколько из них политика должна предсказывать?

2 Ключевые позы

Ключевые позы вместо траектории

Политики части 1 решают на каждом кадре. Десятисекундная демонстрация на 30 кадрах в секунду — 300 решений, и каждая ошибка уводит руку туда, где оператор не бывал. В уроке 1.1 такие ошибки копились как εT2\varepsilon T^2, где ε\varepsilon — вероятность ошибиться на одном шаге, а TT — число шагов, в уроке 1.7 ACT сокращала число решений пачками действий.

PerAct вслед за работой C2FARM (James и соавторы, 2022) оставляет от демонстрации несколько ключевых поз (keyframes). Это позы захвата, через которые задача проходит обязательно: перед чашкой, на чашке, над препятствием, перед полкой, на полке. Предсказывать непрерывные действия напрямую авторы называют неэффективным и шумным. Политика выдаёт только следующую ключевую позу, а путь до неё строит планировщик движения — классический алгоритм вроде тех, что были в уроке 0.4.

Ключевые позы находят простой эвристикой: действие ключевое, если скорости суставов почти нулевые, а состояние захвата не изменилось. Рука останавливается там, где оператор прицеливается или ждёт, пока сожмётся захват. Каждый кадр демонстрации становится примером для обучения: по этому наблюдению и команде предскажи следующую ключевую позу.

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

Проверим на Аде. Оператор ведёт её руку джойстиком и переставляет чашку со стола на верхнюю полку, огибая чайник. Запись — 325 кадров: поза захвата, его состояние и скорости трёх суставов руки. В статье демонстрации чище: эксперт задаёт промежуточные позы, руку между ними ведёт планировщик, и в остановках она стоит точно. Рука человека дрожит, поэтому порог «почти нулевой скорости» приходится подбирать.

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

Вид сбоку: слева Ада и её рука, справа стеллаж с двумя полками.

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

Под капотом: эвристика, планировщик и цена каждого решения

Пусть q˙j(t)\dot q_j(t) — скорость сустава jj в кадре tt, g(t)g(t) — состояние захвата, ε\varepsilon — порог. Кадр ключевой, если рука стоит и захват не меняет состояние. Каждый кадр tt демонстрации превращается в пример «наблюдение и команда → следующая ключевая поза»:

max⁡j∣q˙j(t)∣<ε,g(t′)=g(t)  при  ∣t′−t∣≤w,(ot, l)  ↦  ak(t),k(t)=min⁡{k∈K:k>t}.\begin{gathered} \max_j |\dot q_j(t)| < \varepsilon, \qquad g(t') = g(t) \ \ \text{при}\ \ |t' - t| \le w, \\ (o_t,\, l) \;\mapsto\; a_{k(t)}, \qquad k(t) = \min\{k \in \mathcal K : k > t\}. \end{gathered}

Порог и окно в статье не названы. У нас скорость — самый быстрый из трёх суставов руки, сглаженный по 5 кадрам; захват «не меняется», если его состояние одинаково в 12 кадрах до и после; разрыв короче 4 кадров внутри остановки считаем дрожью и склеиваем; ключевая поза — первый кадр остановки; остановка до начала движения не считается. Рука — три сустава с длинами 45, 42 и 11 см, захват всегда горизонтален, суставы считаются обратной кинематикой.

Планировщик у нас ведёт захват по прямой от позы к позе и препятствия не обходит: так сразу видно, какая поза пропала. В статье планировщик ищет путь случайными пробами, как RRT из урока 0.4 (в опытах с настоящей рукой — RRT-Connect из MoveIt), а флаг столкновений в каждом действии говорит ему, обходить ли всё в сетке или ничего. Подойти к чашке нужно сбоку: подход сверху задевает её.

Почему мало решений лучше? Пусть каждое решение с вероятностью ε\varepsilon приводит к ошибке, после которой задача провалена. Тогда эпизод из TT решений проходит с вероятностью (1−ε)T(1 - \varepsilon)^T. При ε=1%\varepsilon = 1\% из 325 решений без ошибки проходят 3,8% эпизодов, из шести — 94%. Это грубая модель: она не учитывает, что решение о далёкой позе труднее, чем шаг на один кадр.

По остановкам ключевые позы ловят всё нужное: подход к чашке сбоку, захват, подъём над чайником, место перед полкой, отпускание и отвод руки. Политике остаётся шесть решений вместо 325, остальное делает планировщик. Равные промежутки дают столько же поз, но не там, где они нужны. В статье ключевые позы через равные промежутки или в случайных кадрах дают нулевой успех на задаче с ящиком. В задачах RLBench у PerAct от 2 до 17 ключевых поз на эпизод.

Решений стало мало, но каждое теперь — поза в объёме: где окажется захват, как он повёрнут и сжат ли. Как сети выбрать такую позу?

3 Воксели

Следующий лучший воксель

Ключевых поз немного, но каждая задаёт захват в объёме. Прямой путь — регрессия: сеть выдаёт три координаты и три угла числами. Из уроков 1.3 и 2.1 мы знаем, что бывает, когда в демонстрациях несколько верных ответов: регрессия со средним квадратом ошибки выдаёт их среднее.

PerAct делает с объёмом то же, что Transporter со столом. Облака точек с откалиброванных камер сводят в сетку 100 × 100 × 100 вокселей над столом, каждый размером 1 см. В вокселе 10 чисел: цвет, координаты точки, занят ли он и его индекс в сетке. Сеть оценивает каждый воксель: насколько хорошо, если центр захвата окажется здесь. Обучают её как классификатор: правильный ответ — воксель, где захват был в следующей ключевой позе, а функция потерь — перекрёстная энтропия, как у любого классификатора. Действие — самый ценный воксель. Авторы называют это поиском следующего лучшего вокселя (next best voxel).

Остальные части действия — тоже классификация. Поворот делят на 72 корзины по 5° для каждой из трёх осей. Состояние захвата и флаг столкновений — по два варианта. Флаг говорит планировщику, обходить ли всё в сетке или ничего: подвести захват к ручке ящика нужно, ничего не задев, а потянуть ящик на себя — касаясь его.

Проверим в миниатюре. Сетка — 20 × 20 × 20 вокселей по 5 см. Рука Ады держит чашку перед стеллажом с двумя полками: на сцене серые воксели — захват, бирюзовые — чашка. Команда говорит, куда её поставить. Обучим на 24 демонстрациях две модели: регрессию координат и классификатор вокселей. Регрессия получит даже больше, чем классификатор: точное положение стеллажа. Классификатор видит только, какие воксели заняты, и не всю сцену, а окно — столбец на ±8 вокселей над и под местом, которое он оценивает. Сколько сцены ему на самом деле нужно, проверим в миссии 3.

🔬 Лаборатория 2
Регрессия координат
Классификатор вокселей
Под капотом: Q-функции PerAct и наш классификатор

По сетке вокселей vv и команде ll сеть выдаёт четыре Q-функции. Действие — их максимумы: воксель (x,y,z)(x, y, z), углы Эйлера (ψ,θ,ϕ)(\psi, \theta, \phi) по корзинам, состояние захвата ω\omega и флаг столкновений κ\kappa:

Ttrans=arg⁡max⁡(x,y,z)Qtrans((x,y,z)∣v,l),Trot=arg⁡max⁡(ψ,θ,ϕ)Qrot((ψ,θ,ϕ)∣v,l),Topen=arg⁡max⁡ωQopen(ω∣v,l),Tcollide=arg⁡max⁡κQcollide(κ∣v,l).\begin{aligned} T_{\text{trans}} &= \arg\max_{(x, y, z)} Q_{\text{trans}}\bigl((x, y, z) \mid v, l\bigr), \\ T_{\text{rot}} &= \arg\max_{(\psi, \theta, \phi)} Q_{\text{rot}}\bigl((\psi, \theta, \phi) \mid v, l\bigr), \\ T_{\text{open}} &= \arg\max_{\omega} Q_{\text{open}}(\omega \mid v, l), \\ T_{\text{collide}} &= \arg\max_{\kappa} Q_{\text{collide}}(\kappa \mid v, l). \end{aligned}

Цели — one-hot: воксель ключевой позы в сетке H×W×DH \times W \times D, по корзине на каждую ось поворота, по два варианта у захвата и флага. Обучение — сумма перекрёстных энтропий, как у классификатора:

L=−EYtrans[log⁡Vtrans]−EYrot[log⁡Vrot]−EYopen[log⁡Vopen]−EYcollide[log⁡Vcollide],V∗=softmax⁡(Q∗).\begin{aligned} \mathcal L = &-\mathbb E_{Y_{\text{trans}}}[\log V_{\text{trans}}] - \mathbb E_{Y_{\text{rot}}}[\log V_{\text{rot}}] \\ &- \mathbb E_{Y_{\text{open}}}[\log V_{\text{open}}] - \mathbb E_{Y_{\text{collide}}}[\log V_{\text{collide}}], \\ V_\ast = &\operatorname{softmax}(Q_\ast). \end{aligned}

Разрешение авторы проверили так: проиграли демонстрации, округлив каждое действие до вокселя и корзин поворота, и убедились, что сетки 100³ хватает. В анализе чувствительности части задач хватает сетки 32³, а точным задачам нужна полная 100³.

У нас сетка 20³ с вокселем 5 см. Признаки вокселя заданы вручную: свободен ли он, заняты ли воксели в столбце над и под ним на KK вокселей, четыре соседа на той же высоте и на слой ниже. Оценка линейная: общий вектор весов плюс вектор команды, у каждой из трёх команд свой. Обучение — 120 шагов Adam перекрёстной энтропией по всем 8000 вокселям. Регрессия — метод наименьших квадратов от точного положения стеллажа и команды к координатам цели. В PerAct признаки вокселей учит сеть, а команду кодирует текстовый энкодер CLIP.

Регрессия поставила чашку между полками: среднее двух верных ответов приходится на пустоту. Классификатор дал два пика и выбрал один из них. Команда переносит пик на названную полку. Без команды модель не знает, какую задачу решать: в статье PerAct без языка работает на уровне случайного выбора. Посмотри на сцену сверху: обе полки — один столбец вокселей, и карта стола из урока 2.1 их бы не различила.

Но классификатор справился, только когда видел столбец высотой 45 см. С окном поменьше полки и стол выглядят для него одинаково: опора снизу и пустота сверху. Настоящей сети нужно видеть всю сцену — миллион вокселей. Как это сделать?

4 Латенты

Миллион вокселей и 2048 латентов

В лаборатории 2 классификатор отличил верхнюю полку от нижней, только когда его окно дотянулось до стола и до следующей доски. В статье то же на ящиках. У комода три одинаковые ручки, и команда «открой средний ящик» требует видеть комод целиком. C2FARM-BC — 3D-свёрточная сеть, которая сначала смотрит на сцену крупно, а потом приближает её часть, — справлялась на уровне случайного выбора, около 33%. PerAct — больше чем в 70% попыток.

Видеть всю сцену сразу умеет внимание из урока 1.6: каждый токен смотрит на каждый. Но число пар растёт как квадрат числа токенов, и миллион вокселей дают 101210^{12} пар на слой. Поэтому PerAct сначала режет сетку на патчи 5 × 5 × 5, как ViT режет картинку. Остаётся (100/5)3=8000(100/5)^3 = 8000 токенов и ещё 77 токенов текста. Но и 8000 токенов обычному трансформеру, по словам авторов, трудно уместить в память обычной видеокарты.

Выход дают латенты. Perceiver IO (Jaegle и соавторы, ICLR 2022; в статье PerAct его зовут просто Perceiver) хранит небольшой набор обучаемых векторов, у PerAct — 2048 векторов длиной 512. Кросс-внимание (cross-attention из урока 1.6) переносит в них нужное из входа: запросы дают латенты, ключи и значения — 8077 токенов. Дальше шесть слоёв self-attention работают только с латентами. В конце ещё одно кросс-внимание раздаёт результат обратно: каждый патч спрашивает у латентов, что известно о сцене. Поэтому стоимость растёт линейно по числу токенов.

Посчитаем, сколько памяти при обучении занимают одни только оценки внимания.

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

Выходы головы поворота

Под капотом: кросс-внимание к латентам и наш счёт

Пусть вход — NN токенов X∈RN×dxX \in \mathbb R^{N \times d_x}, латенты — Z∈RL×dZ \in \mathbb R^{L \times d}. В кросс-внимании запросы дают латенты, поэтому матрица оценок размером L×NL \times N, а не N×NN \times N:

Z′=softmax⁡((ZWQ)(XWK)⊤d) XWV,Z∈R2048×512,X∈R8077×128.\begin{gathered} Z' = \operatorname{softmax}\Bigl(\frac{(Z W_Q)(X W_K)^\top}{\sqrt{d}}\Bigr)\, X W_V, \\ Z \in \mathbb R^{2048 \times 512}, \quad X \in \mathbb R^{8077 \times 128}. \end{gathered}

Обратное кросс-внимание устроено зеркально: запросы дают токены входа, ключи и значения — латенты. Число оценок за один пример, если в сети шесть слоёв:

N=(Gp)3+77,все со всеми: 6N2,Perceiver: 2NL+6L2.\begin{gathered} N = \Bigl(\frac{G}{p}\Bigr)^3 + 77, \\ \text{все со всеми: } 6N^2, \\ \text{Perceiver: } 2NL + 6L^2. \end{gathered}

Здесь GG — сторона сетки, pp — сторона патча. Память — число оценок × 16 примеров в пакете (столько берут авторы) × 4 байта. Это нижняя оценка: голова внимания одна, а веса, активации полносвязных блоков и градиенты не считаем. Граница в 16 ГБ — для примера. Авторы обучали PerAct на 8 видеокартах V100 16 дней, 600 тысяч шагов.

Сетка у PerAct — 100³ × 10 каналов. Свёртка 1 × 1 × 1 поднимает каналы до 64, свёртка с ядром и шагом 5 даёт патчи 203×6420^3 \times 64. К патчам приклеивают признаки проприоцепции — состояние захвата, положения пальцев и номер шага, — и получается 8000×1288000 \times 128. Текст — 77 токенов CLIP размерностью 512, их сжимают линейным слоем до 128. Вход Perceiver — 8077×1288077 \times 128 плюс обучаемые позиционные векторы.

Внимание всех ко всем по миллиону вокселей занимает сотни терабайт даже по нижней оценке, по 8077 токенам — больше 16 ГБ, а Perceiver с 2048 латентами — около 3,7 ГБ. Авторы проверяли и 512 латентов: на их задачах это не хуже, а иногда лучше. Поворот предсказывают по трём осям отдельно: 216 выходов вместо 373 248.

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

Путь данных за один шаг PerAct. Слева — стол с комодом: четыре камеры глубины снимают его, синие точки — облако точек. Синим — патчи сцены, оранжевым — слова команды, фиолетовым — латенты. Справа — оценки вокселей: оранжевым светятся ценные, чёрный кубик — выбранная поза захвата. Ещё три головы выдают поворот по трём осям, открыт ли захват и нужно ли обходить препятствия. Числа на схеме условные: патчей и латентов показано по нескольку. Нажми на схему, чтобы остановить её.
🧩 Задача

Какой формы тензор на каждом шаге

Тензор — таблица чисел с несколькими осями: запись 100 × 100 × 100 × 10 значит 10 чисел в каждом из миллиона вокселей. Max-pool берёт по каждому признаку максимум по всей сетке, трилинейное повышение разрешения снова увеличивает сетку, плавно заполняя промежутки. Все размеры есть в абзацах выше и в блоке «Под капотом». Задача для тех, кто хочет разобрать модель по слоям, её можно пропустить.

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

Только голова переноса смотрит на каждый воксель: она выдаёт 100³ оценок, по одной на воксель, авторы называют их Q-функцией. Поворот, захват и флаг столкновений считают по признакам всей сцены после max-pool. Работает ли такая модель сразу на многих задачах?

5 Результаты

Одна модель на 18 задач

Авторы обучили одну модель на 18 задачах RLBench с 249 вариациями: открыть один из трёх ящиков, сложить блоки нужного цвета, вкрутить лампочку, поставить бутылку на подставку. Вариации — место, цвет, форма, размер и категория предметов. Камер четыре, RGB-D по 128 × 128 пикселей. На задачу — 10 или 100 демонстраций, проверка — 25 эпизодов на задачу, в эпизоде не больше 25 действий.

Сравнивали с агентами «картинка → действие» Image-BC на CNN и ViT и с C2FARM-BC, которого так же обучили по демонстрациям. PerAct лучше первых в 34 раза, вторых — в 2,8 раза. Без команды PerAct работает на уровне случайного выбора. Три точные задачи — надеть кольцо на штырь, вставить стаканы друг в друга и повесить чашки на подставку — почти не решает никто: ошибка в несколько сантиметров или градусов там необратима.

Доля успешных эпизодов из 25 на каждую задачу. Image-BC — лучший из двух вариантов, CNN и ViT. Данные — таблица 1 статьи PerAct. Наведи на строку, чтобы увидеть числа.

На настоящей руке Franka Panda с одной камерой Kinect-2 одна модель выучила 7 задач с 18 вариациями по 53 демонстрациям. Демонстрации записывали контроллером HTC Vive: человек задаёт целевые позы, а руку к ним ведёт планировщик. Нажать на дозатор антисептика модель смогла в 9 попытках из 10, смести фасоль в совок — в 1 из 5. Чаще всего она ошибалась с состоянием захвата.

Где пределы такого подхода?

6 Сегодня

Пределы ключевых поз и что пришло им на смену

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

Модели части 3 пошли другим путём. Они выдают непрерывные пачки действий прямо по картинкам и тексту, как π0 с пачкой из 50 действий из урока 1.8. Ключевые позы и планировщик им не нужны, но и подсказки, которую даёт сетка вокселей, у них нет.

Идея действия как ценности в трёхмерной сетке осталась. В следующем уроке VoxPoser строит карты ценности в сетке вокселей без обучения на задачу: их собирает код, который пишет большая языковая модель, а путь по ним ищет планировщик.

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

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

8 Итог

Итоги урока

  1. Демонстрацию сжимают до ключевых поз: кадров, где скорости суставов почти нулевые, а захват не меняет состояние. Политика предсказывает следующую ключевую позу, путь до неё строит планировщик. Решений — единицы вместо сотен.
  2. Позы должны попасть в узкие места задачи: захват, отпускание, обход препятствий. Позы через равные промежутки дают столько же решений, но в статье — нулевой успех.
  3. Действие — классификация в 3D-сетке 100³: самый ценный воксель задаёт место захвата, поворот — три оси по 72 корзины, плюс захват и флаг столкновений. Классификация сохраняет несколько верных ответов, регрессия их усредняет.
  4. Команда словами, закодированная CLIP, выбирает, какой из верных ответов нужен. Без неё PerAct работает на уровне случайного выбора.
  5. Чтобы различать одинаковые полки и ручки, нужна вся сцена. Perceiver обрабатывает 8000 патчей и 77 токенов текста через 2048 латентов, и стоимость растёт линейно по числу токенов.
  6. Одна модель выучила 18 задач с 249 вариациями в симуляции и 7 задач на настоящей руке по 53 демонстрациям. Пределы — планировщик, динамика, многопалые кисти и отсутствие памяти.

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

Почему ключевые позы плохо подходят для задачи «налей воды в чашку»?

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

PerAct видит только текущий кадр. Какие задачи из-за этого ему недоступны и как это исправить?

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

Гид по статье

M. Shridhar, L. Manuelli, D. Fox, «Perceiver-Actor: A Multi-Task Transformer for Robotic Manipulation», CoRL 2022.

S. James и соавторы, «Coarse-to-Fine Q-attention: Efficient Learning for Visual Robotic Manipulation via Discretisation», CVPR 2022 — C2FARM: ключевые позы, действие как воксель и сетка от грубой к мелкой.

A. Jaegle и соавторы, «Perceiver IO: A General Architecture for Structured Inputs & Outputs», ICLR 2022 — латенты, кросс-внимание на входе и на выходе.

Материалы

➡️

Дальше: LLM-планировщики и VoxPoser. PerAct выполняет одну команду: поставь, открой, поверни. Длинную задачу вроде «приготовь кофе» он на шаги не разложит. В уроке 2.3 большие языковые модели составляют план из навыков робота: SayCan проверяет, что каждый шаг выполним, Code as Policies пишет код политики, а VoxPoser строит карты ценности в сетке вокселей без обучения на задачу — урок 2.3.

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