Ce référentiel contient le code de l'article Apprendre à modéliser le monde avec le langage. Nous présentons Dynalang, un agent qui exploite divers types de langage pour résoudre des tâches en utilisant le langage pour prédire l'avenir via un modèle mondial multimodal.
Pour plus d’informations, consultez :
Installer les dépendances :
pip install -e .
Installez l'environnement HomeGrid et exécutez l'exemple de script de formation avec le nom de la tâche ( homegrid_task
, homegrid_future
, homegrid_dynamics
ou homegrid_corrections
) :
pip install homegrid
sh scripts/run_homegrid.sh homegrid_task EXP_NAME GPU_IDS SEED
sudo apt-get install
libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
libsdl1.2-dev libsmpeg-dev subversion libportmidi-dev ffmpeg
libswscale-dev libavformat-dev libavcodec-dev libfreetype6-dev
git clone https://github.com/ahjwang/messenger-emma
pip install -e messenger-emma
Téléchargez les phrases pré-intégrées depuis Google Drive et placez le fichier pkl
dans dynalang/embodied/envs/data
.
Exécutez l'exemple de script de formation pour s1, s2 ou s3 :
sh scripts/run_messenger_s1.sh EXP_NAME GPU_IDS SEED
conda create -n dynalang-vln python=3.8
pip install " jax[cuda11_cudnn82]==0.4.8 " -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install torch torchvision
conda env update -f env_vln.yml
conda install -c aihabitat -c conda-forge habitat-sim=0.1.7 headless
git clone https://github.com/jlin816/VLN-CE VLN_CE
git clone https://github.com/jlin816/habitat-lab habitat_lab
conda create -n py27 python=2.7
conda activate py27
python scripts/download_mp.py --task habitat -o VLN_CE/data/scene_datasets/mp3d/
cd VLN_CE/data/scene_datasets
unzip mp3d/v1/tasks/mp3d_habitat.zip
conda deactivate
Les scènes doivent maintenant être renseignées dans des répertoires sous VLN_CE/data/scene_datasets/mp3d/{scene_dir}/...
.
mkdir -p VLN_CE/data/datasets
cd VLN_CE/data/datasets
gdown https://drive.google.com/uc ? id=1kQ_at68wiK2vAmlWbjJ4EDrLtaM0nfkR
unzip R2R_VLNCE_v1-3_preprocessed.zip
Téléchargez les phrases pré-intégrées depuis Google Drive et placez le fichier pkl
dans dynalang/embodied/envs/data
.
Exécutez l'exemple de script de formation :
sh scripts/run_vln.sh EXP_NAME GPU_IDS SEED
LangRoom doit être exécuté à partir de la branche langroom
, qui contient des modifications pour prendre en charge l'espace d'action du dictionnaire de LangRoom pour se déplacer et parler simultanément. Installez l'environnement LangRoom et exécutez l'exemple de script de formation :
git checkout langroom
pip install langroom
sh run_langroom.sh EXP_NAME GPU_IDS SEED
Installez des dépendances supplémentaires et exécutez l'exemple de script de formation pour vous entraîner sur TinyStories. Par défaut, le script initialise un modèle avec l'espace d'observation et d'action de la tâche Messenger S2 et surveille la perte sur un tampon de relecture pendant l'entraînement. Vous devrez transmettre un chemin vers le répertoire .../episodes/
(contenant les morceaux .npz
) d'un ancien agent Messenger S2 si vous souhaitez faire de même.
pip install datasets
sh scripts/pretrain_text.sh EXP_NAME GPU_IDS SEED roneneldan/TinyStories /PATH/TO/EVAL/REPLAY/EPISODES
Pour charger un modèle mondial pré-entraîné dans un agent à des fins de réglage, exécutez le script d'entraînement avec les indicateurs suivants ( load_wm_ckpt
charge uniquement les poids du modèle mondial et initialise le reste de l'agent à partir de zéro) :
python dynalang/train.py
--load_wm_ckpt True
--run.from_checkpoint /path/to/pretraining/checkpoint.pkl
...
sh run_messenger_s3.sh EXP_NAME 0,1,2,3 SEED --jax.train_devices 0,1,2,3 --jax.policy_devices 0
.parallel
pour accélérer la formation. Voir scripts/run_vln.sh
pour un exemple.Ce dépôt est adapté de DreamerV3.
@article{lin2023learning,
title={Learning to Model the World with Language},
author={Jessy Lin and Yuqing Du and Olivia Watkins and Danijar Hafner and Pieter Abbeel and Dan Klein and Anca Dragan},
year={2023},
eprint={2308.01399},
archivePrefix={arXiv},
}