该存储库包含论文《学习用语言模拟世界》的代码。我们介绍 Dynalang,一种利用多种类型的语言来解决任务的代理,通过多模态世界模型使用语言来预测未来。
欲了解更多信息,请查看:
安装依赖项:
pip install -e .
安装 HomeGrid 环境并使用任务名称( homegrid_task
、 homegrid_future
、 homegrid_dynamics
或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
从 Google Drive 下载预嵌入句子并将pkl
文件放入dynalang/embodied/envs/data
中。
运行 s1、s2 或 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
场景现在应该填充到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
从 Google Drive 下载预嵌入句子并将pkl
文件放入dynalang/embodied/envs/data
中。
运行示例训练脚本:
sh scripts/run_vln.sh EXP_NAME GPU_IDS SEED
LangRoom 必须从langroom
分支运行,该分支包含支持 LangRoom 字典操作空间以同时移动和说话的更改。安装 LangRoom 环境并运行示例训练脚本:
git checkout langroom
pip install langroom
sh run_langroom.sh EXP_NAME GPU_IDS SEED
安装其他依赖项并运行示例训练脚本以在 TinyStories 上进行训练。默认情况下,该脚本使用 Messenger S2 任务的观察和操作空间初始化模型,并在训练时监视重播缓冲区上的丢失。如果您想执行相同的操作,则需要将路径传递到先前 Messenger S2 代理的.../episodes/
目录(包含.npz
块)。
pip install datasets
sh scripts/pretrain_text.sh EXP_NAME GPU_IDS SEED roneneldan/TinyStories /PATH/TO/EVAL/REPLAY/EPISODES
要将预训练的世界模型加载到代理中进行微调,请使用以下标志运行训练脚本( load_wm_ckpt
仅加载世界模型的权重并从头开始初始化代理的其余部分):
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
脚本来加速训练。有关示例,请参阅scripts/run_vln.sh
。此存储库改编自 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},
}