Этот репозиторий содержит код статьи «Учимся моделировать мир с помощью языка». Мы представляем 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 Диска и поместите файл 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 Диска и поместите файл 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 и отслеживает потери в буфере воспроизведения во время обучения. Вам нужно будет передать путь к каталогу .../episodes/
(содержащему фрагменты .npz
) предыдущего агента Messenger S2, если вы хотите сделать то же самое.
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},
}