metaworld

Par mkurman · zorai

npx skills add https://github.com/mkurman/zorai --skill metaworld

name: metaworld description: Benchmark de robotique pour l'apprentissage multi-tâche et méta-renforcement (Meta-World). Benchmark standardisé de contrôle continu construit sur Gymnasium avec les suites multi-tâche MT1, MT10, MT50 et les suites méta-apprentissage ML1, ML10, ML45. Supporte l'exécution vectorisée synchrone et asynchrone. À utiliser pour l'évaluation de la manipulation robotique, l'apprentissage par renforcement multi-tâche, l'adaptation méta-RL et l'évaluation de la généralisation entre tâches et objectifs. license: MIT license tags: [robotic-manipulation, multi-task-rl, meta-rl, continuous-control, metaworld] metadata: skill-author: K-Dense Inc. --------|---------|------| | MT1 | Apprentissage multi-tâche sur une famille de tâches sélectionnée | 1 tâche | | MT10 | Apprentissage multi-tâche sur 10 tâches de manipulation | 10 tâches | | MT50 | Benchmark multi-tâche large | 50 tâches | | ML1-train/test | Méta-apprentissage avec variation d'objectif dans une famille de tâches | 1 famille | | ML10-train/test | Méta-apprentissage avec séparation train/test entre tâches | 10 train + 5 test | | ML45-train/test | Séparation méta-apprentissage à grande échelle | 45 train + 5 test |

4. Benchmarks multi-tâche

MT1:

import gymnasium as gym
import metaworld

env = gym.make("Meta-World/MT1", env_name="reach-v3", seed=42)
obs, info = env.reset()
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)

MT10 vectorisé synchrone:

import gymnasium as gym
import metaworld

envs = gym.make_vec("Meta-World/MT10", vector_strategy="sync", seed=42)
obs, info = envs.reset()
actions = envs.action_space.sample()
obs, rewards, terminations, truncations, infos = envs.step(actions)

MT10 vectorisé asynchrone:

envs = gym.make_vec("Meta-World/MT10", vector_strategy="async", seed=42)

MT50:

envs = gym.make_vec("Meta-World/MT50", vector_strategy="sync", seed=42)

5. Benchmarks méta-apprentissage

ML1:

import gymnasium as gym
import metaworld

train_env = gym.make("Meta-World/ML1-train", env_name="reach-v3", seed=42)
test_env = gym.make("Meta-World/ML1-test", env_name="reach-v3", seed=42)

ML10 / ML45:

train_envs = gym.make_vec("Meta-World/ML10-train", vector_strategy="sync", seed=42)
test_envs = gym.make_vec("Meta-World/ML10-test", vector_strategy="sync", seed=42)

train_envs = gym.make_vec("Meta-World/ML45-train", vector_strategy="async", seed=42)
test_envs = gym.make_vec("Meta-World/ML45-test", vector_strategy="async", seed=42)

6. Benchmarks personnalisés

Créez votre propre benchmark multi-tâche ou méta-apprentissage :

import gymnasium as gym
import metaworld

envs = gym.make_vec(
    "Meta-World/custom-mt-envs",
    vector_strategy="sync",
    envs_list=["reach-v3", "push-v3", "drawer-open-v3"],
    seed=42,
)

meta_envs = gym.make_vec(
    "Meta-World/custom-ml-envs",
    vector_strategy="async",
    envs_list=["reach-v3", "push-v3", "window-open-v3"],
    seed=42,
)

7. Sémantique des observations

  • Les environnements multi-tâche ajoutent des identifiants de tâche one-hot pour les politiques conditionnées par tâche.
  • Les environnements méta-apprentissage sont partiellement observables pour forcer l'adaptation.
  • Les espaces d'action sont à contrôle continu, adaptés aux algorithmes de type PPO/SAC/TD3.

8. Motifs d'entraînement typiques

SAC / PPO mono-tâche:

env = gym.make("Meta-World/MT1", env_name="drawer-open-v3")
# Entraîner avec SAC/PPO Stable-Baselines3 ou PPO continu CleanRL

Politique multi-tâche conditionnée par tâche:

envs = gym.make_vec("Meta-World/MT10", vector_strategy="sync")
# Utiliser un réseau de politique avec l'ID de tâche ajouté à l'observation
# L'approche commune est un backbone partagé + têtes policy/value conditionnées par tâche

Boucle méta-RL:

# Entraîner sur ML10-train, évaluer l'adaptation rapide sur ML10-test
# Mesurer la récompense après K épisodes/étapes de gradient d'adaptation

9. Recommandations d'évaluation

  • Rapportez le taux de succès moyen et le rendement moyen, pas seulement la récompense.
  • Séparez les performances des tâches d'entraînement et des tâches test hors-distribution pour la méta-RL.
  • Fixez les seeds et la version du benchmark pour la comparabilité.
  • Utilisez le mode sync pour une utilisation réduite des ressources ; async pour un meilleur débit.
  • Documentez les sous-ensembles de tâches si vous utilisez des benchmarks personnalisés.

10. Notes d'intégration

  • L'API suit Gymnasium exactement.
  • Fonctionne naturellement avec les algorithmes SB3 à contrôle continu et les boucles PyTorch personnalisées.
  • Souvent associé à SAC, PPO, PEARL, méta-RL de type MAML et transformers conditionnés par tâche.

Motifs clés

  1. Utilisez MT10/MT50 pour le RL multi-tâche et ML10/ML45 pour la méta-RL.
  2. Les IDs de tâche dans les benchmarks MT sont importants — exploitez-les dans votre architecture de politique.
  3. Les benchmarks méta-apprentissage nécessitent des environnements train/test séparés par conception.
  4. La vectorisation asynchrone améliore le débit mais augmente la surcharge des processus.
  5. Les sous-ensembles de benchmark personnalisés sont précieux pour des ablations ciblées.

Références

Skills similaires