Este repositorio contiene el código del artículo Learning to Model the World with Language. Presentamos Dynalang, un agente que aprovecha diversos tipos de lenguaje para resolver tareas utilizando el lenguaje para predecir el futuro a través de un modelo mundial multimodal.
Para obtener más información, consulte:
Instalar dependencias:
pip install -e .
Instale el entorno HomeGrid y ejecute el script de entrenamiento de ejemplo con el nombre de la tarea ( homegrid_task
, homegrid_future
, homegrid_dynamics
o 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
Descargue las oraciones preintegradas de Google Drive y coloque el archivo pkl
en dynalang/embodied/envs/data
.
Ejecute el script de entrenamiento de ejemplo para s1, s2 o 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
Las escenas ahora deberían completarse en directorios en 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
Descargue las oraciones preintegradas de Google Drive y coloque el archivo pkl
en dynalang/embodied/envs/data
.
Ejecute el script de entrenamiento de ejemplo:
sh scripts/run_vln.sh EXP_NAME GPU_IDS SEED
LangRoom debe ejecutarse desde la rama langroom
, que contiene cambios para admitir el espacio de acción del diccionario de LangRoom para moverse y hablar simultáneamente. Instale el entorno LangRoom y ejecute el script de entrenamiento de ejemplo:
git checkout langroom
pip install langroom
sh run_langroom.sh EXP_NAME GPU_IDS SEED
Instale dependencias adicionales y ejecute el script de entrenamiento de ejemplo para entrenar en TinyStories. De forma predeterminada, el script inicializa un modelo con el espacio de observación y acción de la tarea de Messenger S2 y monitorea la pérdida en un búfer de reproducción durante el entrenamiento. Deberá pasar una ruta al directorio .../episodes/
(que contiene los fragmentos .npz
) de un agente de Messenger S2 anterior si desea hacer lo mismo.
pip install datasets
sh scripts/pretrain_text.sh EXP_NAME GPU_IDS SEED roneneldan/TinyStories /PATH/TO/EVAL/REPLAY/EPISODES
Para cargar un modelo mundial previamente entrenado en un agente para realizar ajustes, ejecute el script de entrenamiento con las siguientes opciones ( load_wm_ckpt
solo carga los pesos del modelo mundial e inicializa el resto del agente desde cero):
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
para acelerar el entrenamiento. Consulte scripts/run_vln.sh
para ver un ejemplo.Este repositorio está adaptado 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},
}