Comienza con modelos mundiales para el aprendizaje de robots: una guía práctica
Guía paso a paso para entrenar modelos del mundo de la robótica. cubre requisitos previos, preparación de datos, entrenamiento, evaluación y implementación de Dreamer v3. Incluye ejemplos de código, errores comunes y preguntas frecuentes.
Por Jerry Huang · 22 de abril de 2026
Esta es una guía práctica para entrenar a su primer modelo mundial para una tarea robótica. Recorremos el proceso completo: elegir un modelo, preparar datos, entrenar, evaluar la calidad de la imaginación y usar el modelo entrenado para la planificación o la mejora de las políticas. Todos los ejemplos de código utilizan Dreamer v3 como ejemplo principal, con notas sobre las alternativas TD-MPC2 e IRIS donde difieren.
Pre-requisitos
Hardware
- ** GPU:** NVIDIA RTX 3090, RTX 4090, o A100. Dreamer v3 y TD-MPC2 se ejecutan en una sola GPU de consumo. Requisito de VRAM: 12 GB mínimo para tareas basadas en estado, 24 GB recomendados para tareas basadas en visión con imágenes 64x64. Para 256x256 imágenes, necesita 24 GB + VRAM.
- ** CPU/RAM:** 8+ núcleos, 32GB+ RAM. La carga de datos está ligada a la CPU para grandes conjuntos de datos con observaciones de imágenes. Se recomienda encarecidamente el almacenamiento SSD NVMe - la carga de datos basada en HDD dificultará el entrenamiento.
- Robot (opcional para los experimentos iniciales): Puede comenzar con entornos de simulación (DMControl, Meta-World, Robosuite) que no requieren hardware físico. Cuando esté listo para experimentos de robots reales, cualquier brazo con control de posición/velocidad y al menos una cámara funcionará.
Software
- Python 3.10+
- JAX con CUDA (para Dreamer v3) o PyTorch 2.0+ (para TD-MPC2, IRIS)
- Gimnasio (anteriormente OpenAI Gym) para entornos de simulación
- Peso y sesgos (opcional pero recomendado para el seguimiento de experimentos)
Datos
Necesitas datos de trayectoria: secuencias de (observación, acción, recompensa, hecho) tuples grabados desde tu robot o entorno de simulación. Para experimentos iniciales, utiliza un conjunto de datos preexistente o recopila datos de un entorno de simulación. Para modelos del mundo de robots reales, necesitas 50-500 episodios dependiendo de la complejidad de la tarea. Ver [nuestra visión general de modelos mundiales]
Paso 1: Elige el modelo que quieres
Utilice este árbol de decisión para elegir el punto de partida adecuado para su proyecto:
¿Qué modelo mundial?
P1: ¿Es su espacio de acción continuo?
- Sí -> Ir a la Q2
- No (acciones discretas) -> Considere IRIS (sostenimiento discretos nativos) o Dreamer v3 (también soporta discretos)
P2: ¿Necesita cambiar la recompensa/objetivo en el momento de su despliegue?
- Sí -> Utilice TD-MPC2 (planamiento en línea con recompensa flexible)
- No -> Ir a la Q3
**P3: ¿Necesitas la mayor iteración de entrenamiento posible? **
- Sí -> Utilice TD-MPC2 (2-12 horas de entrenamiento en una GPU única)
- No -> Ir a la Q4
P4: ¿Su tarea requiere planificar 15 pasos más adelante?
- Sí -> Utilice Dreamer v3 (horizonte de imaginación largo con RSSM)
- No -> O Dreamer v3 o TD-MPC2 funcionará. Dreamer v3 es el estándar más seguro.
Para el resto de esta guía, usamos Dreamer v3 como el ejemplo principal porque es el más amplio.
Paso 2: Prepara tus datos
Formatos de episodios
Dreamer v3 espera que los datos sean un directorio de archivos NPZ, uno por episodio.
Import numpy como np # Ejemplo: guardar un episodio con 200 pasos de tiempo episodio = { # Observaciones visuales: (T, H, W, C), uint8, 0-255 'imagen': np.random.randint(0, 255, (200, 64, 64, 3), dtype=np.uint8), # estado propioceptivo: (T, estado_dim), float32 # por ejemplo, 7 posiciones conjuntas + 7 velocidades conjuntas + 1 estado de agarre: np.random.randn(200, 15).
Estructura de observación
Decisiones clave para la representación de las observaciones:
- Resolución de imagen: Comience con 64x64. Esto es suficiente para la mayoría de las tareas de manipulación de mesa y entra 4 veces más rápido que 128x128. Sólo aumenta la resolución si observa que el modelo no puede distinguir detalles visuales relevantes para la tarea (por ejemplo, objetos pequeños, orientaciones finas) en 64x64.
- ** Número de cámaras:** Comience con una (en la cabeza o montada en la muñeca). Las configuraciones de múltiples cámaras mejoran el rendimiento, pero duplican el tamaño de datos y el tiempo de entrenamiento por cámara adicional.
- Propriocepción: Siempre incluye posiciones articulares, velocidades articulares y estado de agarre. Estos proporcionan información precisa del estado que complementa las observaciones visuales ruidosas. Normaliza cada dimensión a aproximadamente cero media y variación unitaria.
- ** Historial:** RSSM de Dreamer v3 maneja el historial internamente a través del estado recurrente. No es necesario apilar los marcos o proporcionar el historial de observación - sólo la observación del paso temporal actual.
Normalización de las acciones
Los tres modelos mundiales esperan acciones en un rango estandarizado:
import numpy como np def normaliza_acciones(acciones, acción_low, acción_high): """Convertir [-1, 1] acciones a [-1] rango. """ punto medio = (acción_high + acción_low) / 2.0 medio_range = (acción_high - acción_low) / 2.0 retorno (acciones - punto medio) / medio_range def denormaliza_acciones(normalizada_acciones, acción_low, acción_high): ""Convertir [1] acciones de nuevo al rango original. """ punto medio = (acción_high + acción_low) / 2.0 medio_range = (\_high - action_low) / 2.0 medio_range = (\_high - action_low) / 2.0 medio_range retorno _acciones * _acciones * medio_range: \\range: \\range: \range: \range: \range: \range:
Dreamer v3 recoge acciones a [-1, 1] internamente. Si sus acciones en bruto ya están en este rango, no se necesita normalización. TD-MPC2 también espera acciones normalizadas. IRIS discrete las acciones en contenedores, por lo que la normalización se maneja por el esquema de contenedores.
Convertir desde el formato LeRobot
Si sus datos están en HuggingFace LeRobot formato, utilice este script de conversión:
El modelo de imagen de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de datos de la serie de la serie de datos de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la serie de la serie de la serie de datos de la
Paso 3: Tren
Instalar el Dreamer v3
# Instalar JAX con CUDA soporte pip instalar --actualizar "jax[cuda12]" jaxlib # Clone Dreamer v3 git clone
Configuración
Crear un archivo de configuración para su tarea robot personalizada. Dreamer v3 utiliza configuraciones YAML con valores predeterminados sensatos que usted anula:
# config/robot_manipulation.yaml # Datos de datos_dir: /path/to/dreamer_episodes/ replay_size: 1e6 # Replay buffer size in transitions batch_size: 16 # Batch size for training batch_length: 50 # Subsecuencia de duración para el entrenamiento # World model rssm: deter: 4096 # Deterministic state size (GRU hidden) stock: 32 # Number of categorical variables classes: 32 # Clases per categorical variable units: 1024 # MLP hidden unit encoder: mlp_keys: 'state' # Which observation keys use MLP encoder cnn_keys: 'image' # Which observation keys use every cnn_depth: 48 # Action keys: Every cnn_depth: 48 # Action keys: CNN: #continue\\keys: 3\\keys: 3\keys: 3\keys: 4\keys: Nmn: 4\keys: 5\keys: 5\key:
La formación para el lanzamiento
# Entrenamiento desde datos fuera de línea python dreamerv3/main.py \ --configuras por defecto \ --config config/robot_manipulation.yaml \ --logdir ./logdir/robot_v1 \ --steps 1000000 # Monitorear con TensorBoard tensorboard --logdir ./logdir/robot_v1
TD-MPC2 alternativa:
# Instalar pip instalar tdmpc2 # Entrenamiento en sus datos (formato HDF5) python train.py \ task=custom \ data_dir=/path/to/hdf5_episodes/ \ modelo_size=19 \ pasos=500000 \ lote_size=256
Qué observar durante la formación
Monitorear estas métricas en TensorBoard o W&B:
- Pérdida de reconstrucción de imagen (decodificador_imagen): Debe disminuir constantemente. Si es alto, la capacidad de codificador/decodificador es insuficiente - aumentar la profundidad.
- Diverencia KL (kl_loss): Debería converger a un valor moderado (normalmente 1-10 nats). Si cae a cerca de cero, el modelo está ignorando el latente estocástico - aumentar los bits libres KL o disminuir la escala KL. Si es muy alta (> 50), el modelo dinámico está luchando para predecir el posterior - la tarea puede necesitar más pasos de entrenamiento.
- Perdida de predicción de recompensas (decoder_reward): Debería disminuir, especialmente para tareas con recompensas escasas donde el modelo necesita aprender qué estados son terminales/exitosos.
- Perdida de actores y críticos: Estos deben disminuir con el tiempo. Si la pérdida de actores es irregular, los despliegues de imaginación pueden ser poco confiables - comprobar las pérdidas del modelo mundial primero.
- Retorno imaginado: El retorno promedio de las trayectorias imaginadas mediante la implementación del actor en el modelo mundial. Debe aumentar a medida que mejora la política. Si aumenta rápidamente pero el rendimiento real de la evaluación no mejora, la política puede estar explotando las inexactitudes del modelo mundial.
Paso 4: Evalúa
La calidad del desarrollo de la imaginación
La forma más directa de evaluar su modelo de mundo es visualizar los despliegues imaginados y compararlos con la realidad. Dado un episodio real, codifique la primera observación, luego despliegue el modelo de mundo utilizando las acciones grabadas y decodifique las observaciones previstas:
Importar numpy como np de dramerv3 import Agent # Cargar agente entrenado agente = Agent.load.('./logdir/robot_v1/checkpoint.pkl') # Cargar un episodio de prueba prolongado episodio = np.load('test_episodes/episode_050.npz') real_images = episodio'image'] # (T, 64, 64, 3) real_actions = episodio'action'] # (T, action_dim) # Encode = {'image': real_images[0:1], 'agesagesagesages': real_images'[0:1] latent = agent.world_model.tode) #images en el imaginario (t, 64, 64, 3) real_actions = episode'action'\) # (T, action_dim) # (T, action_dim) # Encode = {'image': real_images[0:1], 'imagesagesagesagesagesagesagesages: real'\
Metricas cuantitativas
| Metric | What It Measures | Good Value | Horizon |
|---|---|---|---|
| Reconstruction MSE | Pixel-level prediction accuracy | < 0.01 (normalized) | 1-step |
| SSIM | Structural visual similarity | > 0.85 at step 10, > 0.7 at step 50 | Multi-step |
| Reward prediction accuracy | Can the model predict task success? | > 90% binary classification | Episodio-level |
| State prediction error | Latent state divergence from ground truth | Task-dependent | Multi-step |
| Policy success rate (in imagination) | Does the learned policy solve the task in the world model? | > 80% | Episodio-level |
| Policy success rate (real robot) | Does the policy actually work? | Task-dependent (gap with imagined rate indicates model error) | Episodio-level |
La evaluación más importante es la brecha entre la tasa de éxito imaginada y la tasa de éxito real. Si la política tiene éxito en el 95% en la imaginación pero sólo en el 40% en el robot real, el modelo mundial tiene inexactitudes significativas que la política está explotando.
Paso 5: Utilización para la planificación o mejora de políticas
Opción A: Implementar la política aprendida (Sueñador)
La red de actores de Dreamer es una política reactiva: dado el estado latente actual, produce una acción en ~ 1 ms. Esta es la ruta de despliegue más simple.
# Bucle de despliegue (simplificado) agente = Agent.load('./logdir/robot_v1/checkpoint.pkl') latente = Ninguno mientras no se ha hecho: obs = get_robot_observation() # {'imagen': ..., 'estado': ...} # Encode observación y obtener acción de actor latente, acción = agente.política(obes, latente) # Denormalizar y enviar al robot raw_action = denormalizar_actionsaction, acción_low, acción_high) enviar_to_robot(raw_action) time.sleep(1.0 / control_frequency) # por ejemplo, 10Hz
Opción B: Modelo de control predictivo con TD-MPC2
TD-MPC2 utiliza el modelo mundial directamente para la planificación en línea a través de MPPI. Esto es más intensivo en computación, pero permite cambiar el objetivo en el tiempo de ejecución.
# TD-MPC2 deployment loop (simplificado) de tdmpc2 importar TDMPC2 agente = TDMPC2.load('./checkpoints/tdmpc2_robot.pt') mientras no se realiza: obs = get_robot_observation() # MPPI planning: muestras 512 secuencias de acción, puntajes a través del modelo mundial de acción = agent.act(obs, eval_mode=True) enviar_to_robot(denormalize_actions(action, action_low, action_high)) tiempo.sleep(1.0 / control_frecuencia)
Opción C: Modelo mundial como aumento de datos
Utilice el modelo del mundo entrenado para generar episodios sintéticos para entrenar una política de difusión en aguas subterráneas o VLA. Este es el enfoque de menor riesgo - el modelo mundial se utiliza fuera de línea, no en el bucle de control.
Importar numpy como np de dramerv3 importar agente agente = Agent.load. . ./logdir/robot_v1/checkpoint.pkl') def generate_synthetic_episode: \\steps: \\start\\\start\\episode: \starter\\start\\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample: \starter\sample
Errores comunes
1. Demasiados datos
Los equipos recopilan 20 a 50 episodios, entrenan un modelo mundial, lo encuentran inexacto y concluyen que los modelos mundiales no funcionan para su tarea. Si no puede recopilar tantos, utilice TD-MPC2 (que es más eficiente en la planificación en línea) en lugar de Dreamer.
2. Modalidad de observación errónea
El modelo mundial tiene que aprender la cinemática robótica solo a partir de píxeles, lo que requiere mucho más datos que proporcionar estados conjuntos directamente. Por el contrario, usar solo la propriocepción cuando la tarea requiere razonamiento sobre posiciones o orientaciones de objetos que no se capturan en el estado del robot, en este caso, necesitas imágenes.
3. Insuficiencia de la diversidad de episodios
Un conjunto de datos en el que cada episodio comienza con el objeto en la misma posición enseña al modelo mundial una pequeña rebanada del espacio de estado. Al mismo tiempo, el equipo de detección de datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de los datos de
4. Frecuencia de control no igualada
Los datos de entrenamiento registrados a 30Hz pero que implementan la política a 10Hz (o viceversa). El modelo mundial aprende la dinámica a la resolución temporal de los datos. Si se entrenan a 30Hz, cada acción produce un pequeño cambio de estado. Si debe cambiar la frecuencia, recoge datos en la frecuencia objetivo.
5. Ignorando la señal de recompensa
Para tareas con recompensas escasas (éxito/fallo al final del episodio), el predictor de recompensa necesita suficientes ejemplos positivos para aprender. Si solo el 10% de sus episodios son exitosos, el modelo puede nunca aprender a predecir recompensas con precisión. O bien (a) recoger demostraciones más exitosas, (b) añadir formaciones intermedias de recompensas, o (c) utilizar el modelo mundial sólo para la dinámica (amplificación de datos) en lugar de la optimización de políticas.
6. Entrenamiento demasiado largo sin evaluación
Las pérdidas de entrenamiento de modelos mundiales pueden seguir disminuyendo mientras el rendimiento de la política real se estagne o degrada (superajuste al buffer de repetición).
Dónde obtener datos de formación
Servicios de datos del RCSV
El servicio de recogida de datos gestionado de RCSV produce conjuntos de datos optimizados para el entrenamiento de modelos mundiales. Los episodios se registran a 50Hz fijos con sincronización marcada por hardware, RGB multi-visión, propriocepción calibrada y variación estructurada en las condiciones iniciales. Los conjuntos de datos se entregan en formato NPZ compatible con Dreamer, formato TD-MPC2 HDF5 o formato LeRobot Parquet según sus preferencias.
Para los proyectos de modelos mundiales específicamente, ofrecemos un protocolo de recopilación de "dinámica de diversidad" que maximiza la cobertura del espacio de estado: los episodios incluyen tanto completos de tareas exitosos como fracasados, estrategias de enfoque variadas, recuperación de perturbaciones y escenarios de ventaja. Esto produce modelos mundiales con una cobertura más amplia que los conjuntos de datos de éxito. Las campañas piloto comienzan en $2,500 por 200 episodios; [contáctenos]
Abre conjuntos de datos
| Dataset | Episodes | Robots | Observations | Modelo del Mundo Suitability |
|---|---|---|---|---|
| DROID | 76K | Franka Panda | Multi-view RGB, proprio, language | Excellent -- large, diverse, multi-task |
| Bridge V2 | 60K | WidowX | Single RGB, proprio, language | Good -- diverse tasks, single viewpoint |
| Open X-Embodiment | 1M+ | 22 robot types | Varies by sub-dataset | Good for pre-training foundation world models |
| RoboTurk | 2.1K | Sawyer | RGB, proprio | Fair -- smaller scale, good for initial testing |
| RCSV Public Datasets | Varies | UR5e, Franka, ALOHA | Multi-view RGB, proprio, F/T | Good -- pre-formatted for Dreamer/TD-MPC2 |
Para el entrenamiento previo de un modelo de mundo de propósito general, comience con Open X-Embodiment o DROID, luego sintonice los datos de su robot y tarea específica. Para modelos de mundo específicos de tareas sin entrenamiento previo, DROID o Bridge V2 filtrado a tareas de manipulación similares a las suyas proporciona un buen punto de partida.
Preguntas frecuentes
¿Cuántos datos necesito para entrenar un modelo mundial para mi robot?
Para una sola tarea de manipulación con Dreamer v3 o TD-MPC2, necesita un mínimo de 50-200 episodios (10K-50K transiciones). Para un rendimiento de implementación robusto con variación de posición de objeto, presupuesta 300-500 episodios. IRIS requiere 2-3 veces más debido a la capacitación general del tokenizer VQ-VAE. La calidad y la diversidad son más importantes que el volumen bruto - 200 episodios diversos superan a 1000 casi idénticos.
¿Puedo entrenar un modelo mundial en una GPU de un solo consumidor?
Sí. Dreamer v3 y TD-MPC2 entrenan en un solo RTX 3090 o RTX 4090. Los tiempos de entrenamiento van desde 2 a 24 horas dependiendo del tamaño del conjunto de datos y la configuración del modelo. IRIS es más intensivo en computación (12 a 48 horas en una sola GPU).
¿Cuál es la diferencia entre un modelo mundial y un simulador como MuJoCo o Isaac Sim?
Un simulador de física implementa ecuaciones de movimiento diseñadas a mano (dinámica de cuerpo rígido, modelos de contacto, conos de fricción). Un modelo mundial aprende dinámica a partir de datos. El simulador es preciso para cuerpos rígidos, pero lucha con objetos deformables, cables, líquidos y ruido de sensores. El modelo mundial capta cualquier dinámica presente en sus datos de entrenamiento, incluidos fenómenos que son difíciles de simular analíticamente.
¿Debería usar un modelo mundial o una política de difusión?
Un modelo mundial aprende la dinámica ambiental para la planificación y el aumento de datos. Una política de difusión es una política de control que genera acciones a partir de observaciones. Si debe elegir uno, utilice una [política de difusión]
¿Cómo sé si mi modelo de mundo es lo suficientemente preciso para su despliegue?
Evaluar las trayectorias del mundo real que se han realizado. Encodizar la observación inicial, implementar el modelo del mundo utilizando las acciones registradas y comparar las observaciones previstas con las observaciones registradas reales. Metricas clave: reconstrucción MSE, SSIM para la calidad visual, precisión de predicción de recompensa y error de predicción de estado en el horizonte 10/20/50. Si las implementaciones imaginadas divergen visiblemente de la realidad dentro de la duración típica de los episodios de su tarea, el modelo necesita más datos o cambios arquitectónicos.
¿Puedo ajustar un modelo de mundo pre-entrenado a los datos de mi robot?
Sí, y este es el enfoque cada vez más recomendado. Para Dreamer v3 y TD-MPC2, se puede iniciar desde un punto de control entrenado en datos de simulación (por ejemplo, de MuJoCo o Isaac Sim) y ajustar a los datos reales de robots. Esto normalmente requiere de 50-100 episodios reales para adaptar el modelo dinámico a la física del mundo real, en comparación con 200-500 episodios cuando se entrenan desde cero. Modelos de mundo de la fundación como Genie están explícitamente diseñados para este paradigma pre-treino-entonces-fina-tune.
Lectura relacionada
- [Modelos mundiales para la robótica: por qué importan]
- Dreamer vs IRIS vs TD-MPC2 -- Comparación detallada de la arquitectura
- [Política de difusión para el aprendizaje de robots]
T8 ) -- Arquitectura complementaria de las políticas - Guía marco de LeRobot -- Formatos de conjunto de datos y marco de formación
- [¿Qué es los datos de entrenamiento de robots?]
- Servicios de datos del RCSV -- Recopilación de datos personalizada para la formación de modelos mundiales
- [Datos públicos]
T12 ) -- Datos preformatados listos para la formación







