Dieses Repository enthält den Code für den Artikel „Learning to Model the World with Language“. Wir stellen Dynalang vor, einen Agenten, der verschiedene Arten von Sprache nutzt, um Aufgaben zu lösen, indem er mithilfe von Sprache die Zukunft über ein multimodales Weltmodell vorhersagt.
Weitere Informationen finden Sie unter:
Abhängigkeiten installieren:
pip install -e .
Installieren Sie die HomeGrid-Umgebung und führen Sie das Beispiel-Trainingsskript mit dem Aufgabennamen ( homegrid_task
, homegrid_future
, homegrid_dynamics
oder homegrid_corrections
) aus:
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
Laden Sie die vorab eingebetteten Sätze von Google Drive herunter und platzieren Sie die pkl
Datei in dynalang/embodied/envs/data
.
Führen Sie das Beispieltrainingsskript für s1, s2 oder s3 aus:
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
Szenen sollten jetzt in Verzeichnissen unter VLN_CE/data/scene_datasets/mp3d/{scene_dir}/...
abgelegt werden.
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
Laden Sie die vorab eingebetteten Sätze von Google Drive herunter und platzieren Sie die pkl
Datei in dynalang/embodied/envs/data
.
Führen Sie das Beispiel-Trainingsskript aus:
sh scripts/run_vln.sh EXP_NAME GPU_IDS SEED
LangRoom muss über den langroom
-Zweig ausgeführt werden, der Änderungen zur Unterstützung des Wörterbuch-Aktionsraums von LangRoom zum gleichzeitigen Bewegen und Sprechen enthält. Installieren Sie die LangRoom-Umgebung und führen Sie das Beispiel-Trainingsskript aus:
git checkout langroom
pip install langroom
sh run_langroom.sh EXP_NAME GPU_IDS SEED
Installieren Sie zusätzliche Abhängigkeiten und führen Sie das Beispiel-Trainingsskript aus, um auf TinyStories zu trainieren. Standardmäßig initialisiert das Skript ein Modell mit dem Beobachtungs- und Aktionsbereich der Messenger S2-Aufgabe und überwacht den Verlust in einem Wiedergabepuffer während des Trainings. Wenn Sie dasselbe tun möchten, müssen Sie einen Pfad zum Verzeichnis .../episodes/
(das die .npz
Blöcke enthält) eines früheren Messenger S2-Agenten übergeben.
pip install datasets
sh scripts/pretrain_text.sh EXP_NAME GPU_IDS SEED roneneldan/TinyStories /PATH/TO/EVAL/REPLAY/EPISODES
Um ein vorab trainiertes Weltmodell zur Feinabstimmung in einen Agenten zu laden, führen Sie das Trainingsskript mit den folgenden Flags aus ( load_wm_ckpt
lädt nur die Gewichtungen des Weltmodells und initialisiert den Rest des Agenten von Grund auf):
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
für Trainingsbeschleunigungen verwenden. Ein Beispiel finden Sie scripts/run_vln.sh
.Dieses Repo wurde von DreamerV3 übernommen.
@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},
}