このリポジトリには、論文「Learning to Model the World with Language」のコードが含まれています。多様な種類の言語を活用してタスクを解決するエージェントである 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 タスクの観察およびアクション スペースを使用してモデルを初期化し、トレーニング中にリプレイ バッファーでの損失を監視します。同じことを行う場合は、以前の 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},
}