В этом руководстве мы шаг за шагом рассмотрим использование библиотеки LeRobot от Hugging Face для обучения и оценки политики клонирования поведения на наборе данных PushT.
Настройка среды
1. Установка необходимых зависимостей:
«`
!pip -q install —upgrade lerobot torch torchvision timm imageio[ffmpeg]
«`
2. Импорт модулей:
«`
import os, math, random, io, sys, json, pathlib, time
import torch, torch.nn as nn, torch.nn.functional as F
from torch.utils.data import DataLoader, Subset
from torchvision.utils import makegrid, saveimage
import numpy as np
import imageio.v2 as imageio
«`
3. Настройка среды:
«`
DEVICE = «cuda» if torch.cuda.is_available() else «cpu»
SEED = 42
random.seed(SEED); np.random.seed(SEED); torch.manual_seed(SEED)
«`
Загрузка набора данных
1. Загрузка набора данных PushT:
«`
REPO_ID = «lerobot/pusht»
ds = LeRobotDataset(REPO_ID)
print(«Dataset length:», len(ds))
«`
2. Проверка ключей:
«`
s0 = ds[0]
keys = list(s0.keys())
print(«Sample keys:», keys)
«`
Определение политики
1. Определение политики:
«`
class PushTWrapper(torch.utils.data.Dataset):
# …
«`
2. Создание экземпляра:
«`
wrapped = PushTWrapper(ds)
N = len(wrapped)
idx = list(range(N))
random.shuffle(idx)
n_train = int(0.9*N)
trainidx, validx = idx[:ntrain], idx[ntrain:]
«`
Обучение и оценка
1. Создание загрузчиков данных:
«`
trainloader = DataLoader(trainds, batchsize=BATCH, shuffle=True, numworkers=2, pin_memory=True)
valloader = DataLoader(valds, batchsize=BATCH, shuffle=False, numworkers=2, pin_memory=True)
«`
2. Определение политики:
«`
class SmallBackbone(nn.Module):
# …
«`
3. Обучение:
«`
policy = BCPolicy().to(DEVICE)
opt = torch.optim.AdamW(policy.parameters(), lr=3e-4, weight_decay=1e-4)
# …
for epoch in range(EPOCHS):
# …
«`
Визуализация
1. Визуализация поведения:
«`
policy.loadstatedict(torch.load(ckpt)[«state_dict»]); policy.eval()
# …
frames = []
with torch.no_grad():
for i in range(60):
# …
frames.append(draw_arrow(b[«image»], pred))
«`
В этом руководстве мы рассмотрели, как использовать библиотеку LeRobot для обучения и оценки политики клонирования поведения на наборе данных PushT. Мы определили компактную висомоторную политику, обучили её с помощью AdamW и визуализировали её поведение на кадрах PushT.
Это позволяет нам легко интегрировать обработку данных, определение политики и оценку в единую структуру. Библиотека LeRobot предоставляет практическую отправную точку для изучения робототехники без необходимости использования реального оборудования.
1. Какие основные шаги включает в себя настройка среды для работы с библиотекой LeRobot?
Ответ: настройка среды включает в себя установку необходимых зависимостей с помощью команды `!pip -q install —upgrade lerobot torch torchvision timm imageio[ffmpeg]`, импорт модулей и настройку среды с помощью определения `DEVICE` и `SEED`.
2. Как происходит загрузка набора данных PushT в рамках данного руководства?
Ответ: загрузка набора данных PushT осуществляется с помощью `LeRobotDataset(REPOID)`, где `REPOID` задаётся как `»lerobot/pusht»`.
3. Какие шаги необходимо выполнить для определения и обучения политики в данном руководстве?
Ответ: для определения политики создаётся класс, например, `PushTWrapper`, который наследуется от `torch.utils.data.Dataset`. Затем создаётся экземпляр этого класса, определяется `BATCH`, `DEVICE` и `SEED`, а также `policy`, `opt` и `EPOCHS`. Обучение происходит в цикле `for epoch in range(EPOCHS):`.
4. Какие методы используются для визуализации поведения политики после обучения?
Ответ: после обучения политика визуализируется с помощью метода `draw_arrow(b[«image»], pred)`, который позволяет отобразить поведение политики на кадрах PushT.
5. Какие преимущества предоставляет библиотека LeRobot для изучения робототехники?
Ответ: библиотека LeRobot предоставляет практическую отправную точку для изучения робототехники без необходимости использования реального оборудования, что упрощает интеграцию обработки данных, определения политики и оценки в единую структуру.