該儲存庫包含論文《學習用語言模擬世界》的程式碼。我們介紹 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},
}