Shalev Lifshitz*, Keiran Paster*, Harris Chan†, Jimmy Ba, Sheila McIlraith
Page du projet | ArXiv | PDF
Construire des modèles d’IA qui répondent aux instructions textuelles est un défi, en particulier pour les tâches de prise de décision séquentielle. Ce travail présente une méthodologie, inspirée de unCLIP, pour ajuster les modèles de comportement génératifs sans s'appuyer sur un vaste ensemble de données de trajectoires étiquetées par des instructions. En utilisant cette méthodologie, nous créons un modèle de pré-entraînement vidéo (VPT) adapté aux instructions appelé STEVE-1, qui peut suivre du texte ouvert à court terme et des instructions visuelles dans Minecraft™. STEVE-1 est formé en deux étapes : adapter le modèle VPT pré-entraîné pour suivre les commandes dans l'espace latent de MineCLIP, puis entraîner un avant pour prédire les codes latents à partir du texte. Cela nous permet d'affiner le VPT grâce au clonage comportemental auto-supervisé et au réétiquetage a posteriori, réduisant ainsi le besoin d'annotations de texte humaines coûteuses, et le tout pour seulement 60 $ de calcul. En tirant parti de modèles pré-entraînés tels que VPT et MineCLIP et en employant les meilleures pratiques de génération d'images conditionnées par du texte, STEVE-1 établit une nouvelle barre pour le suivi d'instructions ouvert dans Minecraft avec des commandes de bas niveau (souris et clavier) et des entrées de pixels brutes, surpassant de loin les références précédentes et accomplissant avec robustesse 12 des 13 tâches de notre suite d’évaluation de début de partie. Nous fournissons des preuves expérimentales mettant en évidence les facteurs clés de la performance en aval, notamment la pré-formation, le guidage sans classificateur et la mise à l'échelle des données. Toutes les ressources, y compris nos poids de modèle, nos scripts de formation et nos outils d'évaluation, sont mis à disposition pour des recherches plus approfondies.
.
├── README.md
├── steve1
│ ├── All agent, dataset, and training code.
├── run_agent
│ ├── Scripts for running the agent.
├── train
│ ├── Script for training the agent and generating the dataset.
Nous recommandons d'exécuter sous Linux en utilisant un environnement conda, avec python 3.10.
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
pip install minedojo git+https://github.com/MineDojo/MineCLIP
pip install git+https://github.com/minerllabs/[email protected]
pip install gym==0.19 gym3 attrs opencv-python
pip install gdown tqdm accelerate==0.18.0 wandb
steve1
localement avec : pip install -e .
Si vous utilisez un serveur sans tête, vous devez installer xvfb
et exécuter chaque script python avec xvfb-run
. Par exemple, xvfb-run python script_name.py
.
Notez également que nous utilisons l'environnement MineRL, et non l'environnement MineDojo. Ainsi, définir MINEDOJO_HEADLESS=1
comme mentionné dans les instructions « Installation de MineDojo » n'aura aucun effet.
Exécutez la commande suivante pour télécharger les données et les pondérations :
. download_weights.sh
Pour entraîner STEVE-1 à partir de zéro, veuillez exécuter les étapes suivantes :
. train/1_generate_dataset.sh
. train/2_create_sampling.sh
. train/3_train.sh
. train/4_train_prior.sh
Nous avons fourni deux scripts pour tester l'agent avec des invites différentes. Pour tester vos propres agents formés, veuillez modifier l'argument --in_weights
dans les scripts.
. run_agent/1_gen_paper_videos.sh
pour générer les vidéos utilisées dans l'article.. run_agent/2_gen_vid_for_text_prompt.sh
pour générer des vidéos pour des invites de texte arbitraires.. run_agent/3_run_interactive_session.sh
pour démarrer une session interactive avec STEVE-1. Cela ne fonctionnera pas en mode sans tête. Veuillez citer notre article si vous trouvez STEVE-1 utile pour votre recherche :
@article{lifshitz2023steve1,
title={STEVE-1: A Generative Model for Text-to-Behavior in Minecraft},
author={Shalev Lifshitz and Keiran Paster and Harris Chan and Jimmy Ba and Sheila McIlraith},
year={2023},
eprint={2306.00937},
archivePrefix={arXiv},
primaryClass={cs.LG}
}