Configuración y solución de problemas para el proyecto Text2Reward

Guía técnica para Text2Reward

Configuración del entorno

Para iniciar, crea un entorno Conda con Python 3.8:

conda create -n entorno_rl python=3.8
conda activate entorno_rl

Instala las dependencias necesarias, incluyendo PyTorch y las bibliotecas específicas del proyecto:

pip install torch==1.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
pip install -e ./ManiSkill2

Resuelve problemas comunes de instalación con wheel:

pip install "wheel<0.40"

Descarga de recursos y datos

Configura el directorio de assets y descarga los datos de las tareas:

export MS2_ASSET_DIR=./datos_ms2
python -m mani_skill2.utils.download_asset OpenCabinetDoor-v1 -y

Generación de código de recompensa

Para generar nuevas funciones de recompensa, configura un segundo entorno:

conda create -n generador_rl python=3.8
conda activate generador_rl
pip install transformers

Asegúrate de establecer la variable de entorno OPENAI_API_KEY para el acceso a la API.

Monitoreo y registro

El proyecto soporta el registro de métricas de entrenamiento mediante TensorBoard y Weights & Biases (Wandb).

Solución de problemas comunes

Error de libGL.so.1

Si encuentras un error relacionado con libGL.so.1, instala las dependencias de OpenGL:

sudo apt-get update && sudo apt-get install -y libgl1

Error de libvulkan.so.1

Para resolver errores con Vulkan, ejecuta:

sudo apt-get install -y libvulkan1

Error de GL/glew.h

Este error indica falta de GLEW. Instala los paquetes necesarios:

sudo apt-get install libglew-dev libosmesa6-dev

Error de patchelf

Instala patchelf para corregir problemas de enlace dinámico:

conda install patchelf

Errores relacionados con CUDA

Problemas como CUBLAS_STATUS_NOT_INITIALIZED pueden deberse a controladores de GPU o configuraciones incorrectas. Verifica la instalación de NVIDIA drivers.

Errores de conexión con OpenAI API

Asegúrate de que la clave API sea válida y que haya conectividad a inetrnet. Reinicia la sesión si es necesario.

Archivos clave del proyecto

ppo.py

Este script implementa el entrenamiento PPO con soporte para funciones de recompensa personalizadas. La clase TaskWrapper extiende gym.Wrapper para agregar límites de pasos y lógica de recompensa densa.

Parámetros importantes:

  • reward_path: Ruta a un script Python que define una función calculate_dense_reward para sobrescribir la recompensa por defecto.

Métodos de TaskWrapper:

  • reset(): Reinicia el contador de pasos y devuelve la observación inicial.
  • step(action): Ejecuta una acción, devuelve la observación, recompensa, estado de terminación e información. La recompensa se calcula usando la función inyectada si está disponible.

zero_shot_exp.py

Script para experimentos de generación de código de recompensa en modo zero-shot. Utiliza modelos de lenguaje grandes (LLMs) como GPT-4 para producir funciones de recompensa a partir de descripciones en lenguaje natural.

Clase principal: RewardCodeGenerator

class RewardCodeGenerator:
    def __init__(self, template, model_name="gpt-4", **params):
        # Inicializa el generador con un template de prompt y modelo específico
        self.template = template
        self.model_name = model_name
        self.params = params

El método generate(instruction, mapping_dict) toma una instrucción textual y un diccionario de mapeo para producir código genérico y específico para el entorno.

Tareas soportadas

El proyecto incluye tareas para robots como Franka Panda y robots móviles, por ejemplo:

  • LiftCube-v0: Levantar un cubo.
  • OpenCabinetDoor-v1: Abrir una puerta de armario.

Estas tareas usan abstracciones de entorno ficticias para la generación de código, como tipos RigidObject o ArticulatedObject que no existen en el código base real.

Etiquetas: Text2Reward Reinforcement Learning Conda OpenAI API ManiSkill2

Publicado el 6-2 18:24