From d7eeaf5ea1a787e870705c2c87936145923dd202 Mon Sep 17 00:00:00 2001 From: ClementRomac Date: Wed, 1 Feb 2023 17:54:57 +0100 Subject: [PATCH] Cleaned experiment files --- .gitignore | 8 + .idea/.gitignore | 3 + .idea/code.iml | 15 + .idea/inspectionProfiles/Project_Default.xml | 19 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/modules.xml | 8 + README.md | 31 + babyai/.gitignore | 112 + babyai/.travis.yml | 49 + babyai/CONTRIBUTING.md | 22 + babyai/LICENSE | 29 + babyai/README.md | 137 + babyai/babyai/QA.py | 237 + babyai/babyai/QA_simple.py | 216 + babyai/babyai/__init__.py | 4 + babyai/babyai/arguments.py | 109 + babyai/babyai/base.py | 77 + babyai/babyai/batchsampler.py | 58 + babyai/babyai/bot.py | 954 ++ babyai/babyai/evaluate.py | 151 + babyai/babyai/l_class.py | 105 + babyai/babyai/levels/__init__.py | 7 + babyai/babyai/levels/bonus_levels.py | 1056 +++ babyai/babyai/levels/iclr19_levels.py | 2576 ++++++ babyai/babyai/levels/levelgen.py | 594 ++ babyai/babyai/levels/test_levels.py | 218 + babyai/babyai/levels/verifier.py | 550 ++ babyai/babyai/model.py | 483 + babyai/babyai/paral_env_simple.py | 231 + babyai/babyai/plotting.py | 178 + babyai/babyai/plotting_paper.py | 423 + babyai/babyai/rl/LICENSE | 21 + babyai/babyai/rl/__init__.py | 4 + babyai/babyai/rl/algos/__init__.py | 1 + babyai/babyai/rl/algos/base.py | 315 + babyai/babyai/rl/algos/base_llm.py | 347 + babyai/babyai/rl/algos/ppo.py | 183 + babyai/babyai/rl/algos/ppo_llm.py | 139 + babyai/babyai/rl/format.py | 4 + babyai/babyai/rl/model.py | 61 + babyai/babyai/rl/utils/__init__.py | 2 + babyai/babyai/rl/utils/dictlist.py | 44 + babyai/babyai/rl/utils/penv.py | 97 + babyai/babyai/rl/utils/supervised_losses.py | 177 + babyai/babyai/shaped_env.py | 459 + babyai/babyai/shaped_env_paral.py | 997 ++ babyai/babyai/test_paral.py | 200 + babyai/babyai/trainer_l_class.py | 264 + babyai/babyai/utils/__init__.py | 32 + babyai/babyai/utils/agent.py | 189 + babyai/babyai/utils/demos.py | 263 + babyai/babyai/utils/format.py | 246 + babyai/babyai/utils/log.py | 42 + babyai/babyai/utils/model.py | 52 + babyai/babyai/utils/viz.py | 169 + babyai/docs/bonus_levels.md | 258 + babyai/docs/codebase.md | 17 + babyai/docs/iclr19_levels.md | 142 + babyai/docs/train-eval.md | 38 + babyai/docs/troubleshooting.md | 21 + babyai/environment.yaml | 13 + babyai/nn/GPTJ_with_value_head.py | 437 + babyai/nn/dec_QA.py | 21 + babyai/nn/enc_lang.py | 91 + babyai/nn/enc_lang_QA.py | 96 + babyai/nn/enc_visual.py | 113 + babyai/nn/enc_vl.py | 99 + babyai/nn/encodings.py | 153 + babyai/nn/model_util.py | 425 + babyai/nn/transforms.py | 90 + babyai/run_tests.py | 14 + babyai/scripts/.gitignore | 4 + babyai/scripts/GPR.py | 67 + .../scripts/compute_possible_instructions.py | 65 + babyai/scripts/enjoy.py | 120 + babyai/scripts/eval_bot.py | 190 + babyai/scripts/evaluate.py | 105 + babyai/scripts/evaluate_all_demos.py | 23 + babyai/scripts/evaluate_all_models.py | 48 + babyai/scripts/instruction_handler.py | 211 + babyai/scripts/learn_baseline.py | 272 + babyai/scripts/learn_baseline_model.py | 74 + babyai/scripts/make_agent_demos.py | 283 + babyai/scripts/make_subtask_recipe_demos.py | 177 + babyai/scripts/manual_control.py | 115 + babyai/scripts/result_l_class_study.py | 54 + babyai/scripts/show_level_instructions.py | 21 + babyai/scripts/subtask_prediction.py | 501 ++ babyai/scripts/subtask_prediction_model.py | 78 + babyai/scripts/test_PPO.py | 206 + babyai/scripts/test_rl.py | 377 + babyai/scripts/trace_agent_traj.py | 279 + babyai/scripts/train_il.py | 107 + babyai/scripts/train_intelligent_expert.py | 276 + babyai/scripts/train_l_class.py | 148 + babyai/scripts/train_learn_baseline_model.py | 79 + babyai/scripts/train_rl.py | 478 + babyai/scripts/train_rl_paral.py | 687 ++ .../scripts/train_subtask_prediction_model.py | 98 + babyai/setup.py | 16 + experiments/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 187 bytes experiments/__pycache__/main.cpython-310.pyc | Bin 0 -> 20140 bytes .../__pycache__/test_llm.cpython-310.pyc | Bin 0 -> 10072 bytes experiments/agents/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../bot/__pycache__/bot.cpython-310.pyc | Bin 0 -> 2192 bytes experiments/agents/bot/bot.py | 48 + experiments/agents/drrn/__init__.py | 0 .../drrn/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 199 bytes .../drrn/__pycache__/drrn.cpython-310.pyc | Bin 0 -> 13165 bytes .../drrn/__pycache__/model.cpython-310.pyc | Bin 0 -> 3295 bytes experiments/agents/drrn/drrn.py | 382 + experiments/agents/drrn/model.py | 87 + .../agents/drrn/spm_models/unigram_8k.model | Bin 0 -> 372213 bytes .../agents/drrn/spm_models/unigram_8k.vocab | 8000 +++++++++++++++++ experiments/agents/drrn/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 205 bytes .../utils/__pycache__/memory.cpython-310.pyc | Bin 0 -> 4282 bytes .../__pycache__/pad_sequences.cpython-310.pyc | Bin 0 -> 1427 bytes experiments/agents/drrn/utils/memory.py | 117 + .../agents/drrn/utils/pad_sequences.py | 39 + experiments/agents/random_agent/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 207 bytes .../__pycache__/random_agent.cpython-310.pyc | Bin 0 -> 1636 bytes .../agents/random_agent/random_agent.py | 41 + experiments/clm_finetuning.py | 248 + .../configs/accelerate/default_config.yaml | 12 + experiments/configs/local_cpu_config.yaml | 44 + experiments/configs/local_gpu_config.yaml | 62 + .../multi-node_slurm_cluster_config.yaml | 55 + .../multi-node_slurm_cluster_config_test.yaml | 60 + experiments/example_script.py | 119 + experiments/main.py | 505 ++ experiments/main_test.py | 419 + experiments/plotting_paper.py | 758 ++ experiments/plotting_results.py | 730 ++ experiments/slurm/accelerate_launcher.sh | 5 + experiments/slurm/launcher.sh | 6 + experiments/test_llm.py | 344 + experiments/test_results.py | 61 + gym-minigrid/.gitignore | 8 + gym-minigrid/.travis.yml | 10 + gym-minigrid/LICENSE | 201 + gym-minigrid/README.md | 512 ++ gym-minigrid/benchmark.py | 53 + gym-minigrid/figures/BlockedUnlockPickup.png | Bin 0 -> 1233 bytes gym-minigrid/figures/DistShift1.png | Bin 0 -> 1194 bytes gym-minigrid/figures/DistShift2.png | Bin 0 -> 1213 bytes gym-minigrid/figures/KeyCorridorS3R1.png | Bin 0 -> 840 bytes gym-minigrid/figures/KeyCorridorS3R2.png | Bin 0 -> 1277 bytes gym-minigrid/figures/KeyCorridorS3R3.png | Bin 0 -> 1612 bytes gym-minigrid/figures/KeyCorridorS4R3.png | Bin 0 -> 1943 bytes gym-minigrid/figures/KeyCorridorS5R3.png | Bin 0 -> 2746 bytes gym-minigrid/figures/KeyCorridorS6R3.png | Bin 0 -> 3288 bytes gym-minigrid/figures/LavaCrossingS11N5.png | Bin 0 -> 2867 bytes gym-minigrid/figures/LavaCrossingS9N1.png | Bin 0 -> 1306 bytes gym-minigrid/figures/LavaCrossingS9N2.png | Bin 0 -> 1769 bytes gym-minigrid/figures/LavaCrossingS9N3.png | Bin 0 -> 1920 bytes gym-minigrid/figures/LavaGapS6.png | Bin 0 -> 1007 bytes gym-minigrid/figures/ObstructedMaze-1Dl.png | Bin 0 -> 1273 bytes gym-minigrid/figures/ObstructedMaze-1Dlh.png | Bin 0 -> 1165 bytes gym-minigrid/figures/ObstructedMaze-1Dlhb.png | Bin 0 -> 1279 bytes gym-minigrid/figures/ObstructedMaze-1Q.png | Bin 0 -> 3237 bytes gym-minigrid/figures/ObstructedMaze-2Dl.png | Bin 0 -> 2259 bytes gym-minigrid/figures/ObstructedMaze-2Dlh.png | Bin 0 -> 2122 bytes gym-minigrid/figures/ObstructedMaze-2Dlhb.png | Bin 0 -> 2276 bytes gym-minigrid/figures/ObstructedMaze-2Q.png | Bin 0 -> 3431 bytes gym-minigrid/figures/ObstructedMaze-4Q.png | Bin 0 -> 4345 bytes gym-minigrid/figures/SimpleCrossingS11N5.png | Bin 0 -> 2038 bytes gym-minigrid/figures/SimpleCrossingS9N1.png | Bin 0 -> 1638 bytes gym-minigrid/figures/SimpleCrossingS9N2.png | Bin 0 -> 1662 bytes gym-minigrid/figures/SimpleCrossingS9N3.png | Bin 0 -> 1629 bytes gym-minigrid/figures/Unlock.png | Bin 0 -> 1097 bytes gym-minigrid/figures/UnlockPickup.png | Bin 0 -> 1150 bytes gym-minigrid/figures/door-key-curriculum.gif | Bin 0 -> 4494495 bytes gym-minigrid/figures/door-key-env.png | Bin 0 -> 18049 bytes gym-minigrid/figures/dynamic_obstacles.gif | Bin 0 -> 390342 bytes gym-minigrid/figures/empty-env.png | Bin 0 -> 5206 bytes gym-minigrid/figures/fetch-env.png | Bin 0 -> 24856 bytes gym-minigrid/figures/four-rooms-env.png | Bin 0 -> 3120 bytes gym-minigrid/figures/gotodoor-6x6.mp4 | Bin 0 -> 502652 bytes gym-minigrid/figures/gotodoor-6x6.png | Bin 0 -> 16298 bytes gym-minigrid/figures/multi-room.gif | Bin 0 -> 1234171 bytes gym-minigrid/gym_minigrid/__init__.py | 5 + gym-minigrid/gym_minigrid/envs/__init__.py | 21 + .../gym_minigrid/envs/blockedunlockpickup.py | 52 + gym-minigrid/gym_minigrid/envs/crossing.py | 155 + gym-minigrid/gym_minigrid/envs/distshift.py | 70 + gym-minigrid/gym_minigrid/envs/doorkey.py | 76 + .../gym_minigrid/envs/dynamicobstacles.py | 139 + gym-minigrid/gym_minigrid/envs/empty.py | 92 + gym-minigrid/gym_minigrid/envs/fetch.py | 109 + gym-minigrid/gym_minigrid/envs/fourrooms.py | 78 + gym-minigrid/gym_minigrid/envs/gotodoor.py | 104 + gym-minigrid/gym_minigrid/envs/gotoobject.py | 98 + gym-minigrid/gym_minigrid/envs/keycorridor.py | 137 + gym-minigrid/gym_minigrid/envs/lavagap.py | 80 + gym-minigrid/gym_minigrid/envs/lockedroom.py | 124 + gym-minigrid/gym_minigrid/envs/memory.py | 154 + gym-minigrid/gym_minigrid/envs/multiroom.py | 275 + .../gym_minigrid/envs/obstructedmaze.py | 224 + .../gym_minigrid/envs/playground_v0.py | 76 + gym-minigrid/gym_minigrid/envs/putnear.py | 126 + .../gym_minigrid/envs/redbluedoors.py | 80 + gym-minigrid/gym_minigrid/envs/unlock.py | 46 + .../gym_minigrid/envs/unlockpickup.py | 48 + gym-minigrid/gym_minigrid/minigrid.py | 1493 +++ gym-minigrid/gym_minigrid/minigrid_old.py | 1667 ++++ gym-minigrid/gym_minigrid/register.py | 21 + gym-minigrid/gym_minigrid/rendering.py | 118 + gym-minigrid/gym_minigrid/roomgrid.py | 399 + gym-minigrid/gym_minigrid/window.py | 90 + gym-minigrid/gym_minigrid/wrappers.py | 377 + gym-minigrid/manual_control.py | 114 + gym-minigrid/run_tests.py | 153 + gym-minigrid/setup.py | 14 + requirements.txt | 20 + scripts/train_ppo_baseline.sh | 18 + .../.github/ISSUE_TEMPLATE/bug-report.yml | 58 + .../workflows/build-docker-images-release.yml | 64 + .../.github/workflows/build_and_run_tests.yml | 45 + .../.github/workflows/build_docker_images.yml | 54 + .../.github/workflows/build_documentation.yml | 17 + .../workflows/build_pr_documentation.yml | 16 + .../.github/workflows/delete_doc_comment.yml | 13 + .../.github/workflows/nightly.yml | 88 + .../.github/workflows/quality.yml | 17 + .../.github/workflows/run_merge_tests.yml | 79 + .../.github/workflows/stale.yml | 28 + .../.github/workflows/test.yml | 70 + v0.13.2/accelerate-0.13.2/.gitignore | 141 + v0.13.2/accelerate-0.13.2/CODE_OF_CONDUCT.md | 129 + v0.13.2/accelerate-0.13.2/CONTRIBUTING.md | 235 + v0.13.2/accelerate-0.13.2/LICENSE | 201 + v0.13.2/accelerate-0.13.2/Makefile | 64 + v0.13.2/accelerate-0.13.2/README.md | 258 + .../accelerate-0.13.2/benchmarks/README.md | 46 + .../benchmarks/big_model_inference.py | 143 + .../benchmarks/measures_util.py | 86 + .../docker/accelerate-cpu/Dockerfile | 35 + .../docker/accelerate-gpu/Dockerfile | 42 + v0.13.2/accelerate-0.13.2/docs/Makefile | 19 + .../docs/source/_toctree.yml | 74 + .../docs/source/basic_tutorials/install.mdx | 99 + .../docs/source/basic_tutorials/launch.mdx | 178 + .../docs/source/basic_tutorials/migration.mdx | 123 + .../docs/source/basic_tutorials/notebook.mdx | 429 + .../docs/source/basic_tutorials/overview.mdx | 21 + .../concept_guides/deferring_execution.mdx | 107 + .../gradient_synchronization.mdx | 119 + .../source/concept_guides/performance.mdx | 91 + .../source/concept_guides/training_tpu.mdx | 164 + .../docs/source/imgs/accelerate_logo.png | Bin 0 -> 12653 bytes .../docs/source/imgs/course_banner.png | Bin 0 -> 80305 bytes .../accelerate-0.13.2/docs/source/index.mdx | 71 + .../source/package_reference/accelerator.mdx | 163 + .../source/package_reference/big_modeling.mdx | 41 + .../docs/source/package_reference/cli.mdx | 153 + .../source/package_reference/deepspeed.mdx | 25 + .../docs/source/package_reference/kwargs.mdx | 29 + .../source/package_reference/launchers.mdx | 19 + .../docs/source/package_reference/logging.mdx | 24 + .../docs/source/package_reference/state.mdx | 23 + .../package_reference/torch_wrappers.mdx | 33 + .../source/package_reference/tracking.mdx | 26 + .../source/package_reference/utilities.mdx | 95 + .../docs/source/quicktour.mdx | 501 ++ .../docs/source/usage_guides/big_modeling.mdx | 294 + .../docs/source/usage_guides/checkpoint.mdx | 60 + .../docs/source/usage_guides/deepspeed.mdx | 494 + .../docs/source/usage_guides/fsdp.mdx | 125 + .../usage_guides/gradient_accumulation.mdx | 130 + .../docs/source/usage_guides/memory.mdx | 55 + .../docs/source/usage_guides/mps.mdx | 82 + .../docs/source/usage_guides/sagemaker.mdx | 169 + .../docs/source/usage_guides/tracking.mdx | 200 + .../docs/source/usage_guides/training_zoo.mdx | 107 + v0.13.2/accelerate-0.13.2/examples/README.md | 212 + .../examples/by_feature/README.md | 80 + .../automatic_gradient_accumulation.py | 232 + .../examples/by_feature/checkpointing.py | 303 + .../examples/by_feature/cross_validation.py | 268 + .../deepspeed_with_config_support.py | 734 ++ .../by_feature/fsdp_with_peak_mem_tracking.py | 381 + .../by_feature/gradient_accumulation.py | 215 + .../examples/by_feature/memory.py | 220 + .../by_feature/multi_process_metrics.py | 225 + .../examples/by_feature/tracking.py | 263 + .../examples/complete_cv_example.py | 315 + .../examples/complete_nlp_example.py | 296 + .../accelerate-0.13.2/examples/cv_example.py | 211 + .../zero_stage1_config.json | 43 + .../zero_stage2_config.json | 43 + .../zero_stage2_offload_config.json | 47 + .../zero_stage3_config.json | 44 + .../zero_stage3_offload_config.json | 52 + .../accelerate-0.13.2/examples/nlp_example.py | 192 + .../examples/requirements.txt | 3 + .../big_model_inference/stage_1.py | 108 + .../big_model_inference/stage_2.py | 126 + .../big_model_inference/stage_3.py | 158 + .../big_model_inference/stage_4.py | 156 + .../big_model_inference/stage_5.py | 221 + v0.13.2/accelerate-0.13.2/pyproject.toml | 3 + v0.13.2/accelerate-0.13.2/setup.cfg | 19 + v0.13.2/accelerate-0.13.2/setup.py | 87 + .../src/accelerate/__init__.py | 26 + .../src/accelerate/accelerator.py | 1547 ++++ .../src/accelerate/big_modeling.py | 373 + .../src/accelerate/checkpointing.py | 185 + .../src/accelerate/commands/__init__.py | 0 .../src/accelerate/commands/accelerate_cli.py | 47 + .../accelerate/commands/config/__init__.py | 85 + .../src/accelerate/commands/config/cluster.py | 349 + .../accelerate/commands/config/config_args.py | 173 + .../commands/config/config_utils.py | 49 + .../accelerate/commands/config/sagemaker.py | 206 + .../src/accelerate/commands/env.py | 68 + .../src/accelerate/commands/launch.py | 924 ++ .../src/accelerate/commands/test.py | 64 + .../src/accelerate/data_loader.py | 715 ++ .../accelerate-0.13.2/src/accelerate/hooks.py | 480 + .../src/accelerate/launchers.py | 170 + .../src/accelerate/logging.py | 68 + .../src/accelerate/memory_utils.py | 29 + .../src/accelerate/optimizer.py | 159 + .../src/accelerate/scheduler.py | 91 + .../accelerate-0.13.2/src/accelerate/state.py | 315 + .../src/accelerate/test_utils/__init__.py | 21 + .../src/accelerate/test_utils/examples.py | 146 + .../accelerate/test_utils/scripts/__init__.py | 0 .../scripts/external_deps/__init__.py | 0 .../external_deps/test_checkpointing.py | 269 + .../scripts/external_deps/test_metrics.py | 170 + .../external_deps/test_peak_memory_usage.py | 258 + .../scripts/external_deps/test_performance.py | 231 + .../test_utils/scripts/test_script.py | 359 + .../test_utils/scripts/test_sync.py | 274 + .../src/accelerate/test_utils/testing.py | 354 + .../src/accelerate/test_utils/training.py | 88 + .../src/accelerate/tracking.py | 459 + .../src/accelerate/utils/__init__.py | 107 + .../src/accelerate/utils/constants.py | 60 + .../src/accelerate/utils/dataclasses.py | 646 ++ .../src/accelerate/utils/deepspeed.py | 252 + .../src/accelerate/utils/imports.py | 127 + .../src/accelerate/utils/launch.py | 89 + .../src/accelerate/utils/memory.py | 88 + .../src/accelerate/utils/modeling.py | 707 ++ .../src/accelerate/utils/offload.py | 182 + .../src/accelerate/utils/operations.py | 531 ++ .../src/accelerate/utils/other.py | 157 + .../src/accelerate/utils/random.py | 87 + .../src/accelerate/utils/rich.py | 24 + .../src/accelerate/utils/tqdm.py | 37 + .../src/accelerate/utils/versions.py | 61 + .../tests/deepspeed/ds_config_zero2.json | 49 + .../tests/deepspeed/ds_config_zero3.json | 56 + .../tests/deepspeed/test_deepspeed.py | 807 ++ .../accelerate-0.13.2/tests/fsdp/test_fsdp.py | 334 + .../tests/test_big_modeling.py | 449 + v0.13.2/accelerate-0.13.2/tests/test_cpu.py | 24 + .../tests/test_data_loader.py | 222 + .../accelerate-0.13.2/tests/test_examples.py | 215 + .../accelerate-0.13.2/tests/test_grad_sync.py | 55 + v0.13.2/accelerate-0.13.2/tests/test_hooks.py | 331 + .../tests/test_kwargs_handlers.py | 98 + .../tests/test_memory_utils.py | 91 + .../accelerate-0.13.2/tests/test_metrics.py | 64 + .../tests/test_modeling_utils.py | 377 + .../accelerate-0.13.2/tests/test_multigpu.py | 72 + .../accelerate-0.13.2/tests/test_offload.py | 107 + .../accelerate-0.13.2/tests/test_sagemaker.py | 62 + .../tests/test_samples/MRPC/dev.csv | 7 + .../tests/test_samples/MRPC/train.csv | 7 + .../accelerate-0.13.2/tests/test_scheduler.py | 96 + .../tests/test_state_checkpointing.py | 165 + v0.13.2/accelerate-0.13.2/tests/test_tpu.py | 38 + .../accelerate-0.13.2/tests/test_tracking.py | 285 + v0.13.2/accelerate-0.13.2/tests/test_utils.py | 85 + v0.13.2/accelerate-0.13.2/tests/xla_spawn.py | 85 + .../accelerate-0.13.2/utils/log_reports.py | 34 + v0.13.2/accelerate-0.13.2/utils/stale.py | 66 + v0.13.2/accelerate-0.13.2/utils/style_doc.py | 556 ++ 385 files changed, 68213 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/code.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/modules.xml create mode 100644 README.md create mode 100644 babyai/.gitignore create mode 100644 babyai/.travis.yml create mode 100644 babyai/CONTRIBUTING.md create mode 100644 babyai/LICENSE create mode 100644 babyai/README.md create mode 100644 babyai/babyai/QA.py create mode 100644 babyai/babyai/QA_simple.py create mode 100644 babyai/babyai/__init__.py create mode 100644 babyai/babyai/arguments.py create mode 100644 babyai/babyai/base.py create mode 100644 babyai/babyai/batchsampler.py create mode 100644 babyai/babyai/bot.py create mode 100644 babyai/babyai/evaluate.py create mode 100644 babyai/babyai/l_class.py create mode 100644 babyai/babyai/levels/__init__.py create mode 100644 babyai/babyai/levels/bonus_levels.py create mode 100644 babyai/babyai/levels/iclr19_levels.py create mode 100644 babyai/babyai/levels/levelgen.py create mode 100644 babyai/babyai/levels/test_levels.py create mode 100644 babyai/babyai/levels/verifier.py create mode 100644 babyai/babyai/model.py create mode 100644 babyai/babyai/paral_env_simple.py create mode 100644 babyai/babyai/plotting.py create mode 100644 babyai/babyai/plotting_paper.py create mode 100644 babyai/babyai/rl/LICENSE create mode 100644 babyai/babyai/rl/__init__.py create mode 100644 babyai/babyai/rl/algos/__init__.py create mode 100644 babyai/babyai/rl/algos/base.py create mode 100644 babyai/babyai/rl/algos/base_llm.py create mode 100644 babyai/babyai/rl/algos/ppo.py create mode 100644 babyai/babyai/rl/algos/ppo_llm.py create mode 100644 babyai/babyai/rl/format.py create mode 100644 babyai/babyai/rl/model.py create mode 100644 babyai/babyai/rl/utils/__init__.py create mode 100644 babyai/babyai/rl/utils/dictlist.py create mode 100644 babyai/babyai/rl/utils/penv.py create mode 100644 babyai/babyai/rl/utils/supervised_losses.py create mode 100644 babyai/babyai/shaped_env.py create mode 100644 babyai/babyai/shaped_env_paral.py create mode 100644 babyai/babyai/test_paral.py create mode 100644 babyai/babyai/trainer_l_class.py create mode 100644 babyai/babyai/utils/__init__.py create mode 100644 babyai/babyai/utils/agent.py create mode 100644 babyai/babyai/utils/demos.py create mode 100644 babyai/babyai/utils/format.py create mode 100644 babyai/babyai/utils/log.py create mode 100644 babyai/babyai/utils/model.py create mode 100644 babyai/babyai/utils/viz.py create mode 100644 babyai/docs/bonus_levels.md create mode 100644 babyai/docs/codebase.md create mode 100644 babyai/docs/iclr19_levels.md create mode 100644 babyai/docs/train-eval.md create mode 100644 babyai/docs/troubleshooting.md create mode 100644 babyai/environment.yaml create mode 100644 babyai/nn/GPTJ_with_value_head.py create mode 100644 babyai/nn/dec_QA.py create mode 100644 babyai/nn/enc_lang.py create mode 100644 babyai/nn/enc_lang_QA.py create mode 100644 babyai/nn/enc_visual.py create mode 100644 babyai/nn/enc_vl.py create mode 100644 babyai/nn/encodings.py create mode 100644 babyai/nn/model_util.py create mode 100644 babyai/nn/transforms.py create mode 100755 babyai/run_tests.py create mode 100644 babyai/scripts/.gitignore create mode 100644 babyai/scripts/GPR.py create mode 100755 babyai/scripts/compute_possible_instructions.py create mode 100755 babyai/scripts/enjoy.py create mode 100755 babyai/scripts/eval_bot.py create mode 100755 babyai/scripts/evaluate.py create mode 100755 babyai/scripts/evaluate_all_demos.py create mode 100755 babyai/scripts/evaluate_all_models.py create mode 100644 babyai/scripts/instruction_handler.py create mode 100644 babyai/scripts/learn_baseline.py create mode 100644 babyai/scripts/learn_baseline_model.py create mode 100755 babyai/scripts/make_agent_demos.py create mode 100644 babyai/scripts/make_subtask_recipe_demos.py create mode 100755 babyai/scripts/manual_control.py create mode 100644 babyai/scripts/result_l_class_study.py create mode 100755 babyai/scripts/show_level_instructions.py create mode 100644 babyai/scripts/subtask_prediction.py create mode 100644 babyai/scripts/subtask_prediction_model.py create mode 100644 babyai/scripts/test_PPO.py create mode 100755 babyai/scripts/test_rl.py create mode 100644 babyai/scripts/trace_agent_traj.py create mode 100755 babyai/scripts/train_il.py create mode 100755 babyai/scripts/train_intelligent_expert.py create mode 100644 babyai/scripts/train_l_class.py create mode 100644 babyai/scripts/train_learn_baseline_model.py create mode 100755 babyai/scripts/train_rl.py create mode 100755 babyai/scripts/train_rl_paral.py create mode 100644 babyai/scripts/train_subtask_prediction_model.py create mode 100644 babyai/setup.py create mode 100644 experiments/__init__.py create mode 100644 experiments/__pycache__/__init__.cpython-310.pyc create mode 100644 experiments/__pycache__/main.cpython-310.pyc create mode 100644 experiments/__pycache__/test_llm.cpython-310.pyc create mode 100644 experiments/agents/__init__.py create mode 100644 experiments/agents/__pycache__/__init__.cpython-310.pyc create mode 100644 experiments/agents/bot/__pycache__/bot.cpython-310.pyc create mode 100644 experiments/agents/bot/bot.py create mode 100644 experiments/agents/drrn/__init__.py create mode 100644 experiments/agents/drrn/__pycache__/__init__.cpython-310.pyc create mode 100644 experiments/agents/drrn/__pycache__/drrn.cpython-310.pyc create mode 100644 experiments/agents/drrn/__pycache__/model.cpython-310.pyc create mode 100644 experiments/agents/drrn/drrn.py create mode 100644 experiments/agents/drrn/model.py create mode 100644 experiments/agents/drrn/spm_models/unigram_8k.model create mode 100644 experiments/agents/drrn/spm_models/unigram_8k.vocab create mode 100644 experiments/agents/drrn/utils/__init__.py create mode 100644 experiments/agents/drrn/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 experiments/agents/drrn/utils/__pycache__/memory.cpython-310.pyc create mode 100644 experiments/agents/drrn/utils/__pycache__/pad_sequences.cpython-310.pyc create mode 100644 experiments/agents/drrn/utils/memory.py create mode 100644 experiments/agents/drrn/utils/pad_sequences.py create mode 100644 experiments/agents/random_agent/__init__.py create mode 100644 experiments/agents/random_agent/__pycache__/__init__.cpython-310.pyc create mode 100644 experiments/agents/random_agent/__pycache__/random_agent.cpython-310.pyc create mode 100644 experiments/agents/random_agent/random_agent.py create mode 100644 experiments/clm_finetuning.py create mode 100644 experiments/configs/accelerate/default_config.yaml create mode 100644 experiments/configs/local_cpu_config.yaml create mode 100644 experiments/configs/local_gpu_config.yaml create mode 100644 experiments/configs/multi-node_slurm_cluster_config.yaml create mode 100644 experiments/configs/multi-node_slurm_cluster_config_test.yaml create mode 100644 experiments/example_script.py create mode 100644 experiments/main.py create mode 100644 experiments/main_test.py create mode 100644 experiments/plotting_paper.py create mode 100644 experiments/plotting_results.py create mode 100644 experiments/slurm/accelerate_launcher.sh create mode 100644 experiments/slurm/launcher.sh create mode 100644 experiments/test_llm.py create mode 100644 experiments/test_results.py create mode 100644 gym-minigrid/.gitignore create mode 100644 gym-minigrid/.travis.yml create mode 100644 gym-minigrid/LICENSE create mode 100644 gym-minigrid/README.md create mode 100755 gym-minigrid/benchmark.py create mode 100644 gym-minigrid/figures/BlockedUnlockPickup.png create mode 100644 gym-minigrid/figures/DistShift1.png create mode 100644 gym-minigrid/figures/DistShift2.png create mode 100644 gym-minigrid/figures/KeyCorridorS3R1.png create mode 100644 gym-minigrid/figures/KeyCorridorS3R2.png create mode 100644 gym-minigrid/figures/KeyCorridorS3R3.png create mode 100644 gym-minigrid/figures/KeyCorridorS4R3.png create mode 100644 gym-minigrid/figures/KeyCorridorS5R3.png create mode 100644 gym-minigrid/figures/KeyCorridorS6R3.png create mode 100644 gym-minigrid/figures/LavaCrossingS11N5.png create mode 100644 gym-minigrid/figures/LavaCrossingS9N1.png create mode 100644 gym-minigrid/figures/LavaCrossingS9N2.png create mode 100644 gym-minigrid/figures/LavaCrossingS9N3.png create mode 100644 gym-minigrid/figures/LavaGapS6.png create mode 100644 gym-minigrid/figures/ObstructedMaze-1Dl.png create mode 100644 gym-minigrid/figures/ObstructedMaze-1Dlh.png create mode 100644 gym-minigrid/figures/ObstructedMaze-1Dlhb.png create mode 100644 gym-minigrid/figures/ObstructedMaze-1Q.png create mode 100644 gym-minigrid/figures/ObstructedMaze-2Dl.png create mode 100644 gym-minigrid/figures/ObstructedMaze-2Dlh.png create mode 100644 gym-minigrid/figures/ObstructedMaze-2Dlhb.png create mode 100644 gym-minigrid/figures/ObstructedMaze-2Q.png create mode 100644 gym-minigrid/figures/ObstructedMaze-4Q.png create mode 100644 gym-minigrid/figures/SimpleCrossingS11N5.png create mode 100644 gym-minigrid/figures/SimpleCrossingS9N1.png create mode 100644 gym-minigrid/figures/SimpleCrossingS9N2.png create mode 100644 gym-minigrid/figures/SimpleCrossingS9N3.png create mode 100644 gym-minigrid/figures/Unlock.png create mode 100644 gym-minigrid/figures/UnlockPickup.png create mode 100644 gym-minigrid/figures/door-key-curriculum.gif create mode 100644 gym-minigrid/figures/door-key-env.png create mode 100644 gym-minigrid/figures/dynamic_obstacles.gif create mode 100644 gym-minigrid/figures/empty-env.png create mode 100644 gym-minigrid/figures/fetch-env.png create mode 100644 gym-minigrid/figures/four-rooms-env.png create mode 100644 gym-minigrid/figures/gotodoor-6x6.mp4 create mode 100644 gym-minigrid/figures/gotodoor-6x6.png create mode 100644 gym-minigrid/figures/multi-room.gif create mode 100644 gym-minigrid/gym_minigrid/__init__.py create mode 100644 gym-minigrid/gym_minigrid/envs/__init__.py create mode 100644 gym-minigrid/gym_minigrid/envs/blockedunlockpickup.py create mode 100644 gym-minigrid/gym_minigrid/envs/crossing.py create mode 100644 gym-minigrid/gym_minigrid/envs/distshift.py create mode 100644 gym-minigrid/gym_minigrid/envs/doorkey.py create mode 100644 gym-minigrid/gym_minigrid/envs/dynamicobstacles.py create mode 100644 gym-minigrid/gym_minigrid/envs/empty.py create mode 100644 gym-minigrid/gym_minigrid/envs/fetch.py create mode 100644 gym-minigrid/gym_minigrid/envs/fourrooms.py create mode 100644 gym-minigrid/gym_minigrid/envs/gotodoor.py create mode 100644 gym-minigrid/gym_minigrid/envs/gotoobject.py create mode 100644 gym-minigrid/gym_minigrid/envs/keycorridor.py create mode 100644 gym-minigrid/gym_minigrid/envs/lavagap.py create mode 100644 gym-minigrid/gym_minigrid/envs/lockedroom.py create mode 100644 gym-minigrid/gym_minigrid/envs/memory.py create mode 100644 gym-minigrid/gym_minigrid/envs/multiroom.py create mode 100644 gym-minigrid/gym_minigrid/envs/obstructedmaze.py create mode 100644 gym-minigrid/gym_minigrid/envs/playground_v0.py create mode 100644 gym-minigrid/gym_minigrid/envs/putnear.py create mode 100644 gym-minigrid/gym_minigrid/envs/redbluedoors.py create mode 100644 gym-minigrid/gym_minigrid/envs/unlock.py create mode 100644 gym-minigrid/gym_minigrid/envs/unlockpickup.py create mode 100644 gym-minigrid/gym_minigrid/minigrid.py create mode 100644 gym-minigrid/gym_minigrid/minigrid_old.py create mode 100644 gym-minigrid/gym_minigrid/register.py create mode 100644 gym-minigrid/gym_minigrid/rendering.py create mode 100644 gym-minigrid/gym_minigrid/roomgrid.py create mode 100644 gym-minigrid/gym_minigrid/window.py create mode 100644 gym-minigrid/gym_minigrid/wrappers.py create mode 100755 gym-minigrid/manual_control.py create mode 100755 gym-minigrid/run_tests.py create mode 100644 gym-minigrid/setup.py create mode 100644 requirements.txt create mode 100755 scripts/train_ppo_baseline.sh create mode 100644 v0.13.2/accelerate-0.13.2/.github/ISSUE_TEMPLATE/bug-report.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/build-docker-images-release.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/build_and_run_tests.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/build_docker_images.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/build_documentation.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/build_pr_documentation.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/delete_doc_comment.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/nightly.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/quality.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/run_merge_tests.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/stale.yml create mode 100644 v0.13.2/accelerate-0.13.2/.github/workflows/test.yml create mode 100644 v0.13.2/accelerate-0.13.2/.gitignore create mode 100644 v0.13.2/accelerate-0.13.2/CODE_OF_CONDUCT.md create mode 100644 v0.13.2/accelerate-0.13.2/CONTRIBUTING.md create mode 100644 v0.13.2/accelerate-0.13.2/LICENSE create mode 100644 v0.13.2/accelerate-0.13.2/Makefile create mode 100644 v0.13.2/accelerate-0.13.2/README.md create mode 100644 v0.13.2/accelerate-0.13.2/benchmarks/README.md create mode 100644 v0.13.2/accelerate-0.13.2/benchmarks/big_model_inference.py create mode 100644 v0.13.2/accelerate-0.13.2/benchmarks/measures_util.py create mode 100644 v0.13.2/accelerate-0.13.2/docker/accelerate-cpu/Dockerfile create mode 100644 v0.13.2/accelerate-0.13.2/docker/accelerate-gpu/Dockerfile create mode 100644 v0.13.2/accelerate-0.13.2/docs/Makefile create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/_toctree.yml create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/install.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/launch.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/migration.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/notebook.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/overview.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/concept_guides/deferring_execution.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/concept_guides/gradient_synchronization.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/concept_guides/performance.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/concept_guides/training_tpu.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/imgs/accelerate_logo.png create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/imgs/course_banner.png create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/index.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/accelerator.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/big_modeling.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/cli.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/deepspeed.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/kwargs.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/launchers.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/logging.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/state.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/torch_wrappers.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/tracking.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/package_reference/utilities.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/quicktour.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/big_modeling.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/checkpoint.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/deepspeed.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/fsdp.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/gradient_accumulation.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/memory.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/mps.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/sagemaker.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/tracking.mdx create mode 100644 v0.13.2/accelerate-0.13.2/docs/source/usage_guides/training_zoo.mdx create mode 100644 v0.13.2/accelerate-0.13.2/examples/README.md create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/README.md create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/automatic_gradient_accumulation.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/checkpointing.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/cross_validation.py create mode 100755 v0.13.2/accelerate-0.13.2/examples/by_feature/deepspeed_with_config_support.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/fsdp_with_peak_mem_tracking.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/gradient_accumulation.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/memory.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/multi_process_metrics.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/by_feature/tracking.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/complete_cv_example.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/complete_nlp_example.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/cv_example.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage1_config.json create mode 100644 v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_config.json create mode 100644 v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_offload_config.json create mode 100644 v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_config.json create mode 100644 v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_offload_config.json create mode 100644 v0.13.2/accelerate-0.13.2/examples/nlp_example.py create mode 100644 v0.13.2/accelerate-0.13.2/examples/requirements.txt create mode 100644 v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_1.py create mode 100644 v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_2.py create mode 100644 v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_3.py create mode 100644 v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_4.py create mode 100644 v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_5.py create mode 100644 v0.13.2/accelerate-0.13.2/pyproject.toml create mode 100644 v0.13.2/accelerate-0.13.2/setup.cfg create mode 100644 v0.13.2/accelerate-0.13.2/setup.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/accelerator.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/big_modeling.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/checkpointing.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/accelerate_cli.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/cluster.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_args.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_utils.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/sagemaker.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/env.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/launch.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/commands/test.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/data_loader.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/hooks.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/launchers.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/logging.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/memory_utils.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/optimizer.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/scheduler.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/state.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/examples.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_checkpointing.py create mode 100755 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_metrics.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_peak_memory_usage.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_performance.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_script.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_sync.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/testing.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/training.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/tracking.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/__init__.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/constants.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/dataclasses.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/deepspeed.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/imports.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/launch.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/memory.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/modeling.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/offload.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/operations.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/other.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/random.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/rich.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/tqdm.py create mode 100644 v0.13.2/accelerate-0.13.2/src/accelerate/utils/versions.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero2.json create mode 100644 v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero3.json create mode 100644 v0.13.2/accelerate-0.13.2/tests/deepspeed/test_deepspeed.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/fsdp/test_fsdp.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_big_modeling.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_cpu.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_data_loader.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_examples.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_grad_sync.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_hooks.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_kwargs_handlers.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_memory_utils.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_metrics.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_modeling_utils.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_multigpu.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_offload.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_sagemaker.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/dev.csv create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/train.csv create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_scheduler.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_state_checkpointing.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_tpu.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_tracking.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/test_utils.py create mode 100644 v0.13.2/accelerate-0.13.2/tests/xla_spawn.py create mode 100644 v0.13.2/accelerate-0.13.2/utils/log_reports.py create mode 100644 v0.13.2/accelerate-0.13.2/utils/stale.py create mode 100644 v0.13.2/accelerate-0.13.2/utils/style_doc.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3da03e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +useless/ +storage/ +slurm_logs/ +plots/ +outputs/ +notebooks/* +!notebooks/*.ipynb +/old_slurms/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/code.iml b/.idea/code.iml new file mode 100644 index 0000000..5fdd65b --- /dev/null +++ b/.idea/code.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..292713a --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,19 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..23968dc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4461303 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +This repository is currently under active cleaning. + +# Installation steps +1. Create conda env +``` +conda create -n dlp python=3.10.8; conda activate dlp +``` +2. Install PyTorch +``` +conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch +``` +3. Install packages required by our package +``` +pip install -r requirements.txt +``` +4. Install BabyAI +``` +pip install blosc; cd babyai; pip install -e .; cd .. +``` +5. Install gym-minigrid +``` +cd gym-minigrid; pip install -e.; cd .. +``` +6. Install Accelerate +``` +cd v0.13.2/accelerate-0.13.2; pip install -e .; cd ../.. +``` +7. Install Lamorel +``` +cd language-models-for-rl/lamorel; pip install -e .; cd ../.. +``` diff --git a/babyai/.gitignore b/babyai/.gitignore new file mode 100644 index 0000000..81bb2ae --- /dev/null +++ b/babyai/.gitignore @@ -0,0 +1,112 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# pycharm +.idea/ + +# storage +storage/ + +# pytorch weights, training history +*.csv +*.pt +*.json diff --git a/babyai/.travis.yml b/babyai/.travis.yml new file mode 100644 index 0000000..1942746 --- /dev/null +++ b/babyai/.travis.yml @@ -0,0 +1,49 @@ +language: python +cache: pip +python: + - "3.5" + +before_install: + - pip3 install --upgrade pip + +# command to install dependencies +install: + - pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp35-cp35m-linux_x86_64.whl + - pip3 install flake8 + - pip3 install scikit-build + - pip3 install --editable . + +# command to run tests +script: + # Check the source code for obvious errors + - python3 -m flake8 . --count --show-source --statistics --select=E901,E999,F821,F822,F823 + + # Test the BabyAI levels + - ./run_tests.py + + # Quickly exercise the RL training code + - time python3 -m scripts.train_rl --env BabyAI-GoToObj-v0 --algo ppo --procs 4 --batch-size 80 --log-interval 1 --save-interval 2 --val-episodes 10 --frames 300 --arch cnn1 --instr-dim 16 --image-dim 16 --memory-dim 16 + + # Check that the bot works on a few episodes of Boss Level + - python3 -m scripts.eval_bot --level BossLevel --num_runs 50 + - python3 -m scripts.eval_bot --level BossLevel --num_runs 50 --advise_mode --non_optimal_steps 100 --bad_action_proba .3 + # Check that the bot works on a single episode from each level + - python3 -m scripts.eval_bot --num_runs 1 + + # Quickly test the generation of bot demos + - python3 -m scripts.make_agent_demos --env BabyAI-GoToRedBallGrey-v0 --episodes 100 --valid-episodes 32 + + # Quickly test the evaluation of bot demos + - python3 -m scripts.evaluate --env BabyAI-GoToRedBallGrey-v0 --demos BabyAI-GoToRedBallGrey-v0_agent + + # Quick test for imitation learning + - python3 -m scripts.train_il --env BabyAI-GoToRedBallGrey-v0 --demos BabyAI-GoToRedBallGrey-v0_agent --model GoToRedBallGrey-il --val-interval 1 --patience 0 --episodes 100 --val-episodes 50 + + # Quickly test the evaluation of models + - python3 -m scripts.evaluate --env BabyAI-GoToRedBallGrey-v0 --model GoToRedBallGrey-il + + # Quick test for imitation learning with multi env + - python3 -m scripts.train_il --multi-env BabyAI-GoToRedBall-v0 BabyAI-GoToRedBallGrey-v0 --multi-demos BabyAI-GoToRedBallGrey-v0_agent BabyAI-GoToRedBallGrey-v0_agent --val-interval 1 --patience 0 --multi-episodes 100 100 --val-episodes 50 + + # Quick test for train_intelligent_expert + - python3 -m scripts.train_intelligent_expert --env BabyAI-GoToRedBallGrey-v0 --demos BabyAI-GoToRedBallGrey-v0_agent --val-interval 1 --patience 0 --val-episodes 50 --start-demos 10 --num-eval-demos 5 --phases 2 diff --git a/babyai/CONTRIBUTING.md b/babyai/CONTRIBUTING.md new file mode 100644 index 0000000..b1e8a7c --- /dev/null +++ b/babyai/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# Instructions for Contributors + +To contribute to this project, you should first create your own fork, and remember to periodically [sync changes from this repository](https://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository). You can then create [pull requests](https://yangsu.github.io/pull-request-tutorial/) for modifications you have made. Your changes will be tested and reviewed before they are merged into this repository. If you are not familiar with forks and pull requests, we recommend doing a Google or YouTube search to find many useful tutorials on the topic. + +Also, you can have a look at the [codebase structure](docs/codebase.md) before getting started. + +A suggested flow for contributing would be: +First, open up a new feature branch to solve an existing bug/issue +```bash +$ git checkout -b upstream/master +``` +This ensures that the branch is up-to-date with the `master` branch of the main repository, irrespective of the status of your forked repository. + +Once you are done making commits of your changes / adding the feature, you can: +(In case this is the first set of commits from this _new_ local branch) +```bash +git push --set-upstream origin +``` +(Assuming the name of your forked repository remote is `origin`), which will create a new branch `` +tracking your local ``, in case it hasn't been created already. + +Then, create a [pull request](https://help.github.com/en/articles/about-pull-requests) in this repository. \ No newline at end of file diff --git a/babyai/LICENSE b/babyai/LICENSE new file mode 100644 index 0000000..6e870ff --- /dev/null +++ b/babyai/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2017, Maxime Chevalier-Boisvert +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/babyai/README.md b/babyai/README.md new file mode 100644 index 0000000..01dbb80 --- /dev/null +++ b/babyai/README.md @@ -0,0 +1,137 @@ +NOTE: This is the original README that came with BabyAI. + + + +# BabyAI Platform + +[![Build Status](https://travis-ci.org/mila-iqia/babyai.svg?branch=master)](https://travis-ci.org/mila-iqia/babyai) + +A platform for simulating language learning with a human in the loop. This is an ongoing research project based at [Mila](https://mila.quebec/en/). + +Contents: +- [Citation](#citation) +- [Replicating ICLR19 Results](#replicating-iclr19-results) +- [Installation](#installation) +- [Usage](#usage) +- [Codebase Structure](docs/codebase.md) +- [Levels](#the-levels) +- [Training and Evaluation](docs/train-eval.md) +- [Contributing](CONTRIBUTING.md) +- [Troubleshooting](docs/troubleshooting.md) +- [About](#about-this-project) + +## Citation +If you use this platform in your research, please cite: + +``` +@inproceedings{ + babyai_iclr19, + title={Baby{AI}: First Steps Towards Grounded Language Learning With a Human In the Loop}, + author={Maxime Chevalier-Boisvert and Dzmitry Bahdanau and Salem Lahlou and Lucas Willems and Chitwan Saharia and Thien Huu Nguyen and Yoshua Bengio}, + booktitle={International Conference on Learning Representations}, + year={2019}, + url={https://openreview.net/forum?id=rJeXCo0cYX}, +} +``` + +## Replicating ICLR19 Results + +The master branch of this repository is updated frequently. If you are looking to replicate or compare against the results from the [ICLR19 BabyAI paper](https://openreview.net/forum?id=rJeXCo0cYX), please use the docker image, demonstration dataset and source code from the [iclr19 branch](https://github.com/mila-iqia/babyai/tree/iclr19) of this repository. + +## Installation + +Requirements: +- Python 3.5+ +- OpenAI Gym +- NumPy +- PyTorch 0.4.1+ +- blosc + +Start by manually installing PyTorch. See the [PyTorch website](http://pytorch.org/) +for installation instructions specific to your platform. + +Then, clone this repository and install the other dependencies with `pip3`: + +``` +git clone https://github.com/mila-iqia/babyai.git +cd babyai +pip3 install --editable . +``` + +### Installation using Conda (Alternative Method) + +If you are using conda, you can create a `babyai` environment with all the dependencies by running: + +``` +git clone https://github.com/mila-iqia/babyai.git +cd babyai +conda env create -f environment.yaml +source activate babyai +``` + +After that, execute the following commands to setup the environment. + +``` +cd .. +git clone https://github.com/maximecb/gym-minigrid.git +cd gym-minigrid +pip install --editable . +``` + +The last command installs the repository in editable mode. Move back to the `babyai` repository and install that in editable mode as well. + +``` +cd ../babyai +pip install --editable . +``` + +### BabyAI Storage Path + +Add this line to `.bashrc` (Linux), or `.bash_profile` (Mac). + +``` +export BABYAI_STORAGE='/////' +``` + +where `/////` is the folder where you typed `git clone https://github.com/mila-iqia/babyai.git` earlier. + +Models, logs and demos will be produced in this directory, in the folders `models`, `logs` and `demos` respectively. + +## Usage + +To run the interactive GUI application that illustrates the platform: + +``` +scripts/manual_control.py +``` + +The level being run can be selected with the `--env` option, eg: + +``` +scripts/manual_control.py --env BabyAI-UnlockPickup-v0 +``` + +### The Levels + +Documentation for the ICLR19 levels can be found in +[docs/iclr19_levels.md](docs/iclr19_levels.md). +There are also older levels documented in +[docs/bonus_levels.md](docs/bonus_levels.md). + +### Pixel Observations + +Please note that the default observation format is a partially observable view of the environment using a compact encoding, with 3 input values per visible grid cell, 7x7x3 values total. These values are **not pixels**. If you want to obtain an array of RGB pixels as observations instead, use the `RGBImgPartialObsWrapper`. You can use it as follows: + +``` +import babyai +from gym_minigrid.wrappers import * +env = gym.make('BabyAI-GoToRedBall-v0') +env = RGBImgPartialObsWrapper(env) +``` + +This wrapper, as well as other wrappers to change the observation format can be [found here](https://github.com/maximecb/gym-minigrid/blob/master/gym_minigrid/wrappers.py). + +## About this Project + +BabyAI is an open-ended grounded language acquisition effort at [Mila](https://mila.quebec/en/). The current BabyAI platform was designed to study data-effiency of existing methods under the assumption that a human provides all teaching signals +(i.e. demonstrations, rewards, etc.). For more information, see the [ICLR19 paper](https://openreview.net/forum?id=rJeXCo0cYX). diff --git a/babyai/babyai/QA.py b/babyai/babyai/QA.py new file mode 100644 index 0000000..5697d7e --- /dev/null +++ b/babyai/babyai/QA.py @@ -0,0 +1,237 @@ +import pickle as pkl +import torch +from torch import nn +from torch.nn import functional as F + +from babyai import base +from nn.enc_lang_QA import EncoderLang_QA +from nn.enc_visual import FeatureFlat +from nn.enc_vl import EncoderVL +# from alfred.nn.encodings import DatasetLearnedEncoding +from nn.dec_QA import QAClassifier + +class Model(base.Model): + def __init__(self, args, emb_ann_size, numb_action, pad): + ''' + transformer agent + ''' + super().__init__(args, emb_ann_size, numb_action, pad) + + # encoder and visual embeddings + self.encoder_vl = EncoderVL(args) + # pre-encoder for language tokens + self.encoder_lang = EncoderLang_QA(args.encoder_lang['layers'], args) + # feature embeddings + self.vis_feat = FeatureFlat( + input_shape=self.visual_tensor_shape, + output_size=args.demb) + # dataset id learned encoding (applied after the encoder_lang) + self.dataset_enc = None + """if args.enc['dataset']: + self.dataset_enc = DatasetLearnedEncoding(args.demb, args.data['train'])""" + # embeddings for actions + self.emb_action = nn.Embedding(numb_action, args.demb) + # dropouts + self.dropout_action = nn.Dropout2d(args.dropout['transformer']['action']) + + # decoder parts + encoder_output_size = args.demb + self.dec_action = nn.Linear( + encoder_output_size, args.demb) + self.dec_QA = QAClassifier(encoder_output_size, args['vocab_path']) + + # skip connection for object predictions + self.object_feat = FeatureFlat( + input_shape=self.visual_tensor_shape, + output_size=args.demb) + + # resize encoded language + with open(args['vocab_path'], 'rb') as filehandle: + # read the data as binary data stream + vocab_list = pkl.load(filehandle)['answer'] + self.num_classes = len(vocab_list) + self.emb_enc_lang = nn.Linear(args.demb, self.num_classes) + + # final decoder + """ self.classifier_lang = nn.Linear(self.num_classes*2, self.num_classes)""" + + """# progress monitoring heads + if self.args.progress_aux_loss_wt > 0: + self.dec_progress = nn.Linear(encoder_output_size, 1) + if self.args.subgoal_aux_loss_wt > 0: + self.dec_subgoal = nn.Linear(encoder_output_size, 1) + """ + # final touch + self.init_weights() + self.reset() + + def forward(self, vocab, **inputs): + ''' + forward the model for multiple time-steps (used for training) + ''' + # embed language + output = {} + # collect the index of the <> token of the batch + index = (inputs['questions'] == 1).nonzero(as_tuple=False)[:, 1].cpu().detach().numpy() + """print(index[0])""" + emb_lang, lengths_lang = self.embed_lang(inputs['questions'], vocab) + emb_lang = self.dataset_enc(emb_lang, vocab) if self.dataset_enc else emb_lang + # embed frames and actions + emb_frames, emb_object = self.embed_frames(inputs['frames']) + lengths_frames = inputs['length_frames'] + emb_actions = self.embed_actions(inputs['actions']) + assert emb_frames.shape == emb_actions.shape + lengths_actions = lengths_frames.clone() + length_frames_max = inputs['length_frames_max'] + + # concatenate language, frames and actions and add encodings + encoder_out, _ = self.encoder_vl( + emb_lang, emb_frames, emb_actions, lengths_lang, + lengths_frames, lengths_actions, length_frames_max) + + # use outputs corresponding to visual frames for prediction only + encoder_out_visual = encoder_out[ + :, lengths_lang.max().item(): + lengths_lang.max().item() + length_frames_max] + # print(encoder_out_visual.shape) + # get the output actions + # decoder_input = encoder_out_visual.reshape(-1, self.args.demb) + decoder_input_alt = encoder_out_visual[:, -1, :] + # print(decoder_input.shape) + + """# use outputs corresponding to language for prediction only + encoder_out_language = encoder_out[ + :, :lengths_lang.max().item()] + # print(encoder_out_language.shape) + encoder_out_language_reshape = encoder_out_language.reshape(-1, self.args.demb) + encoder_out_language_emb = self.emb_enc_lang(encoder_out_language_reshape) + # print(encoder_out_language_emb.shape) + encoder_out_language_emb = encoder_out_language_emb.view(*encoder_out_language.shape[:2], -1) + # print(encoder_out_language_emb.shape) + # selection the classes values for the <> token + ids = torch.cat([torch.ones(1, lengths_lang.max().item(), self.num_classes)*idx for idx in index]).long().cuda() + encoder_out_language_emb_question = torch.gather(encoder_out_language_emb, 1, ids)[:, 0, :]""" + + """print(encoder_out_language_emb[0, 2, :]) + print(encoder_out_language_emb_question[0])""" + # get the output objects + # emb_object_flat = emb_object.view(-1, self.args.demb) + emb_object_flat_alt = emb_object[:, -1, :] + decoder_input = decoder_input_alt + emb_object_flat_alt + # decoder_input = decoder_input + emb_object_flat + # print(decoder_input.shape) + answer_flat = self.dec_QA(decoder_input) + # answers = answer_flat.view(*encoder_out_visual.shape[:2], *answer_flat.shape[1:]) + + # print(answer_flat.shape) + # print(answers.shape) + + # answers = torch.sum(answers, dim=1) bad idea + # answers = answers[:, -1, :] + # decoder_input = torch.cat([answers, encoder_out_language_emb_question], dim=1) + # answers = self.classifier_lang(decoder_input) + output.update({'answers': answer_flat}) + + return output + + def embed_lang(self, lang_pad, vocab): + ''' + take a list of annotation tokens and extract embeddings with EncoderLang + ''' + assert lang_pad.max().item() < len(vocab) + embedder_lang = self.emb_ann + emb_lang, lengths_lang = self.encoder_lang( + lang_pad, embedder_lang, vocab, self.pad) + if self.args.detach_lang_emb: + emb_lang = emb_lang.clone().detach() + return emb_lang, lengths_lang + + def embed_frames(self, frames_pad): + ''' + take a list of frames tensors, pad it, apply dropout and extract embeddings + ''' + self.dropout_vis(frames_pad) + frames_4d = frames_pad.view(-1, *frames_pad.shape[2:]) + frames_pad_emb = self.vis_feat(frames_4d).view( + *frames_pad.shape[:2], -1) + frames_pad_emb_skip = self.object_feat( + frames_4d).view(*frames_pad.shape[:2], -1) + return frames_pad_emb, frames_pad_emb_skip + + def embed_actions(self, actions): + ''' + embed previous actions + ''' + emb_actions = self.emb_action(actions) + emb_actions = self.dropout_action(emb_actions) + return emb_actions + + def reset(self): + ''' + reset internal states (used for real-time execution during eval) + ''' + self.frames_traj = torch.zeros(1, 0, *self.visual_tensor_shape) + self.action_traj = torch.zeros(1, 0).long() + + def step(self, input_dict, vocab, prev_action=None): + ''' + forward the model for a single time-step (used for real-time execution during eval) + ''' + frames = input_dict['frames'] + device = frames.device + if prev_action is not None: + prev_action_int = vocab['action_low'].word2index(prev_action) + prev_action_tensor = torch.tensor(prev_action_int)[None, None].to(device) + self.action_traj = torch.cat( + (self.action_traj.to(device), prev_action_tensor), dim=1) + self.frames_traj = torch.cat( + (self.frames_traj.to(device), frames[None]), dim=1) + # at timestep t we have t-1 prev actions so we should pad them + action_traj_pad = torch.cat( + (self.action_traj.to(device), + torch.zeros((1, 1)).to(device).long()), dim=1) + model_out = self.forward( + vocab=vocab['word'], + lang=input_dict['lang'], + lengths_lang=input_dict['lengths_lang'], + length_lang_max=input_dict['length_lang_max'], + frames=self.frames_traj.clone(), + lengths_frames=torch.tensor([self.frames_traj.size(1)]), + length_frames_max=self.frames_traj.size(1), + action=action_traj_pad) + step_out = {} + for key, value in model_out.items(): + # return only the last actions, ignore the rest + step_out[key] = value[:, -1:] + return step_out + + def compute_batch_loss(self, model_out, gt_dict): + ''' + loss function for Seq2Seq agent + ''' + losses = dict() + + # answer classes loss + answer_pred = model_out['answers'].view(-1, model_out['answers'].shape[-1]) + answer_gt = gt_dict['answers'].view(-1) + answer_loss = F.cross_entropy(answer_pred, answer_gt, reduction='mean') + losses['answers'] = answer_loss + + # prediction of <> loss + no_answer_pred = model_out['no_answers'].view(-1, model_out['no_answers'].shape[-1]) + no_answer_gt = gt_dict['no_answers'].view(-1) + no_answer_loss = F.cross_entropy(no_answer_pred, no_answer_gt, reduction='mean') + losses['no_answers'] = no_answer_loss + + return losses + + + def init_weights(self, init_range=0.1): + ''' + init embeddings uniformly + ''' + super().init_weights(init_range) + self.dec_action.bias.data.zero_() + self.dec_action.weight.data.uniform_(-init_range, init_range) + self.emb_action.weight.data.uniform_(-init_range, init_range) + diff --git a/babyai/babyai/QA_simple.py b/babyai/babyai/QA_simple.py new file mode 100644 index 0000000..4a5cc14 --- /dev/null +++ b/babyai/babyai/QA_simple.py @@ -0,0 +1,216 @@ +import time +import torch +from torch import nn +from torch.nn import functional as F + +from babyai import base +from nn.enc_lang_QA import EncoderLang_QA +from nn.enc_visual import FeatureFlat, SimpleEncoder +from nn.enc_vl import EncoderVL +# from alfred.nn.encodings import DatasetLearnedEncoding +from nn.dec_QA import QAClassifier + +class Model(base.Model): + def __init__(self, args, emb_ann_size, numb_action, pad): + ''' + transformer agent + ''' + super().__init__(args, emb_ann_size, numb_action, pad) + + # encoder and visual embeddings + self.encoder_vl = EncoderVL(args) + # pre-encoder for language tokens + self.encoder_lang = EncoderLang_QA(args.encoder_lang['layers'], args) + + # Simple image encoder + self.im_encoder = SimpleEncoder() + # feature embeddings + self.vis_feat = FeatureFlat( + input_shape=self.visual_tensor_shape, + output_size=args.demb) + # dataset id learned encoding (applied after the encoder_lang) + self.dataset_enc = None + """if args.enc['dataset']: + self.dataset_enc = DatasetLearnedEncoding(args.demb, args.data['train'])""" + # embeddings for actions + self.emb_action = nn.Embedding(numb_action, args.demb) + # dropouts + self.dropout_action = nn.Dropout2d(args.dropout['transformer']['action']) + + # decoder parts + encoder_output_size = args.demb + self.dec_action = nn.Linear( + encoder_output_size, args.demb) + self.dec_QA = QAClassifier(encoder_output_size, args['vocab_path']) + + # skip connection for object predictions + self.object_feat = FeatureFlat( + input_shape=self.visual_tensor_shape, + output_size=args.demb) + + # resize encoded language + """with open(args['vocab_path'], 'rb') as filehandle: + # read the data as binary data stream + vocab_list = pkl.load(filehandle)['answer'] + self.num_classes = len(vocab_list) + self.emb_enc_lang = nn.Linear(args.demb, self.num_classes)""" + + # final decoder + """ self.classifier_lang = nn.Linear(self.num_classes*2, self.num_classes)""" + + """# progress monitoring heads + if self.args.progress_aux_loss_wt > 0: + self.dec_progress = nn.Linear(encoder_output_size, 1) + if self.args.subgoal_aux_loss_wt > 0: + self.dec_subgoal = nn.Linear(encoder_output_size, 1) + """ + # final touch + self.init_weights() + self.reset() + + def forward(self, vocab, **inputs): + ''' + forward the model for multiple time-steps (used for training) + ''' + # embed language + output = {} + emb_lang, lengths_lang = self.embed_lang(inputs['questions'], vocab) + emb_lang = self.dataset_enc(emb_lang, vocab) if self.dataset_enc else emb_lang + # embed frames and actions + frames_encoded = self.im_encoder(inputs['frames'].view(-1, *inputs['frames'].shape[-3:]).float()) + frames_encoded = frames_encoded.view(*inputs['frames'].shape[:2], *frames_encoded.shape[-3:]) + emb_frames, emb_object = self.embed_frames(frames_encoded) + lengths_frames = inputs['length_frames'] + emb_actions = self.embed_actions(inputs['actions']) + t1 = time.time() + assert emb_frames.shape == emb_actions.shape + lengths_actions = lengths_frames.clone() + length_frames_max = inputs['length_frames_max'] + # concatenate language, frames and actions and add encodings + encoder_out, _ = self.encoder_vl( + emb_lang, emb_frames, emb_actions, lengths_lang, + lengths_frames, lengths_actions, length_frames_max) + # use outputs corresponding to visual frames for prediction only + encoder_out_visual = encoder_out[ + :, lengths_lang.max().item(): + lengths_lang.max().item() + length_frames_max] + # print(encoder_out_visual.shape) + # get the output actions + decoder_input = encoder_out_visual.reshape(-1, self.args.demb) + # print(decoder_input.shape) + # get the output objects + emb_object_flat = emb_object.view(-1, self.args.demb) + decoder_input = decoder_input + emb_object_flat + answer_flat = self.dec_QA(decoder_input) + answers = answer_flat.view( + *encoder_out_visual.shape[:2], *answer_flat.shape[1:]) + # answers = torch.sum(answers, dim=1) bad idea + answers = answers[:, -1, :] + # decoder_input = torch.cat([answers, encoder_out_language_emb_question], dim=1) + # answers = self.classifier_lang(decoder_input) + + output.update({'answers': answers}) + + return output + + def embed_lang(self, lang_pad, vocab): + ''' + take a list of annotation tokens and extract embeddings with EncoderLang + ''' + assert lang_pad.max().item() < len(vocab) + embedder_lang = self.emb_ann + emb_lang, lengths_lang = self.encoder_lang( + lang_pad, embedder_lang, vocab, self.pad) + if self.args.detach_lang_emb: + emb_lang = emb_lang.clone().detach() + return emb_lang, lengths_lang + + def embed_frames(self, frames_pad): + ''' + take a list of frames tensors, pad it, apply dropout and extract embeddings + ''' + self.dropout_vis(frames_pad) + frames_4d = frames_pad.view(-1, *frames_pad.shape[2:]) + frames_pad_emb = self.vis_feat(frames_4d).view( + *frames_pad.shape[:2], -1) + frames_pad_emb_skip = self.object_feat( + frames_4d).view(*frames_pad.shape[:2], -1) + return frames_pad_emb, frames_pad_emb_skip + + def embed_actions(self, actions): + ''' + embed previous actions + ''' + emb_actions = self.emb_action(actions) + emb_actions = self.dropout_action(emb_actions) + return emb_actions + + def reset(self): + ''' + reset internal states (used for real-time execution during eval) + ''' + self.frames_traj = torch.zeros(1, 0, *self.visual_tensor_shape) + self.action_traj = torch.zeros(1, 0).long() + + def step(self, input_dict, vocab, prev_action=None): + ''' + forward the model for a single time-step (used for real-time execution during eval) + ''' + frames = input_dict['frames'] + device = frames.device + if prev_action is not None: + prev_action_int = vocab['action_low'].word2index(prev_action) + prev_action_tensor = torch.tensor(prev_action_int)[None, None].to(device) + self.action_traj = torch.cat( + (self.action_traj.to(device), prev_action_tensor), dim=1) + self.frames_traj = torch.cat( + (self.frames_traj.to(device), frames[None]), dim=1) + # at timestep t we have t-1 prev actions so we should pad them + action_traj_pad = torch.cat( + (self.action_traj.to(device), + torch.zeros((1, 1)).to(device).long()), dim=1) + model_out = self.forward( + vocab=vocab['word'], + lang=input_dict['lang'], + lengths_lang=input_dict['lengths_lang'], + length_lang_max=input_dict['length_lang_max'], + frames=self.frames_traj.clone(), + lengths_frames=torch.tensor([self.frames_traj.size(1)]), + length_frames_max=self.frames_traj.size(1), + action=action_traj_pad) + step_out = {} + for key, value in model_out.items(): + # return only the last actions, ignore the rest + step_out[key] = value[:, -1:] + return step_out + + def compute_batch_loss(self, model_out, gt_dict): + ''' + loss function for Seq2Seq agent + ''' + losses = dict() + + # answer classes loss + answer_pred = model_out['answers'].view(-1, model_out['answers'].shape[-1]) + answer_gt = gt_dict['answers'].view(-1) + answer_loss = F.cross_entropy(answer_pred, answer_gt, reduction='mean') + losses['answers'] = answer_loss + + # prediction of <> loss + no_answer_pred = model_out['no_answers'].view(-1, model_out['no_answers'].shape[-1]) + no_answer_gt = gt_dict['no_answers'].view(-1) + no_answer_loss = F.cross_entropy(no_answer_pred, no_answer_gt, reduction='mean') + losses['no_answers'] = no_answer_loss + + return losses + + + def init_weights(self, init_range=0.1): + ''' + init embeddings uniformly + ''' + super().init_weights(init_range) + self.dec_action.bias.data.zero_() + self.dec_action.weight.data.uniform_(-init_range, init_range) + self.emb_action.weight.data.uniform_(-init_range, init_range) + diff --git a/babyai/babyai/__init__.py b/babyai/babyai/__init__.py new file mode 100644 index 0000000..a620b94 --- /dev/null +++ b/babyai/babyai/__init__.py @@ -0,0 +1,4 @@ +# Import levels so that the OpenAI Gym environments get registered +# when the babyai package is imported +from . import levels +from . import utils diff --git a/babyai/babyai/arguments.py b/babyai/babyai/arguments.py new file mode 100644 index 0000000..7b1135a --- /dev/null +++ b/babyai/babyai/arguments.py @@ -0,0 +1,109 @@ +""" +Common arguments for BabyAI training scripts +""" + +import os +import argparse +import numpy as np + +class ArgumentParser(argparse.ArgumentParser): + + def __init__(self): + super().__init__() + + # Base arguments + self.add_argument("--env", default=None, + help="name of the environment to train on (REQUIRED)") + self.add_argument("--model", default=None, + help="name of the model (default: ENV_ALGO_TIME)") + self.add_argument("--pretrained-model", default=None, + help='If you\'re using a pre-trained model and want the fine-tuned one to have a new name') + self.add_argument("--seed", type=int, default=1, + help="random seed; if 0, a random random seed will be used (default: 1)") + self.add_argument("--task-id-seed", action='store_true', + help="use the task id within a Slurm job array as the seed") + self.add_argument("--procs", type=int, default=64, + help="number of processes (default: 64)") + self.add_argument("--tb", action="store_true", default=False, + help="log into Tensorboard") + self.add_argument("--wb", action="store_true", default=False, + help="log into WandB") + + self.add_argument('--use-procs', action="store_true", default=False, + help="use multiprocessing rather than multithreading") + + # Training arguments + self.add_argument("--log-interval", type=int, default=10, + help="number of updates between two logs (default: 10)") + self.add_argument("--frames", type=int, default=int(9e10), + help="number of frames of training (default: 9e10)") + self.add_argument("--patience", type=int, default=100, + help="patience for early stopping (default: 100)") + self.add_argument("--epochs", type=int, default=1000000, + help="maximum number of epochs") + self.add_argument("--epoch-length", type=int, default=0, + help="number of examples per epoch; the whole dataset is used by if 0") + self.add_argument("--frames-per-proc", type=int, default=40, + help="number of frames per process before update (default: 40)") + self.add_argument("--lr", type=float, default=1e-4, + help="learning rate (default: 1e-4)") + self.add_argument("--beta1", type=float, default=0.9, + help="beta1 for Adam (default: 0.9)") + self.add_argument("--beta2", type=float, default=0.999, + help="beta2 for Adam (default: 0.999)") + self.add_argument("--recurrence", type=int, default=20, + help="number of timesteps gradient is backpropagated (default: 20)") + self.add_argument("--optim-eps", type=float, default=1e-5, + help="Adam and RMSprop optimizer epsilon (default: 1e-5)") + self.add_argument("--optim-alpha", type=float, default=0.99, + help="RMSprop optimizer apha (default: 0.99)") + self.add_argument("--batch-size", type=int, default=1280, + help="batch size for PPO (default: 1280)") + self.add_argument("--entropy-coef", type=float, default=0.01, + help="entropy term coefficient (default: 0.01)") + self.add_argument("--dropout", type=float, default=0, + help="dropout rate (default: 0)") + self.add_argument("--weight-decay", type=float, default=0, + help="weight-decay coefficient (default: 0)") + + # Model parameters + self.add_argument("--image-dim", type=int, default=128, + help="dimensionality of the image embedding") + self.add_argument("--memory-dim", type=int, default=128, + help="dimensionality of the memory LSTM") + self.add_argument("--instr-dim", type=int, default=128, + help="dimensionality of the memory LSTM") + self.add_argument("--no-instr", action="store_true", default=False, + help="don't use instructions in the model") + self.add_argument("--instr-arch", default="gru", + help="arch to encode instructions, possible values: gru, bigru, conv, bow (default: gru)") + self.add_argument("--no-mem", action="store_true", default=False, + help="don't use memory in the model") + self.add_argument("--arch", default='expert_filmcnn', + help="image embedding architecture") + + # Validation parameters + self.add_argument("--val-seed", type=int, default=int(1e9), + help="seed for environment used for validation (default: 1e9)") + self.add_argument("--val-interval", type=int, default=1, + help="number of epochs between two validation checks (default: 1)") + self.add_argument("--val-episodes", type=int, default=500, + help="number of episodes used to evaluate the agent, and to evaluate validation accuracy") + + def parse_args(self): + """ + Parse the arguments and perform some basic validation + """ + + args = super().parse_args() + + # Set seed for all randomness sources + if args.seed == 0: + args.seed = np.random.randint(10000) + if args.task_id_seed: + args.seed = int(os.environ['SLURM_ARRAY_TASK_ID']) + print('set seed to {}'.format(args.seed)) + + # TODO: more validation + + return args diff --git a/babyai/babyai/base.py b/babyai/babyai/base.py new file mode 100644 index 0000000..557ee09 --- /dev/null +++ b/babyai/babyai/base.py @@ -0,0 +1,77 @@ +from torch import nn + +# from alfred.utils import data_util + + +class Model(nn.Module): + def __init__(self, args, emb_ann_size, numb_action, pad): + ''' + Abstract model + ''' + nn.Module.__init__(self) + self.args = args + self.numb_action = numb_action + self.pad = pad + # shape manually given TO IMPROVE as in ET + # self.visual_tensor_shape = data_util.read_dataset_info( + # args.data['train'][0])['feat_shape'][1:] + self.visual_tensor_shape = [128, 2, 2] + # self.visual_tensor_shape = [512, 7, 7] + # create language and action embeddings + + self.emb_ann = nn.Embedding(emb_ann_size, args.demb) + + # dropouts + self.dropout_vis = nn.Dropout(args.dropout['vis'], inplace=True) + self.dropout_lang = nn.Dropout2d(args.dropout['lang']) + + def init_weights(self, init_range=0.1): + ''' + init linear layers in embeddings + ''' + self.emb_ann.weight.data.uniform_(-init_range, init_range) + + def compute_metrics(self, model_out, gt_dict, metrics_dict, verbose): + ''' + compute model-specific metrics and put it to metrics dict + ''' + raise NotImplementedError + + def forward(self, vocab, **inputs): + ''' + forward the model for multiple time-steps (used for training) + ''' + raise NotImplementedError() + + def compute_batch_loss(self, model_out, gt_dict): + ''' + compute the loss function for a single batch + ''' + raise NotImplementedError() + + def compute_loss(self, model_outs, gt_dicts): + ''' + compute the loss function for several batches + ''' + # compute losses for each batch + losses = {} + for dataset_key in model_outs.keys(): + losses[dataset_key] = self.compute_batch_loss( + model_outs[dataset_key], gt_dicts[dataset_key]) + return losses + + def compute_batch_DOE(self, model_out, gt_dict): + ''' + compute the DOE for a single batch + ''' + raise NotImplementedError() + + def compute_DOE(self, model_outs): + ''' + compute the DOE for several batches + ''' + # compute losses for each batch + DOE= {} + for dataset_key in model_outs.keys(): + DOE[dataset_key] = self.compute_batch_DOE(model_outs[dataset_key]) + return DOE diff --git a/babyai/babyai/batchsampler.py b/babyai/babyai/batchsampler.py new file mode 100644 index 0000000..e2e77ba --- /dev/null +++ b/babyai/babyai/batchsampler.py @@ -0,0 +1,58 @@ +import numpy as np +import copy + +class BatchSampler(object): + """ + Class used to sample a batch of demonstrations from demonstrations of multiple + environments based on a distribution. + Used for Teacher Student Curriculum setting in imitation learning. + """ + + def __init__(self, demos, batch_size, seed, no_mem=False): + self.num_task = len(demos) + self.dist_task = np.ones(self.num_task) / self.num_task * 1.0 + self.demos = demos + self.batch_size = batch_size + self.no_mem = no_mem + self.rng = np.random.RandomState(seed) + + self.total_demos = 0 + self.num_used_demos = 0 + self.current_demos = [None] * self.num_task + self.current_ids = [None] * self.num_task + for tid in range(self.num_task): + self.total_demos += self.reset(tid) + + self.tracking_total_demos = self.total_demos + + def setDist(self, dist_task): + self.dist_task = dist_task + + def reset(self, tid): + np.random.shuffle(self.demos[tid]) + self.current_demos[tid] = self.demos[tid] + self.current_ids[tid] = 0 + + return len(self.demos[tid]) + + def sample(self): + + batch = [] + for i in range(self.batch_size): + tid = self.rng.choice(range(len(self.dist_task)), p=self.dist_task) + cid = self.current_ids[tid] + if cid >= len(self.current_demos[tid]): + self.reset(tid) + cid = self.current_ids[tid] + + batch += [self.current_demos[tid][cid]] + self.current_ids[tid] += 1 + + if self.no_mem: + batch = np.array(batch) + + self.num_used_demos += self.batch_size + should_evaluate = self.num_used_demos >= self.tracking_total_demos + if should_evaluate: + self.tracking_total_demos += self.total_demos + return batch, should_evaluate \ No newline at end of file diff --git a/babyai/babyai/bot.py b/babyai/babyai/bot.py new file mode 100644 index 0000000..73d1330 --- /dev/null +++ b/babyai/babyai/bot.py @@ -0,0 +1,954 @@ +from gym_minigrid.minigrid import * +from babyai.levels.verifier import * +from babyai.levels.verifier import (ObjDesc, pos_next_to, + GoToInstr, OpenInstr, PickupInstr, PutNextInstr, BeforeInstr, AndInstr, AfterInstr) + + +class DisappearedBoxError(Exception): + """ + Error that's thrown when a box is opened. + We make the assumption that the bot cannot accomplish the mission when it happens. + """ + def __init__(self, value): + self.value = value + + def __str__(self): + return repr(self.value) + + +def manhattan_distance(pos, target): + return np.abs(target[0] - pos[0]) + np.abs(target[1] - pos[1]) + + +class Subgoal: + """The base class for all possible Bot subgoals. + + Parameters: + ---------- + bot : Bot + The bot whose subgoal this is. + datum : object + The first parameter of the subgoal, e.g. a location or an object description. + reason : str + Why this subgoal was created. Subgoals created for different reasons require + similar but different behaviour. + + """ + + def __init__(self, bot=None, datum=None, reason=None): + self.bot = bot + self.datum = datum + self.reason = reason + + self.update_agent_attributes() + + self.actions = self.bot.mission.actions + + def __repr__(self): + """Mainly for debugging purposes""" + representation = '(' + representation += type(self).__name__ + if self.datum is not None: + representation += ': {}'.format(self.datum) + if self.reason is not None: + representation += ', reason: {}'.format(self.reason) + representation += ')' + return representation + + def update_agent_attributes(self): + """Should be called at each step before the replanning methods.""" + self.pos = self.bot.mission.agent_pos + self.dir_vec = self.bot.mission.dir_vec + self.right_vec = self.bot.mission.right_vec + self.fwd_pos = self.pos + self.dir_vec + self.fwd_cell = self.bot.mission.grid.get(*self.fwd_pos) + self.carrying = self.bot.mission.carrying + + def replan_before_action(self): + """Change the plan if needed and return a suggested action. + + This method is called at every iteration for the top-most subgoal + from the stack. It is supposed to return a suggested action if + it is clear how to proceed towards achieving the current subgoal. + If the subgoal is already achieved, or if it is not clear how it + can be achieved, or if is clear that a better plan exists, + this method can replan by pushing new subgoals + from the stack or popping the top one. + + Returns: + ------- + action : object + A suggection action if known, `None` the stack has been altered + and further replanning is required. + + """ + raise NotImplementedError() + + + def replan_after_action(self, action_taken): + """Change the plan when the taken action is known. + + The action actually taken by the agent can be different from the one + suggested by `replan_before_action` is the bot can be used in + advising mode. This method is supposed to adjust the plan in the view + of the actual action taken. + + """ + pass + + + def is_exploratory(self): + """Whether the subgoal is exploratory or not. + + Exploratory subgoals can be removed from the stack by the bot, e.g. + when no more exploration is required. + + """ + return False + + def _plan_undo_action(self, action_taken): + """Plan how to undo the taken action.""" + if action_taken == self.actions.forward: + # check if the 'forward' action was succesful + if not np.array_equal(self.bot.prev_agent_pos, self.pos): + self.bot.stack.append(GoNextToSubgoal(self.bot, self.pos)) + elif action_taken == self.actions.left: + old_fwd_pos = self.pos + self.right_vec + self.bot.stack.append(GoNextToSubgoal(self.bot, self.pos + self.right_vec)) + elif action_taken == self.actions.right: + old_fwd_pos = self.pos - self.right_vec + self.bot.stack.append(GoNextToSubgoal(self.bot, self.pos - self.right_vec)) + elif action_taken == self.actions.drop and self.bot.prev_carrying != self.carrying: + # get that thing back, if dropping was succesful + assert self.fwd_cell.type in ('key', 'box', 'ball') + self.bot.stack.append(PickupSubgoal(self.bot)) + elif action_taken == self.actions.pickup and self.bot.prev_carrying != self.carrying: + # drop that thing where you found it + fwd_cell = self.bot.mission.grid.get(*self.fwd_pos) + self.bot.stack.append(DropSubgoal(self.bot)) + elif action_taken == self.actions.toggle: + # if you opened or closed a door, bring it back in the original state + fwd_cell = self.bot.mission.grid.get(*self.fwd_pos) + if (fwd_cell and fwd_cell.type == 'door' + and self.bot.fwd_door_was_open != fwd_cell.is_open): + self.bot.stack.append(CloseSubgoal(self.bot) + if fwd_cell.is_open + else OpenSubgoal(self.bot)) + + +class CloseSubgoal(Subgoal): + + def replan_before_action(self): + assert self.fwd_cell is not None, 'Forward cell is empty' + assert self.fwd_cell.type == 'door', 'Forward cell has to be a door' + assert self.fwd_cell.is_open, 'Forward door must be open' + return self.actions.toggle + + def replan_after_action(self, action_taken): + if action_taken is None or action_taken == self.actions.toggle: + self.bot.stack.pop() + elif action_taken in [self.actions.forward, self.actions.left, self.actions.right]: + self._plan_undo_action(action_taken) + + +class OpenSubgoal(Subgoal): + """Subgoal for opening doors. + + Parameters: + ---------- + reason : str + `None`, `"Unlock"`, or `"UnlockAndKeepKey"`. If the reason is `"Unlock"`, + the agent will plan dropping the key somewhere after it opens the door + (see `replan_after_action`). When the agent faces the door, and the + reason is `None`, this subgoals replaces itself with a similar one, + but with with the reason `"Unlock"`. `reason="UnlockAndKeepKey` means + that the agent should not schedule the dropping of the key + when it faces a locked door, and should instead keep the key. + + """ + + def replan_before_action(self): + assert self.fwd_cell is not None, 'Forward cell is empty' + assert self.fwd_cell.type == 'door', 'Forward cell has to be a door' + + # If the door is locked, go find the key and then return + # TODO: do we really need to be in front of the locked door + # to realize that we need the key for it ? + got_the_key = (self.carrying and self.carrying.type == 'key' + and self.carrying.color == self.fwd_cell.color) + if (self.fwd_cell.is_locked and not got_the_key): + # Find the key + key_desc = ObjDesc('key', self.fwd_cell.color) + key_desc.find_matching_objs(self.bot.mission) + + # If we're already carrying something + if self.carrying: + self.bot.stack.pop() + + # Find a location to drop what we're already carrying + drop_pos_cur = self.bot._find_drop_pos() + + # Take back the object being carried + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos_cur)) + + # Go back to the door and open it + self.bot.stack.append(OpenSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, tuple(self.fwd_pos))) + + # Go to the key and pick it up + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, key_desc)) + + # Drop the object being carried + self.bot.stack.append(DropSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos_cur)) + else: + # This branch is will be used very rarely, given that + # GoNextToSubGoal(..., reason='Open') should plan + # going to the key before we get to stand right in front of a door. + # But the agent can be spawned right in front of a open door, + # for which we case we do need this code. + + self.bot.stack.pop() + + # Go back to the door and open it + self.bot.stack.append(OpenSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, tuple(self.fwd_pos))) + + # Go to the key and pick it up + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, key_desc)) + return + + if self.fwd_cell.is_open: + self.bot.stack.append(CloseSubgoal(self.bot)) + return + + if self.fwd_cell.is_locked and self.reason is None: + self.bot.stack.pop() + self.bot.stack.append(OpenSubgoal(self.bot, reason='Unlock')) + return + + return self.actions.toggle + + def replan_after_action(self, action_taken): + if action_taken is None or action_taken == self.actions.toggle: + self.bot.stack.pop() + if self.reason == 'Unlock': + # The reason why this has to be planned after the action is taken + # is because if the position for dropping is chosen in advance, + # then by the time the key is dropped there, it might already + # be occupied. + drop_key_pos = self.bot._find_drop_pos() + self.bot.stack.append(DropSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_key_pos)) + else: + self._plan_undo_action(action_taken) + + +class DropSubgoal(Subgoal): + + def replan_before_action(self): + assert self.bot.mission.carrying + assert not self.fwd_cell + return self.actions.drop + + def replan_after_action(self, action_taken): + if action_taken is None or action_taken == self.actions.drop: + self.bot.stack.pop() + elif action_taken in [self.actions.forward, self.actions.left, self.actions.right]: + self._plan_undo_action(action_taken) + + +class PickupSubgoal(Subgoal): + + def replan_before_action(self): + assert not self.bot.mission.carrying + return self.actions.pickup + + def replan_after_action(self, action_taken): + if action_taken is None or action_taken == self.actions.pickup: + self.bot.stack.pop() + elif action_taken in [self.actions.left, self.actions.right]: + self._plan_undo_action(action_taken) + + +class GoNextToSubgoal(Subgoal): + """The subgoal for going next to objects or positions. + + Parameters: + ---------- + datum : (int, int) tuple or `ObjDesc` or object reference + The position or the decription of the object or + the object to which we are going. + reason : str + One of the following: + - `None`: go the position (object) and face it + - `"PutNext"`: go face an empty position next to the object specified by `datum` + - `"Explore"`: going to a position, just like when the reason is `None`. The only + difference is that with this reason the subgoal will be considered + exploratory + + """ + + def replan_before_action(self): + target_obj = None + if isinstance(self.datum, ObjDesc): + target_obj, target_pos = self.bot._find_obj_pos(self.datum, self.reason == 'PutNext') + if not target_pos: + # No path found -> Explore the world + self.bot.stack.append(ExploreSubgoal(self.bot)) + return + elif isinstance(self.datum, WorldObj): + target_obj = self.datum + target_pos = target_obj.cur_pos + else: + target_pos = tuple(self.datum) + + # Suppore we are walking towards the door that we would like to open, + # it is locked, and we don't have the key. What do we do? If we are carrying + # something, it makes to just continue, as we still need to bring this object + # close to the door. If we are not carrying anything though, then it makes + # sense to change the plan and go straight for the required key. + if (self.reason == 'Open' + and target_obj and target_obj.type == 'door' and target_obj.is_locked): + key_desc = ObjDesc('key', target_obj.color) + key_desc.find_matching_objs(self.bot.mission) + if not self.carrying: + # No we need to commit to going to this particular door + self.bot.stack.pop() + self.bot.stack.append(GoNextToSubgoal(self.bot, target_obj, reason='Open')) + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, key_desc)) + return + + # The position we are on is the one we should go next to + # -> Move away from it + if manhattan_distance(target_pos, self.pos) == (1 if self.reason == 'PutNext' else 0): + def steppable(cell): + return cell is None or (cell.type == 'door' and cell.is_open) + if steppable(self.fwd_cell): + return self.actions.forward + if steppable(self.bot.mission.grid.get(*(self.pos + self.right_vec))): + return self.actions.right + if steppable(self.bot.mission.grid.get(*(self.pos - self.right_vec))): + return self.actions.left + # Spin and hope for the best + return self.actions.left + + # We are facing the target cell + # -> subgoal completed + if self.reason == 'PutNext': + if manhattan_distance(target_pos, self.fwd_pos) == 1: + if self.fwd_cell is None: + self.bot.stack.pop() + return + if self.fwd_cell.type == 'door' and self.fwd_cell.is_open: + # We can't drop an object in the cell where the door is. + # Instead, we add a subgoal on the stack that will force + # the bot to move the target object. + self.bot.stack.append(GoNextToSubgoal( + self.bot, self.fwd_pos + 2 * self.dir_vec)) + return + else: + if np.array_equal(target_pos, self.fwd_pos): + self.bot.stack.pop() + return + + # We are still far from the target + # -> try to find a non-blocker path + path, _, _ = self.bot._shortest_path( + lambda pos, cell: pos == target_pos, + ) + + # No non-blocker path found and + # reexploration within the room is not allowed or there is nothing to explore + # -> Look for blocker paths + if not path: + path, _, _ = self.bot._shortest_path( + lambda pos, cell: pos == target_pos, + try_with_blockers=True + ) + + # No path found + # -> explore the world + if not path: + self.bot.stack.append(ExploreSubgoal(self.bot)) + return + + # So there is a path (blocker, or non-blockers) + # -> try following it + next_cell = path[0] + + # Choose the action in the case when the forward cell + # is the one we should go next to + if np.array_equal(next_cell, self.fwd_pos): + if self.fwd_cell: + if self.fwd_cell.type == 'door': + assert not self.fwd_cell.is_locked + if not self.fwd_cell.is_open: + self.bot.stack.append(OpenSubgoal(self.bot)) + return + else: + return self.actions.forward + if self.carrying: + drop_pos_cur = self.bot._find_drop_pos() + drop_pos_block = self.bot._find_drop_pos(drop_pos_cur) + # Take back the object being carried + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos_cur)) + + # Pick up the blocking object and drop it + self.bot.stack.append(DropSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos_block)) + self.bot.stack.append(PickupSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, self.fwd_pos)) + + # Drop the object being carried + self.bot.stack.append(DropSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos_cur)) + return + else: + drop_pos = self.bot._find_drop_pos() + self.bot.stack.append(DropSubgoal(self.bot)) + self.bot.stack.append(GoNextToSubgoal(self.bot, drop_pos)) + self.bot.stack.append(PickupSubgoal(self.bot)) + return + else: + return self.actions.forward + + # The forward cell is not the one we should go to + # -> turn towards the direction we need to go + if np.array_equal(next_cell - self.pos, self.right_vec): + return self.actions.right + elif np.array_equal(next_cell - self.pos, -self.right_vec): + return self.actions.left + + # If we reacher this point in the code, then the cell is behind us. + # Instead of choosing left or right randomly, + # let's do something that might be useful: + # Because when we're GoingNextTo for the purpose of exploring, + # things might change while on the way to the position we're going to, we should + # pick this right or left wisely. + # The simplest thing we should do is: pick the one + # that doesn't lead you to face a non empty cell. + # One better thing would be to go to the direction + # where the closest wall/door is the furthest + distance_right = self.bot._closest_wall_or_door_given_dir(self.pos, self.right_vec) + distance_left = self.bot._closest_wall_or_door_given_dir(self.pos, -self.right_vec) + if distance_left > distance_right: + return self.actions.left + return self.actions.right + + def replan_after_action(self, action_taken): + if action_taken in [self.actions.pickup, self.actions.drop, self.actions.toggle]: + self._plan_undo_action(action_taken) + + def is_exploratory(self): + return self.reason == 'Explore' + + +class ExploreSubgoal(Subgoal): + def replan_before_action(self): + # Find the closest unseen position + _, unseen_pos, with_blockers = self.bot._shortest_path( + lambda pos, cell: not self.bot.vis_mask[pos], + try_with_blockers=True + ) + + if unseen_pos: + self.bot.stack.append(GoNextToSubgoal(self.bot, unseen_pos, reason='Explore')) + return None + + # Find the closest unlocked unopened door + def unopened_unlocked_door(pos, cell): + return cell and cell.type == 'door' and not cell.is_locked and not cell.is_open + + # Find the closest unopened door + def unopened_door(pos, cell): + return cell and cell.type == 'door' and not cell.is_open + + # Try to find an unlocked door first. + # We do this because otherwise, opening a locked door as + # a subgoal may try to open the same door for exploration, + # resulting in an infinite loop. + _, door_pos, _ = self.bot._shortest_path( + unopened_unlocked_door, try_with_blockers=True) + if not door_pos: + # Try to find a locker door if an unlocked one is not available. + _, door_pos, _ = self.bot._shortest_path( + unopened_door, try_with_blockers=True) + + # Open the door + if door_pos: + door_obj = self.bot.mission.grid.get(*door_pos) + # If we are going to a locked door, there are two cases: + # - we already have the key, then we should not drop it + # - we don't have the key, in which case eventually we should drop it + got_the_key = (self.carrying + and self.carrying.type == 'key' and self.carrying.color == door_obj.color) + open_reason = 'KeepKey' if door_obj.is_locked and got_the_key else None + self.bot.stack.pop() + self.bot.stack.append(OpenSubgoal(self.bot, reason=open_reason)) + self.bot.stack.append(GoNextToSubgoal(self.bot, door_obj, reason='Open')) + return + + assert False, "0nothing left to explore" + + def is_exploratory(self): + return True + + +class Bot: + """A bot that can solve all BabyAI levels. + + The bot maintains a plan, represented as a stack of the so-called + subgoals. The initial set of subgoals is generated from the instruction. + The subgoals are then executed one after another, unless a change of + plan is required (e.g. the location of the target object is not known + or there other objects in the way). In this case, the bot changes the plan. + + The bot can also be used to advice a suboptimal agent, e.g. play the + role of an oracle in algorithms like DAGGER. It changes the plan based on + the actual action that the agent took. + + The main method of the bot (and the only one you are supposed to use) is `replan`. + + Parameters: + ---------- + mission : a freshly created BabyAI environment + + """ + + def __init__(self, mission): + # Mission to be solved + self.mission = mission + + # Grid containing what has been mapped out + self.grid = Grid(mission.width, mission.height) + + # Visibility mask. True for explored/seen, false for unexplored. + self.vis_mask = np.zeros(shape=(mission.width, mission.height), dtype=np.bool) + + # Stack of tasks/subtasks to complete (tuples) + self.stack = [] + + # Process/parse the instructions + self._process_instr(mission.instrs) + + # How many BFS searches this bot has performed + self.bfs_counter = 0 + + # How many steps were made in total in all BFS searches + # performed by this bot + self.bfs_step_counter = 0 + + def replan(self, action_taken=None): + """Replan and suggest an action. + + Call this method once per every iteration of the environment. + + Parameters: + ---------- + action_taken + The last action that the agent took. Can be `None`, + in which case the bot assumes that the action it suggested + was taken (or that it is the first iteration). + + Returns: + ------- + suggested_action + The action that the bot suggests. Can be `done` if the + bot thinks that the mission has been accomplished. + + """ + self._process_obs() + + # Check that no box has been opened + self._check_erroneous_box_opening(action_taken) + + # TODO: instead of updating all subgoals, just add a couple + # properties to the `Subgoal` class. + for subgoal in self.stack: + subgoal.update_agent_attributes() + + if self.stack: + self.stack[-1].replan_after_action(action_taken) + + # Clear the stack from the non-essential subgoals + while self.stack and self.stack[-1].is_exploratory(): + self.stack.pop() + + suggested_action = None + lots_of_none = 0 + while self.stack: + subgoal = self.stack[-1] + suggested_action = subgoal.replan_before_action() + if suggested_action == None: + lots_of_none += 1 + if lots_of_none == 4: # TODO: hack... is there a better way? + return None + # If is not clear what can be done for the current subgoal + # (because it is completed, because there is blocker, + # or because exploration is required), keep replanning + if suggested_action is not None: + lots_of_none = 0 + break + if not self.stack: + suggested_action = self.mission.actions.done + + self._remember_current_state() + return suggested_action + + def _find_obj_pos(self, obj_desc, adjacent=False): + """Find the position of the closest visible object matching a given description.""" + + assert len(obj_desc.obj_set) > 0 + + best_distance_to_obj = 999 + best_pos = None + best_obj = None + + for i in range(len(obj_desc.obj_set)): + try: + if obj_desc.obj_set[i] == self.mission.carrying: + continue + obj_pos = obj_desc.obj_poss[i] + + if self.vis_mask[obj_pos]: + shortest_path_to_obj, _, with_blockers = self._shortest_path( + lambda pos, cell: pos == obj_pos, + try_with_blockers=True + ) + assert shortest_path_to_obj is not None + distance_to_obj = len(shortest_path_to_obj) + + if with_blockers: + # The distance should take into account the steps necessary + # to unblock the way. Instead of computing it exactly, + # we can use a lower bound on this number of steps + # which is 4 when the agent is not holding anything + # (pick, turn, drop, turn back + # and 7 if the agent is carrying something + # (turn, drop, turn back, pick, + # turn to other direction, drop, turn back) + distance_to_obj = (len(shortest_path_to_obj) + + (7 if self.mission.carrying else 4)) + + # If we looking for a door and we are currently in that cell + # that contains the door, it will take us at least 2 + # (3 if `adjacent == True`) steps to reach the goal.` + if distance_to_obj == 0: + distance_to_obj = 3 if adjacent else 2 + + # If what we want is to face a location that is adjacent to an object, + # and if we are already right next to this object, + # then we should not prefer this object to those at distance 2 + if adjacent and distance_to_obj == 1: + distance_to_obj = 3 + + if distance_to_obj < best_distance_to_obj: + best_distance_to_obj = distance_to_obj + best_pos = obj_pos + best_obj = obj_desc.obj_set[i] + except IndexError: + # Suppose we are tracking red keys, and we just used a red key to open a door, + # then for the last i, accessing obj_desc.obj_poss[i] will raise an IndexError + # -> Solution: Not care about that red key we used to open the door + pass + + return best_obj, best_pos + + def _process_obs(self): + """Parse the contents of an observation/image and update our state.""" + + grid, vis_mask = self.mission.gen_obs_grid() + + view_size = self.mission.agent_view_size + pos = self.mission.agent_pos + f_vec = self.mission.dir_vec + r_vec = self.mission.right_vec + + # Compute the absolute coordinates of the top-left corner + # of the agent's view area + top_left = pos + f_vec * (view_size - 1) - r_vec * (view_size // 2) + + # Mark everything in front of us as visible + for vis_j in range(0, view_size): + for vis_i in range(0, view_size): + + if not vis_mask[vis_i, vis_j]: + continue + + # Compute the world coordinates of this cell + abs_i, abs_j = top_left - (f_vec * vis_j) + (r_vec * vis_i) + + if abs_i < 0 or abs_i >= self.vis_mask.shape[0]: + continue + if abs_j < 0 or abs_j >= self.vis_mask.shape[1]: + continue + + self.vis_mask[abs_i, abs_j] = True + + def _remember_current_state(self): + self.prev_agent_pos = self.mission.agent_pos + self.prev_carrying = self.mission.carrying + fwd_cell = self.mission.grid.get(*self.mission.agent_pos + self.mission.dir_vec) + if fwd_cell and fwd_cell.type == 'door': + self.fwd_door_was_open = fwd_cell.is_open + self.prev_fwd_cell = fwd_cell + + def _closest_wall_or_door_given_dir(self, position, direction): + distance = 1 + while True: + position_to_try = position + distance * direction + # If the current position is outside the field of view, + # stop everything and return the previous one + if not self.mission.in_view(*position_to_try): + return distance - 1 + cell = self.mission.grid.get(*position_to_try) + if cell and (cell.type.endswith('door') or cell.type == 'wall'): + return distance + distance += 1 + + def _breadth_first_search(self, initial_states, accept_fn, ignore_blockers): + """Performs breadth first search. + + This is pretty much your textbook BFS. The state space is agent's locations, + but the current direction is also added to the queue to slightly prioritize + going straight over turning. + + """ + self.bfs_counter += 1 + + queue = [(state, None) for state in initial_states] + grid = self.mission.grid + previous_pos = dict() + + while len(queue) > 0: + state, prev_pos = queue[0] + queue = queue[1:] + i, j, di, dj = state + + if (i, j) in previous_pos: + continue + + self.bfs_step_counter += 1 + + cell = grid.get(i, j) + previous_pos[(i, j)] = prev_pos + + # If we reached a position satisfying the acceptance condition + if accept_fn((i, j), cell): + path = [] + pos = (i, j) + while pos: + path.append(pos) + pos = previous_pos[pos] + return path, (i, j), previous_pos + + # If this cell was not visually observed, don't expand from it + if not self.vis_mask[i, j]: + continue + + if cell: + if cell.type == 'wall': + continue + # If this is a door + elif cell.type == 'door': + # If the door is closed, don't visit neighbors + if not cell.is_open: + continue + elif not ignore_blockers: + continue + + # Location to which the bot can get without turning + # are put in the queue first + for k, l in [(di, dj), (dj, di), (-dj, -di), (-di, -dj)]: + next_pos = (i + k, j + l) + next_dir_vec = (k, l) + next_state = (*next_pos, *next_dir_vec) + queue.append((next_state, (i, j))) + + # Path not found + return None, None, previous_pos + + def _shortest_path(self, accept_fn, try_with_blockers=False): + """ + Finds the path to any of the locations that satisfy `accept_fn`. + Prefers the paths that avoid blockers for as long as possible. + """ + + # Initial states to visit (BFS) + initial_states = [(*self.mission.agent_pos, *self.mission.dir_vec)] + + path = finish = None + with_blockers = False + path, finish, previous_pos = self._breadth_first_search( + initial_states, accept_fn, ignore_blockers=False) + if not path and try_with_blockers: + with_blockers = True + path, finish, _ = self._breadth_first_search( + [(i, j, 1, 0) for i, j in previous_pos], + accept_fn, ignore_blockers=True) + if path: + # `path` now contains the path to a cell that is reachable without + # blockers. Now let's add the path to this cell + pos = path[-1] + extra_path = [] + while pos: + extra_path.append(pos) + pos = previous_pos[pos] + path = path + extra_path[1:] + + if path: + # And the starting position is not required + path = path[::-1] + path = path[1:] + + # Note, that with_blockers only makes sense if path is not None + return path, finish, with_blockers + + def _find_drop_pos(self, except_pos=None): + """ + Find a position where an object can be dropped, ideally without blocking anything. + """ + + grid = self.mission.grid + + def match_unblock(pos, cell): + # Consider the region of 8 neighboring cells around the candidate cell. + # If dropping the object in the candidate makes this region disconnected, + # then probably it is better to drop elsewhere. + + i, j = pos + agent_pos = tuple(self.mission.agent_pos) + + if np.array_equal(pos, agent_pos): + return False + + if except_pos and np.array_equal(pos, except_pos): + return False + + if not self.vis_mask[i, j] or grid.get(i, j): + return False + + # We distinguish cells of three classes: + # class 0: the empty ones, including open doors + # class 1: those that are not interesting (just walls so far) + # class 2: all the rest, including objects and cells that are current not visible, + # and hence may contain objects, and also `except_pos` at it may soon contain + # an object + # We want to ensure that empty cells are connected, and that one can reach + # any object cell from any other object cell. + cell_class = [] + for k, l in [(-1, -1), (0, -1), (1, -1), (1, 0), + (1, 1), (0, 1), (-1, 1), (-1, 0)]: + nb_pos = (i + k, j + l) + cell = grid.get(*nb_pos) + # compeletely blocked + if self.vis_mask[nb_pos] and cell and cell.type == 'wall': + cell_class.append(1) + # empty + elif (self.vis_mask[nb_pos] + and (not cell or (cell.type == 'door' and cell.is_open) or nb_pos == agent_pos) + and nb_pos != except_pos): + cell_class.append(0) + # an object cell + else: + cell_class.append(2) + + # Now we need to check that empty cells are connected. To do that, + # let's check how many times empty changes to non-empty + changes = 0 + for i in range(8): + if bool(cell_class[(i + 1) % 8]) != bool(cell_class[i]): + changes += 1 + + # Lastly, we need check that every object has an adjacent empty cell + for i in range(8): + next_i = (i + 1) % 8 + prev_i = (i + 7) % 8 + if cell_class[i] == 2 and cell_class[prev_i] != 0 and cell_class[next_i] != 0: + return False + + return changes <= 2 + + def match_empty(pos, cell): + i, j = pos + + if np.array_equal(pos, self.mission.agent_pos): + return False + + if except_pos and np.array_equal(pos, except_pos): + return False + + if not self.vis_mask[pos] or grid.get(*pos): + return False + + return True + + _, drop_pos, _ = self._shortest_path(match_unblock) + + if not drop_pos: + _, drop_pos, _ = self._shortest_path(match_empty) + + if not drop_pos: + _, drop_pos, _ = self._shortest_path(match_unblock, try_with_blockers=True) + + if not drop_pos: + _, drop_pos, _ = self._shortest_path(match_empty, try_with_blockers=True) + + return drop_pos + + def _process_instr(self, instr): + """ + Translate instructions into an internal form the agent can execute + """ + + if isinstance(instr, GoToInstr): + self.stack.append(GoNextToSubgoal(self, instr.desc)) + return + + if isinstance(instr, OpenInstr): + self.stack.append(OpenSubgoal(self)) + self.stack.append(GoNextToSubgoal(self, instr.desc, reason='Open')) + return + + if isinstance(instr, PickupInstr): + # We pick up and immediately drop so + # that we may carry other objects + self.stack.append(DropSubgoal(self)) + self.stack.append(PickupSubgoal(self)) + self.stack.append(GoNextToSubgoal(self, instr.desc)) + return + + if isinstance(instr, PutNextInstr): + self.stack.append(DropSubgoal(self)) + self.stack.append(GoNextToSubgoal(self, instr.desc_fixed, reason='PutNext')) + self.stack.append(PickupSubgoal(self)) + self.stack.append(GoNextToSubgoal(self, instr.desc_move)) + return + + if isinstance(instr, BeforeInstr) or isinstance(instr, AndInstr): + self._process_instr(instr.instr_b) + self._process_instr(instr.instr_a) + return + + if isinstance(instr, AfterInstr): + self._process_instr(instr.instr_a) + self._process_instr(instr.instr_b) + return + + assert False, "unknown instruction type" + + def _check_erroneous_box_opening(self, action): + """ + When the agent opens a box, we raise an error and mark the task unsolvable. + This is a tad conservative, because maybe the box is irrelevant to the mission. + """ + if (action == self.mission.actions.toggle + and self.prev_fwd_cell is not None + and self.prev_fwd_cell.type == 'box'): + raise DisappearedBoxError('A box was opened. I am not sure I can help now.') diff --git a/babyai/babyai/evaluate.py b/babyai/babyai/evaluate.py new file mode 100644 index 0000000..9090f3e --- /dev/null +++ b/babyai/babyai/evaluate.py @@ -0,0 +1,151 @@ +import numpy as np +from gym_minigrid.wrappers import FullyObsImgDirWrapper, FullyObsImgEgoWrapper +import gym +from babyai.hrl import HRLManyEnvs + +# Returns the performance of the agent on the environment for a particular number of episodes. +def evaluate(agent, env, episodes, model_agent=True, offsets=None): + # Initialize logs + if model_agent: + agent.model.eval() + logs = {"num_frames_per_episode": [], "return_per_episode": [], "observations_per_episode": []} + + if offsets: + count = 0 + + for i in range(episodes): + if offsets: + # Ensuring test on seed offsets that generated successful demonstrations + while count != offsets[i]: + obs = env.reset() + count += 1 + + obs = env.reset() + agent.on_reset() + done = False + + num_frames = 0 + returnn = 0 + obss = [] + while not done: + action = agent.act(obs)['action'] + obss.append(obs) + obs, reward, done, _ = env.step(action) + agent.analyze_feedback(reward, done) + num_frames += 1 + returnn += reward + + + logs["observations_per_episode"].append(obss) + logs["num_frames_per_episode"].append(num_frames) + logs["return_per_episode"].append(returnn) + if model_agent: + agent.model.train() + return logs + + +def evaluate_demo_agent(agent, episodes): + logs = {"num_frames_per_episode": [], "return_per_episode": []} + + number_of_demos = len(agent.demos) + + for demo_id in range(min(number_of_demos, episodes)): + logs["num_frames_per_episode"].append(len(agent.demos[demo_id])) + + return logs + + +class ManyEnvs(gym.Env): + + def __init__(self, envs): + self.envs = envs + self.done = [False] * len(self.envs) + + def seed(self, seeds): + [env.seed(seed) for seed, env in zip(seeds, self.envs)] + + def reset(self): + many_obs = [env.reset() for env in self.envs] + self.done = [False] * len(self.envs) + return many_obs + + def step(self, actions): + self.results = [env.step(action) if not done and action < env.action_space.n else self.last_results[i] + for i, (env, action, done) + in enumerate(zip(self.envs, actions, self.done))] + self.done = [result[2] for result in self.results] + self.last_results = self.results + return zip(*self.results) + + def render(self): + raise NotImplementedError + + +# Returns the performance of the agent on the environment for a particular number of episodes. +def batch_evaluate(agent, env_name, seed, episodes, return_obss_actions=False, full_obs=False, + ego=False, hrl=None, pi_l=None, N=None, T=None, instr_handler=None, extra_action=False): + num_envs = min(256, episodes) + + envs = [] + for i in range(num_envs): + env = gym.make(env_name) + if full_obs: + if ego: + env = FullyObsImgEgoWrapper(env) + else: + env = FullyObsImgDirWrapper(env) + envs.append(env) + env = ManyEnvs(envs) + if hrl: + env = HRLManyEnvs(envs, hrl=hrl, pi_l=pi_l, N=N, T=T, instr_handler=instr_handler) + + logs = { + "num_frames_per_episode": [], + "return_per_episode": [], + "observations_per_episode": [], + "actions_per_episode": [], + "seed_per_episode": [] + } + + for i in range((episodes + num_envs - 1) // num_envs): + seeds = range(seed + i * num_envs, seed + (i + 1) * num_envs) + env.seed(seeds) + + many_obs = env.reset() + + cur_num_frames = 0 + num_frames = np.zeros((num_envs,), dtype='int64') + returns = np.zeros((num_envs,)) + already_done = np.zeros((num_envs,), dtype='bool') + if return_obss_actions: + obss = [[] for _ in range(num_envs)] + actions = [[] for _ in range(num_envs)] + while (num_frames == 0).any(): + action = agent.act_batch(many_obs)['action'] + if return_obss_actions: + for i in range(num_envs): + if not already_done[i]: + obss[i].append(many_obs[i]) + actions[i].append(action[i].item()) + many_obs, reward, done, _ = env.step(action) + # agent.analyze_feedback(reward, done) + done = np.array(done) + just_done = done & (~already_done) + returns += reward * just_done + cur_num_frames += 1 + num_frames[just_done] = cur_num_frames + already_done[done] = True + + if return_obss_actions and extra_action: + action = agent.act_batch(many_obs)['action'] + for i in range(num_envs): + actions[i].append(action[i].item()) + + logs["num_frames_per_episode"].extend(list(num_frames)) + logs["return_per_episode"].extend(list(returns)) + logs["seed_per_episode"].extend(list(seeds)) + if return_obss_actions: + logs["observations_per_episode"].extend(obss) + logs["actions_per_episode"].extend(actions) + + return logs diff --git a/babyai/babyai/l_class.py b/babyai/babyai/l_class.py new file mode 100644 index 0000000..ef5484e --- /dev/null +++ b/babyai/babyai/l_class.py @@ -0,0 +1,105 @@ +import gc +import torch +from torch import nn +from torch.nn import functional as F + +from babyai import base +from nn.enc_lang_QA import EncoderLang_QA +from nn.enc_visual import FeatureFlat, SimpleEncoder +from nn.enc_vl import EncoderVL +# from alfred.nn.encodings import DatasetLearnedEncoding +from nn.dec_QA import QAClassifier + +class Model(base.Model): + def __init__(self, args, emb_ann_size, numb_action, pad): + ''' + transformer agent + ''' + super().__init__(args, emb_ann_size, numb_action, pad) + + # pre-encoder for language tokens + self.encoder_lang = EncoderLang_QA(args.encoder_lang['layers'], args) + + # dataset id learned encoding (applied after the encoder_lang) + self.dataset_enc = None + + # decoder parts + encoder_output_size = args.demb + self.dec_QA = QAClassifier(encoder_output_size, args['vocab_path']) + + # final touch + self.init_weights() + self.reset() + + def forward(self, vocab, **inputs): + ''' + forward the model for multiple time-steps (used for training) + ''' + # embed language + indexes = torch.squeeze((inputs['questions'] == 1).nonzero(as_tuple=False)[:, 1:], dim=1) + indexes_3d = torch.unsqueeze(torch.unsqueeze(indexes, dim=1), dim=1) + output = {} + emb_lang, lengths_lang = self.embed_lang(inputs['questions'], vocab) + emb_lang = self.dataset_enc(emb_lang, vocab) if self.dataset_enc else emb_lang + + decoder_input = emb_lang.reshape(-1, self.args.demb) + answer_flat = self.dec_QA(decoder_input) # B*language_seq x voc_size + answers = answer_flat.view( + *emb_lang.shape[:2], *answer_flat.shape[1:]) # B x language_seq x voc_size + + indices = torch.mul(indexes_3d, torch.ones((answers.shape[0], 1, answers.shape[2]), device=torch.device("cuda"))).type(torch.LongTensor).cuda() # B x 1 x voc_size + answers = torch.gather(answers, 1, indices) # B x 1 x voc_size + answers = answers.reshape(-1, answers.shape[2]) # B x voc_size + + output.update({'answers': answers}) + return output + + def embed_lang(self, lang_pad, vocab): + ''' + take a list of annotation tokens and extract embeddings with EncoderLang + ''' + assert lang_pad.max().item() < len(vocab) + embedder_lang = self.emb_ann + emb_lang, lengths_lang = self.encoder_lang( + lang_pad, embedder_lang, vocab, self.pad) + if self.args.detach_lang_emb: + emb_lang = emb_lang.clone().detach() + return emb_lang, lengths_lang + + + def reset(self): + ''' + reset internal states (used for real-time execution during eval) + ''' + self.frames_traj = torch.zeros(1, 0, *self.visual_tensor_shape) + self.action_traj = torch.zeros(1, 0).long() + + + + def compute_batch_loss(self, model_out, gt_dict): + ''' + loss function for Seq2Seq agent + ''' + losses = dict() + + # answer classes loss + answer_pred = model_out['answers'].view(-1, model_out['answers'].shape[-1]) + answer_gt = gt_dict['answers'].view(-1) + answer_loss = F.cross_entropy(answer_pred, answer_gt, reduction='mean') + losses['answers'] = answer_loss + + # prediction of <> loss + no_answer_pred = model_out['no_answers'].view(-1, model_out['no_answers'].shape[-1]) + no_answer_gt = gt_dict['no_answers'].view(-1) + no_answer_loss = F.cross_entropy(no_answer_pred, no_answer_gt, reduction='mean') + losses['no_answers'] = no_answer_loss + + return losses + + + def init_weights(self, init_range=0.1): + ''' + init embeddings uniformly + ''' + super().init_weights(init_range) + diff --git a/babyai/babyai/levels/__init__.py b/babyai/babyai/levels/__init__.py new file mode 100644 index 0000000..627d94f --- /dev/null +++ b/babyai/babyai/levels/__init__.py @@ -0,0 +1,7 @@ +from collections import OrderedDict + +from . import iclr19_levels +from . import bonus_levels +from . import test_levels + +from .levelgen import test, level_dict diff --git a/babyai/babyai/levels/bonus_levels.py b/babyai/babyai/levels/bonus_levels.py new file mode 100644 index 0000000..aaf2b9e --- /dev/null +++ b/babyai/babyai/levels/bonus_levels.py @@ -0,0 +1,1056 @@ +import gym +from gym_minigrid.envs import Key, Ball, Box +from .verifier import * +from .levelgen import * + + +class Level_GoToRedBlueBall(RoomGridLevel): + """ + Go to the red ball or to the blue ball. + There is exactly one red or blue ball, and some distractors. + The distractors are guaranteed not to be red or blue balls. + Language is not required to solve this level. + """ + + def __init__(self, room_size=8, num_dists=7, seed=None): + self.num_dists = num_dists + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + + dists = self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + # Ensure there is only one red or blue ball + for dist in dists: + if dist.type == 'ball' and (dist.color == 'blue' or dist.color == 'red'): + raise RejectSampling('can only have one blue or red ball') + + color = self._rand_elem(['red', 'blue']) + obj, _ = self.add_object(0, 0, 'ball', color) + + # Make sure no unblocking is required + self.check_objs_reachable() + + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_OpenRedDoor(RoomGridLevel): + """ + Go to the red door + (always unlocked, in the current room) + Note: this level is intentionally meant for debugging and is + intentionally kept very simple. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=1, + num_cols=2, + room_size=5, + seed=seed + ) + + def gen_mission(self): + obj, _ = self.add_door(0, 0, 0, 'red', locked=False) + self.place_agent(0, 0) + self.instrs = OpenInstr(ObjDesc('door', 'red')) + + +class Level_OpenDoor(RoomGridLevel): + """ + Go to the door + The door to open is given by its color or by its location. + (always unlocked, in the current room) + """ + + def __init__( + self, + debug=False, + select_by=None, + seed=None + ): + self.select_by = select_by + self.debug = debug + super().__init__(seed=seed) + + def gen_mission(self): + door_colors = self._rand_subset(COLOR_NAMES, 4) + objs = [] + + for i, color in enumerate(door_colors): + obj, _ = self.add_door(1, 1, door_idx=i, color=color, locked=False) + objs.append(obj) + + select_by = self.select_by + if select_by is None: + select_by = self._rand_elem(["color", "loc"]) + if select_by == "color": + object = ObjDesc(objs[0].type, color=objs[0].color) + elif select_by == "loc": + object = ObjDesc(objs[0].type, loc=self._rand_elem(LOC_NAMES)) + + self.place_agent(1, 1) + self.instrs = OpenInstr(object, strict=self.debug) + + +class Level_OpenDoorDebug(Level_OpenDoor): + """ + Same as OpenDoor but the level stops when any door is opened + """ + + def __init__( + self, + select_by=None, + seed=None + ): + super().__init__(select_by=select_by, debug=True, seed=seed) + + +class Level_OpenDoorColor(Level_OpenDoor): + """ + Go to the door + The door is selected by color. + (always unlocked, in the current room) + """ + + def __init__(self, seed=None): + super().__init__( + select_by="color", + seed=seed + ) + + +#class Level_OpenDoorColorDebug(Level_OpenDoorColor, Level_OpenDoorDebug): + """ + Same as OpenDoorColor but the level stops when any door is opened + """ +# pass + + +class Level_OpenDoorLoc(Level_OpenDoor): + """ + Go to the door + The door is selected by location. + (always unlocked, in the current room) + """ + + def __init__(self, seed=None): + super().__init__( + select_by="loc", + seed=seed + ) + + +class Level_GoToDoor(RoomGridLevel): + """ + Go to a door + (of a given color, in the current room) + No distractors, no language variation + """ + + def __init__(self, seed=None): + super().__init__( + room_size=7, + seed=seed + ) + + def gen_mission(self): + objs = [] + for _ in range(4): + door, _ = self.add_door(1, 1) + objs.append(door) + self.place_agent(1, 1) + + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc('door', obj.color)) + + +class Level_GoToObjDoor(RoomGridLevel): + """ + Go to an object or door + (of a given type and color, in the current room) + """ + + def __init__(self, seed=None): + super().__init__( + room_size=8, + seed=seed + ) + + def gen_mission(self): + self.place_agent(1, 1) + objs = self.add_distractors(1, 1, num_distractors=8, all_unique=False) + + for _ in range(4): + door, _ = self.add_door(1, 1) + objs.append(door) + + self.check_objs_reachable() + + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_ActionObjDoor(RoomGridLevel): + """ + [pick up an object] or + [go to an object or door] or + [open a door] + (in the current room) + """ + + def __init__(self, seed=None): + super().__init__( + room_size=7, + seed=seed + ) + + def gen_mission(self): + objs = self.add_distractors(1, 1, num_distractors=5) + for _ in range(4): + door, _ = self.add_door(1, 1, locked=False) + objs.append(door) + + self.place_agent(1, 1) + + obj = self._rand_elem(objs) + desc = ObjDesc(obj.type, obj.color) + + if obj.type == 'door': + if self._rand_bool(): + self.instrs = GoToInstr(desc) + else: + self.instrs = OpenInstr(desc) + else: + if self._rand_bool(): + self.instrs = GoToInstr(desc) + else: + self.instrs = PickupInstr(desc) + + +class Level_UnlockLocal(RoomGridLevel): + """ + Fetch a key and unlock a door + (in the current room) + """ + + def __init__(self, distractors=False, seed=None): + self.distractors = distractors + super().__init__(seed=seed) + + def gen_mission(self): + door, _ = self.add_door(1, 1, locked=True) + self.add_object(1, 1, 'key', door.color) + if self.distractors: + self.add_distractors(1, 1, num_distractors=3) + self.place_agent(1, 1) + + self.instrs = OpenInstr(ObjDesc(door.type)) + + +class Level_UnlockLocalDist(Level_UnlockLocal): + """ + Fetch a key and unlock a door + (in the current room, with distractors) + """ + + def __init__(self, seed=None): + super().__init__(distractors=True, seed=seed) + + +class Level_KeyInBox(RoomGridLevel): + """ + Unlock a door. Key is in a box (in the current room). + """ + + def __init__(self, seed=None): + super().__init__( + seed=seed + ) + + def gen_mission(self): + door, _ = self.add_door(1, 1, locked=True) + + # Put the key in the box, then place the box in the room + key = Key(door.color) + box = Box(self._rand_color(), key) + self.place_in_room(1, 1, box) + + self.place_agent(1, 1) + + self.instrs = OpenInstr(ObjDesc(door.type)) + + +class Level_UnlockPickup(RoomGridLevel): + """ + Unlock a door, then pick up a box in another room + """ + + def __init__(self, distractors=False, seed=None): + self.distractors = distractors + + room_size = 6 + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=8*room_size**2, + seed=seed + ) + + def gen_mission(self): + # Add a random object to the room on the right + obj, _ = self.add_object(1, 0, kind="box") + # Make sure the two rooms are directly connected by a locked door + door, _ = self.add_door(0, 0, 0, locked=True) + # Add a key to unlock the door + self.add_object(0, 0, 'key', door.color) + if self.distractors: + self.add_distractors(num_distractors=4) + + self.place_agent(0, 0) + + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + +class Level_UnlockPickupDist(Level_UnlockPickup): + """ + Unlock a door, then pick up an object in another room + (with distractors) + """ + + def __init__(self, seed=None): + super().__init__(distractors=True, seed=seed) + + +class Level_BlockedUnlockPickup(RoomGridLevel): + """ + Unlock a door blocked by a ball, then pick up a box + in another room + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=16*room_size**2, + seed=seed + ) + + def gen_mission(self): + # Add a box to the room on the right + obj, _ = self.add_object(1, 0, kind="box") + # Make sure the two rooms are directly connected by a locked door + door, pos = self.add_door(0, 0, 0, locked=True) + # Block the door with a ball + color = self._rand_color() + self.grid.set(pos[0]-1, pos[1], Ball(color)) + # Add a key to unlock the door + self.add_object(0, 0, 'key', door.color) + + self.place_agent(0, 0) + + self.instrs = PickupInstr(ObjDesc(obj.type)) + + +class Level_UnlockToUnlock(RoomGridLevel): + """ + Unlock a door A that requires to unlock a door B before + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + num_rows=1, + num_cols=3, + room_size=room_size, + max_steps=30*room_size**2, + seed=seed + ) + + def gen_mission(self): + colors = self._rand_subset(COLOR_NAMES, 2) + + # Add a door of color A connecting left and middle room + self.add_door(0, 0, door_idx=0, color=colors[0], locked=True) + + # Add a key of color A in the room on the right + self.add_object(2, 0, kind="key", color=colors[0]) + + # Add a door of color B connecting middle and right room + self.add_door(1, 0, door_idx=0, color=colors[1], locked=True) + + # Add a key of color B in the middle room + self.add_object(1, 0, kind="key", color=colors[1]) + + obj, _ = self.add_object(0, 0, kind="ball") + + self.place_agent(1, 0) + + self.instrs = PickupInstr(ObjDesc(obj.type)) + + +class Level_PickupDist(RoomGridLevel): + """ + Pick up an object + The object to pick up is given by its type only, or + by its color, or by its type and color. + (in the current room, with distractors) + """ + + def __init__(self, debug=False, seed=None): + self.debug = debug + super().__init__( + num_rows = 1, + num_cols = 1, + room_size=7, + seed=seed + ) + + def gen_mission(self): + # Add 5 random objects in the room + objs = self.add_distractors(num_distractors=5) + self.place_agent(0, 0) + obj = self._rand_elem(objs) + type = obj.type + color = obj.color + + select_by = self._rand_elem(["type", "color", "both"]) + if select_by == "color": + type = None + elif select_by == "type": + color = None + + self.instrs = PickupInstr(ObjDesc(type, color), strict=self.debug) + + +class Level_PickupDistDebug(Level_PickupDist): + """ + Same as PickupDist but the level stops when any object is picked + """ + + def __init__(self, seed=None): + super().__init__( + debug=True, + seed=seed + ) + + +class Level_PickupAbove(RoomGridLevel): + """ + Pick up an object (in the room above) + This task requires to use the compass to be solved effectively. + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + room_size=room_size, + max_steps=8*room_size**2, + seed=seed + ) + + def gen_mission(self): + # Add a random object to the top-middle room + obj, pos = self.add_object(1, 0) + # Make sure the two rooms are directly connected + self.add_door(1, 1, 3, locked=False) + self.place_agent(1, 1) + self.connect_all() + + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + +class Level_OpenTwoDoors(RoomGridLevel): + """ + Open door X, then open door Y + The two doors are facing opposite directions, so that the agent + Can't see whether the door behind him is open. + This task requires memory (recurrent policy) to be solved effectively. + """ + + def __init__(self, + first_color=None, + second_color=None, + strict=False, + seed=None + ): + self.first_color = first_color + self.second_color = second_color + self.strict = strict + + room_size = 6 + super().__init__( + room_size=room_size, + max_steps=20*room_size**2, + seed=seed + ) + + def gen_mission(self): + colors = self._rand_subset(COLOR_NAMES, 2) + + first_color = self.first_color + if first_color is None: + first_color = colors[0] + second_color = self.second_color + if second_color is None: + second_color = colors[1] + + door1, _ = self.add_door(1, 1, 2, color=first_color, locked=False) + door2, _ = self.add_door(1, 1, 0, color=second_color, locked=False) + + self.place_agent(1, 1) + + self.instrs = BeforeInstr( + OpenInstr(ObjDesc(door1.type, door1.color), strict=self.strict), + OpenInstr(ObjDesc(door2.type, door2.color)) + ) + + +class Level_OpenTwoDoorsDebug(Level_OpenTwoDoors): + """ + Same as OpenTwoDoors but the level stops when the second door is opened + """ + + def __init__(self, + first_color=None, + second_color=None, + seed=None + ): + super().__init__( + first_color, + second_color, + strict=True, + seed=seed + ) + + +class Level_OpenRedBlueDoors(Level_OpenTwoDoors): + """ + Open red door, then open blue door + The two doors are facing opposite directions, so that the agent + Can't see whether the door behind him is open. + This task requires memory (recurrent policy) to be solved effectively. + """ + + def __init__(self, seed=None): + super().__init__( + first_color="red", + second_color="blue", + seed=seed + ) + + +class Level_OpenRedBlueDoorsDebug(Level_OpenTwoDoorsDebug): + """ + Same as OpenRedBlueDoors but the level stops when the blue door is opened + """ + + def __init__(self, seed=None): + super().__init__( + first_color="red", + second_color="blue", + seed=seed + ) + + +class Level_FindObjS5(RoomGridLevel): + """ + Pick up an object (in a random room) + Rooms have a size of 5 + This level requires potentially exhaustive exploration + """ + + def __init__(self, room_size=5, seed=None): + super().__init__( + room_size=room_size, + max_steps=20*room_size**2, + seed=seed + ) + + def gen_mission(self): + # Add a random object to a random room + i = self._rand_int(0, self.num_rows) + j = self._rand_int(0, self.num_cols) + obj, _ = self.add_object(i, j) + self.place_agent(1, 1) + self.connect_all() + + self.instrs = PickupInstr(ObjDesc(obj.type)) + + +class Level_FindObjS6(Level_FindObjS5): + """ + Same as the FindObjS5 level, but rooms have a size of 6 + """ + + def __init__(self, seed=None): + super().__init__( + room_size=6, + seed=seed + ) + + +class Level_FindObjS7(Level_FindObjS5): + """ + Same as the FindObjS5 level, but rooms have a size of 7 + """ + + def __init__(self, seed=None): + super().__init__( + room_size=7, + seed=seed + ) + + +class KeyCorridor(RoomGridLevel): + """ + A ball is behind a locked door, the key is placed in a + random room. + """ + + def __init__( + self, + num_rows=3, + obj_type="ball", + room_size=6, + seed=None + ): + self.obj_type = obj_type + + super().__init__( + room_size=room_size, + num_rows=num_rows, + max_steps=30*room_size**2, + seed=seed, + ) + + def gen_mission(self): + # Connect the middle column rooms into a hallway + for j in range(1, self.num_rows): + self.remove_wall(1, j, 3) + + # Add a locked door on the bottom right + # Add an object behind the locked door + room_idx = self._rand_int(0, self.num_rows) + door, _ = self.add_door(2, room_idx, 2, locked=True) + obj, _ = self.add_object(2, room_idx, kind=self.obj_type) + + # Add a key in a random room on the left side + self.add_object(0, self._rand_int(0, self.num_rows), 'key', door.color) + + # Place the agent in the middle + self.place_agent(1, self.num_rows // 2) + + # Make sure all rooms are accessible + self.connect_all() + + self.instrs = PickupInstr(ObjDesc(obj.type)) + + +class Level_KeyCorridorS3R1(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=1, + seed=seed + ) + +class Level_KeyCorridorS3R2(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=2, + seed=seed + ) + +class Level_KeyCorridorS3R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=3, + seed=seed + ) + +class Level_KeyCorridorS4R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=4, + num_rows=3, + seed=seed + ) + +class Level_KeyCorridorS5R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=5, + num_rows=3, + seed=seed + ) + +class Level_KeyCorridorS6R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=6, + num_rows=3, + seed=seed + ) + +class Level_1RoomS8(RoomGridLevel): + """ + Pick up the ball + Rooms have a size of 8 + """ + + def __init__(self, room_size=8, seed=None): + super().__init__( + room_size=room_size, + num_rows=1, + num_cols=1, + seed=seed + ) + + def gen_mission(self): + obj, _ = self.add_object(0, 0, kind="ball") + self.place_agent() + self.instrs = PickupInstr(ObjDesc(obj.type)) + + +class Level_1RoomS12(Level_1RoomS8): + """ + Pick up the ball + Rooms have a size of 12 + """ + + def __init__(self, seed=None): + super().__init__( + room_size=12, + seed=seed + ) + + +class Level_1RoomS16(Level_1RoomS8): + """ + Pick up the ball + Rooms have a size of 16 + """ + + def __init__(self, seed=None): + super().__init__( + room_size=16, + seed=seed + ) + + +class Level_1RoomS20(Level_1RoomS8): + """ + Pick up the ball + Rooms have a size of 20 + """ + + def __init__(self, seed=None): + super().__init__( + room_size=20, + seed=seed + ) + + +class PutNext(RoomGridLevel): + """ + Task of the form: move the A next to the B and the C next to the D. + This task is structured to have a very large number of possible + instructions. + """ + + def __init__( + self, + room_size, + objs_per_room, + start_carrying=False, + seed=None + ): + assert room_size >= 4 + assert objs_per_room <= 9 + self.objs_per_room = objs_per_room + self.start_carrying = start_carrying + + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=8*room_size**2, + seed=seed + ) + + def gen_mission(self): + self.place_agent(0, 0) + + # Add objects to both the left and right rooms + # so that we know that we have two non-adjacent set of objects + objs_l = self.add_distractors(0, 0, self.objs_per_room) + objs_r = self.add_distractors(1, 0, self.objs_per_room) + + # Remove the wall between the two rooms + self.remove_wall(0, 0, 0) + + # Select objects from both subsets + a = self._rand_elem(objs_l) + b = self._rand_elem(objs_r) + + # Randomly flip the object to be moved + if self._rand_bool(): + t = a + a = b + b = t + + self.obj_a = a + + self.instrs = PutNextInstr( + ObjDesc(a.type, a.color), + ObjDesc(b.type, b.color) + ) + + def reset(self, **kwargs): + obs = super().reset(**kwargs) + + # If the agent starts off carrying the object + if self.start_carrying: + self.grid.set(*self.obj_a.init_pos, None) + self.carrying = self.obj_a + + return obs + + +class Level_PutNextS4N1(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=4, + objs_per_room=1, + seed=seed + ) + + +class Level_PutNextS5N1(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=5, + objs_per_room=1, + seed=seed + ) + + +class Level_PutNextS5N2(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=5, + objs_per_room=2, + seed=seed + ) + + +class Level_PutNextS6N3(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=6, + objs_per_room=3, + seed=seed + ) + + +class Level_PutNextS7N4(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=7, + objs_per_room=4, + seed=seed + ) + + +class Level_PutNextS5N2Carrying(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=5, + objs_per_room=2, + start_carrying=True, + seed=seed + ) + + +class Level_PutNextS6N3Carrying(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=6, + objs_per_room=3, + start_carrying=True, + seed=seed + ) + + +class Level_PutNextS7N4Carrying(PutNext): + def __init__(self, seed=None): + super().__init__( + room_size=7, + objs_per_room=4, + start_carrying=True, + seed=seed + ) + + +class MoveTwoAcross(RoomGridLevel): + """ + Task of the form: move the A next to the B and the C next to the D. + This task is structured to have a very large number of possible + instructions. + """ + + def __init__( + self, + room_size, + objs_per_room, + seed=None + ): + assert objs_per_room <= 9 + self.objs_per_room = objs_per_room + + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=16*room_size**2, + seed=seed + ) + + def gen_mission(self): + self.place_agent(0, 0) + + # Add objects to both the left and right rooms + # so that we know that we have two non-adjacent set of objects + objs_l = self.add_distractors(0, 0, self.objs_per_room) + objs_r = self.add_distractors(1, 0, self.objs_per_room) + + # Remove the wall between the two rooms + self.remove_wall(0, 0, 0) + + # Select objects from both subsets + objs_l = self._rand_subset(objs_l, 2) + objs_r = self._rand_subset(objs_r, 2) + a = objs_l[0] + b = objs_r[0] + c = objs_r[1] + d = objs_l[1] + + self.instrs = BeforeInstr( + PutNextInstr(ObjDesc(a.type, a.color), ObjDesc(b.type, b.color)), + PutNextInstr(ObjDesc(c.type, c.color), ObjDesc(d.type, d.color)) + ) + + +class Level_MoveTwoAcrossS5N2(MoveTwoAcross): + def __init__(self, seed=None): + super().__init__( + room_size=5, + objs_per_room=2, + seed=seed + ) + + +class Level_MoveTwoAcrossS8N9(MoveTwoAcross): + def __init__(self, seed=None): + super().__init__( + room_size=8, + objs_per_room=9, + seed=seed + ) + + +class OpenDoorsOrder(RoomGridLevel): + """ + Open one or two doors in the order specified. + """ + + def __init__( + self, + num_doors, + debug=False, + seed=None + ): + assert num_doors >= 2 + self.num_doors = num_doors + self.debug = debug + + room_size = 6 + super().__init__( + room_size=room_size, + max_steps=20*room_size**2, + seed=seed + ) + + def gen_mission(self): + colors = self._rand_subset(COLOR_NAMES, self.num_doors) + doors = [] + for i in range(self.num_doors): + door, _ = self.add_door(1, 1, color=colors[i], locked=False) + doors.append(door) + self.place_agent(1, 1) + + door1, door2 = self._rand_subset(doors, 2) + desc1 = ObjDesc(door1.type, door1.color) + desc2 = ObjDesc(door2.type, door2.color) + + mode = self._rand_int(0, 3) + if mode == 0: + self.instrs = OpenInstr(desc1, strict=self.debug) + elif mode == 1: + self.instrs = BeforeInstr(OpenInstr(desc1, strict=self.debug), OpenInstr(desc2, strict=self.debug)) + elif mode == 2: + self.instrs = AfterInstr(OpenInstr(desc1, strict=self.debug), OpenInstr(desc2, strict=self.debug)) + else: + assert False + +class Level_OpenDoorsOrderN2(OpenDoorsOrder): + def __init__(self, seed=None): + super().__init__( + num_doors=2, + seed=seed + ) + + +class Level_OpenDoorsOrderN4(OpenDoorsOrder): + def __init__(self, seed=None): + super().__init__( + num_doors=4, + seed=seed + ) + + +class Level_OpenDoorsOrderN2Debug(OpenDoorsOrder): + def __init__(self, seed=None): + super().__init__( + num_doors=2, + debug=True, + seed=seed + ) + + +class Level_OpenDoorsOrderN4Debug(OpenDoorsOrder): + def __init__(self, seed=None): + super().__init__( + num_doors=4, + debug=True, + seed=seed + ) + +for name, level in list(globals().items()): + if name.startswith('Level_'): + level.is_bonus = True + +# Register the levels in this file +register_levels(__name__, globals()) diff --git a/babyai/babyai/levels/iclr19_levels.py b/babyai/babyai/levels/iclr19_levels.py new file mode 100644 index 0000000..276c9e1 --- /dev/null +++ b/babyai/babyai/levels/iclr19_levels.py @@ -0,0 +1,2576 @@ +""" +Levels described in BabyAI's ICLR 2019 submission. + +Note: ELLA Custom Levels are included in this file as well. +""" + +import gym +from .verifier import * +from .levelgen import * + + +class Level_GoToRedBallGrey(RoomGridLevel): + """ + Go to the red ball, single room, with distractors. + The distractors are all grey to reduce perceptual complexity. + This level has distractors but doesn't make use of language. + """ + + def __init__(self, room_size=8, num_dists=7, seed=None): + self.num_dists = num_dists + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + obj, _ = self.add_object(0, 0, 'ball', 'red') + dists = self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + for dist in dists: + dist.color = 'grey' + + # Make sure no unblocking is required + self.check_objs_reachable() + + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_GoToRedBall(RoomGridLevel): + """ + Go to the red ball, single room, with distractors. + This level has distractors but doesn't make use of language. + """ + + def __init__(self, room_size=8, num_dists=7, seed=None): + self.num_dists = num_dists + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + obj, _ = self.add_object(0, 0, 'ball', 'red') + self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + # Make sure no unblocking is required + self.check_objs_reachable() + + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_GoToRedBallNoDists(Level_GoToRedBall): + """ + Go to the red ball. No distractors present. + """ + + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=0, seed=seed) + + +class Level_GoToObj(RoomGridLevel): + """ + Go to an object, inside a single room with no doors, no distractors + """ + + def __init__(self, room_size=8, seed=None): + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + objs = self.add_distractors(num_distractors=1) + obj = objs[0] + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_GoToObjS4(Level_GoToObj): + def __init__(self, seed=None): + super().__init__(room_size=4, seed=seed) + + +class Level_GoToObjS6(Level_GoToObj): + def __init__(self, seed=None): + super().__init__(room_size=6, seed=seed) + + +class Level_GoToLocal(RoomGridLevel): + """ + Go to an object, inside a single room with no doors, no distractors + """ + + def __init__(self, room_size=8, num_dists=8, seed=None): + self.num_dists = num_dists + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists, all_unique=False) + self.check_objs_reachable() + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_GoToLocalS5N2(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=5, num_dists=2, seed=seed) + + +class Level_GoToLocalS6N2(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=6, num_dists=2, seed=seed) + + +class Level_GoToLocalS6N3(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=6, num_dists=3, seed=seed) + + +class Level_GoToLocalS6N4(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=6, num_dists=4, seed=seed) + + +class Level_GoToLocalS7N4(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=7, num_dists=4, seed=seed) + + +class Level_GoToLocalS7N5(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=7, num_dists=5, seed=seed) + + +class Level_GoToLocalS8N2(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=2, seed=seed) + + +class Level_GoToLocalS8N3(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=3, seed=seed) + + +class Level_GoToLocalS8N4(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=4, seed=seed) + + +class Level_GoToLocalS8N5(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=5, seed=seed) + + +class Level_GoToLocalS8N6(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=6, seed=seed) + + +class Level_GoToLocalS8N7(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=7, seed=seed) + + +class Level_GoToLocalS8N16(Level_GoToLocal): + def __init__(self, seed=None): + super().__init__(room_size=8, num_dists=16, seed=seed) + + +class Level_GoToLocal2(LevelGen): + """ + GoToLocal twice + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + force_colors=True, + seed=seed, + instr_kinds=['and'], + action_kinds=['goto'], + locked_room_prob=0, + locations=False, + unblocking=False + ) + + +class Level_PutNextLocal(RoomGridLevel): + """ + Put an object next to another object, inside a single room + with no doors, no distractors + """ + + def __init__(self, room_size=8, num_objs=8, seed=None): + self.num_objs = num_objs + super().__init__( + num_rows=1, + num_cols=1, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_objs, all_unique=True) + self.check_objs_reachable() + o1, o2 = self._rand_subset(objs, 2) + + self.instrs = PutNextInstr( + ObjDesc(o1.type, o1.color), + ObjDesc(o2.type, o2.color) + ) + + +class Level_PutNextLocalS5N3(Level_PutNextLocal): + def __init__(self, seed=None): + super().__init__(room_size=5, num_objs=3, seed=seed) + + +class Level_PutNextLocalS6N4(Level_PutNextLocal): + def __init__(self, seed=None): + super().__init__(room_size=6, num_objs=4, seed=seed) + + +class Level_GoTo(RoomGridLevel): + """ + Go to an object, the object may be in another room. Many distractors. + """ + + def __init__( + self, + room_size=8, + num_rows=3, + num_cols=3, + num_dists=18, + doors_open=False, + seed=None + ): + self.num_dists = num_dists + self.doors_open = doors_open + super().__init__( + num_rows=num_rows, + num_cols=num_cols, + room_size=room_size, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + self.connect_all() + objs = self.add_distractors(num_distractors=self.num_dists, all_unique=False) + self.check_objs_reachable() + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + # If requested, open all the doors + if self.doors_open: + self.open_all_doors() + + +class Level_GoToOpen(Level_GoTo): + def __init__(self, seed=None): + super().__init__(doors_open=True, seed=seed) + + +class Level_GoToFrench(RoomGridLevel): + """ + Go to an object, the object may be in another room. Many distractors. + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + doors_open=True, + seed=None, + language='french' + ): + self.num_dists = num_dists + self.doors_open = doors_open + super().__init__( + num_rows=num_rows, + num_cols=num_cols, + room_size=room_size, + seed=seed, + language=language + ) + + def gen_mission(self): + self.place_agent() + self.connect_all() + objs = self.add_distractors(num_distractors=self.num_dists, all_unique=False) + self.check_objs_reachable() + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + # If requested, open all the doors + if self.doors_open: + self.open_all_doors() + + +class Level_GoToObjMaze(Level_GoTo): + """ + Go to an object, the object may be in another room. No distractors. + """ + + def __init__(self, seed=None): + super().__init__(num_dists=1, doors_open=False, seed=seed) + + +class Level_GoToObjMazeOpen(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, doors_open=True, seed=seed) + + +class Level_GoToObjMazeS4R2(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, room_size=4, num_rows=2, num_cols=2, seed=seed) + + +class Level_GoToObjMazeS4(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, room_size=4, seed=seed) + + +class Level_GoToObjMazeS5(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, room_size=5, seed=seed) + + +class Level_GoToObjMazeS6(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, room_size=6, seed=seed) + + +class Level_GoToObjMazeS7(Level_GoTo): + def __init__(self, seed=None): + super().__init__(num_dists=1, room_size=7, seed=seed) + + +class Level_GoToImpUnlock(RoomGridLevel): + """ + Go to an object, which may be in a locked room. + Competencies: Maze, GoTo, ImpUnlock + No unblocking. + """ + + def gen_mission(self): + # Add a locked door to a random room + id = self._rand_int(0, self.num_rows) + jd = self._rand_int(0, self.num_cols) + door, pos = self.add_door(id, jd, locked=True) + locked_room = self.get_room(id, jd) + + # Add the key to a different room + while True: + ik = self._rand_int(0, self.num_rows) + jk = self._rand_int(0, self.num_cols) + if ik is id and jk is jd: + continue + self.add_object(ik, jk, 'key', door.color) + break + + self.connect_all() + + # Add distractors to all but the locked room. + # We do this to speed up the reachability test, + # which otherwise will reject all levels with + # objects in the locked room. + for i in range(self.num_rows): + for j in range(self.num_cols): + if i is not id or j is not jd: + self.add_distractors( + i, + j, + num_distractors=2, + all_unique=False + ) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is locked_room: + continue + break + + self.check_objs_reachable() + + # Add a single object to the locked room + # The instruction requires going to an object matching that description + obj, = self.add_distractors(id, jd, num_distractors=1, all_unique=False) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + +class Level_Pickup(RoomGridLevel): + """ + Pick up an object, the object may be in another room. + """ + + def gen_mission(self): + self.place_agent() + self.connect_all() + objs = self.add_distractors(num_distractors=18, all_unique=False) + self.check_objs_reachable() + obj = self._rand_elem(objs) + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + +class Level_UnblockPickup(RoomGridLevel): + """ + Pick up an object, the object may be in another room. The path may + be blocked by one or more obstructors. + """ + + def gen_mission(self): + self.place_agent() + self.connect_all() + objs = self.add_distractors(num_distractors=20, all_unique=False) + + # Ensure that at least one object is not reachable without unblocking + # Note: the selected object will still be reachable most of the time + if self.check_objs_reachable(raise_exc=False): + raise RejectSampling('all objects reachable') + + obj = self._rand_elem(objs) + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + +class Level_Open(RoomGridLevel): + """ + Open a door, which may be in another room + """ + + def gen_mission(self): + self.place_agent() + self.connect_all() + self.add_distractors(num_distractors=18, all_unique=False) + self.check_objs_reachable() + + # Collect a list of all the doors in the environment + doors = [] + for i in range(self.num_rows): + for j in range(self.num_cols): + room = self.get_room(i, j) + for door in room.doors: + if door: + doors.append(door) + + door = self._rand_elem(doors) + self.instrs = OpenInstr(ObjDesc(door.type, door.color)) + + +class Level_Unlock(RoomGridLevel): + """ + Unlock a door. + + Competencies: Maze, Open, Unlock. No unblocking. + """ + + def gen_mission(self): + # Add a locked door to a random room + id = self._rand_int(0, self.num_rows) + jd = self._rand_int(0, self.num_cols) + door, pos = self.add_door(id, jd, locked=True) + locked_room = self.get_room(id, jd) + + # Add the key to a different room + while True: + ik = self._rand_int(0, self.num_rows) + jk = self._rand_int(0, self.num_cols) + if ik is id and jk is jd: + continue + self.add_object(ik, jk, 'key', door.color) + break + + # With 50% probability, ensure that the locked door is the only + # door of that color + if self._rand_bool(): + colors = list(filter(lambda c: c is not door.color, COLOR_NAMES)) + self.connect_all(door_colors=colors) + else: + self.connect_all() + + # Add distractors to all but the locked room. + # We do this to speed up the reachability test, + # which otherwise will reject all levels with + # objects in the locked room. + for i in range(self.num_rows): + for j in range(self.num_cols): + if i is not id or j is not jd: + self.add_distractors( + i, + j, + num_distractors=3, + all_unique=False + ) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is locked_room: + continue + break + + self.check_objs_reachable() + + self.instrs = OpenInstr(ObjDesc(door.type, door.color)) + + +class Level_PutNext(RoomGridLevel): + """ + Put an object next to another object. Either of these may be in another room. + """ + + def gen_mission(self): + self.place_agent() + self.connect_all() + objs = self.add_distractors(num_distractors=18, all_unique=False) + self.check_objs_reachable() + o1, o2 = self._rand_subset(objs, 2) + self.instrs = PutNextInstr( + ObjDesc(o1.type, o1.color), + ObjDesc(o2.type, o2.color) + ) + + +class Level_GoToMedium(LevelGen): + """ + GoTo, 2 rooms + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + action_kinds=['goto'], + instr_kinds=['action'], + num_rows=1, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + +class Level_GoToMediumOpen(LevelGen): + """ + Go to an object, the object may be in another room. Many distractors. + """ + + def __init__( + self, + doors_open=True, + seed=None + ): + self.doors_open = doors_open + super().__init__( + seed=seed, + action_kinds=['goto'], + instr_kinds=['action'], + num_rows=1, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + def gen_mission(self): + if self._rand_float(0, 1) < self.locked_room_prob: + self.add_locked_room() + + self.connect_all() + + self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + # If no unblocking required, make sure all objects are + # reachable without unblocking + if not self.unblocking: + self.check_objs_reachable() + + # Generate random instructions + self.instrs = self.rand_instr( + action_kinds=self.action_kinds, + instr_kinds=self.instr_kinds + ) + # If requested, open all the doors + if self.doors_open: + self.open_all_doors() + + +class Level_GoToLarge(LevelGen): + """ + GoTo, 2x2 + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + action_kinds=['goto'], + instr_kinds=['action'], + num_rows=2, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + +class Level_GoToLargeOpen(LevelGen): + """ + Go to an object, the object may be in another room. Many distractors. + """ + + def __init__( + self, + doors_open=True, + seed=None + ): + self.doors_open = doors_open + super().__init__( + seed=seed, + action_kinds=['goto'], + instr_kinds=['action'], + num_rows=2, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + def gen_mission(self): + if self._rand_float(0, 1) < self.locked_room_prob: + self.add_locked_room() + + self.connect_all() + + self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + # If no unblocking required, make sure all objects are + # reachable without unblocking + if not self.unblocking: + self.check_objs_reachable() + + # Generate random instructions + self.instrs = self.rand_instr( + action_kinds=self.action_kinds, + instr_kinds=self.instr_kinds + ) + # If requested, open all the doors + if self.doors_open: + self.open_all_doors() + + +class Level_PutNextMedium(LevelGen): + """ + Put an object next to another object. Either of these may be in another room. + 2 rooms + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + action_kinds=['putnext'], + instr_kinds=['action'], + num_rows=1, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + +class Level_PutNextLarge(LevelGen): + """ + Put an object next to another object. Either of these may be in another room. + 2x2 + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + action_kinds=['putnext'], + instr_kinds=['action'], + num_rows=2, + num_cols=2, + num_dists=8, + locked_room_prob=0, + locations=False, + unblocking=False, + implicit_unlock=False, + force_colors=True + ) + + +class Level_PickupLoc(LevelGen): + """ + Pick up an object which may be described using its location. This is a + single room environment. + + Competencies: PickUp, Loc. No unblocking. + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + action_kinds=['pickup'], + instr_kinds=['action'], + num_rows=1, + num_cols=1, + num_dists=8, + locked_room_prob=0, + locations=True, + unblocking=False + ) + + +class Level_GoToSeq(LevelGen): + """ + Sequencing of go-to-object commands. + + Competencies: Maze, GoTo, Seq + No locked room. + No locations. + No unblocking. + """ + + def __init__( + self, + room_size=8, + num_rows=3, + num_cols=3, + num_dists=18, + seed=None + ): + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['goto'], + locked_room_prob=0, + locations=False, + unblocking=False + ) + + +class Level_GoToSeqS5R2(Level_GoToSeq): + def __init__(self, seed=None): + super().__init__(room_size=5, num_rows=2, num_cols=2, num_dists=4, seed=seed) + + +class Level_Synth(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=3, + num_cols=3, + num_dists=18, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + instr_kinds=['action'], + locations=False, + unblocking=True, + implicit_unlock=False + ) + + +class Level_SynthMedium(Level_Synth): + def __init__(self, seed=None): + super().__init__( + seed=seed, + num_rows=1, + num_cols=2, + num_dists=8 + ) + + +class Level_PickupLocal(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['pickup'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupMedium(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['pickup'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupLarge(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=2, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['pickup'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupOpenMedium(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['pickup', 'open'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupOpenLarge(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=2, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['pickup', 'open'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupOpenPutNextMedium(LevelGen): + """ + Union of all instructions from PutNext, Open, and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['putnext', 'pickup', 'open'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_PickupOpenPutNextLarge(LevelGen): + """ + Union of all instructions from PutNext, Open, and PickUp. The agent + may need to move objects around. The agent may have to unlock the door, + but only if it is explicitly referred by the instruction. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + """ + + def __init__( + self, + room_size=8, + num_rows=2, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['putnext', 'pickup', 'open'], + instr_kinds=['action'], + locations=False, + unblocking=False, + force_colors=True, + implicit_unlock=False + ) + + +class Level_UnlockMedium(LevelGen): + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=2, + num_dists=8, + seed=None + ): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=['open'], + instr_kinds=['action'], + locations=False, + unblocking=False, + locked_room_prob=1, + force_colors=True, + implicit_unlock=True + ) + + +class Level_SynthS5R2(Level_Synth): + def __init__(self, seed=None): + super().__init__( + room_size=5, + num_rows=2, + num_cols=2, + num_dists=7, + seed=seed + ) + + +class Level_SynthLoc(LevelGen): + """ + Like Synth, but a significant share of object descriptions involves + location language like in PickUpLoc. No implicit unlocking. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open, Loc + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + instr_kinds=['action'], + locations=True, + unblocking=True, + implicit_unlock=False + ) + + +class Level_SynthSeq(LevelGen): + """ + Like SynthLoc, but now with multiple commands, combined just like in GoToSeq. + No implicit unlocking. + + Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open, Loc, Seq + """ + + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + locations=True, + unblocking=True, + implicit_unlock=False + ) + + +class Level_OpenAndPickupMedium(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=1, + num_cols=2, + num_dists=5, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['x_and_y'], + action_kinds=['open', 'pickup'], + force_colors=True, + assert_first=True + ) + + +class Level_OpenAndPickupLarge(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=2, + num_cols=2, + num_dists=5, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['x_and_y'], + action_kinds=['open', 'pickup'], + force_colors=True, + assert_first=True + ) + + +class Level_OpenGoToMedium(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=1, + num_cols=2, + num_dists=5, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['action'], + action_kinds=['goto', 'open'], + force_colors=True, + assert_first=True + ) + + +class Level_SynthThenSynthMedium(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=1, + num_cols=2, + num_dists=8, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['seq1'], + action_kinds=['open', 'pickup', 'putnext'], + force_colors=True, + assert_first=True + ) + + +class Level_SynthThenSynthLarge(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=2, + num_cols=2, + num_dists=8, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['seq1'], + action_kinds=['open', 'pickup', 'putnext'], + force_colors=True, + assert_first=True + ) + + +class Level_OpenGoToLarge(LevelGen): + def __init__(self, seed=None): + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + seed=seed, + num_rows=2, + num_cols=2, + num_dists=5, + locations=False, + unblocking=False, + implicit_unlock=False, + locked_room_prob=0.0, + instr_kinds=['action'], + action_kinds=['goto', 'open'], + force_colors=True, + assert_first=True + ) + + +class Level_MiniBossLevel(LevelGen): + def __init__(self, seed=None): + super().__init__( + seed=seed, + num_cols=2, + num_rows=2, + room_size=5, + num_dists=7, + locked_room_prob=0.25 + ) + + +class Level_BossLevel(LevelGen): + def __init__(self, seed=None): + super().__init__( + seed=seed + ) + + +class Level_BossLevelNoUnlock(LevelGen): + def __init__(self, seed=None): + super().__init__( + seed=seed, + locked_room_prob=0, + implicit_unlock=False + ) + + +class Level_MixtTrainLocal(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. + The agent does not need to move objects around. + When the task is Open there are 2 rooms and the door in between is locked. + For the other instructions there is only one room. + Sequence of action are possible. + + In order to test generalisation we do not give to the agent the instructions containing: + - yellow box + - red door/key + - green ball + - grey door + - seq is restricted to pick up A then/before go to B (for memory issue our agent only used the past 3 observations) + + At test time we release the 3 first previous constraints, and we add to seq + pick up A then/before pick up B + + Competencies: Unlock, GoTo, PickUp, PutNext, Seq + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = self._rand_elem(['goto', 'pickup', 'open', 'putnext', 'pick up seq go to']) + if action == 'open': + num_cols = 2 + num_rows = 1 + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['action', 'seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + # ['goto', 'pickup', 'open', 'putnext', 'pick up seq go to'], + def gen_mission(self): + + action = self._rand_elem(self.action_kinds) + mission_accepted = False + all_objects_reachable = False + if action == 'open': + + while not mission_accepted or not all_objects_reachable: + + self._regen_grid() + color_door = self._rand_elem(['yellow', 'green', 'blue', 'purple']) # red and grey excluded + self.add_locked_room(color_door) + self.connect_all() + + for j in range(self.num_rows): + for i in range(self.num_cols): + if self.get_room(i, j) is not self.locked_room: + self.add_distractors(i, j, num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + + color_in_instr = self._rand_elem([None, color_door]) + + desc = ObjDesc('door', color_in_instr) + self.instrs = OpenInstr(desc) + + mission_accepted = not (self.exclude_substrings()) + + """if color_in_instr is None and mission_accepted and all_objects_reachable: + print(color_door)""" + + elif action == 'goto': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pickup': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + while str(obj.type) == 'door': + obj = self._rand_elem(objs) + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'putnext': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_1 = self._rand_elem(objs) + while str(obj_1.type) == 'door': + obj_1 = self._rand_elem(objs) + desc1 = ObjDesc(obj_1.type, obj_1.color) + obj_2 = self._rand_elem(objs) + if obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj1s, poss = desc1.find_matching_objs(self) + if len(obj1s) < 2: + # if obj_1 is the only object with this description obj_2 has to be different + while obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj_2 = self._rand_elem(objs) + desc2 = ObjDesc(obj_2.type, obj_2.color) + self.instrs = PutNextInstr(desc1, desc2) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pick up seq go to': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + type_instr = self._rand_elem(['Before', 'After']) + + if type_instr == 'Before': + self.instrs = BeforeInstr(instr_a, instr_b) + else: + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow box", "red key", "red door", "green ball", "grey door"] + + for sub_str in list_exclude_combinaison: + str = self.instrs.surface(self) + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +class Level_MixtTestLocal(LevelGen): + """ + Union of all instructions from PutNext, Open, Goto and PickUp. + The agent does not need to move objects around. + When the task is Open there are 2 rooms and the door in between is locked. + For the other instructions there is only one room. + Sequence of action are possible. + + In order to test generalisation we only give to the agent the instructions containing: + - yellow box + - red door/key + - green ball + - grey door + - seq is restricted to pick up A then/before go to B with A and B among the previous adj-noun pairs + (for memory issue our agent only used the past 3 observations) + + Competencies: Unlock, GoTo, PickUp, PutNext, Seq + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = self._rand_elem(['goto', 'pickup', 'open', 'putnext', 'pick up seq go to']) + if action == 'open': + num_cols = 2 + num_rows = 1 + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['action', 'seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + def gen_mission(self): + + action = self._rand_elem(self.action_kinds) + mission_accepted = False + all_objects_reachable = False + if action == 'open': + + while not mission_accepted or not all_objects_reachable: + + self._regen_grid() + color_door = self._rand_elem(['red', 'grey']) # only red and grey doors at test time + self.add_locked_room(color_door) + self.connect_all() + + for j in range(self.num_rows): + for i in range(self.num_cols): + if self.get_room(i, j) is not self.locked_room: + self.add_distractors(i, j, num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + + desc = ObjDesc('door', color_door) + self.instrs = OpenInstr(desc) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'goto': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pickup': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + while str(obj.type) == 'door': + obj = self._rand_elem(objs) + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'putnext': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_1 = self._rand_elem(objs) + while str(obj_1.type) == 'door': + obj_1 = self._rand_elem(objs) + desc1 = ObjDesc(obj_1.type, obj_1.color) + obj_2 = self._rand_elem(objs) + if obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj1s, poss = desc1.find_matching_objs(self) + if len(obj1s) < 2: + # if obj_1 is the only object with this description obj_2 has to be different + while obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj_2 = self._rand_elem(objs) + desc2 = ObjDesc(obj_2.type, obj_2.color) + self.instrs = PutNextInstr(desc1, desc2) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pick up seq go to': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + type_instr = self._rand_elem(['Before', 'After']) + + if type_instr == 'Before': + self.instrs = BeforeInstr(instr_a, instr_b) + else: + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow key", "yellow ball", "yellow door", + "red box", "red ball", + "green box", "green key", "green door", + "grey box", "grey key", "grey ball", + "blue box", "blue key", "blue ball", "blue door", + "purple box", "purple key", "purple ball", "purple door"] + + for sub_str in list_exclude_combinaison: + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +class Level_MixtTrainLocalFrench(LevelGen): + """ + Same as MixtTrainLocal but in French + """ + # TODO pas encore fini + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + language='french', + seed=None + ): + + action = self._rand_elem(['goto', 'pickup', 'open', 'putnext', 'pick up seq go to']) + if action == 'open': + num_cols = 2 + num_rows = 1 + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['action', 'seq1'], + locations=False, + unblocking=False, + implicit_unlock=False, + language=language + ) + + # ['goto', 'pickup', 'open', 'putnext', 'pick up seq go to'], + def gen_mission(self): + + action = self._rand_elem(self.action_kinds) + mission_accepted = False + all_objects_reachable = False + if action == 'open': + + while not mission_accepted or not all_objects_reachable: + + self._regen_grid() + color_door = self._rand_elem(['jaune', 'verte', 'bleue', 'violette']) # red and grey excluded + self.add_locked_room(color_door) + self.connect_all() + + for j in range(self.num_rows): + for i in range(self.num_cols): + if self.get_room(i, j) is not self.locked_room: + self.add_distractors(i, j, num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + + color_in_instr = self._rand_elem([None, color_door]) + + desc = ObjDesc('door', color_in_instr) + self.instrs = OpenInstr(desc) + + mission_accepted = not (self.exclude_substrings()) + + """if color_in_instr is None and mission_accepted and all_objects_reachable: + print(color_door)""" + + elif action == 'goto': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pickup': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 1, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj = self._rand_elem(objs) + while str(obj.type) == 'door': + obj = self._rand_elem(objs) + self.instrs = PickupInstr(ObjDesc(obj.type, obj.color)) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'putnext': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_1 = self._rand_elem(objs) + while str(obj_1.type) == 'door': + obj_1 = self._rand_elem(objs) + desc1 = ObjDesc(obj_1.type, obj_1.color) + obj_2 = self._rand_elem(objs) + if obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj1s, poss = desc1.find_matching_objs(self) + if len(obj1s) < 2: + # if obj_1 is the only object with this description obj_2 has to be different + while obj_1.type == obj_2.type and obj_1.color == obj_2.color: + obj_2 = self._rand_elem(objs) + desc2 = ObjDesc(obj_2.type, obj_2.color) + self.instrs = PutNextInstr(desc1, desc2) + + mission_accepted = not (self.exclude_substrings()) + + elif action == 'pick up seq go to': + self.num_cols = 1 + self.num_rows = 1 + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + type_instr = self._rand_elem(['Before', 'After']) + + if type_instr == 'Before': + self.instrs = BeforeInstr(instr_a, instr_b) + else: + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["boîte jaune", "clef rouge", "porte rouge", "balle verte", "porte grise"] + + for sub_str in list_exclude_combinaison: + str = self.instrs.surface(self) + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 +class Level_PickUpSeqPickUpLocal(LevelGen): + """ + In order to test generalisation we only give to the agent the instruction: + seq restricted to pick up A then/before pick up B with A and B without the following adj-noun pairs: + - yellow box + - red door/key + - green ball + - grey door + (for memory issue our agent only used the past 3 observations) + + Competencies: Seq never seen in MixtTrainLocal + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = 'pick up seq pick up ' + + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + def gen_mission(self): + + mission_accepted = False + all_objects_reachable = False + + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = PickupInstr(ObjDesc(obj_b.type, obj_b.color)) + + type_instr = self._rand_elem(['Before', 'After']) + + if type_instr == 'Before': + self.instrs = BeforeInstr(instr_a, instr_b) + else: + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow box", "red key", "red door", "green ball", "grey door"] + + for sub_str in list_exclude_combinaison: + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +# Register the levels in this file +register_levels(__name__, globals()) + + +class Level_PickUpSeqGoToLocal(LevelGen): + """ + In order to test generalisation we only give to the agent the instruction: + seq restricted to pick up A then/before go to B with A and B without the following adj-noun pairs: + - yellow box + - red door/key + - green ball + - grey door + (for memory issue our agent only used the past 3 observations) + + Competencies: Seq never seen in MixtTrainLocal + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = 'pick up seq pick up ' + + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + def gen_mission(self): + + mission_accepted = False + all_objects_reachable = False + + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + type_instr = self._rand_elem(['Before', 'After']) + + if type_instr == 'Before': + self.instrs = BeforeInstr(instr_a, instr_b) + else: + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow box", "red key", "red door", "green ball", "grey door"] + + for sub_str in list_exclude_combinaison: + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +class Level_PickUpThenGoToLocal(LevelGen): + """ + In order to test generalisation we only give to the agent the instruction: + seq restricted to pick up A then go to B with A and B without the following adj-noun pairs: + - yellow box + - red door/key + - green ball + - grey door + (for memory issue our agent only used the past 3 observations) + + Competencies: Seq never seen in MixtTrainLocal + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = 'pick up seq pick up ' + + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + def gen_mission(self): + + mission_accepted = False + all_objects_reachable = False + + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + self.instrs = BeforeInstr(instr_a, instr_b) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow box", "red key", "red door", "green ball", "grey door"] + + for sub_str in list_exclude_combinaison: + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +class Level_GoToAfterPickUpLocal(LevelGen): + """ + In order to test generalisation we only give to the agent the instruction: + seq restricted to go to B after pickup A with A and B without the following adj-noun pairs: + - yellow box + - red door/key + - green ball + - grey door + (for memory issue our agent only used the past 3 observations) + + Competencies: Seq never seen in MixtTrainLocal + """ + + def __init__( + self, + room_size=8, + num_rows=1, + num_cols=1, + num_dists=8, + seed=None + ): + + action = 'pick up seq pick up ' + + # We add many distractors to increase the probability + # of ambiguous locations within the same room + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + num_dists=num_dists, + seed=seed, + action_kinds=[action], + instr_kinds=['seq1'], + locations=False, + unblocking=False, + implicit_unlock=False + ) + + def gen_mission(self): + + mission_accepted = False + all_objects_reachable = False + + while not mission_accepted or not all_objects_reachable: + self._regen_grid() + self.place_agent() + objs = self.add_distractors(num_distractors=self.num_dists + 2, all_unique=False) + all_objects_reachable = self.check_objs_reachable(raise_exc=False) + obj_a = self._rand_elem(objs) + while str(obj_a.type) == 'door': + obj_a = self._rand_elem(objs) + instr_a = PickupInstr(ObjDesc(obj_a.type, obj_a.color)) + obj_b = self._rand_elem(objs) + if obj_a.type == obj_b.type and obj_a.color == obj_b.color: + desc = ObjDesc(obj_a.type, obj_a.color) + objas, poss = desc.find_matching_objs(self) + if len(objas) < 2: + # if obj_a is the only object with this description obj_b has to be different + while obj_a.type == obj_b.type and obj_a.color == obj_b.color: + obj_b = self._rand_elem(objs) + instr_b = GoToInstr(ObjDesc(obj_b.type, obj_b.color)) + + self.instrs = AfterInstr(instr_b, instr_a) + + mission_accepted = not (self.exclude_substrings()) + + + def exclude_substrings(self): + # True if contains excluded substring + list_exclude_combinaison = ["yellow box", "red key", "red door", "green ball", "grey door"] + + for sub_str in list_exclude_combinaison: + if sub_str in self.instrs.surface(self): + return True + return False + + def _regen_grid(self): + # Create the grid + self.grid.grid = [None] * self.width * self.height + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = self.get_room(i, j) + # suppress doors and objects + room.doors = [None] * 4 + room.door_pos = [None] * 4 + room.neighbors = [None] * 4 + room.locked = False + room.objs = [] + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + +# Register the levels in this file +register_levels(__name__, globals()) diff --git a/babyai/babyai/levels/levelgen.py b/babyai/babyai/levels/levelgen.py new file mode 100644 index 0000000..132a5c2 --- /dev/null +++ b/babyai/babyai/levels/levelgen.py @@ -0,0 +1,594 @@ +import random +from collections import OrderedDict +from copy import deepcopy +import gym + +from gym_minigrid.roomgrid import RoomGrid +from .verifier import * + + +class RejectSampling(Exception): + """ + Exception used for rejection sampling + """ + + pass + + +class RoomGridLevel(RoomGrid): + """ + Base for levels based on RoomGrid + A level, given a random seed, generates missions generated from + one or more patterns. Levels should produce a family of missions + of approximately similar difficulty. + """ + + def __init__( + self, + room_size=8, + assert_first=False, + **kwargs + ): + self.assert_first=False + super().__init__( + room_size=room_size, + **kwargs + ) + + def reset(self, **kwargs): + obs = super().reset(**kwargs) + + # Recreate the verifier + self.instrs.reset_verifier(self) + + # Compute the time step limit based on the maze size and instructions + nav_time_room = self.room_size ** 2 + nav_time_maze = nav_time_room * self.num_rows * self.num_cols + num_navs = self.num_navs_needed(self.instrs) + self.max_steps = num_navs * nav_time_maze + + return obs + + def step(self, action): + obs, reward, done, info = super().step(action) + + # If we drop an object, we need to update its position in the environment + if action == self.actions.drop: + self.update_objs_poss() + + # If we've successfully completed the mission + status = self.instrs.verify(action) + if status is 'success': + done = True + reward = self._reward() + elif status is 'failure': + done = True + reward = 0 + + return obs, reward, done, info + + def update_objs_poss(self, instr=None): + if instr is None: + instr = self.instrs + if isinstance(instr, BeforeInstr) or isinstance(instr, AndInstr) or isinstance(instr, AfterInstr): + self.update_objs_poss(instr.instr_a) + self.update_objs_poss(instr.instr_b) + else: + instr.update_objs_poss() + + def _gen_grid(self, width, height): + # We catch RecursionError to deal with rare cases where + # rejection sampling gets stuck in an infinite loop + while True: + try: + super()._gen_grid(width, height) + + # Generate the mission + self.gen_mission() + + # Validate the instructions + self.validate_instrs(self.instrs) + + if self.assert_first and not self.instrs.surface(self).startswith(self.action_kinds[0]): + raise RejectSampling + + except RecursionError as error: + # print('Timeout during mission generation:', error) + continue + + except RejectSampling as error: + # print('Sampling rejected:', error) + continue + + break + + # Generate the surface form for the instructions + self.surface = self.instrs.surface(self) + self.mission = self.surface + + def validate_instrs(self, instr): + """ + Perform some validation on the generated instructions + """ + # Gather the colors of locked doors + if hasattr(self, 'unblocking') and self.unblocking: + colors_of_locked_doors = [] + for i in range(self.num_cols): + for j in range(self.num_rows): + room = self.get_room(i, j) + for door in room.doors: + if door and door.is_locked: + colors_of_locked_doors.append(door.color) + + if isinstance(instr, PutNextInstr): + # Resolve the objects referenced by the instruction + instr.reset_verifier(self) + + # Check that the objects are not already next to each other + if set(instr.desc_move.obj_set).intersection( + set(instr.desc_fixed.obj_set)): + raise RejectSampling( + "there are objects that match both lhs and rhs of PutNext") + if instr.objs_next(): + raise RejectSampling('objs already next to each other') + + # Check that we are not asking to move an object next to itself + move = instr.desc_move + fixed = instr.desc_fixed + if len(move.obj_set) == 1 and len(fixed.obj_set) == 1: + if move.obj_set[0] is fixed.obj_set[0]: + raise RejectSampling('cannot move an object next to itself') + + if isinstance(instr, ActionInstr): + if not hasattr(self, 'unblocking') or not self.unblocking: + return + # TODO: either relax this a bit or make the bot handle this super corner-y scenarios + # Check that the instruction doesn't involve a key that matches the color of a locked door + potential_objects = ('desc', 'desc_move', 'desc_fixed') + for attr in potential_objects: + if hasattr(instr, attr): + obj = getattr(instr, attr) + if obj.type == 'key' and obj.color in colors_of_locked_doors: + raise RejectSampling('cannot do anything with/to a key that can be used to open a door') + return + + if isinstance(instr, SeqInstr): + self.validate_instrs(instr.instr_a) + self.validate_instrs(instr.instr_b) + return + + assert False, "unhandled instruction type" + + def gen_mission(self): + """ + Generate a mission (instructions and matching environment) + Derived level classes should implement this method + """ + raise NotImplementedError + + @property + def level_name(self): + return self.__class__.level_name + + @property + def gym_id(self): + return self.__class__.gym_id + + def num_navs_needed(self, instr): + """ + Compute the maximum number of navigations needed to perform + a simple or complex instruction + """ + + if isinstance(instr, PutNextInstr): + return 2 + + if isinstance(instr, ActionInstr): + return 1 + + if isinstance(instr, SeqInstr): + na = self.num_navs_needed(instr.instr_a) + nb = self.num_navs_needed(instr.instr_b) + return na + nb + + def open_all_doors(self): + """ + Open all the doors in the maze + """ + + for j in range(self.num_rows): + for i in range(self.num_cols): + room = self.get_room(i, j) + for door in room.doors: + if door: + door.is_open = True + + def check_objs_reachable(self, raise_exc=True): + """ + Check that all objects are reachable from the agent's starting + position without requiring any other object to be moved + (without unblocking) + """ + + # Reachable positions + reachable = set() + + # Work list + stack = [self.agent_pos] + + while len(stack) > 0: + i, j = stack.pop() + + if i < 0 or i >= self.grid.width or j < 0 or j >= self.grid.height: + continue + + if (i, j) in reachable: + continue + + # This position is reachable + reachable.add((i, j)) + + cell = self.grid.get(i, j) + + # If there is something other than a door in this cell, it + # blocks reachability + if cell and cell.type is not 'door': + continue + + # Visit the horizontal and vertical neighbors + stack.append((i+1, j)) + stack.append((i-1, j)) + stack.append((i, j+1)) + stack.append((i, j-1)) + + # Check that all objects are reachable + for i in range(self.grid.width): + for j in range(self.grid.height): + cell = self.grid.get(i, j) + + if not cell or cell.type is 'wall': + continue + + if (i, j) not in reachable: + if not raise_exc: + return False + raise RejectSampling('unreachable object at ' + str((i, j))) + + # All objects reachable + return True + + +class LevelGen(RoomGridLevel): + """ + Level generator which attempts to produce every possible sentence in + the baby language as an instruction. + """ + + def __init__( + self, + room_size=8, + num_rows=3, + num_cols=3, + num_dists=18, + locked_room_prob=0.5, + locations=True, + unblocking=True, + implicit_unlock=True, + force_colors=False, + action_kinds=['goto', 'pickup', 'open', 'putnext'], + instr_kinds=['action', 'and', 'seq'], + seed=None, + assert_first=False + ): + self.num_dists = num_dists + self.locked_room_prob = locked_room_prob + self.locations = locations + self.unblocking = unblocking + self.implicit_unlock = implicit_unlock + self.force_colors = force_colors + self.action_kinds = action_kinds + self.instr_kinds = instr_kinds + self.assert_first = assert_first + + self.locked_room = None + + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + seed=seed + ) + + def gen_mission(self): + if self._rand_float(0, 1) < self.locked_room_prob and (self.num_rows > 1 or self.num_cols > 1): # need at least two rooms to have a locked room + self.add_locked_room() + + self.connect_all() + + self.add_distractors(num_distractors=self.num_dists, all_unique=False) + + # The agent must be placed after all the object to respect constraints + while True: + self.place_agent() + start_room = self.room_from_pos(*self.agent_pos) + # Ensure that we are not placing the agent in the locked room + if start_room is self.locked_room: + continue + break + + # If no unblocking required, make sure all objects are + # reachable without unblocking + if not self.unblocking: + self.check_objs_reachable() + + # Generate random instructions + self.instrs = self.rand_instr( + action_kinds=self.action_kinds, + instr_kinds=self.instr_kinds + ) + + def add_locked_room(self, color=None): + # Until we've successfully added a locked room + while True: + i = self._rand_int(0, self.num_cols) + j = self._rand_int(0, self.num_rows) + door_idx = self._rand_int(0, 4) + self.locked_room = self.get_room(i, j) + + # Don't add a locked door in an external wall + if self.locked_room.neighbors[door_idx] is None: + continue + + if color is not None: + door, _ = self.add_door( + i, j, + door_idx, + color=color, + locked=True + ) + else: + door, _ = self.add_door( + i, j, + door_idx, + locked=True + ) + + + # Done adding locked room + break + + # Until we find a room to put the key + while True: + i = self._rand_int(0, self.num_cols) + j = self._rand_int(0, self.num_rows) + key_room = self.get_room(i, j) + + if key_room is self.locked_room: + continue + + self.add_object(i, j, 'key', door.color) + break + + def rand_obj(self, types=OBJ_TYPES, colors=COLOR_NAMES, max_tries=100): + """ + Generate a random object descriptor + """ + + num_tries = 0 + + # Keep trying until we find a matching object + while True: + if num_tries > max_tries: + raise RecursionError('failed to find suitable object') + num_tries += 1 + + if self.force_colors: + color = self._rand_elem([*colors]) + else: + color = self._rand_elem([None, *colors]) + type = self._rand_elem(types) + + loc = None + if self.locations: + loc = self._rand_elem(LOC_NAMES) + desc = ObjDesc(type, color, loc) + + else: + desc = ObjDesc(type, color) + # Find all objects matching the descriptor + objs, poss = desc.find_matching_objs(self) + + # The description must match at least one object + if len(objs) == 0: + continue + + # If no implicit unlocking is required + if not self.implicit_unlock and self.locked_room: + # Check that at least one object is not in the locked room + for idx in range(4): + if self.locked_room.neighbors[idx] is not None: + pos_not_locked = self.locked_room.neighbors[idx].objs + break + + if len(pos_not_locked) == 0: + continue + + # Found a valid object description + return desc + + def rand_instr( + self, + action_kinds, + instr_kinds, + depth=0 + ): + """ + Generate random instructions + """ + + kind = self._rand_elem(instr_kinds) + + if kind == 'action': + action = self._rand_elem(action_kinds) + + if action == 'goto': + return GoToInstr(self.rand_obj()) + elif action == 'pickup': + return PickupInstr(self.rand_obj(types=OBJ_TYPES_NOT_DOOR)) + elif action == 'open': + return OpenInstr(self.rand_obj(types=['door'])) + elif action == 'putnext': + return PutNextInstr( + self.rand_obj(types=OBJ_TYPES_NOT_DOOR), + self.rand_obj() + ) + + assert False + + elif kind == 'and': + instr_a = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action'], + depth=depth+1 + ) + instr_b = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action'], + depth=depth+1 + ) + return AndInstr(instr_a, instr_b) + + elif kind == "x_and_y": + instr_a = self.rand_instr( + action_kinds=[action_kinds[0]], + instr_kinds=['action'], + depth=depth+1 + ) + instr_b = self.rand_instr( + action_kinds=[action_kinds[1]], + instr_kinds=['action'], + depth=depth+1 + ) + return AndInstr(instr_a, instr_b) + + elif kind == 'seq1': + instr_a = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action'], + depth=depth+1 + ) + instr_b = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action'], + depth=depth+1 + ) + + kind = self._rand_elem(['before', 'after']) + + if kind is 'before': + return BeforeInstr(instr_a, instr_b) + elif kind is 'after': + return AfterInstr(instr_a, instr_b) + + elif kind == 'seq': + instr_a = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action', 'and'], + depth=depth+1 + ) + instr_b = self.rand_instr( + action_kinds=action_kinds, + instr_kinds=['action', 'and'], + depth=depth+1 + ) + + kind = self._rand_elem(['before', 'after']) + + if kind is 'before': + return BeforeInstr(instr_a, instr_b) + elif kind is 'after': + return AfterInstr(instr_a, instr_b) + + assert False + assert False + + +# Dictionary of levels, indexed by name, lexically sorted +level_dict = OrderedDict() + + +def register_levels(module_name, globals): + """ + Register OpenAI gym environments for all levels in a file + """ + + # Iterate through global names + for global_name in sorted(list(globals.keys())): + if not global_name.startswith('Level_'): + continue + + level_name = global_name.split('Level_')[-1] + level_class = globals[global_name] + + # Register the levels with OpenAI Gym + gym_id = 'BabyAI-%s-v0' % (level_name) + entry_point = '%s:%s' % (module_name, global_name) + gym.envs.registration.register( + id=gym_id, + entry_point=entry_point, + ) + + # Add the level to the dictionary + level_dict[level_name] = level_class + + # Store the name and gym id on the level class + level_class.level_name = level_name + level_class.gym_id = gym_id + + +def test(): + for idx, level_name in enumerate(level_dict.keys()): + print('Level %s (%d/%d)' % (level_name, idx+1, len(level_dict))) + + level = level_dict[level_name] + + # Run the mission for a few episodes + rng = random.Random(0) + num_episodes = 0 + for i in range(0, 15): + mission = level(seed=i) + + # Check that the surface form was generated + assert isinstance(mission.surface, str) + assert len(mission.surface) > 0 + obs = mission.reset() + assert obs['mission'] == mission.surface + + # Reduce max_steps because otherwise tests take too long + mission.max_steps = min(mission.max_steps, 200) + + # Check for some known invalid patterns in the surface form + import re + surface = mission.surface + assert not re.match(r".*pick up the [^ ]*door.*", surface), surface + + while True: + action = rng.integers(0, mission.action_space.n - 1) + obs, reward, done, info = mission.step(action) + if done: + obs = mission.reset() + break + + num_episodes += 1 + + # The same seed should always yield the same mission + m0 = level(seed=0) + m1 = level(seed=0) + grid1 = m0.unwrapped.grid + grid2 = m1.unwrapped.grid + assert grid1 == grid2 + assert m0.surface == m1.surface + + # Check that gym environment names were registered correctly + gym.make('BabyAI-1RoomS8-v0') + gym.make('BabyAI-BossLevel-v0') diff --git a/babyai/babyai/levels/test_levels.py b/babyai/babyai/levels/test_levels.py new file mode 100644 index 0000000..433b215 --- /dev/null +++ b/babyai/babyai/levels/test_levels.py @@ -0,0 +1,218 @@ +""" +Regression tests. +""" + +import numpy as np + +import gym +from .verifier import * +from .levelgen import * +from gym_minigrid.minigrid import * + + +class Level_TestGoToBlocked(RoomGridLevel): + """ + Go to a yellow ball that is blocked with a lot of red balls. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=1, + num_cols=1, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + self.agent_pos = np.array([3, 3]) + self.agent_dir = 0 + obj = Ball('yellow') + self.grid.set(1, 1, obj) + for i in (1, 2, 3): + for j in (1, 2, 3): + if (i, j) not in [(1 ,1), (3, 3)]: + self.place_obj(Ball('red'), (i, j), (1, 1)) + self.instrs = GoToInstr(ObjDesc(obj.type, obj.color)) + + + +class Level_TestPutNextToBlocked(RoomGridLevel): + """ + Pick up a yellow ball and put it next to a blocked blue ball. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=1, + num_cols=1, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.place_agent() + self.agent_pos = np.array([3, 3]) + self.agent_dir = 0 + obj1 = Ball('yellow') + obj2 = Ball('blue') + self.place_obj(obj1, (4, 4), (1, 1)) + self.place_obj(obj2, (1, 1), (1, 1)) + self.grid.set(1, 2, Ball('red')) + self.grid.set(2, 1, Ball('red')) + self.instrs = PutNextInstr(ObjDesc(obj1.type, obj1.color), + ObjDesc(obj2.type, obj2.color)) + + +class Level_TestPutNextToCloseToDoor1(RoomGridLevel): + """ + The yellow ball must be put near the blue ball. + But blue ball is right next to a door. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=2, + num_cols=1, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.agent_pos = np.array([3, 3]) + self.agent_dir = 0 + door, pos = self.add_door(0, 0, None, 'red', False) + self.obj1 = Ball('yellow') + self.obj2 = Ball('blue') + self.place_obj(self.obj1, (4, 4), (1, 1)) + self.place_obj(self.obj2, (pos[0], pos[1] + 1), (1, 1)) + self.instrs = BeforeInstr( + OpenInstr(ObjDesc('door', door.color)), + PutNextInstr(ObjDesc(self.obj1.type, self.obj1.color), + ObjDesc(self.obj2.type, self.obj2.color))) + + +class Level_TestPutNextToCloseToDoor2(Level_TestPutNextToCloseToDoor1): + """ + The yellow ball must be put near the blue ball. + But blue ball is right next to a door. + """ + + def gen_mission(self): + super().gen_mission() + self.instrs = PutNextInstr(ObjDesc(self.obj1.type, self.obj1.color), + ObjDesc(self.obj2.type, self.obj2.color)) + + + +class Level_TestPutNextToIdentical(RoomGridLevel): + """ + Test that the agent does not endlessly hesitate between + two identical objects. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=1, + num_cols=1, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.agent_pos = np.array([3, 3]) + self.agent_dir = 0 + self.place_obj(Box('yellow'), (1, 1), (1, 1)) + self.place_obj(Ball('blue'), (4, 4), (1, 1)) + self.place_obj(Ball('red'), (2, 2), (1, 1)) + instr1 = PutNextInstr(ObjDesc('ball', 'blue'), + ObjDesc('box', 'yellow')) + instr2 = PutNextInstr(ObjDesc('box', 'yellow'), + ObjDesc('ball', None)) + self.instrs = BeforeInstr(instr1, instr2) + + +class Level_TestUnblockingLoop(RoomGridLevel): + """Test that unblocking does not results into an infinite loop.""" + + def __init__(self, seed=None): + super().__init__( + num_rows=2, + num_cols=2, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.agent_pos = np.array([15, 4]) + self.agent_dir = 2 + door, pos = self.add_door(0, 0, 1, 'red', False) + door, pos = self.add_door(0, 1, 0, 'red', False) + door, pos = self.add_door(1, 1, 3, 'blue', False) + self.place_obj(Box('yellow'), (9, 1), (1, 1)) + self.place_obj(Ball('blue'), (5, 3), (1, 1)) + self.place_obj(Ball('yellow'), (6, 2), (1, 1)) + self.place_obj(Key('blue'), (15, 15), (1, 1)) + put = PutNextInstr(ObjDesc('key', 'blue'), ObjDesc('door', 'blue')) + goto1 = GoToInstr(ObjDesc('ball', 'yellow')) + goto2 = GoToInstr(ObjDesc('box', 'yellow')) + self.instrs = BeforeInstr(put, AndInstr(goto1, goto2)) + + +class Level_TestPutNextCloseToDoor(RoomGridLevel): + """Test putting next when there is door where the object should be put.""" + + def __init__(self, seed=None): + super().__init__( + num_rows=2, + num_cols=2, + room_size=9, + seed=seed + ) + + def gen_mission(self): + self.agent_pos = np.array([5, 10]) + self.agent_dir = 2 + door, pos1 = self.add_door(0, 0, 1, 'red', False) + door, pos2 = self.add_door(0, 1, 0, 'red', False) + door, pos3 = self.add_door(1, 1, 3, 'blue', False) + self.place_obj(Ball('blue'), (pos1[0], pos1[1] - 1), (1, 1)) + self.place_obj(Ball('blue'), (pos1[0], pos1[1] - 2), (1, 1)) + if pos1[0] - 1 >= 1: + self.place_obj(Box('green'), (pos1[0] - 1, pos1[1] - 1), (1, 1)) + if pos1[0] + 1 < 8: + self.place_obj(Box('green'), (pos1[0] + 1, pos1[1] - 1), (1, 1)) + self.place_obj(Box('yellow'), (3, 15), (1, 1)) + self.instrs = PutNextInstr(ObjDesc('box', 'yellow'), ObjDesc('ball', 'blue')) + + +class Level_TestLotsOfBlockers(RoomGridLevel): + """ + Test that the agent does not endlessly hesitate between + two identical objects. + """ + + def __init__(self, seed=None): + super().__init__( + num_rows=1, + num_cols=1, + room_size=8, + seed=seed + ) + + def gen_mission(self): + self.agent_pos = np.array([5, 5]) + self.agent_dir = 0 + self.place_obj(Box('yellow'), (2, 1), (1, 1)) + self.place_obj(Box('yellow'), (2, 2), (1, 1)) + self.place_obj(Box('yellow'), (2, 3), (1, 1)) + self.place_obj(Box('yellow'), (3, 4), (1, 1)) + self.place_obj(Box('yellow'), (2, 6), (1, 1)) + self.place_obj(Box('yellow'), (1, 3), (1, 1)) + self.place_obj(Ball('blue'), (1, 2), (1, 1)) + self.place_obj(Ball('red'), (3, 6), (1, 1)) + self.instrs = PutNextInstr(ObjDesc('ball', 'red'), + ObjDesc('ball', 'blue')) + + +register_levels(__name__, globals()) diff --git a/babyai/babyai/levels/verifier.py b/babyai/babyai/levels/verifier.py new file mode 100644 index 0000000..ea896dc --- /dev/null +++ b/babyai/babyai/levels/verifier.py @@ -0,0 +1,550 @@ +import os +import numpy as np +from enum import Enum +from gym_minigrid.minigrid import COLOR_NAMES, DIR_TO_VEC + +# Object types we are allowed to describe in language +OBJ_TYPES = ['box', 'ball', 'key', 'door'] + +# Object types we are allowed to describe in language +OBJ_TYPES_NOT_DOOR = list(filter(lambda t: t is not 'door', OBJ_TYPES)) + +# Locations are all relative to the agent's starting position +LOC_NAMES = ['left', 'right', 'front', 'behind'] + +# Environment flag to indicate that done actions should be +# used by the verifier +use_done_actions = os.environ.get('BABYAI_DONE_ACTIONS', False) + + +def dot_product(v1, v2): + """ + Compute the dot product of the vectors v1 and v2. + """ + + return sum([i * j for i, j in zip(v1, v2)]) + + +def pos_next_to(pos_a, pos_b): + """ + Test if two positions are next to each other. + The positions have to line up either horizontally or vertically, + but positions that are diagonally adjacent are not counted. + """ + + xa, ya = pos_a + xb, yb = pos_b + d = abs(xa - xb) + abs(ya - yb) + return d == 1 + + +class ObjDesc: + """ + Description of a set of objects in an environment + """ + + def __init__(self, type, color=None, loc=None): + assert type in [None, *OBJ_TYPES], type + assert color in [None, *COLOR_NAMES], color + assert loc in [None, *LOC_NAMES], loc + + self.color = color + self.type = type + self.loc = loc + + # Set of objects possibly matching the description + self.obj_set = [] + + # Set of initial object positions + self.obj_poss = [] + + def __repr__(self): + return "{} {} {}".format(self.color, self.type, self.loc) + + def surface(self, env): + """ + Generate a natural language representation of the object description + """ + + self.find_matching_objs(env) + assert len(self.obj_set) > 0, "no object matching description" + + if self.type: + s = str(self.type) + else: + s = 'object' + + if self.color: + s = self.color + ' ' + s + + if self.loc: + if self.loc == 'front': + s = s + ' in front of you' + elif self.loc == 'behind': + s = s + ' behind you' + else: + s = s + ' on your ' + self.loc + + # Singular vs plural + if len(self.obj_set) > 1: + s = 'a ' + s + else: + s = 'the ' + s + + return s + + def find_matching_objs(self, env, use_location=True): + """ + Find the set of objects matching the description and their positions. + When use_location is False, we only update the positions of already tracked objects, without taking into account + the location of the object. e.g. A ball that was on "your right" initially will still be tracked as being "on + your right" when you move. + """ + + if use_location: + self.obj_set = [] + # otherwise we keep the same obj_set + + self.obj_poss = [] + + agent_room = env.room_from_pos(*env.agent_pos) + + for i in range(env.grid.width): + for j in range(env.grid.height): + cell = env.grid.get(i, j) + if cell is None: + continue + + if not use_location: + # we should keep tracking the same objects initially tracked only + already_tracked = any([cell is obj for obj in self.obj_set]) + if not already_tracked: + continue + + # Check if object's type matches description + if self.type is not None and cell.type != self.type: + continue + + # Check if object's color matches description + if self.color is not None and cell.color != self.color: + continue + + # Check if object's position matches description + if use_location and self.loc in ["left", "right", "front", "behind"]: + # Locations apply only to objects in the same room + # the agent starts in + if not agent_room.pos_inside(i, j): + continue + + # Direction from the agent to the object + v = (i - env.agent_pos[0], j - env.agent_pos[1]) + + # (d1, d2) is an oriented orthonormal basis + d1 = DIR_TO_VEC[env.agent_dir] + d2 = (-d1[1], d1[0]) + + # Check if object's position matches with location + pos_matches = { + "left": dot_product(v, d2) < 0, + "right": dot_product(v, d2) > 0, + "front": dot_product(v, d1) > 0, + "behind": dot_product(v, d1) < 0 + } + + if not (pos_matches[self.loc]): + continue + + if use_location: + self.obj_set.append(cell) + self.obj_poss.append((i, j)) + + return self.obj_set, self.obj_poss + + +class Instr: + """ + Base class for all instructions in the baby language + """ + + def __init__(self): + self.env = None + + def surface(self, env): + """ + Produce a natural language representation of the instruction + """ + + raise NotImplementedError + + def reset_verifier(self, env): + """ + Must be called at the beginning of the episode + """ + + self.env = env + + def verify(self, action): + """ + Verify if the task described by the instruction is incomplete, + complete with success or failed. The return value is a string, + one of: 'success', 'failure' or 'continue'. + """ + + raise NotImplementedError + + def update_objs_poss(self): + """ + Update the position of objects present in the instruction if needed + """ + potential_objects = ('desc', 'desc_move', 'desc_fixed') + for attr in potential_objects: + if hasattr(self, attr): + getattr(self, attr).find_matching_objs(self.env, use_location=False) + + +class ActionInstr(Instr): + """ + Base class for all action instructions (clauses) + """ + + def __init__(self): + super().__init__() + + # Indicates that the action was completed on the last step + self.lastStepMatch = False + + def verify(self, action): + """ + Verifies actions, with and without the done action. + """ + + if not use_done_actions: + return self.verify_action(action) + + if action == self.env.actions.done: + if self.lastStepMatch: + return 'success' + return 'failure' + + res = self.verify_action(action) + self.lastStepMatch = (res == 'success') + + def verify_action(self): + """ + Each action instruction class should implement this method + to verify the action. + """ + + raise NotImplementedError + + +class OpenInstr(ActionInstr): + def __init__(self, obj_desc, strict=False): + super().__init__() + assert obj_desc.type == 'door' + self.desc = obj_desc + self.strict = strict + + def surface(self, env): + return 'open ' + self.desc.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + + # Identify set of possible matching objects in the environment + self.desc.find_matching_objs(env) + + def verify_action(self, action): + # Only verify when the toggle action is performed + if action != self.env.actions.toggle: + return 'continue' + + # Get the contents of the cell in front of the agent + front_cell = self.env.grid.get(*self.env.front_pos) + + for door in self.desc.obj_set: + if front_cell and front_cell is door and door.is_open: + return 'success' + + # If in strict mode and the wrong door is opened, failure + if self.strict: + if front_cell and front_cell.type == 'door': + return 'failure' + + return 'continue' + + +class GoToInstr(ActionInstr): + """ + Go next to (and look towards) an object matching a given description + eg: go to the door + """ + + def __init__(self, obj_desc): + super().__init__() + self.desc = obj_desc + + def surface(self, env): + return 'go to ' + self.desc.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + + # Identify set of possible matching objects in the environment + self.desc.find_matching_objs(env) + + def verify_action(self, action): + # For each object position + for pos in self.desc.obj_poss: + # If the agent is next to (and facing) the object + if np.array_equal(pos, self.env.front_pos): + return 'success' + + return 'continue' + + +class PickupInstr(ActionInstr): + """ + Pick up an object matching a given description + eg: pick up the grey ball + """ + + def __init__(self, obj_desc, strict=False): + super().__init__() + assert obj_desc.type is not 'door' + self.desc = obj_desc + self.strict = strict + + def surface(self, env): + return 'pick up ' + self.desc.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + + # Object previously being carried + self.preCarrying = None + + # Identify set of possible matching objects in the environment + self.desc.find_matching_objs(env) + + def verify_action(self, action): + # To keep track of what was carried at the last time step + preCarrying = self.preCarrying + self.preCarrying = self.env.carrying + + # Only verify when the pickup action is performed + if action != self.env.actions.pickup: + return 'continue' + + for obj in self.desc.obj_set: + if preCarrying is None and self.env.carrying is obj: + return 'success' + + # If in strict mode and the wrong door object is picked up, failure + if self.strict: + if self.env.carrying: + return 'failure' + + self.preCarrying = self.env.carrying + + return 'continue' + + +class PutNextInstr(ActionInstr): + """ + Put an object next to another object + eg: put the red ball next to the blue key + """ + + def __init__(self, obj_move, obj_fixed, strict=False): + super().__init__() + assert obj_move.type is not 'door' + self.desc_move = obj_move + self.desc_fixed = obj_fixed + self.strict = strict + + def surface(self, env): + return 'put ' + self.desc_move.surface(env) + ' next to ' + self.desc_fixed.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + + # Object previously being carried + self.preCarrying = None + + # Identify set of possible matching objects in the environment + self.desc_move.find_matching_objs(env) + self.desc_fixed.find_matching_objs(env) + + def objs_next(self): + """ + Check if the objects are next to each other + This is used for rejection sampling + """ + + for obj_a in self.desc_move.obj_set: + pos_a = obj_a.cur_pos + + for pos_b in self.desc_fixed.obj_poss: + if pos_next_to(pos_a, pos_b): + return True + return False + + def verify_action(self, action): + # To keep track of what was carried at the last time step + preCarrying = self.preCarrying + self.preCarrying = self.env.carrying + + # In strict mode, picking up the wrong object fails + if self.strict: + if action == self.env.actions.pickup and self.env.carrying: + return 'failure' + + # Only verify when the drop action is performed + if action != self.env.actions.drop: + return 'continue' + + for obj_a in self.desc_move.obj_set: + if preCarrying is not obj_a: + continue + + pos_a = obj_a.cur_pos + + for pos_b in self.desc_fixed.obj_poss: + if pos_next_to(pos_a, pos_b): + return 'success' + + return 'continue' + + +class SeqInstr(Instr): + """ + Base class for sequencing instructions (before, after, and) + """ + + def __init__(self, instr_a, instr_b, strict=False): + assert isinstance(instr_a, ActionInstr) or isinstance(instr_a, AndInstr) + assert isinstance(instr_b, ActionInstr) or isinstance(instr_b, AndInstr) + self.instr_a = instr_a + self.instr_b = instr_b + self.strict = strict + + +class BeforeInstr(SeqInstr): + """ + Sequence two instructions in order: + eg: go to the red door then pick up the blue ball + """ + + def surface(self, env): + return self.instr_a.surface(env) + ', then ' + self.instr_b.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + self.instr_a.reset_verifier(env) + self.instr_b.reset_verifier(env) + self.a_done = False + self.b_done = False + + def verify(self, action): + if self.a_done == 'success': + self.b_done = self.instr_b.verify(action) + + if self.b_done == 'failure': + return 'failure' + + if self.b_done == 'success': + return 'success' + else: + self.a_done = self.instr_a.verify(action) + if self.a_done == 'failure': + return 'failure' + + if self.a_done == 'success': + return self.verify(action) + + # In strict mode, completing b first means failure + if self.strict: + if self.instr_b.verify(action) == 'success': + return 'failure' + + return 'continue' + + +class AfterInstr(SeqInstr): + """ + Sequence two instructions in reverse order: + eg: go to the red door after you pick up the blue ball + """ + + def surface(self, env): + return self.instr_a.surface(env) + ' after you ' + self.instr_b.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + self.instr_a.reset_verifier(env) + self.instr_b.reset_verifier(env) + self.a_done = False + self.b_done = False + + def verify(self, action): + if self.b_done == 'success': + self.a_done = self.instr_a.verify(action) + + if self.a_done == 'success': + return 'success' + + if self.a_done == 'failure': + return 'failure' + else: + self.b_done = self.instr_b.verify(action) + if self.b_done == 'failure': + return 'failure' + + if self.b_done == 'success': + return self.verify(action) + + # In strict mode, completing a first means failure + if self.strict: + if self.instr_a.verify(action) == 'success': + return 'failure' + + return 'continue' + + +class AndInstr(SeqInstr): + """ + Conjunction of two actions, both can be completed in any other + eg: go to the red door and pick up the blue ball + """ + + def __init__(self, instr_a, instr_b, strict=False): + assert isinstance(instr_a, ActionInstr) + assert isinstance(instr_b, ActionInstr) + super().__init__(instr_a, instr_b, strict) + + def surface(self, env): + return self.instr_a.surface(env) + ' and ' + self.instr_b.surface(env) + + def reset_verifier(self, env): + super().reset_verifier(env) + self.instr_a.reset_verifier(env) + self.instr_b.reset_verifier(env) + self.a_done = False + self.b_done = False + + def verify(self, action): + if self.a_done is not 'success': + self.a_done = self.instr_a.verify(action) + + if self.b_done is not 'success': + self.b_done = self.instr_b.verify(action) + + if use_done_actions and action is self.env.actions.done: + if self.a_done == 'failure' and self.b_done == 'failure': + return 'failure' + + if self.a_done == 'success' and self.b_done == 'success': + return 'success' + + return 'continue' diff --git a/babyai/babyai/model.py b/babyai/babyai/model.py new file mode 100644 index 0000000..798e8c5 --- /dev/null +++ b/babyai/babyai/model.py @@ -0,0 +1,483 @@ +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import Variable +from torch.distributions import Categorical, Normal +from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence +import babyai.rl +from babyai.rl.utils.supervised_losses import required_heads + + +# Function from https://github.com/ikostrikov/pytorch-a2c-ppo-acktr/blob/master/model.py +def initialize_parameters(m): + classname = m.__class__.__name__ + if classname.find('Linear') != -1: + m.weight.data.normal_(0, 1) + m.weight.data *= 1 / torch.sqrt(m.weight.data.pow(2).sum(1, keepdim=True)) + if m.bias is not None: + m.bias.data.fill_(0) + + +# Inspired by FiLMedBlock from https://arxiv.org/abs/1709.07871 +class ExpertControllerFiLM(nn.Module): + def __init__(self, in_features, out_features, in_channels, imm_channels): + super().__init__() + self.conv1 = nn.Conv2d(in_channels=in_channels, out_channels=imm_channels, kernel_size=(3, 3), padding=1) + self.bn1 = nn.BatchNorm2d(imm_channels) + self.conv2 = nn.Conv2d(in_channels=imm_channels, out_channels=out_features, kernel_size=(3, 3), padding=1) + self.bn2 = nn.BatchNorm2d(out_features) + + self.weight = nn.Linear(in_features, out_features) + self.bias = nn.Linear(in_features, out_features) + + self.apply(initialize_parameters) + + def forward(self, x, y): + x = F.relu(self.bn1(self.conv1(x))) + x = self.conv2(x) + out = x * self.weight(y).unsqueeze(2).unsqueeze(3) + self.bias(y).unsqueeze(2).unsqueeze(3) + out = self.bn2(out) + out = F.relu(out) + return out + + +class ACModel(nn.Module, babyai.rl.RecurrentACModel): + def __init__(self, obs_space, action_space, + image_dim=128, memory_dim=128, instr_dim=128, + use_instr=False, lang_model="gru", use_memory=False, arch="cnn1", + aux_info=None, dropout_p=0): + super().__init__() + + # Decide which components are enabled + self.use_instr = use_instr + self.use_memory = use_memory + self.arch = arch + self.lang_model = lang_model + self.aux_info = aux_info + self.image_dim = image_dim + self.memory_dim = memory_dim + self.instr_dim = instr_dim + self.dropout_p = dropout_p + + self.action_space = action_space + self.obs_space = obs_space + + if arch == "cnn1": + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=3, out_channels=16, kernel_size=(2, 2)), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=16, out_channels=32, kernel_size=(2, 2)), + nn.ReLU(), + nn.Conv2d(in_channels=32, out_channels=image_dim, kernel_size=(2, 2)), + nn.ReLU() + ) + elif arch == "expert_filmcnn_dir": + if not self.use_instr: + raise ValueError("FiLM architecture can be used when instructions are enabled") + + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=4, out_channels=128, kernel_size=(2, 2), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2) + ) + self.film_pool = nn.MaxPool2d(kernel_size=(2, 2), stride=2) + elif arch.startswith("expert_filmcnn_cont"): + if not self.use_instr: + raise ValueError("FiLM architecture can be used when instructions are enabled") + + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=3, out_channels=128, kernel_size=(2, 2), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2) + ) + self.film_pool = nn.MaxPool2d(kernel_size=(2, 2), stride=2) + elif arch.startswith("gru_mlp_cont"): + if not self.use_instr: + raise ValueError("Architecture requires instructions") + + self.mlp = nn.Sequential( + nn.Linear(151, 64), + nn.BatchNorm1d(64), + nn.ReLU(), + nn.Linear(64, 64), + nn.BatchNorm1d(64), + nn.ReLU(), + nn.Linear(64, 64), + nn.BatchNorm1d(64), + nn.ReLU() + ) + + elif arch.startswith("expert_filmcnn"): + if not self.use_instr: + raise ValueError("FiLM architecture can be used when instructions are enabled") + + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=3, out_channels=128, kernel_size=(2, 2), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2) + ) + self.film_pool = nn.MaxPool2d(kernel_size=(2, 2), stride=2) + else: + raise ValueError("Incorrect architecture name: {}".format(arch)) + + self.dropout = nn.Dropout(p=self.dropout_p) + + # Define instruction embedding + if self.use_instr: + if self.lang_model in ['gru', 'bigru', 'attgru']: + self.word_embedding = nn.Embedding(obs_space["instr"], self.instr_dim) + if self.lang_model in ['gru', 'bigru', 'attgru']: + gru_dim = self.instr_dim + if self.lang_model in ['bigru', 'attgru']: + gru_dim //= 2 + self.instr_rnn = nn.GRU( + self.instr_dim, gru_dim, batch_first=True, + bidirectional=(self.lang_model in ['bigru', 'attgru'])) + self.final_instr_dim = self.instr_dim + else: + kernel_dim = 64 + kernel_sizes = [3, 4] + self.instr_convs = nn.ModuleList([ + nn.Conv2d(1, kernel_dim, (K, self.instr_dim)) for K in kernel_sizes]) + self.final_instr_dim = kernel_dim * len(kernel_sizes) + + if self.lang_model == 'attgru': + self.memory2key = nn.Linear(self.memory_size, self.final_instr_dim) + + # Define memory + if self.use_memory: + self.memory_rnn = nn.LSTMCell(self.image_dim, self.memory_dim) + + # Resize image embedding + self.embedding_size = self.semi_memory_size + if self.use_instr and not "filmcnn" in arch: + self.embedding_size += self.final_instr_dim + + if arch.startswith("expert_filmcnn"): + if arch == "expert_filmcnn" or arch == "expert_filmcnn_dir" or arch == "expert_filmcnn_cont": + num_module = 2 + else: + num_module = int(arch[(arch.rfind('_') + 1):]) + self.controllers = [] + for ni in range(num_module): + if ni < num_module-1: + mod = ExpertControllerFiLM( + in_features=self.final_instr_dim, + out_features=128, in_channels=128, imm_channels=128) + else: + mod = ExpertControllerFiLM( + in_features=self.final_instr_dim, out_features=self.image_dim, + in_channels=128, imm_channels=128) + self.controllers.append(mod) + self.add_module('FiLM_Controler_' + str(ni), mod) + + # Define actor's model + if "expert_filmcnn_cont" in arch: + self.fc = nn.Linear(2048+9, self.embedding_size) + self.actor = nn.Sequential( + nn.Linear(self.embedding_size, 64), + nn.Tanh(), + nn.Linear(64, self.action_space.shape[0] * 2), + nn.Tanh() + ) + elif "gru_mlp_cont" in arch: + self.embedding_size = 64 + A = self.action_space.n if "Discrete" in type(self.action_space).__name__ else self.action_space.shape[0] + self.actor = nn.Sequential( + nn.Linear(self.embedding_size, 64), + nn.Tanh(), + nn.Linear(64, A), + nn.Tanh() + ) + log_std = -2 * np.ones(A, dtype=np.float32) + self.log_std = torch.nn.Parameter(torch.as_tensor(log_std)) + else: + self.actor = nn.Sequential( + nn.Linear(self.embedding_size, 64), + nn.Tanh(), + nn.Linear(64, self.action_space.n) + ) + + # Define critic's model + self.critic = nn.Sequential( + nn.Linear(self.embedding_size, 64), + nn.Tanh(), + nn.Linear(64, 1) + ) + + # Initialize parameters correctly + self.apply(initialize_parameters) + + # Define head for extra info + if self.aux_info: + self.extra_heads = None + self.add_heads() + + def add_heads(self): + ''' + When using auxiliary tasks, the environment yields at each step some binary, continous, or multiclass + information. The agent needs to predict those information. This function add extra heads to the model + that output the predictions. There is a head per extra information (the head type depends on the extra + information type). + ''' + self.extra_heads = nn.ModuleDict() + for info in self.aux_info: + if required_heads[info] == 'binary': + self.extra_heads[info] = nn.Linear(self.embedding_size, 1) + elif required_heads[info].startswith('multiclass'): + n_classes = int(required_heads[info].split('multiclass')[-1]) + self.extra_heads[info] = nn.Linear(self.embedding_size, n_classes) + elif required_heads[info].startswith('continuous'): + if required_heads[info].endswith('01'): + self.extra_heads[info] = nn.Sequential(nn.Linear(self.embedding_size, 1), nn.Sigmoid()) + else: + raise ValueError('Only continous01 is implemented') + else: + raise ValueError('Type not supported') + # initializing these parameters independently is done in order to have consistency of results when using + # supervised-loss-coef = 0 and when not using any extra binary information + self.extra_heads[info].apply(initialize_parameters) + + def add_extra_heads_if_necessary(self, aux_info): + ''' + This function allows using a pre-trained model without aux_info and add aux_info to it and still make + it possible to finetune. + ''' + try: + if not hasattr(self, 'aux_info') or not set(self.aux_info) == set(aux_info): + self.aux_info = aux_info + self.add_heads() + except Exception: + raise ValueError('Could not add extra heads') + + @property + def memory_size(self): + return 2 * self.semi_memory_size + + @property + def semi_memory_size(self): + return self.memory_dim + + def forward(self, obs, memory, instr_embedding=None): + if self.use_instr and instr_embedding is None: + instr_embedding = self._get_instr_embedding(obs.instr) + if self.use_instr and self.lang_model == "attgru": + # outputs: B x L x D + # memory: B x M + mask = (obs.instr != 0).float() + # The mask tensor has the same length as obs.instr, and + # thus can be both shorter and longer than instr_embedding. + # It can be longer if instr_embedding is computed + # for a subbatch of obs.instr. + # It can be shorter if obs.instr is a subbatch of + # the batch that instr_embeddings was computed for. + # Here, we make sure that mask and instr_embeddings + # have equal length along dimension 1. + mask = mask[:, :instr_embedding.shape[1]] + instr_embedding = instr_embedding[:, :mask.shape[1]] + + keys = self.memory2key(memory) + pre_softmax = (keys[:, None, :] * instr_embedding).sum(2) + 1000 * mask + attention = F.softmax(pre_softmax, dim=1) + instr_embedding = (instr_embedding * attention[:, :, None]).sum(1) + + if "cnn" in self.arch: + x = torch.transpose(torch.transpose(obs.image, 1, 3), 2, 3) + + if self.arch.startswith("expert_filmcnn"): + x = self.image_conv(x) + for controler in self.controllers: + x = controler(x, instr_embedding) + x = F.relu(self.film_pool(x)) + else: + x = self.image_conv(x) + + x = x.reshape(x.shape[0], -1) + + if "cont" in self.arch: + x = torch.cat((x, obs.joint_positions), dim=-1) + x = self.fc(x) + + if self.use_memory: + hidden = (memory[:, :self.semi_memory_size], memory[:, self.semi_memory_size:]) + hidden = self.memory_rnn(x, hidden) + embedding = hidden[0] + memory = torch.cat(hidden, dim=1) + else: + embedding = x + + if self.use_instr and not "filmcnn" in self.arch: + embedding = torch.cat((embedding, instr_embedding), dim=1) + elif "gru_mlp" in self.arch: + objects_flat = obs.objects.reshape(obs.objects.shape[0], -1) + embedding = torch.cat((objects_flat, obs.joint_positions, instr_embedding), dim=-1) + embedding = self.mlp(embedding) + + if hasattr(self, 'aux_info') and self.aux_info: + extra_predictions = {info: self.extra_heads[info](embedding) for info in self.extra_heads} + else: + extra_predictions = dict() + + + # embedding = self.dropout(embedding) + x = self.actor(embedding) + + if "cont" in self.arch and not "Discrete" in type(self.action_space).__name__ : + std = torch.exp(self.log_std) + dist = Normal(x, std) + else: + dist = Categorical(logits=F.log_softmax(x, dim=1)) + + x = self.critic(embedding) + value = x.squeeze(1) + + return {'dist': dist, 'value': value, 'memory': memory, 'extra_predictions': extra_predictions} + + def _get_instr_embedding(self, instr): + lengths = (instr != 0).sum(1).long() + if self.lang_model == 'gru': + out, _ = self.instr_rnn(self.word_embedding(instr)) + hidden = out[range(len(lengths)), lengths-1, :] + return hidden + + elif self.lang_model in ['bigru', 'attgru']: + masks = (instr != 0).float() + + if lengths.shape[0] > 1: + seq_lengths, perm_idx = lengths.sort(0, descending=True) + iperm_idx = torch.LongTensor(perm_idx.shape).fill_(0) + if instr.is_cuda: iperm_idx = iperm_idx.cuda() + for i, v in enumerate(perm_idx): + iperm_idx[v.data] = i + + inputs = self.word_embedding(instr) + inputs = inputs[perm_idx] + + inputs = pack_padded_sequence(inputs, seq_lengths.data.cpu().numpy(), batch_first=True) + + outputs, final_states = self.instr_rnn(inputs) + else: + instr = instr[:, 0:lengths[0]] + outputs, final_states = self.instr_rnn(self.word_embedding(instr)) + iperm_idx = None + final_states = final_states.transpose(0, 1).contiguous() + final_states = final_states.view(final_states.shape[0], -1) + if iperm_idx is not None: + outputs, _ = pad_packed_sequence(outputs, batch_first=True) + outputs = outputs[iperm_idx] + final_states = final_states[iperm_idx] + + return outputs if self.lang_model == 'attgru' else final_states + + else: + ValueError("Undefined instruction architecture: {}".format(self.use_instr)) + + +class StateActionPredictor(nn.Module): + def __init__(self, obs_space, action_space=7, image_dim=128, instr_dim=128): + super().__init__() + + self.image_dim = image_dim + self.instr_dim = instr_dim + self.action_space_dim = action_space.n + + # state encoder differ from the one from the paper + # Curiosity-driven Exploration by Self-supervised Prediction Pathak et al. 2017 + # here the state at time t is (image_t + language_instructions) + + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=3, out_channels=128, kernel_size=(2, 2), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2) + ) + self.film_pool = nn.MaxPool2d(kernel_size=(2, 2), stride=2) + + self.word_embedding = nn.Embedding(obs_space["instr"], self.instr_dim) + gru_dim = self.instr_dim + self.instr_rnn = nn.GRU( + self.instr_dim, gru_dim, batch_first=True, bidirectional=False) + self.final_instr_dim = self.instr_dim + + num_module = 2 + self.controllers = [] + for ni in range(num_module): + if ni < num_module-1: + mod = ExpertControllerFiLM( + in_features=self.final_instr_dim, + out_features=128, in_channels=128, imm_channels=128) + else: + mod = ExpertControllerFiLM( + in_features=self.final_instr_dim, out_features=self.image_dim, + in_channels=128, imm_channels=128) + self.controllers.append(mod) + self.add_module('FiLM_Controler_' + str(ni), mod) + + # inverse model + self.inverse_fc_1 = nn.Linear(256, 256) + self.inverse_fc_2 = nn.Linear(256, self.action_space_dim) + + # forward model + self.forward_fc_1 = nn.Linear(128+self.action_space_dim, 256) + self.forward_fc_2 = nn.Linear(256, 128) + + def encode(self, inputs): + lengths = (inputs.instr != 0).sum(1).long() + out, _ = self.instr_rnn(self.word_embedding(inputs.instr)) + instr_embedding = out[range(len(lengths)), lengths-1, :] + + x = torch.transpose(torch.transpose(inputs.image, 1, 3), 2, 3) + + x = self.image_conv(x) + for controler in self.controllers: + x = controler(x, instr_embedding) + x = F.relu(self.film_pool(x)) + + return x.reshape(x.shape[0], -1) + + def forward(self, obs1, obs2, action): + + phi1 = self.encode(obs1) + phi2 = self.encode(obs2) + action_one_hot = F.one_hot(action, num_classes=self.action_space_dim) + + # inverse model + catphi = torch.cat([phi1, phi2], dim=1) + x_inv = self.inverse_fc_1(catphi) + actions_pred = self.inverse_fc_2(x_inv) + + # forward model + catphiact = torch.cat([phi1, action_one_hot], dim=1) + x_forward = self.forward_fc_1(catphiact) + phi2_pred = self.forward_fc_2(x_forward) + + return phi2_pred, actions_pred, phi1, phi2 diff --git a/babyai/babyai/paral_env_simple.py b/babyai/babyai/paral_env_simple.py new file mode 100644 index 0000000..74363e3 --- /dev/null +++ b/babyai/babyai/paral_env_simple.py @@ -0,0 +1,231 @@ +import gym +import torch +import numpy as np +from copy import deepcopy +from torch.multiprocessing import Process, Pipe + +import logging +import babyai.utils as utils + +logger = logging.getLogger(__name__) +logger.setLevel(logging.WARNING) + + +def multi_worker(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(a) + if done: + obs, info = env.reset() + ret.append((obs, reward, done, info)) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + obs, info = env.reset() + ret.append((obs, info)) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode, highlight = data + ret = envs[0].render(mode, highlight) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +def multi_worker_cont(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(action=a) + if done: + obs, info = env.reset() + ret.append((obs, reward, done, info)) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + ret.append(env.reset()) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode = data + ret = envs[0].render(mode) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +class ParallelEnv(gym.Env): + """Parallel environment that holds a list of environments and can + evaluate a low-level policy for use in reward shaping. + """ + + def __init__(self, + envs, # List of environments + ): + assert len(envs) >= 1, "No environment provided" + self.envs = envs + self.num_envs = len(self.envs) + self.device = torch.device("cuda") if torch.cuda.is_available() \ + else torch.device("cpu") + self.spec = deepcopy(self.envs[0].unwrapped.spec) + self.spec_id = f"ParallelShapedEnv<{self.spec.id}>" + self.env_name = self.envs[0].unwrapped.spec.id + self.action_space = self.envs[0].action_space + + if "BabyAI" in self.env_name: + self.envs_per_proc = 64 + elif "BabyPANDA" in self.env_name: + self.envs_per_proc = 1 + else: + self.envs_per_proc = 64 + + # Setup arrays to hold current observation and timestep + # for each environment + self.obss = [] + self.ts = np.array([0 for _ in range(self.num_envs)]) + + # Spin up subprocesses + self.locals = [] + self.processes = [] + self.start_processes() + + def __len__(self): + return self.num_envs + + def __str__(self): + self.locals[0].send(("__str__", None)) + return f">" + + def __del__(self): + for p in self.processes: + p.terminate() + + def gen_obs(self): + return self.obss + + def render(self, mode="rgb_array", highlight=False): + """Render a single environment""" + if "BabyPANDA" in self.spec_id: + self.locals[0].send(("render_one", mode)) + else: + self.locals[0].send(("render_one", (mode, highlight))) + return self.locals[0].recv() + + def start_processes(self): + """Spin up the num_envs/envs_per_proc number of processes""" + logger.info(f"spinning up {self.num_envs} processes") + for i in range(0, self.num_envs, self.envs_per_proc): + local, remote = Pipe() + self.locals.append(local) + if "BabyPANDA" in self.spec_id: + p = Process(target=multi_worker_cont, + args=(remote, self.envs[i:i + self.envs_per_proc])) + else: + p = Process(target=multi_worker, + args=(remote, self.envs[i:i + self.envs_per_proc])) + p.daemon = True + p.start() + remote.close() + self.processes.append(p) + logger.info("done spinning up processes") + + def request_reset_envs(self): + """Request all processes to reset their envs""" + logger.info("requesting resets") + for local in self.locals: + local.send(("reset", None)) + self.obss = [] + logger.info("requested resets") + + infos = [] + for local in self.locals: + res = local.recv() + + for j in range(len(res)): + infos.append(res[j][1]) + if res[j][0] is not None: + self.obss += [res[j][0]] + # self.obss += local.recv() + logger.info("completed resets") + return infos + + def reset(self): + """Reset all environments""" + infos = self.request_reset_envs() + return [obs for obs in self.obss], infos + + def request_step(self, actions, stop_mask): + """Request processes to step corresponding to (primitive) actions + unless stop mask indicates otherwise""" + for i in range(0, self.num_envs, self.envs_per_proc): + self.locals[i // self.envs_per_proc].send( + ("step", [actions[i:i + self.envs_per_proc], + stop_mask[i:i + self.envs_per_proc]]) + ) + results = [] + for i in range(0, self.num_envs, self.envs_per_proc): + res = self.locals[i // self.envs_per_proc].recv() + for j in range(len(res)): + results.append(res[j]) + if results[-1][0] != None: + self.obss[i + j] = results[-1][0] + return zip(*results) + + def step(self, actions): + """Complete a step and evaluate low-level policy / termination + classifier as needed depending on reward shaping scheme. + + Returns: obs: list of environment observations, + reward: np.array of extrinsic rewards, + done: np.array of booleans, + info: depends on self.reward_shaping. Output can be used + to shape the reward. + """ + # Make sure input is numpy array + if type(actions) != np.ndarray: + if type(actions) == list or type(actions) == int: + actions = np.array(actions) + elif type(actions) == torch.Tensor: + actions = actions.cpu().numpy() + else: + raise TypeError + actions_to_take = actions.copy() + + # Make a step in the environment + stop_mask = np.array([False for _ in range(self.num_envs)]) + obs, reward, done, info = self.request_step(actions_to_take, stop_mask) + reward = np.array(reward) + done_mask = np.array(done) + + self.ts += 1 + self.ts[done_mask] *= 0 + + return [obs for obs in self.obss], reward, done_mask, info diff --git a/babyai/babyai/plotting.py b/babyai/babyai/plotting.py new file mode 100644 index 0000000..b6ee216 --- /dev/null +++ b/babyai/babyai/plotting.py @@ -0,0 +1,178 @@ +"""Loading and plotting data from CSV logs. + +Schematic example of usage + +- load all `log.csv` files that can be found by recursing a root directory: + `dfs = load_logs($BABYAI_STORAGE)` +- concatenate them in the master dataframe + `df = pandas.concat(dfs, sort=True)` +- plot average performance for groups of runs using `plot_average(df, ...)` +- plot performance for each run in a group using `plot_all_runs(df, ...)` + +Note: +- you can choose what to plot +- groups are defined by regular expressions over full paths to .csv files. + For example, if your model is called "model1" and you trained it with multiple seeds, + you can filter all the respective runs with the regular expression ".*model1.*" +- you may want to load your logs from multiple storage directories + before concatening them into a master dataframe + +""" + +import os +import re +import numpy as np +from matplotlib import pyplot +import pandas + + +def load_log(dir_): + """Loads log from a directory and adds it to a list of dataframes.""" + df = pandas.read_csv(os.path.join(dir_, 'log.csv'), + on_bad_lines='warn') + if not len(df): + print("empty df at {}".format(dir_)) + return + df['model'] = dir_ + return df + + +def load_logs(root): + dfs = [] + for root, dirs, files in os.walk(root, followlinks=True): + for file_ in files: + if file_ == 'log.csv': + dfs.append(load_log(root)) + return dfs + + +def plot_average_impl(df, regexps, y_value='return_mean', window=1000, agg='mean', + x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models in zip(regexps, model_groups): + print("regex: {}".format(regex)) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + df_max = df_re.groupby([x_value]).max()[y_value] + df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + + pyplot.plot(df_agg.index, values, label=regex) + pyplot.fill_between(df_agg.index, df_max, df_min, alpha=0.5) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + + +def plot_variance_impl(df, regexps, y_value='return_mean', window=1000, agg='mean', + x_value='frames'): + """Plot variance over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models in zip(regexps, model_groups): + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).var() + values = df_agg[y_value] + print("{}: {}".format(regex, values.max())) + pyplot.plot(df_agg.index, values, label=regex) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + + + +def plot_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(15, 5)) + plot_average_impl(*args, **kwargs) + pyplot.legend() + pyplot.title("Average Reward") + pyplot.show() + + +def plot_variance(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(15, 5)) + plot_variance_impl(*args, **kwargs) + pyplot.legend() + pyplot.title("Variance") + pyplot.show() + + +def plot_all_runs(df, regex, quantity='return_mean', x_axis='frames', window=100, color=None): + """Plot a group of runs defined by a regex.""" + pyplot.figure(figsize=(15, 5)) + + df = df.dropna(subset=[quantity]) + + kwargs = {} + if color: + kwargs['color'] = color + unique_models = df['model'].unique() + models = [m for m in unique_models if re.match(regex, m)] + df_re = df[df['model'].isin(models)] + for model, df_model in df_re.groupby('model'): + values = df_model[quantity] + values = values.rolling(window).mean() + pyplot.plot(df_model[x_axis], + values, + label=model, + **kwargs) + print(model, df_model[x_axis].max()) + + pyplot.legend() + pyplot.show() + + +dfs = load_logs('storage') +df = pandas.concat(dfs, sort=True) + +regexs = ['.*llm_gtl.*'] + +# plot_bonus(df, regexs) +"""plot_average(df, regexs) +plot_variance(df, regexs) +for regex in regexs: + plot_all_runs(df, regex)""" + + diff --git a/babyai/babyai/plotting_paper.py b/babyai/babyai/plotting_paper.py new file mode 100644 index 0000000..68bb9ab --- /dev/null +++ b/babyai/babyai/plotting_paper.py @@ -0,0 +1,423 @@ +"""Loading and plotting data from CSV logs. + +Schematic example of usage + +- load all `log.csv` files that can be found by recursing a root directory: + `dfs = load_logs($BABYAI_STORAGE)` +- concatenate them in the master dataframe + `df = pandas.concat(dfs, sort=True)` +- plot average performance for groups of runs using `plot_average(df, ...)` +- plot performance for each run in a group using `plot_all_runs(df, ...)` + +Note: +- you can choose what to plot +- groups are defined by regular expressions over full paths to .csv files. + For example, if your model is called "model1" and you trained it with multiple seeds, + you can filter all the respective runs with the regular expression ".*model1.*" +- you may want to load your logs from multiple storage directories + before concatening them into a master dataframe + +""" + +import os +import re +import numpy as np +from scipy.stats import ttest_ind +from matplotlib import pyplot +import pandas + + +def load_log(dir_): + """Loads log from a directory and adds it to a list of dataframes.""" + df = pandas.read_csv(os.path.join(dir_, 'log.csv'), + on_bad_lines='warn') + if not len(df): + print("empty df at {}".format(dir_)) + return + df['model'] = dir_ + return df + + +def load_logs(root): + dfs = [] + for root, dirs, files in os.walk(root, followlinks=True): + for file_ in files: + if file_ == 'log.csv': + dfs.append(load_log(root)) + return dfs + + +def plot_average_impl(df, regexps, labels, limits, y_value='return_mean', window=1000, agg='mean', + x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df[df.frames < limits] + # df[(df.frames > 70000000) & (df.return_mean < 0.5)] = None + + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models, label in zip(regexps, model_groups, labels): + print("regex: {}".format(regex)) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + values = df_agg[y_value] + std = df_re.groupby([x_value]).std()[y_value] + df_max = values + std + df_min = values - std + + # pyplot.plot(df_agg.index, values, label='{} SE: {}'.format(label, round(values.sum()/len(values), 3))) + print(("{} last mean:{} last std: {}").format(label, values.iloc[-1], std.iloc[-1])) + pyplot.plot(df_agg.index, values, label='{}'.format(label)) + # pyplot.plot(df_agg.index, values, label=label) + pyplot.fill_between(df_agg.index, df_max, df_min, alpha=0.5) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + print("{} sample efficiency: {}".format(label, values.sum()/len(values))) + + +def plot_variance_impl(df, regexps, y_value='return_mean', window=1000, agg='mean', + x_value='frames'): + """Plot variance over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models in zip(regexps, model_groups): + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).var() + values = df_agg[y_value] + print("{}: {}".format(regex, values.max())) + pyplot.plot(df_agg.index, values, label=regex) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + + +def plot_SR_impl(df, regexps, y_value='success_rate', window=100, agg='mean', + x_value='frames'): + """Plot success rate QA over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models in zip(regexps, model_groups): + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + df_max = df_re.groupby([x_value]).max()[y_value] + df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + pyplot.plot(df_agg.index, values, label=regex) + pyplot.fill_between(df_agg.index, df_max, df_min, alpha=0.5) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + + +def plot_SR_QA_impl(df, regexps, labels, limits, y_value='success_rate_QA_mean', window=1000, agg='mean', + x_value='frames'): + """Plot success rate QA over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + df = df[df.frames < limits] + # df = df[df.frames < 120000040] + # df[(df.frames > 70000000) & (df.return_mean < 0.5)] = None + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models, label in zip(regexps, model_groups, labels): + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + df_max = df_re.groupby([x_value]).max()[y_value] + df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + pyplot.plot(df_agg.index, values, label=label) + pyplot.fill_between(df_agg.index, df_max, df_min, alpha=0.5) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + + +def plot_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(7.5, 5)) + plot_average_impl(*args, **kwargs) + pyplot.legend(handlelength=0.5, handleheight=0.5, prop={"size":11}) + pyplot.xlabel("Frames", fontsize=15) + + pyplot.title("Average Reward", fontsize=15) + pyplot.xticks(fontsize=14) + pyplot.yticks(fontsize=14) + pyplot.show() + + +def plot_variance(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(15, 5)) + plot_variance_impl(*args, **kwargs) + pyplot.legend() + pyplot.title("Variance") + pyplot.show() + + +def plot_SR(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(15, 5)) + plot_SR_impl(*args, **kwargs) + pyplot.legend() + pyplot.title("Success Rate") + pyplot.show() + + +def plot_SR_QA(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + pyplot.figure(figsize=(7.5, 5)) + plot_SR_QA_impl(*args, **kwargs) + # pyplot.legend(handlelength=0.5, handleheight=0.5) + pyplot.xlabel("Frames", fontsize=15) + + pyplot.title("Success Rate QA", fontsize=15) + pyplot.xticks(fontsize=14) + pyplot.yticks(fontsize=14) + pyplot.show() + + +def plot_all_runs(df, regex, quantity='return_mean', x_axis='frames', window=100, color=None): + """Plot a group of runs defined by a regex.""" + pyplot.figure(figsize=(15, 5)) + + df = df.dropna(subset=[quantity]) + + kwargs = {} + if color: + kwargs['color'] = color + unique_models = df['model'].unique() + models = [m for m in unique_models if re.match(regex, m)] + df_re = df[df['model'].isin(models)] + for model, df_model in df_re.groupby('model'): + values = df_model[quantity] + values = values.rolling(window).mean() + pyplot.plot(df_model[x_axis], + values, + label=model, + **kwargs) + print(model, df_model[x_axis].max()) + + pyplot.legend() + pyplot.show() + +def W_t_test(df, regexps, labels, limits, y_value='return_mean', window=1, x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df[df.frames < limits] + df = df[limits-2500 < df.frames ] + print(df) + # df[(df.frames > 70000000) & (df.return_mean < 0.5)] = None + + df = df.dropna(subset=[y_value]) + + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + dictionary = dict() + for regex, models, label in zip(regexps, model_groups, labels): + print("regex: {}".format(regex)) + print(label) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + """median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= median_progress]""" + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pandas.concat(parts) + df_re = df_re.dropna(subset=[y_value]) + values = df_re[y_value].to_numpy() + dictionary[label] = values + + len_label = len(labels) + l = 0 + while l<=len_label-2: + for i in range(l+1, len_label): + t, p = ttest_ind(dictionary[labels[l]], dictionary[labels[i]], equal_var=False) + print("{} = {}, p={}".format(labels[l], labels[i], p)) + l += 1 + +dfs = load_logs('storage') +df = pandas.concat(dfs, sort=True) + + +regexs = ['.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_10.*', + '.*PNL-GTL-RS-Online-025-D(?!-sa.*)', + '.*PNL-RIDE-reward_scale_20-lambda_05.*'] + +labels = ['EAGER', 'ELLA ', 'RIDE '] +limits = 80000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_PNM-adjusted-train_env-multienv3_no_answer-lambda_16-model-0_10.*', + '.*PNM-GTM-RS-Online-025-D.*', + '.*PNM-RIDE-reward_scale_20-lambda_05.*'] + +labels = ['EAGER', 'ELLA ', 'RIDE '] +limits = 150000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_UNLM-adjusted-train_env-multienv3_no_answer-lambda_24-model-0_10.*', + '.*UNLM-PUM-RS-Online-025-D.*', + '.*UNLM-RIDE-reward_scale_20-lambda_05.*'] + +labels = ['EAGER', 'ELLA ', 'RIDE '] +limits = 85000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_SEQ-adjusted-train_env-multienv3_no_answer-lambda_026-model-0_10.*', + '.*SEQ-GTM-RS-Online-05-D.*', + '.*SEQ-RIDE-reward_scale_20-lambda_05.*'] + +limits = 163000040 +labels = ['EAGER', 'ELLA ', 'RIDE '] +# plot_average(df, regexs, labels, limits) + +regexs = ['.*PNL-adjusted-train_env-PNL-lambda_24-model-0_6.*', + '.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_10.*', + '.*PNL-simple-train_env-PNL-lambda_24-model-0_6.*', + '.*PNL-simple-train_env-PNL_no_answer-lambda_24-model-2_10.*'] + +labels = ['EAGER \ no_answer', 'EAGER', 'EAGER Simple', 'EAGER Simple \ no_answer'] + +limits = 80000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_10.*', + '.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_9.*', + '.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_3.*', + '.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_2.*', + '.*PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_0.*'] + +labels = ['SR: 0.73', 'SR: 0.66', 'SR: 0.56', 'SR: 0.41', 'SR: 0.25'] +limits = 80000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_PNLpar-adjusted-train_env-PNL_no_answer-lambda_24-model-2_10.*', + '.*paral_PNLpar-adjusted-train_env-PNL_no_answer-lambda_24-model-2_9.*', + '.*paral_PNLpar-adjusted-train_env-PNL_no_answer-lambda_24-model-2_3.*', + '.*paral_PNLpar-adjusted-train_env-PNL_no_answer-lambda_24-model-2_2.*', + '.*paral_PNLpar-adjusted-train_env-PNL_no_answer-lambda_24-model-2_0.*'] + +labels = ['SR: 0.73', 'SR: 0.66', 'SR: 0.56', 'SR: 0.41', 'SR: 0.25'] +limits = 80000040 +# plot_SR_QA(df, regexs, labels, limits) + +regexs = ['.*paral_PNM-adjusted-train_env-multienv3_no_answer-lambda_16-model-0_10.*', + '.*paral_PNM-adjusted-train_env-multienv2_no_answer-lambda_16-model-0_7.*'] + +labels = ['Wide Distribution', 'Narrow Distribution'] +limits = 150000040 +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_SEQ-adjusted-train_env-multienv3_no_answer-lambda_026-model-0_10.*', + '.*paral_SEQ-adjusted-train_env-multienv2_no_answer-lambda_026-model-0_7.*'] + +limits = 100000040 +labels = ['Wide Distribution', 'Narrow Distribution'] +# plot_average(df, regexs, labels, limits) + +regexs = ['.*PNL-adjusted_biased-1-train_env-PNL_no_answer_biased_debiased_QA-0.*', + '.*PNL-adjusted_biased-1-train_env-PNL_no_answer_biased_debiased_QA-1.*'] + +limits = 80000040 +labels = ['Biased QA', 'Debiased QA'] + +# plot_average(df, regexs, labels, limits) + +regexs = ['.*paral_UNLM-adjusted-train_env-multienv3_no_answer-lambda_24-model-0_10.*', + '.*UNLM-PUM-RS-Online-025-D.*', + '.*UNLM-RIDE-reward_scale_20-lambda_05.*'] + +labels = ['EAGER', 'ELLA ', 'RIDE '] +limits = 85000040 +# W_t_test(df, regexs, labels, limits) + +regexs = ['.*paral_SEQ-adjusted-train_env-multienv3_no_answer-lambda_026-model-0_10.*', + '.*SEQ-GTM-RS-Online-05-D.*', + '.*SEQ-RIDE-reward_scale_20-lambda_05.*'] + +limits = 163000040 +labels = ['EAGER', 'ELLA ', 'RIDE '] +W_t_test(df, regexs, labels, limits) \ No newline at end of file diff --git a/babyai/babyai/rl/LICENSE b/babyai/babyai/rl/LICENSE new file mode 100644 index 0000000..784410b --- /dev/null +++ b/babyai/babyai/rl/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Lucas Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/babyai/babyai/rl/__init__.py b/babyai/babyai/rl/__init__.py new file mode 100644 index 0000000..c0bcfd0 --- /dev/null +++ b/babyai/babyai/rl/__init__.py @@ -0,0 +1,4 @@ +from babyai.rl.algos.ppo import PPOAlgo +from babyai.rl.algos.ppo_llm import PPOAlgoLlm +from babyai.rl.utils import DictList +from babyai.rl.model import ACModel, RecurrentACModel, ETModel diff --git a/babyai/babyai/rl/algos/__init__.py b/babyai/babyai/rl/algos/__init__.py new file mode 100644 index 0000000..3b504f9 --- /dev/null +++ b/babyai/babyai/rl/algos/__init__.py @@ -0,0 +1 @@ +from babyai.rl.algos.ppo import PPOAlgo diff --git a/babyai/babyai/rl/algos/base.py b/babyai/babyai/rl/algos/base.py new file mode 100644 index 0000000..01fa62f --- /dev/null +++ b/babyai/babyai/rl/algos/base.py @@ -0,0 +1,315 @@ +from abc import ABC, abstractmethod +import torch +import numpy +from tqdm import tqdm + +from babyai.rl.format import default_preprocess_obss +from babyai.rl.utils import DictList, ParallelEnv +from babyai.rl.utils.supervised_losses import ExtraInfoCollector +import babyai.utils +from torch.distributions import Categorical +import logging +logger = logging.getLogger(__name__) +import matplotlib.pyplot as plt + + +class BaseAlgo(ABC): + """The base class for RL algorithms.""" + + def __init__(self, envs, acmodel, num_frames_per_proc, discount, lr, gae_lambda, entropy_coef, + value_loss_coef, max_grad_norm, recurrence, preprocess_obss, reshape_reward, aux_info, use_penv=False, + sampling_temperature=1): + """ + Initializes a `BaseAlgo` instance. + + Parameters: + ---------- + envs : list + a list of environments that will be run in parallel + acmodel : torch.Module + the model + num_frames_per_proc : int + the number of frames collected by every process for an update + discount : float + the discount for future rewards + lr : float + the learning rate for optimizers + gae_lambda : float + the lambda coefficient in the GAE formula + ([Schulman et al., 2015](https://arxiv.org/abs/1506.02438)) + entropy_coef : float + the weight of the entropy cost in the final objective + value_loss_coef : float + the weight of the value loss in the final objective + max_grad_norm : float + gradient will be clipped to be at most this value + recurrence : int + the number of steps the gradient is propagated back in time + preprocess_obss : function + a function that takes observations returned by the environment + and converts them into the format that the model can handle + reshape_reward : function + a function that shapes the reward, takes an + (observation, action, reward, done) tuple as an input + aux_info : list + a list of strings corresponding to the name of the extra information + retrieved from the environment for supervised auxiliary losses + + """ + # Store parameters + + if use_penv: + logging.info("loading ParallelEnv") + self.env = ParallelEnv(envs, use_procs=True) + logging.info("loaded ParallelEnv") + else: + self.env = envs + self.acmodel = acmodel + self.acmodel.train() + self.num_frames_per_proc = num_frames_per_proc + self.discount = discount + self.lr = lr + self.gae_lambda = gae_lambda + self.entropy_coef = entropy_coef + self.value_loss_coef = value_loss_coef + self.max_grad_norm = max_grad_norm + self.recurrence = recurrence + self.preprocess_obss = preprocess_obss or default_preprocess_obss + self.reshape_reward = reshape_reward + self.aux_info = aux_info + self.sampling_temperature = sampling_temperature + + # Store helpers values + + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + self.num_procs = len(envs) + self.num_frames = self.num_frames_per_proc * self.num_procs + + assert self.num_frames_per_proc % self.recurrence == 0 + + # Initialize experience values + + shape = (self.num_frames_per_proc, self.num_procs) + + logging.info("resetting environment") + self.obs = self.env.reset() + logging.info("reset environment") + self.obss = [None]*(shape[0]) + + self.memory = torch.zeros(shape[1], self.acmodel.memory_size, device=self.device) + self.memories = torch.zeros(*shape, self.acmodel.memory_size, device=self.device) + + self.mask = torch.ones(shape[1], device=self.device) + self.masks = torch.zeros(*shape, device=self.device) + if "cont" in self.acmodel.arch: + self.actions = torch.zeros(self.num_frames_per_proc, self.num_procs, + 2, device=self.device, dtype=torch.float) + else: + self.actions = torch.zeros(*shape, device=self.device, dtype=torch.int) + self.pi_l_actions = torch.zeros(*shape, device=self.device, dtype=torch.int) + self.values = torch.zeros(*shape, device=self.device) + self.rewards = torch.zeros(*shape, device=self.device) + self.rewards_bonus = torch.zeros(*shape, device=self.device) + self.advantages = torch.zeros(*shape, device=self.device) + self.log_probs = torch.zeros(*shape, device=self.device) + + if self.aux_info: + self.aux_info_collector = ExtraInfoCollector(self.aux_info, shape, self.device) + + # Initialize log values + + self.log_episode_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return_bonus = torch.zeros(self.num_procs, device=self.device) + self.log_episode_num_frames = torch.zeros(self.num_procs, device=self.device) + + self.log_done_counter = 0 + self.log_return = [0] * self.num_procs + self.log_reshaped_return = [0] * self.num_procs + self.log_reshaped_return_bonus = [0] * self.num_procs + self.log_num_frames = [0] * self.num_procs + + def collect_experiences(self, debug=False): + """Collects rollouts and computes advantages. + + Runs several environments concurrently. The next actions are computed + in a batch mode for all environments at the same time. The rollouts + and advantages from all environments are concatenated together. + + Returns + ------- + exps : DictList + Contains actions, rewards, advantages etc as attributes. + Each attribute, e.g. `exps.reward` has a shape + (self.num_frames_per_proc * num_envs, ...). k-th block + of consecutive `self.num_frames_per_proc` frames contains + data obtained from the k-th environment. Be careful not to mix + data from different environments! + logs : dict + Useful stats about the training process, including the average + reward, policy loss, value loss, etc. + + """ + + for i in tqdm(range(self.num_frames_per_proc), ascii=" "*9 + ">", ncols=100): + # Do one agent-environment interaction + preprocessed_obs = self.preprocess_obss(self.obs, device=self.device) + with torch.no_grad(): + model_results = self.acmodel(preprocessed_obs, self.memory * self.mask.unsqueeze(1)) + dist = model_results['dist'] + value = model_results['value'] + memory = model_results['memory'] + extra_predictions = model_results['extra_predictions'] + + if self.sampling_temperature != 1: + dist = Categorical(logits=dist.logits/self.sampling_temperature) + action = dist.sample() + + if debug: + a = numpy.array([int(input())]) + obs, reward, done, env_info = self.env.step(a) + else: + + a = action.cpu().numpy() + real_a = numpy.copy(a) + real_a[real_a > 6] = 6 + obs, reward, done, env_info = self.env.step(real_a) + + if isinstance(env_info, tuple) and len(env_info) == 2: + info, pi_l_actions = env_info + # if pi_l_actions is not None: + # if self.pi_l_actions.shape[1] != pi_l_actions.shape[0]: + # self.pi_l_actions = torch.zeros((self.num_frames_per_proc, pi_l_actions.shape[0]), device=self.device, dtype=torch.int) + # self.pi_l_actions[i] = pi_l_actions + else: + info = env_info + if self.aux_info: + env_info = self.aux_info_collector.process(env_info) + # env_info = self.process_aux_info(env_info) + + if debug: + babyai.utils.viz(self.env) + print(babyai.utils.info(reward, heading="Reward")) + print(babyai.utils.info(info, "Subtasks")) + + # Update experiences values + + self.obss[i] = self.obs + self.obs = obs + + self.memories[i] = self.memory + self.memory = memory + + self.masks[i] = self.mask + self.mask = 1 - torch.tensor(done, device=self.device, dtype=torch.float) + self.actions[i] = action + self.values[i] = value + if self.reshape_reward is not None: + rewards_shaped = torch.tensor([ + self.reshape_reward(obs_, action_, reward_, done_, info_) + for obs_, action_, reward_, done_, info_ in zip(obs, action, reward, done, info) + ], device=self.device) + self.rewards[i] = rewards_shaped[:,0] + self.rewards_bonus[i] = rewards_shaped[:,1] + else: + self.rewards[i] = torch.tensor(reward, device=self.device) + log_prob = dist.log_prob(action) + if len(log_prob.shape) > 1: + log_prob = log_prob.sum(dim=-1) + self.log_probs[i] = log_prob + + if self.aux_info: + self.aux_info_collector.fill_dictionaries(i, env_info, extra_predictions) + + # Update log values + + self.log_episode_return += torch.tensor(reward, device=self.device, dtype=torch.float) + self.log_episode_reshaped_return += self.rewards[i] + self.log_episode_reshaped_return_bonus += self.rewards_bonus[i] + self.log_episode_num_frames += torch.ones(self.num_procs, device=self.device) + + for i, done_ in enumerate(done): + if done_: + self.log_done_counter += 1 + self.log_return.append(self.log_episode_return[i].item()) + self.log_reshaped_return.append(self.log_episode_reshaped_return[i].item()) + self.log_reshaped_return_bonus.append(self.log_episode_reshaped_return_bonus[i].item()) + self.log_num_frames.append(self.log_episode_num_frames[i].item()) + + self.log_episode_return *= self.mask + self.log_episode_reshaped_return *= self.mask + self.log_episode_reshaped_return_bonus *= self.mask + self.log_episode_num_frames *= self.mask + + # Add advantage and return to experiences + + preprocessed_obs = self.preprocess_obss(self.obs, device=self.device) + with torch.no_grad(): + next_value = self.acmodel(preprocessed_obs, self.memory * self.mask.unsqueeze(1))['value'] + + for i in reversed(range(self.num_frames_per_proc)): + next_mask = self.masks[i+1] if i < self.num_frames_per_proc - 1 else self.mask + next_value = self.values[i+1] if i < self.num_frames_per_proc - 1 else next_value + next_advantage = self.advantages[i+1] if i < self.num_frames_per_proc - 1 else 0 + + delta = self.rewards[i] + self.discount * next_value * next_mask - self.values[i] + self.advantages[i] = delta + self.discount * self.gae_lambda * next_advantage * next_mask + + # Flatten the data correctly, making sure that + # each episode's data is a continuous chunk + + exps = DictList() + exps.obs = [self.obss[i][j] + for j in range(self.num_procs) + for i in range(self.num_frames_per_proc)] + # In commments below T is self.num_frames_per_proc, P is self.num_procs, + # D is the dimensionality + + # T x P x D -> P x T x D -> (P * T) x D + exps.memory = self.memories.transpose(0, 1).reshape(-1, *self.memories.shape[2:]) + # T x P -> P x T -> (P * T) x 1 + exps.mask = self.masks.transpose(0, 1).reshape(-1).unsqueeze(1) + + # for all tensors below, T x P -> P x T -> P * T + if "cont" in self.acmodel.arch: + exps.action = self.actions.transpose(0, 1).reshape(-1, 2) + else: + exps.action = self.actions.transpose(0, 1).reshape(-1) + exps.pi_l_action = self.pi_l_actions.transpose(0, 1).reshape(-1) + exps.value = self.values.transpose(0, 1).reshape(-1) + exps.reward = self.rewards.transpose(0, 1).reshape(-1) + exps.advantage = self.advantages.transpose(0, 1).reshape(-1) + exps.returnn = exps.value + exps.advantage + exps.log_prob = self.log_probs.transpose(0, 1).reshape(-1) + + if self.aux_info: + exps = self.aux_info_collector.end_collection(exps) + + # Preprocess experiences + + exps.obs = self.preprocess_obss(exps.obs, device=self.device) + + # Log some values + + keep = max(self.log_done_counter, self.num_procs) + + log = { + "return_per_episode": self.log_return[-keep:], + "reshaped_return_per_episode": self.log_reshaped_return[-keep:], + "reshaped_return_bonus_per_episode": self.log_reshaped_return_bonus[-keep:], + "num_frames_per_episode": self.log_num_frames[-keep:], + "num_frames": self.num_frames, + "episodes_done": self.log_done_counter, + } + + self.log_done_counter = 0 + self.log_return = self.log_return[-self.num_procs:] + self.log_reshaped_return = self.log_reshaped_return[-self.num_procs:] + self.log_reshaped_return_bonus = self.log_reshaped_return_bonus[-self.num_procs:] + self.log_num_frames = self.log_num_frames[-self.num_procs:] + + return exps, log + + @abstractmethod + def update_parameters(self): + pass \ No newline at end of file diff --git a/babyai/babyai/rl/algos/base_llm.py b/babyai/babyai/rl/algos/base_llm.py new file mode 100644 index 0000000..fc7e62f --- /dev/null +++ b/babyai/babyai/rl/algos/base_llm.py @@ -0,0 +1,347 @@ +from abc import ABC, abstractmethod +import torch +import numpy as np +from tqdm import tqdm +from collections import deque +import torch.nn.functional as F + +from babyai.rl.format import default_preprocess_obss +from babyai.rl.utils import DictList, ParallelEnv +from babyai.rl.utils.supervised_losses import ExtraInfoCollector +import babyai.utils +from torch.distributions import Categorical +import logging + +logger = logging.getLogger(__name__) +import matplotlib.pyplot as plt + + +class BaseAlgo(ABC): + """The base class for RL algorithms.""" + + def __init__(self, envs, lm_server, llm_scoring_module_key, num_frames_per_proc, discount, lr, gae_lambda, + entropy_coef, value_loss_coef, max_grad_norm, reshape_reward, subgoals, nbr_obs, aux_info): + """ + Initializes a `BaseAlgo` instance. + Parameters: + ---------- + envs : list + a list of environments that will be run in parallel + lm_server : Lamorel Caller + llm_scoring_module_key : str + the key of the module function to ask scroing from + num_frames_per_proc : int + the number of frames collected by every process for an update + discount : float + the discount for future rewards + lr : float + the learning rate for optimizers + gae_lambda : float + the lambda coefficient in the GAE formula + ([Schulman et al., 2015](https://arxiv.org/abs/1506.02438)) + entropy_coef : float + the weight of the entropy cost in the final objective + value_loss_coef : float + the weight of the value loss in the final objective + max_grad_norm : float + gradient will be clipped to be at most this value + reshape_reward : function + a function that shapes the reward, takes an + (observation, action, reward, done) tuple as an input + aux_info : list + a list of strings corresponding to the name of the extra information + retrieved from the environment for supervised auxiliary losses + """ + # Store parameters + + self.env = envs + self.lm_server = lm_server + self.llm_scoring_module_key = llm_scoring_module_key + # Useful filter to avoid computing score of each candidate when using additional heads directly + if llm_scoring_module_key == "__score": + self.filter_candidates_fn = lambda candidates: candidates + elif llm_scoring_module_key == "policy_head": + self.filter_candidates_fn = lambda candidates: None + else: + raise NotImplementedError() + # self.acmodel.train() + self.num_frames_per_proc = num_frames_per_proc + self.discount = discount + self.lr = lr + self.gae_lambda = gae_lambda + self.entropy_coef = entropy_coef + self.value_loss_coef = value_loss_coef + self.max_grad_norm = max_grad_norm + self.reshape_reward = reshape_reward + self.aux_info = aux_info + + # Store helpers values + + self.device = torch.device("cpu") + self.num_procs = len(envs) + self.num_frames = self.num_frames_per_proc * self.num_procs + + # Initialize experience values + self.nbr_obs = nbr_obs + self.obs_queue = [deque([], maxlen=self.nbr_obs) for _ in range(self.num_procs)] + self.acts_queue = [deque([], maxlen=self.nbr_obs-1) for _ in range(self.num_procs)] + self.subgoals = subgoals + + shape = (self.num_frames_per_proc, self.num_procs) + + logging.info("resetting environment") + self.obs, self.infos = self.env.reset() + logging.info("reset environment") + for i in range(self.num_procs): + self.obs_queue[i].append(self.infos[i]['descriptions']) + self.obss = [None] * (shape[0]) + + self.prompts = [None] * (shape[0]) + + self.mask = torch.ones(shape[1], device=self.device) + self.masks = torch.zeros(*shape, device=self.device) + + self.actions = torch.zeros(*shape, device=self.device, dtype=torch.int) + + self.values = torch.zeros(*shape, device=self.device) + self.rewards = torch.zeros(*shape, device=self.device) + self.rewards_bonus = torch.zeros(*shape, device=self.device) + self.advantages = torch.zeros(*shape, device=self.device) + self.log_probs = torch.zeros(*shape, device=self.device) + + if self.aux_info: + self.aux_info_collector = ExtraInfoCollector(self.aux_info, shape, self.device) + + # Initialize log values + + self.log_episode_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return_bonus = torch.zeros(self.num_procs, device=self.device) + self.log_episode_num_frames = torch.zeros(self.num_procs, device=self.device) + + self.log_done_counter = 0 + self.log_return = [0] * self.num_procs + self.log_reshaped_return = [0] * self.num_procs + self.log_reshaped_return_bonus = [0] * self.num_procs + self.log_num_frames = [0] * self.num_procs + + @classmethod + def generate_prompt(cls, goal, subgoals, deque_obs, deque_actions): + + ldo = len(deque_obs) + lda = len(deque_actions) + + head_prompt = "Possible action of the agent:" + for sg in subgoals: + head_prompt += " {},".format(sg) + head_prompt = head_prompt[:-1] + + g = " \n Goal of the agent: {}".format(goal) + obs = "" + for i in range(ldo): + obs += " \n Observation {}: ".format(i) + for d_obs in deque_obs[i]: + obs += "{}, ".format(d_obs) + obs += "\n Action {}: ".format(i) + if i < lda: + obs += "{}".format(deque_actions[i]) + return head_prompt + g + obs + + + def collect_experiences(self, debug=False): + """Collects rollouts and computes advantages. + Runs several environments concurrently. The next actions are computed + in a batch mode for all environments at the same time. The rollouts + and advantages from all environments are concatenated together. + Returns + ------- + exps : DictList + Contains actions, rewards, advantages etc as attributes. + Each attribute, e.g. `exps.reward` has a shape + (self.num_frames_per_proc * num_envs, ...). k-th block + of consecutive `self.num_frames_per_proc` frames contains + data obtained from the k-th environment. Be careful not to mix + data from different environments! + logs : dict + Useful stats about the training process, including the average + reward, policy loss, value loss, etc. + """ + + for i in tqdm(range(self.num_frames_per_proc), ascii=" " * 9 + ">", ncols=100): + # Do one agent-environment interaction + + prompt = [self.generate_prompt(goal=self.obs[j]['mission'], subgoals=self.subgoals[j], + deque_obs=self.obs_queue[j], deque_actions=self.acts_queue[j]) + for j in range(self.num_procs)] + + output = self.lm_server.custom_module_fns(module_function_keys=[self.llm_scoring_module_key, 'value'], + contexts=prompt, + candidates=self.filter_candidates_fn(self.subgoals)) + # output = self.lm_server.score(contexts=prompt, candidates=self.subgoals, + # additional_module_function_keys=['value']) + scores = torch.stack([_o[self.llm_scoring_module_key] for _o in output]).squeeze() + scores_max = torch.max(scores, dim=1)[0] + """print("scores: {}".format(scores.shape)) + print("scores_max: {}".format(scores_max.shape))""" + values = torch.stack([_o["value"][0] for _o in output]) + + proba_dist = [] + for j in range(len(scores)): + if self.llm_scoring_module_key == "__score": + # rescaled scores to avoid the flattening effect of softmax + # softmax([1e-9, 1e-100, 1e-9])~[0.33, 0.33, 0.33] + # softmax([1e-9, 1e-100, 1e-9]*1e9)~[0.4223, 0.1554, 0.4223] + if scores_max[j] < 1e-45 or torch.isnan(scores_max[j]): + proba_dist.append(F.softmax(torch.ones_like(scores[j]), dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j]/scores_max[j], dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j], dim=-1).unsqueeze(dim=0)) + + proba_dist = torch.cat(proba_dist, dim=0) + dist = Categorical(probs=proba_dist) + action = dist.sample() + a = action.cpu().numpy() + + for j in range(self.num_procs): + self.acts_queue[j].append(self.subgoals[j][int(a[j])]) + + if len(self.subgoals[0]) > 6: + # only useful when we test the impact of the number of actions + real_a = np.copy(a) + real_a[real_a > 6] = 6 + obs, reward, done, self.infos = self.env.step(real_a) + else: + obs, reward, done, self.infos = self.env.step(a) + + for j in range(self.num_procs): + if done[j]: + # reinitialise memory of past observations and actions + self.obs_queue[j].clear() + self.acts_queue[j].clear() + self.obs_queue[j].append(self.infos[j]['descriptions']) + + info = self.infos + + if self.aux_info: + env_info = self.aux_info_collector.process(env_info) + # env_info = self.process_aux_info(env_info) + + if debug: + babyai.utils.viz(self.env) + print(babyai.utils.info(reward, heading="Reward")) + print(babyai.utils.info(info, "Subtasks")) + + # Update experiences values + + self.obss[i] = self.obs + self.obs = obs + + self.prompts[i] = prompt + + self.masks[i] = self.mask + self.mask = 1 - torch.tensor(done, device=self.device, dtype=torch.float) + + self.actions[i] = action + self.values[i] = values.squeeze() + + if self.reshape_reward is not None: + rewards_shaped = torch.tensor([ + self.reshape_reward(subgoal_proba=None, reward=reward_, policy_value=None, llm_0=None) + for reward_ in reward + ], device=self.device) + self.rewards[i] = rewards_shaped[:, 0] + self.rewards_bonus[i] = rewards_shaped[:, 1] + else: + self.rewards[i] = torch.tensor(reward, device=self.device) + + log_prob = dist.log_prob(action) + + if len(log_prob.shape) > 1: + log_prob = log_prob.sum(dim=-1) + self.log_probs[i] = log_prob + + # Update log values + + self.log_episode_return += torch.tensor(reward, device=self.device, dtype=torch.float) + self.log_episode_reshaped_return += self.rewards[i] + self.log_episode_reshaped_return_bonus += self.rewards_bonus[i] + self.log_episode_num_frames += torch.ones(self.num_procs, device=self.device) + + for i, done_ in enumerate(done): + if done_: + self.log_done_counter += 1 + self.log_return.append(self.log_episode_return[i].item()) + self.log_reshaped_return.append(self.log_episode_reshaped_return[i].item()) + self.log_reshaped_return_bonus.append(self.log_episode_reshaped_return_bonus[i].item()) + self.log_num_frames.append(self.log_episode_num_frames[i].item()) + + self.log_episode_return *= self.mask + self.log_episode_reshaped_return *= self.mask + self.log_episode_reshaped_return_bonus *= self.mask + self.log_episode_num_frames *= self.mask + + # Add advantage and return to experiences + prompt = [self.generate_prompt(goal=self.obs[i]['mission'], subgoals=self.subgoals[i], + deque_obs=self.obs_queue[i], deque_actions=self.acts_queue[i]) + for i in range(self.num_procs)] + output = self.lm_server.custom_module_fns(module_function_keys=['value'], contexts=prompt) + next_value = torch.stack([_o["value"] for _o in output]).squeeze() + + for i in reversed(range(self.num_frames_per_proc)): + next_mask = self.masks[i + 1] if i < self.num_frames_per_proc - 1 else self.mask + next_value = self.values[i + 1] if i < self.num_frames_per_proc - 1 else next_value + next_advantage = self.advantages[i + 1] if i < self.num_frames_per_proc - 1 else 0 + + delta = self.rewards[i] + self.discount * next_value * next_mask - self.values[i] + self.advantages[i] = delta + self.discount * self.gae_lambda * next_advantage * next_mask + + # Flatten the data correctly, making sure that + # each episode's data is a continuous chunk + + exps = DictList() + exps.prompt = np.array([self.prompts[i][j] + for j in range(self.num_procs) + for i in range(self.num_frames_per_proc)]) + exps.subgoal = np.array([self.subgoals[j] + for j in range(self.num_procs) + for i in range(self.num_frames_per_proc)]) + # In commments below T is self.num_frames_per_proc, P is self.num_procs, + # D is the dimensionality + + # for all tensors below, T x P -> P x T -> P * T + exps.action = self.actions.transpose(0, 1).reshape(-1) + + exps.value = self.values.transpose(0, 1).reshape(-1) + exps.reward = self.rewards.transpose(0, 1).reshape(-1) + exps.advantage = self.advantages.transpose(0, 1).reshape(-1) + exps.returnn = exps.value + exps.advantage + exps.log_prob = self.log_probs.transpose(0, 1).reshape(-1) + + if self.aux_info: + exps = self.aux_info_collector.end_collection(exps) + + # Log some values + + keep = max(self.log_done_counter, self.num_procs) + + log = { + "return_per_episode": self.log_return[-keep:], + "reshaped_return_per_episode": self.log_reshaped_return[-keep:], + "reshaped_return_bonus_per_episode": self.log_reshaped_return_bonus[-keep:], + "num_frames_per_episode": self.log_num_frames[-keep:], + "num_frames": self.num_frames, + "episodes_done": self.log_done_counter, + } + + self.log_done_counter = 0 + self.log_return = self.log_return[-self.num_procs:] + self.log_reshaped_return = self.log_reshaped_return[-self.num_procs:] + self.log_reshaped_return_bonus = self.log_reshaped_return_bonus[-self.num_procs:] + self.log_num_frames = self.log_num_frames[-self.num_procs:] + + return exps, log + + @abstractmethod + def update_parameters(self): + pass diff --git a/babyai/babyai/rl/algos/ppo.py b/babyai/babyai/rl/algos/ppo.py new file mode 100644 index 0000000..790fd05 --- /dev/null +++ b/babyai/babyai/rl/algos/ppo.py @@ -0,0 +1,183 @@ +import numpy +import torch +import torch.nn.functional as F +import logging +logger = logging.getLogger(__name__) +from tqdm import tqdm + +from babyai.rl.algos.base import BaseAlgo + + +class PPOAlgo(BaseAlgo): + """The class for the Proximal Policy Optimization algorithm + ([Schulman et al., 2015](https://arxiv.org/abs/1707.06347)).""" + + def __init__(self, envs, acmodel, num_frames_per_proc=None, discount=0.99, lr=7e-4, beta1=0.9, beta2=0.999, + gae_lambda=0.95, + entropy_coef=0.01, value_loss_coef=0.5, max_grad_norm=0.5, recurrence=4, + adam_eps=1e-5, clip_eps=0.2, epochs=4, batch_size=256, preprocess_obss=None, + reshape_reward=None, aux_info=None, use_penv=False, sampling_temperature=1, debug=False): + num_frames_per_proc = num_frames_per_proc or 128 + + super().__init__(envs, acmodel, num_frames_per_proc, discount, lr, gae_lambda, entropy_coef, + value_loss_coef, max_grad_norm, recurrence, preprocess_obss, reshape_reward, + aux_info, use_penv, sampling_temperature=sampling_temperature) + + self.clip_eps = clip_eps + self.epochs = epochs + self.batch_size = batch_size + self.debug = debug + + assert self.batch_size % self.recurrence == 0 + + self.optimizer = torch.optim.Adam(self.acmodel.parameters(), lr, (beta1, beta2), eps=adam_eps) + self.batch_num = 0 + + def update_parameters(self): + # Collect experiences + + exps, logs = self.collect_experiences(debug=self.debug) + # print(exps.action) + # action_counts = exps.action.unique(return_counts=True) + # pi_l_action_counts = exps.pi_l_action.unique(return_counts=True) + ''' + exps is a DictList with the following keys ['obs', 'memory', 'mask', 'action', 'value', 'reward', + 'advantage', 'returnn', 'log_prob'] and ['collected_info', 'extra_predictions'] if we use aux_info + exps.obs is a DictList with the following keys ['image', 'instr'] + exps.obj.image is a (n_procs * n_frames_per_proc) x image_size 4D tensor + exps.obs.instr is a (n_procs * n_frames_per_proc) x (max number of words in an instruction) 2D tensor + exps.memory is a (n_procs * n_frames_per_proc) x (memory_size = 2*image_embedding_size) 2D tensor + exps.mask is (n_procs * n_frames_per_proc) x 1 2D tensor + if we use aux_info: exps.collected_info and exps.extra_predictions are DictLists with keys + being the added information. They are either (n_procs * n_frames_per_proc) 1D tensors or + (n_procs * n_frames_per_proc) x k 2D tensors where k is the number of classes for multiclass classification + ''' + + for _ in tqdm(range(self.epochs), ascii=" "*9 + "<", ncols=100): + # Initialize log values + + log_entropies = [] + log_values = [] + log_policy_losses = [] + log_value_losses = [] + log_grad_norms = [] + + log_losses = [] + + ''' + For each epoch, we create int(total_frames / batch_size + 1) batches, each of size batch_size (except + maybe the last one. Each batch is divided into sub-batches of size recurrence (frames are contiguous in + a sub-batch), but the position of each sub-batch in a batch and the position of each batch in the whole + list of frames is random thanks to self._get_batches_starting_indexes(). + ''' + + for inds in self._get_batches_starting_indexes(): + # inds is a numpy array of indices that correspond to the beginning of a sub-batch + # there are as many inds as there are batches + # Initialize batch values + + batch_entropy = 0 + batch_value = 0 + batch_policy_loss = 0 + batch_value_loss = 0 + batch_loss = 0 + + # Initialize memory + + memory = exps.memory[inds] + + for i in range(self.recurrence): + # Create a sub-batch of experience + sb = exps[inds + i] + + # Compute loss + + model_results = self.acmodel(sb.obs, memory * sb.mask) + dist = model_results['dist'] + value = model_results['value'] + memory = model_results['memory'] + extra_predictions = model_results['extra_predictions'] + + entropy = dist.entropy().mean() + log_prob = dist.log_prob(sb.action) + if len(log_prob.shape) > 1: + log_prob = log_prob.sum(dim=-1) + ratio = torch.exp(log_prob - sb.log_prob) + surr1 = ratio * sb.advantage + surr2 = torch.clamp(ratio, 1.0 - self.clip_eps, 1.0 + self.clip_eps) * sb.advantage + policy_loss = -torch.min(surr1, surr2).mean() + + value_clipped = sb.value + torch.clamp(value - sb.value, -self.clip_eps, self.clip_eps) + surr1 = (value - sb.returnn).pow(2) + surr2 = (value_clipped - sb.returnn).pow(2) + value_loss = torch.max(surr1, surr2).mean() + + loss = policy_loss - self.entropy_coef * entropy + self.value_loss_coef * value_loss + + # Update batch values + + batch_entropy += entropy.item() + batch_value += value.mean().item() + batch_policy_loss += policy_loss.item() + batch_value_loss += value_loss.item() + batch_loss += loss + + # Update memories for next epoch + + if i < self.recurrence - 1: + exps.memory[inds + i + 1] = memory.detach() + + # Update batch values + + batch_entropy /= self.recurrence + batch_value /= self.recurrence + batch_policy_loss /= self.recurrence + batch_value_loss /= self.recurrence + batch_loss /= self.recurrence + + # Update actor-critic + + self.optimizer.zero_grad() + batch_loss.backward() + grad_norm = sum(p.grad.data.norm(2) ** 2 for p in self.acmodel.parameters() if p.grad is not None) ** 0.5 + torch.nn.utils.clip_grad_norm_(self.acmodel.parameters(), self.max_grad_norm) + self.optimizer.step() + + # Update log values + + log_entropies.append(batch_entropy) + log_values.append(batch_value) + log_policy_losses.append(batch_policy_loss) + log_value_losses.append(batch_value_loss) + log_grad_norms.append(grad_norm.item()) + log_losses.append(batch_loss.item()) + + # Log some values + + logs["entropy"] = numpy.mean(log_entropies) + logs["value"] = numpy.mean(log_values) + logs["policy_loss"] = numpy.mean(log_policy_losses) + logs["value_loss"] = numpy.mean(log_value_losses) + logs["grad_norm"] = numpy.mean(log_grad_norms) + logs["loss"] = numpy.mean(log_losses) + # logs["actions"] = action_counts[0].cpu().numpy(), (action_counts[1].float()/action_counts[1].sum()).cpu().numpy() + # logs["pi_l_actions"] = pi_l_action_counts[0].cpu().numpy(), (pi_l_action_counts[1].float()/pi_l_action_counts[1].sum()).cpu().numpy() + + return logs + + def _get_batches_starting_indexes(self): + """Gives, for each batch, the indexes of the observations given to + the model and the experiences used to compute the loss at first. + Returns + ------- + batches_starting_indexes : list of list of int + the indexes of the experiences to be used at first for each batch + """ + + indexes = numpy.arange(0, self.num_frames, self.recurrence) + indexes = numpy.random.permutation(indexes) + + num_indexes = self.batch_size // self.recurrence + batches_starting_indexes = [indexes[i:i + num_indexes] for i in range(0, len(indexes), num_indexes)] + + return batches_starting_indexes diff --git a/babyai/babyai/rl/algos/ppo_llm.py b/babyai/babyai/rl/algos/ppo_llm.py new file mode 100644 index 0000000..78980f1 --- /dev/null +++ b/babyai/babyai/rl/algos/ppo_llm.py @@ -0,0 +1,139 @@ +import os +import csv +import numpy as np +import torch +import torch.nn.functional as F +import logging + +logger = logging.getLogger(__name__) +from tqdm import tqdm + +from babyai.rl.algos.base_llm import BaseAlgo + + +class PPOAlgoLlm(BaseAlgo): + """The class for the Proximal Policy Optimization algorithm + ([Schulman et al., 2015](https://arxiv.org/abs/1707.06347)).""" + + def __init__(self, envs, lm_server, llm_scoring_module_key, nbr_llms=None, + num_frames_per_proc=None, discount=0.99, lr=7e-4, beta1=0.9, beta2=0.999, + gae_lambda=0.95, + entropy_coef=0.01, value_loss_coef=0.5, max_grad_norm=0.5, + adam_eps=1e-5, clip_eps=0.2, epochs=4, batch_size=64, + reshape_reward=None, name_experiment=None, saving_path_model=None, saving_path_logs=None, + number_envs=None, subgoals=None, nbr_obs=3, id_expe=None, template_test=1, aux_info=None, debug=False): + num_frames_per_proc = num_frames_per_proc or 128 + + super().__init__(envs, lm_server, llm_scoring_module_key, num_frames_per_proc, discount, lr, gae_lambda, + entropy_coef, value_loss_coef, max_grad_norm, reshape_reward, subgoals, nbr_obs, aux_info) + + self.nbr_llms = nbr_llms + + self.clip_eps = clip_eps + self.epochs = epochs + self.batch_size = batch_size + self.debug = debug + + self.beta1 = beta1 + self.beta2 = beta2 + self.adam_eps = adam_eps + + self.name_experiment = name_experiment + self.saving_path_model = saving_path_model + self.saving_path_logs = saving_path_logs + self.number_envs = number_envs + + self.id_expe = id_expe + self.template_test = template_test + self.number_updates = 0 + + self.experiment_path = os.path.join(self.saving_path_logs, id_expe) + + def update_parameters(self): + # Collect experiences + exps, logs = self.collect_experiences(debug=self.debug) + # print(exps.action) + # action_counts = exps.action.unique(return_counts=True) + # pi_l_action_counts = exps.pi_l_action.unique(return_counts=True) + ''' + exps is a DictList with the following keys ['prompt', 'action', 'value', 'reward', + 'advantage', 'returnn', 'log_prob'] and ['collected_info', 'extra_predictions'] if we use aux_info + exps.prompt is a (n_procs * n_frames_per_proc) of prompt + if we use aux_info: exps.collected_info and exps.extra_predictions are DictLists with keys + being the added information. They are either (n_procs * n_frames_per_proc) 1D tensors or + (n_procs * n_frames_per_proc) x k 2D tensors where k is the number of classes for multiclass classification + ''' + lm_server_update_first_call = True + for _ in tqdm(range(self.epochs), ascii=" " * 9 + "<", ncols=100): + # Initialize log values + + log_entropies = [] + log_policy_losses = [] + log_value_losses = [] + log_grad_norms = [] + + log_losses = [] + + # Create minibatch of size self.batch_size*self.nbr_llms + # each llm receive a batch of size batch_size + for inds in self._get_batches_starting_indexes(): + # inds is a numpy array of indices that correspond to the beginning of a sub-batch + # there are as many inds as there are batches + + exps_batch = exps[inds] + + # return the list of dict_return calculate by each llm + list_dict_return = self.lm_server.update(exps_batch.prompt, + self.filter_candidates_fn(exps_batch.subgoal), + exps=dict(exps_batch), + lr=self.lr, + beta1=self.beta1, + beta2=self.beta2, + adam_eps=self.adam_eps, + clip_eps=self.clip_eps, + entropy_coef=self.entropy_coef, + value_loss_coef=self.value_loss_coef, + max_grad_norm=self.max_grad_norm, + nbr_llms=self.nbr_llms, + id_expe=self.id_expe, + lm_server_update_first_call=lm_server_update_first_call, + saving_path_model=self.saving_path_model, + experiment_path=self.experiment_path, + number_updates=self.number_updates, + scoring_module_key=self.llm_scoring_module_key, + template_test=self.template_test) + + lm_server_update_first_call = False + + log_losses.append(np.mean([d["loss"] for d in list_dict_return])) + log_entropies.append(np.mean([d["entropy"] for d in list_dict_return])) + log_policy_losses.append(np.mean([d["policy_loss"] for d in list_dict_return])) + log_value_losses.append(np.mean([d["value_loss"] for d in list_dict_return])) + log_grad_norms.append(np.mean([d["grad_norm"] for d in list_dict_return])) + + # Log some values + + logs["entropy"] = np.mean(log_entropies) + logs["policy_loss"] = np.mean(log_policy_losses) + logs["value_loss"] = np.mean(log_value_losses) + logs["grad_norm"] = np.mean(log_grad_norms) + logs["loss"] = np.mean(log_losses) + + return logs + + def _get_batches_starting_indexes(self): + """Gives, for each batch, the indexes of the observations given to + the model and the experiences used to compute the loss at first. + Returns + ------- + batches_starting_indexes : list of lists of int + the indexes of the experiences to be used at first for each batch + """ + + indexes = np.arange(0, self.num_frames) + indexes = np.random.permutation(indexes) + + num_indexes = self.batch_size + batches_starting_indexes = [indexes[i:i + num_indexes] for i in range(0, len(indexes), num_indexes)] + + return batches_starting_indexes diff --git a/babyai/babyai/rl/format.py b/babyai/babyai/rl/format.py new file mode 100644 index 0000000..b42ebe5 --- /dev/null +++ b/babyai/babyai/rl/format.py @@ -0,0 +1,4 @@ +import torch + +def default_preprocess_obss(obss, device=None): + return torch.tensor(obss, device=device) \ No newline at end of file diff --git a/babyai/babyai/rl/model.py b/babyai/babyai/rl/model.py new file mode 100644 index 0000000..a81f01b --- /dev/null +++ b/babyai/babyai/rl/model.py @@ -0,0 +1,61 @@ +from abc import abstractmethod, abstractproperty +import torch.nn as nn +import torch.nn.functional as F + +class ACModel: + recurrent = False + + @abstractmethod + def __init__(self, obs_space, action_space): + pass + + @abstractmethod + def forward(self, obs): + pass + +class RecurrentACModel(ACModel): + recurrent = True + + @abstractmethod + def forward(self, obs, memory): + pass + + @property + @abstractmethod + def memory_size(self): + pass + +class ETModel(nn.Module): + def __init__(self, args, embs_ann, vocab_out, pad, seg): + ''' + Abstract model + ''' + nn.Module.__init__(self) + self.args = args + self.vocab_out = vocab_out + self.pad, self.seg = pad, seg + self.visual_tensor_shape = data_util.read_dataset_info( + args.data['train'][0])['feat_shape'][1:] + + # create language and action embeddings + self.embs_ann = nn.ModuleDict({}) + for emb_name, emb_size in embs_ann.items(): + self.embs_ann[emb_name] = nn.Embedding(emb_size, args.demb) + + # dropouts + self.dropout_vis = nn.Dropout(args.dropout['vis'], inplace=True) + self.dropout_lang = nn.Dropout2d(args.dropout['lang']) + + def init_weights(self, init_range=0.1): + ''' + init linear layers in embeddings + ''' + for emb_ann in self.embs_ann.values(): + emb_ann.weight.data.uniform_(-init_range, init_range) + + + def forward(self, vocab, **inputs): + ''' + forward the model for multiple time-steps (used for training) + ''' + raise NotImplementedError() \ No newline at end of file diff --git a/babyai/babyai/rl/utils/__init__.py b/babyai/babyai/rl/utils/__init__.py new file mode 100644 index 0000000..d6c017c --- /dev/null +++ b/babyai/babyai/rl/utils/__init__.py @@ -0,0 +1,2 @@ +from babyai.rl.utils.dictlist import DictList +from babyai.rl.utils.penv import ParallelEnv \ No newline at end of file diff --git a/babyai/babyai/rl/utils/dictlist.py b/babyai/babyai/rl/utils/dictlist.py new file mode 100644 index 0000000..804f209 --- /dev/null +++ b/babyai/babyai/rl/utils/dictlist.py @@ -0,0 +1,44 @@ +import random + + +class DictList(dict): + """A dictionnary of lists of same size. Dictionnary items can be + accessed using `.` notation and list items using `[]` notation. + + Example: + >>> d = DictList({"a": [[1, 2], [3, 4]], "b": [[5], [6]]}) + >>> d.a + [[1, 2], [3, 4]] + >>> d[0] + DictList({"a": [1, 2], "b": [5]}) + """ + + __getattr__ = dict.__getitem__ + __setattr__ = dict.__setitem__ + + def __len__(self): + return len(next(iter(dict.values(self)))) + + def __getitem__(self, index): + return DictList({key: value[index] for key, value in dict.items(self)}) + + def __setitem__(self, index, d): + for key, value in d.items(): + dict.__getitem__(self, key)[index] = value + + def shuffle_lists_same_order(self): + """ + return the dictionnary with each list of the dictionnary shuffled such that: + list_1[i]=list_2[i]=list_1[i_shuffle]=list_2[i_shuffle] + + Example: + >>> d = DictList({"a":[1, 2, 3], "b":[4, 5, 6]}) + >>> d.shuffle_lists_same_order() + DictList({"a":[3, 1, 2], "b":[6, 4, 5]}) + """ + keys = list(dict.keys(self)) + len_keys = len(keys) + map_list = list(zip(*[v for v in dict.values(self)])) + random.shuffle(map_list) + l = list(zip(*map_list)) + return DictList({keys[i]: list(l[i]) for i in range(len_keys)}) diff --git a/babyai/babyai/rl/utils/penv.py b/babyai/babyai/rl/utils/penv.py new file mode 100644 index 0000000..9d78423 --- /dev/null +++ b/babyai/babyai/rl/utils/penv.py @@ -0,0 +1,97 @@ +from torch.multiprocessing import Process, Pipe +import gym +from tqdm import tqdm +import logging +import torch +from tqdm import tqdm +logger = logging.getLogger(__name__) +import concurrent.futures + +# For multiprocessing +def worker(conn, env): + while True: + cmd, data = conn.recv() + if cmd == "step": + obs, reward, done, info = env.step(data) + if done: + obs = env.reset() + conn.send((obs, reward, done, info)) + elif cmd == "reset": + obs = env.reset() + conn.send(obs) + else: + raise NotImplementedError + +# For multithreading +def thread(env, cmd, *args): + if cmd == "step": + obs, reward, done, info = env.step(args[0]) + if done: + obs = env.reset() + return obs, reward, done, info + elif cmd == "reset": + obs = env.reset() + return obs + else: + raise NotImplementedError + +class ParallelEnv(gym.Env): + """A concurrent execution of environments in multiple processes.""" + + def __init__(self, envs, use_procs=False): + assert len(envs) >= 1, "No environment given." + + self.envs = envs + self.observation_space = self.envs[0].observation_space + self.action_space = self.envs[0].action_space + self.use_procs = use_procs + + if self.use_procs: + self.locals = [] + self.processes = [] + for env in tqdm(self.envs[1:]): + local, remote = Pipe() + self.locals.append(local) + p = Process(target=worker, args=(remote, env)) + p.daemon = True + p.start() + remote.close() + self.processes.append(p) + + def reset(self): + if self.use_procs: + for local in self.locals: + local.send(("reset", None)) + proc_results = [] + for local in self.locals: + proc_results.append(local.recv()) + results = [self.envs[0].reset()] + proc_results + # results = [self.envs[0].reset()] + [local.recv() for local in self.locals] + else: + with concurrent.futures.ThreadPoolExecutor() as executor: + futures = [executor.submit(thread, self.envs[i], "reset") for i in range(len(self.envs))] + results = [f.result() for f in futures] + return results + + def step(self, actions): + if self.use_procs: + for local, action in zip(self.locals, actions[1:]): + local.send(("step", action)) + obs, reward, done, info = self.envs[0].step(actions[0]) + if done: + obs = self.envs[0].reset() + results = zip(*[(obs, reward, done, info)] + [local.recv() for local in self.locals]) + else: + with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: + futures = [executor.submit(thread, self.envs[i], "step", actions[i]) for i in range(len(self.envs))] + results = [f.result() for f in futures] + results = zip(*results) + return results + + def render(self): + raise NotImplementedError + + def __del__(self): + if self.use_procs: + for p in self.processes: + p.terminate() \ No newline at end of file diff --git a/babyai/babyai/rl/utils/supervised_losses.py b/babyai/babyai/rl/utils/supervised_losses.py new file mode 100644 index 0000000..16e3fa0 --- /dev/null +++ b/babyai/babyai/rl/utils/supervised_losses.py @@ -0,0 +1,177 @@ +import torch + +import torch.nn.functional as F +import numpy +from babyai.rl.utils import DictList + +# dictionary that defines what head is required for each extra info used for auxiliary supervision +required_heads = {'seen_state': 'binary', + 'see_door': 'binary', + 'see_obj': 'binary', + 'obj_in_instr': 'binary', + 'in_front_of_what': 'multiclass9', # multi class classifier with 9 possible classes + 'visit_proportion': 'continuous01', # continous regressor with outputs in [0, 1] + 'bot_action': 'binary' + } + +class ExtraInfoCollector: + ''' + This class, used in rl.algos.base, allows connecting the extra information from the environment, and the + corresponding predictions using the specific heads in the model. It transforms them so that they are easy to use + to evaluate losses + ''' + def __init__(self, aux_info, shape, device): + self.aux_info = aux_info + self.shape = shape + self.device = device + + self.collected_info = dict() + self.extra_predictions = dict() + for info in self.aux_info: + self.collected_info[info] = torch.zeros(*shape, device=self.device) + if required_heads[info] == 'binary' or required_heads[info].startswith('continuous'): + # we predict one number only + self.extra_predictions[info] = torch.zeros(*shape, 1, device=self.device) + elif required_heads[info].startswith('multiclass'): + # means that this is a multi-class classification and we need to predict the whole proba distr + n_classes = int(required_heads[info].replace('multiclass', '')) + self.extra_predictions[info] = torch.zeros(*shape, n_classes, device=self.device) + else: + raise ValueError("{} not supported".format(required_heads[info])) + + def process(self, env_info): + # env_info is now a tuple of dicts + env_info = [{k: v for k, v in dic.items() if k in self.aux_info} for dic in env_info] + env_info = {k: [env_info[_][k] for _ in range(len(env_info))] for k in env_info[0].keys()} + # env_info is now a dict of lists + return env_info + + def fill_dictionaries(self, index, env_info, extra_predictions): + for info in self.aux_info: + dtype = torch.long if required_heads[info].startswith('multiclass') else torch.float + self.collected_info[info][index] = torch.tensor(env_info[info], dtype=dtype, device=self.device) + self.extra_predictions[info][index] = extra_predictions[info] + + def end_collection(self, exps): + collected_info = dict() + extra_predictions = dict() + for info in self.aux_info: + # T x P -> P x T -> P * T + collected_info[info] = self.collected_info[info].transpose(0, 1).reshape(-1) + if required_heads[info] == 'binary' or required_heads[info].startswith('continuous'): + # T x P x 1 -> P x T x 1 -> P * T + extra_predictions[info] = self.extra_predictions[info].transpose(0, 1).reshape(-1) + elif type(required_heads[info]) == int: + # T x P x k -> P x T x k -> (P * T) x k + k = required_heads[info] # number of classes + extra_predictions[info] = self.extra_predictions[info].transpose(0, 1).reshape(-1, k) + # convert the dicts to DictLists, and add them to the exps DictList. + exps.collected_info = DictList(collected_info) + exps.extra_predictions = DictList(extra_predictions) + + return exps + + +class SupervisedLossUpdater: + ''' + This class, used by PPO, allows the evaluation of the supervised loss when using extra information from the + environment. It also handles logging accuracies/L2 distances/etc... + ''' + def __init__(self, aux_info, supervised_loss_coef, recurrence, device): + self.aux_info = aux_info + self.supervised_loss_coef = supervised_loss_coef + self.recurrence = recurrence + self.device = device + + self.log_supervised_losses = [] + self.log_supervised_accuracies = [] + self.log_supervised_L2_losses = [] + self.log_supervised_prevalences = [] + + self.batch_supervised_loss = 0 + self.batch_supervised_accuracy = 0 + self.batch_supervised_L2_loss = 0 + self.batch_supervised_prevalence = 0 + + def init_epoch(self): + self.log_supervised_losses = [] + self.log_supervised_accuracies = [] + self.log_supervised_L2_losses = [] + self.log_supervised_prevalences = [] + + def init_batch(self): + self.batch_supervised_loss = 0 + self.batch_supervised_accuracy = 0 + self.batch_supervised_L2_loss = 0 + self.batch_supervised_prevalence = 0 + + def eval_subbatch(self, extra_predictions, sb): + supervised_loss = torch.tensor(0., device=self.device) + supervised_accuracy = torch.tensor(0., device=self.device) + supervised_L2_loss = torch.tensor(0., device=self.device) + supervised_prevalence = torch.tensor(0., device=self.device) + + binary_classification_tasks = 0 + classification_tasks = 0 + regression_tasks = 0 + + for pos, info in enumerate(self.aux_info): + coef = self.supervised_loss_coef[pos] + pred = extra_predictions[info] + target = dict.__getitem__(sb.collected_info, info) + if required_heads[info] == 'binary': + binary_classification_tasks += 1 + classification_tasks += 1 + supervised_loss += coef * F.binary_cross_entropy_with_logits(pred.reshape(-1), target) + supervised_accuracy += ((pred.reshape(-1) > 0).float() == target).float().mean() + supervised_prevalence += target.mean() + elif required_heads[info].startswith('continuous'): + regression_tasks += 1 + mse = F.mse_loss(pred.reshape(-1), target) + supervised_loss += coef * mse + supervised_L2_loss += mse + elif required_heads[info].startswith('multiclass'): + classification_tasks += 1 + supervised_accuracy += (pred.argmax(1).float() == target).float().mean() + supervised_loss += coef * F.cross_entropy(pred, target.long()) + else: + raise ValueError("{} not supported".format(required_heads[info])) + if binary_classification_tasks > 0: + supervised_prevalence /= binary_classification_tasks + else: + supervised_prevalence = torch.tensor(-1) + if classification_tasks > 0: + supervised_accuracy /= classification_tasks + else: + supervised_accuracy = torch.tensor(-1) + if regression_tasks > 0: + supervised_L2_loss /= regression_tasks + else: + supervised_L2_loss = torch.tensor(-1) + + self.batch_supervised_loss += supervised_loss.item() + self.batch_supervised_accuracy += supervised_accuracy.item() + self.batch_supervised_L2_loss += supervised_L2_loss.item() + self.batch_supervised_prevalence += supervised_prevalence.item() + + return supervised_loss + + def update_batch_values(self): + self.batch_supervised_loss /= self.recurrence + self.batch_supervised_accuracy /= self.recurrence + self.batch_supervised_L2_loss /= self.recurrence + self.batch_supervised_prevalence /= self.recurrence + + def update_epoch_logs(self): + self.log_supervised_losses.append(self.batch_supervised_loss) + self.log_supervised_accuracies.append(self.batch_supervised_accuracy) + self.log_supervised_L2_losses.append(self.batch_supervised_L2_loss) + self.log_supervised_prevalences.append(self.batch_supervised_prevalence) + + def end_training(self, logs): + logs["supervised_loss"] = numpy.mean(self.log_supervised_losses) + logs["supervised_accuracy"] = numpy.mean(self.log_supervised_accuracies) + logs["supervised_L2_loss"] = numpy.mean(self.log_supervised_L2_losses) + logs["supervised_prevalence"] = numpy.mean(self.log_supervised_prevalences) + + return logs diff --git a/babyai/babyai/shaped_env.py b/babyai/babyai/shaped_env.py new file mode 100644 index 0000000..d5beb82 --- /dev/null +++ b/babyai/babyai/shaped_env.py @@ -0,0 +1,459 @@ +import gym +import torch +import numpy as np +from copy import deepcopy +from torch.multiprocessing import Process, Pipe +import torch.nn.functional as F +import logging +import babyai.utils + +logger = logging.getLogger(__name__) +logger.setLevel(logging.WARNING) + + +def multi_worker(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(a) + if done: + obs, info = env.reset() + ret.append((obs, reward, done, {})) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + obs, info = env.reset() + ret.append((obs, {})) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode, highlight = data + ret = envs[0].render(mode, highlight) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +def multi_worker_cont(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(action=a) + if done: + obs = env.reset() + ret.append((obs, reward, done, {})) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + obs, info = env.reset() + ret.append((obs, {})) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode = data + ret = envs[0].render(mode) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +class ParallelShapedEnv(gym.Env): + """Parallel environment that holds a list of environments and can + evaluate a low-level policy for use in reward shaping. + """ + + def __init__(self, + envs, # List of environments + pi_l=None, # Low-level policy or termination classifier + done_action=None, # Output of pi_l indicating done + instr_handler=None, # InstructionHandler for low-level demos + reward_shaping=None, # Reward shaping type + subtask_cls=None, # Subtask relevance classifier + subtask_cls_preproc=None, # Instruction preprocessor + subtask_online_ds=None, # Dataset for subtask classifier + subtask_discount=1, # Discount for done subtask count + learn_baseline_cls=None, # LEARN baseline classifier + learn_baseline_preproc=None, # LEARN baseline classifier + ): + assert len(envs) >= 1, "No environment provided" + self.envs = envs + self.num_envs = len(self.envs) + self.device = torch.device("cuda") if torch.cuda.is_available() \ + else torch.device("cpu") + self.spec = deepcopy(self.envs[0].spec) + self.spec.id = f"ParallelShapedEnv<{self.spec.id}>" + self.env_name = self.envs[0].unwrapped.spec.id + self.action_space = self.envs[0].action_space + self.pi_l = pi_l + self.done_action = done_action + self.instr_handler = instr_handler + if self.instr_handler: + self.num_subtasks = self.instr_handler.D_l_size() + self.reward_shaping = reward_shaping + self.subtask_cls = subtask_cls + self.subtask_cls_preproc = subtask_cls_preproc + self.subtask_online_ds = subtask_online_ds + self.subtask_discount = float(subtask_discount) + self.learn_baseline_cls = learn_baseline_cls + self.learn_baseline_preproc = learn_baseline_preproc + + if "BabyAI" in self.env_name: + self.envs_per_proc = 64 + elif "BabyPANDA" in self.env_name: + self.envs_per_proc = 1 + else: + self.envs_per_proc = 64 + + if self.reward_shaping in ["subtask_oracle_ordered"]: + # Setup stacks to hold oracle subtasks + self.stacks = [[] for _ in range(self.num_envs)] + + if self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + # Setup arrays to keep track of which subtasks are completed + # during episode, and past bonuses + self.pi_l_already_done_relevant = np.array( + [[False for j in range(self.num_subtasks)] + for i in range(self.num_envs)] + ) + self.pi_l_already_done_all = np.array( + [[False for j in range(self.num_subtasks)] + for i in range(self.num_envs)] + ) + self.past_pi_l_done_discounted = np.array( + [0. for i in range(self.num_envs)] + ) + # Setup list to keep track of instructions to store for dataset + self.tasks_instr = ["" for _ in range(self.num_envs)] + # Setup array to record of which environments have succeeded + # at the high-level task + self.tasks_succeeded = np.array([False for _ in range(self.num_envs)]) + + if self.reward_shaping in ["learn_baseline"]: + # Setup array to record unnormalized action frequencies + assert "Discrete" in str(type(self.envs[0].action_space)) + self.num_actions = self.envs[0].action_space.n + self.action_freqs = np.array( + [[0 for j in range(self.num_actions)] + for i in range(self.num_envs)] + ) + + # Setup arrays to hold current observation and timestep + # for each environment + self.obss = [] + self.ts = np.array([0 for _ in range(self.num_envs)]) + + # Spin up subprocesses + self.locals = [] + self.processes = [] + self.start_processes() + + def __len__(self): + return self.num_envs + + def __str__(self): + self.locals[0].send(("__str__", None)) + return f">" + + def __del__(self): + for p in self.processes: + p.terminate() + + def gen_obs(self): + return self.obss + + def render(self, mode="rgb_array", highlight=False): + """Render a single environment""" + if "BabyPANDA" in self.spec.id: + self.locals[0].send(("render_one", mode)) + else: + self.locals[0].send(("render_one", (mode, highlight))) + return self.locals[0].recv() + + def start_processes(self): + """Spin up the num_envs/envs_per_proc number of processes""" + logger.info(f"spinning up {self.num_envs} processes") + for i in range(0, self.num_envs, self.envs_per_proc): + local, remote = Pipe() + self.locals.append(local) + if "BabyPANDA" in self.spec.id: + p = Process(target=multi_worker_cont, + args=(remote, self.envs[i:i + self.envs_per_proc])) + else: + p = Process(target=multi_worker, + args=(remote, self.envs[i:i + self.envs_per_proc])) + p.daemon = True + p.start() + remote.close() + self.processes.append(p) + logger.info("done spinning up processes") + + def request_reset_envs(self): + """Request all processes to reset their envs""" + logger.info("requesting resets") + for local in self.locals: + local.send(("reset", None)) + self.obss = [] + logger.info("requested resets") + for local in self.locals: + res = local.recv() + + infos = [] + for j in range(len(res)): + infos.append(res[j][1]) + if res[j][0] is not None: + self.obss += [res[j][0]] + # self.obss += local.recv() + logger.info("completed resets") + return infos + + def reset(self): + """Reset all environments""" + self.request_reset_envs() + return [obs for obs in self.obss] + + def request_step(self, actions, stop_mask): + """Request processes to step corresponding to (primitive) actions + unless stop mask indicates otherwise""" + for i in range(0, self.num_envs, self.envs_per_proc): + self.locals[i // self.envs_per_proc].send( + ("step", [actions[i:i + self.envs_per_proc], + stop_mask[i:i + self.envs_per_proc]]) + ) + results = [] + for i in range(0, self.num_envs, self.envs_per_proc): + res = self.locals[i // self.envs_per_proc].recv() + for j in range(len(res)): + results.append(res[j]) + if results[-1][0] != None: + self.obss[i + j] = results[-1][0] + return zip(*results) + + def reset_pi_l(self): + """Clear pi_l's memory (in case it is a recurrent policy)""" + self.pi_l.analyze_feedback(None, 1) + self.pi_l.on_reset() + + def reset_pi_l_partial(self, reset_mask): + """Clear pi_l's memory for certain environments based on reset mask""" + self.pi_l.analyze_feedback(None, + torch.tensor(reset_mask).to(self.device).int().unsqueeze(1)) + + def pop_masked(self, stacks, mask, allow_zero=False): + if allow_zero: + stacks = [stacks[i][1:] if mask[i] + else stacks[i] for i in range(len(stacks))] + else: + stacks = [stacks[i][1:] if len(stacks[i]) > 1 and mask[i] + else stacks[i] for i in range(len(stacks))] + return stacks + + def step(self, actions): + """Complete a step and evaluate low-level policy / termination + classifier as needed depending on reward shaping scheme. + + Returns: obs: list of environment observations, + reward: np.array of extrinsic rewards, + done: np.array of booleans, + info: depends on self.reward_shaping. Output can be used + to shape the reward. + """ + # Make sure input is numpy array + if type(actions) != np.ndarray: + if type(actions) == list or type(actions) == int: + actions = np.array(actions) + elif type(actions) == torch.Tensor: + actions = actions.cpu().numpy() + else: + raise TypeError + actions_to_take = actions.copy() + + # Oracle + if self.reward_shaping in ["subtask_oracle_ordered"]: + self.pi_l_obss = deepcopy(self.obss) + self.out_of_instr = np.array([False for _ in range(self.num_envs)]) + for i in range(self.num_envs): + # For every newly reset environment, get a new stack + if self.ts[i] == 0: + old_mission = self.pi_l_obss[i]['mission'] + self.stacks[i] = self.instr_handler.get_oracle_stack( + old_mission, unlock="Unlock" in self.env_name) + # For every environment, set change the mission of the + # observation to pi_l to what's at the top of the stack + if len(self.stacks[i]) > 0: + self.pi_l_obss[i]['mission'] = self.stacks[i][0] + else: + self.out_of_instr[i] = True + # Run pi_l on these observations and determine which + # predict termination (ignoring those where the stack's empty) + pi_l_eval = self.pi_l.act_batch(self.pi_l_obss, + stop_mask=self.out_of_instr) + pi_l_actions = pi_l_eval['action'].cpu().numpy() + pi_l_done = (pi_l_actions == self.done_action) * \ + (1 - self.out_of_instr) + + # LEARN Baseline + elif self.reward_shaping in ["learn_baseline"]: + for i in range(self.num_envs): + if self.ts[i] == 0: + self.action_freqs[i] *= 0 + task_text = [self.obss[i]["mission"] for i in range(self.num_envs)] + + # Subtask classifier, static or learned online + elif self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped", + ]: + self.pi_l_obss = [deepcopy(self.obss[i]) + for i in range(self.num_envs) + for _ in range(self.num_subtasks)] + for i in range(self.num_envs): + # For every newly reset environment, add to the dataset + # if task was successful (and classifier is learned online), + # and reset arrays + if self.ts[i] == 0: + old_mission = self.tasks_instr[i] + if self.reward_shaping in ["subtask_classifier_online", + "subtask_classifier_online_unclipped"]: + if self.tasks_succeeded[i] and \ + self.pi_l_already_done_all[i].sum() > 0: + self.subtask_online_ds.add_demos([ + (old_mission, + [(-1, np.where(self.pi_l_already_done_all[i])[0])] + ) + ]) + self.pi_l_already_done_relevant[i] *= False + self.pi_l_already_done_all[i] *= False + self.past_pi_l_done_discounted[i] *= 0 + self.tasks_succeeded[i] = False + self.tasks_instr[i] = self.obss[i]["mission"] + # For every (environment, subtask) pair, set the mission + # of pi_l's observation to the subtask instruction + for j in range(self.num_subtasks): + self.pi_l_obss[i * self.num_subtasks + j]["mission"] = \ + self.instr_handler.get_instruction(j) + pi_l_eval = self.pi_l.act_batch(self.pi_l_obss, stop_mask=None) + pi_l_actions = pi_l_eval["action"].cpu().numpy() + pi_l_done = pi_l_actions == self.done_action + pi_l_done = pi_l_done.reshape((self.num_envs, self.num_subtasks)) + # Just keep the instructions that weren't already done and relevant + pi_l_done *= np.invert(self.pi_l_already_done_relevant) + if pi_l_done.sum() > 0: + # Preprocess the instructions for the tasks and completed + # subtasks + task_idx, subtask_idx = np.where(pi_l_done) + task_text = [self.obss[i]["mission"] for i in task_idx] + subtask_text = self.instr_handler.missions[subtask_idx] + task_preproc = self.subtask_cls_preproc(task_text) + subtask_preproc = self.subtask_cls_preproc(subtask_text) + if self.reward_shaping in ["subtask_classifier_online", + "subtask_classifier_online_unclipped"]: + task_preproc = task_preproc.to(self.device) + subtask_preproc = subtask_preproc.to(self.device) + # Run them through the subtask classifier + predicted_subtasks = self.subtask_cls(task_preproc, subtask_preproc) \ + .round().detach().cpu().numpy().astype(bool) + # Record them + self.pi_l_already_done_all |= pi_l_done + # Overwrite pi_l_done with only the done and relevant subtasks + # and record them + pi_l_done &= False + for j in range(len(task_idx)): + if predicted_subtasks[j]: + pi_l_done[task_idx[j], subtask_idx[j]] = True + self.pi_l_already_done_relevant[task_idx[j], + subtask_idx[j]] = True + + # Make a step in the environment + stop_mask = np.array([False for _ in range(self.num_envs)]) + obs, reward, done, info = self.request_step(actions_to_take, stop_mask) + reward = np.array(reward) + done_mask = np.array(done) + + # Add reward shaping information to info + if self.reward_shaping in ["subtask_oracle_ordered"]: + self.stacks = self.pop_masked(self.stacks, pi_l_done, allow_zero=True) + to_reset = done | pi_l_done + self.reset_pi_l_partial(to_reset) + info = (pi_l_done.astype(int), + torch.tensor(pi_l_actions).to(self.device)) + + elif self.reward_shaping in ["learn_baseline"]: + prev_action_freqs = torch.as_tensor( + np.nan_to_num(np.divide(self.action_freqs, self.ts[:, None]), + posinf=0)).float().to(self.device) + for i in range(self.num_envs): + self.action_freqs[i][actions_to_take[i]] += 1 + cur_action_freqs = torch.as_tensor( + np.divide(self.action_freqs, self.ts[:, None] + 1)).float().to(self.device) + task_preproc = self.learn_baseline_preproc(task_text).to(self.device) + prev_pred = F.softmax(self.learn_baseline_cls(task_preproc, \ + prev_action_freqs)[1], dim=-1) + cur_pred = F.softmax(self.learn_baseline_cls(task_preproc, \ + cur_action_freqs)[1], dim=-1) + prev_potential = prev_pred[:, 1] - prev_pred[:, 0] + cur_potential = cur_pred[:, 1] - cur_pred[:, 0] + info = (np.stack((prev_potential.detach().cpu().numpy(), \ + cur_potential.detach().cpu().numpy()), axis=-1), None) + + elif self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online"]: + # Reset all pi_l models for an environment if any subtasks + # predict termination + to_reset = (done | pi_l_done.sum(1) > 0).repeat(self.num_subtasks) + self.reset_pi_l_partial(to_reset) + + pi_l_done_count_clipped = pi_l_done.sum(1).clip(0, 1) + self.past_pi_l_done_discounted += pi_l_done_count_clipped + info = (np.stack((pi_l_done_count_clipped, self.past_pi_l_done_discounted), axis=-1), + torch.tensor(pi_l_actions).to(self.device)) + self.tasks_succeeded = reward > 0 + self.past_pi_l_done_discounted *= 1. / self.subtask_discount + + elif self.reward_shaping in ["subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + # Reset all pi_l models for an environment if any subtasks + # predict termination + to_reset = (done | pi_l_done.sum(1) > 0).repeat(self.num_subtasks) + self.reset_pi_l_partial(to_reset) + + pi_l_done_count = pi_l_done.sum(1) + self.past_pi_l_done_discounted += pi_l_done_count + info = (np.stack((pi_l_done_count, self.past_pi_l_done_discounted), axis=-1), + torch.tensor(pi_l_actions).to(self.device)) + self.tasks_succeeded = reward > 0 + self.past_pi_l_done_discounted *= 1. / self.subtask_discount + + self.ts += 1 + self.ts[done_mask] *= 0 + + return [obs for obs in self.obss], reward, done_mask, info diff --git a/babyai/babyai/shaped_env_paral.py b/babyai/babyai/shaped_env_paral.py new file mode 100644 index 0000000..69e989b --- /dev/null +++ b/babyai/babyai/shaped_env_paral.py @@ -0,0 +1,997 @@ +import os +try: + import idr_torch +except (KeyError, ModuleNotFoundError) as e: + pass +import gym +import torch + +import torch.distributed as dist +import numpy as np +from copy import deepcopy +from torch.multiprocessing import Process, Pipe +import torch.nn.functional as F +from torch.nn.utils.rnn import pad_sequence +import logging +import babyai.utils as utils +import time + +import spacy + +nlp = spacy.load('en_core_web_sm') +stop_words = {'a', 'the', 'next', 'to', 'up', 'put', 'pick', 'after', 'then', 'and', 'open', 'you', ',', '-pron-', 'go'} +pad = 0 +dict_biased_proba = {'key': {'yellow': 0.5, 'purple': 0.1, 'blue': 0.1, 'red': 0.1, 'grey': 0.1, 'green': 0.1}, + 'box': {'yellow': 0.1, 'purple': 0.5, 'blue': 0.1, 'red': 0.1, 'grey': 0.1, 'green': 0.1}, + 'ball': {'yellow': 0.1, 'purple': 0.1, 'blue': 0.5, 'red': 0.1, 'grey': 0.1, 'green': 0.1}} + +from babyai.QA_simple import Model +from babyai.l_class import Model as Model_l +from attrdict import AttrDict + +dist.init_process_group(backend='nccl', + init_method='env://', + world_size=idr_torch.size, + rank=idr_torch.rank) +torch.cuda.set_device(idr_torch.local_rank) +gpu = torch.device("cuda") + +logger = logging.getLogger(__name__) +logger.setLevel(logging.WARNING) + + +def load_model(no_answer, debiased, train_env, biased_train_env, model_QA, epoch_QA, model_qa_l=None, epoch_qa_l=None): + # Load voc + demo_voc = utils.get_demos_QG_voc_path('{}_agent_done'.format(train_env), train_env, None, + valid=False) + if no_answer == True: + demo_voc = demo_voc.replace("QG_vocab.pkl", "QG_no_answer_vocab.pkl") + if debiased == True or biased_train_env == True: + demo_voc = demo_voc.replace("vocab.pkl", "biased_vocab.pkl") + print(demo_voc) + vocab = utils.load_voc(demo_voc) + # values for the model + print(vocab['answer']) + emb_size = len(vocab['question']) + numb_action = 8 + + attr = AttrDict() + # TRANSFORMER settings + # size of transformer embeddings + attr['demb'] = 768 + # number of heads in multi-head attention + attr['encoder_heads'] = 12 + # number of layers in transformer encoder + attr['encoder_layers'] = 2 + # how many previous actions to use as input + attr['num_input_actions'] = 1 + # which encoder to use for language encoder (by default no encoder) + attr['encoder_lang'] = { + 'shared': True, + 'layers': 2, + 'pos_enc': True, + 'instr_enc': False, + } + # which decoder to use for the speaker model + attr['decoder_lang'] = { + 'layers': 2, + 'heads': 12, + 'demb': 768, + 'dropout': 0.1, + 'pos_enc': True, + } + + attr['detach_lang_emb'] = False + + # DROPOUT + attr['dropout'] = { + # dropout rate for language (goal + instr) + 'lang': 0.0, + # dropout rate for Resnet feats + 'vis': 0.3, + # dropout rate for processed lang and visual embeddings + 'emb': 0.0, + # transformer model specific dropouts + 'transformer': { + # dropout for transformer encoder + 'encoder': 0.1, + # remove previous actions + 'action': 0.0, + }, + } + + # ENCODINGS + attr['enc'] = { + # use positional encoding + 'pos': True, + # use learned positional encoding + 'pos_learn': False, + # use learned token ([WORD] or [IMG]) encoding + 'token': False, + # dataset id learned encoding + 'dataset': False, + } + if no_answer: + attr['vocab_path'] = demo_voc + et_qa = Model(attr, emb_size, numb_action, pad=0) + if debiased == True or biased_train_env == True: + et_qa.load_state_dict(torch.load('storage/models/{}_no_answer_biased/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + if debiased == True: + qa_l = Model_l(attr, emb_size, 0, pad=0) + qa_l.load_state_dict(torch.load('storage/models/{}_no_answer_l_class/model_{}/et_qa_{}.pt'.format(train_env, + model_qa_l, + epoch_qa_l))) + qa_l.cuda() + qa_l.eval() + else: + et_qa.load_state_dict(torch.load('storage/models/{}_no_answer/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + else: + attr['vocab_path'] = demo_voc + et_qa = Model(attr, emb_size, numb_action, pad=0) + if debiased == True or biased_train_env == True: + et_qa.load_state_dict(torch.load('storage/models/{}_biased/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + if debiased == True: + qa_l = Model_l(attr, emb_size, 0, pad=0) + qa_l.load_state_dict(torch.load('storage/models/{}_l_class/model_{}/et_qa_{}.pt'.format(train_env, + model_qa_l, + epoch_qa_l))) + qa_l.cuda() + qa_l.eval() + else: + print('storage/models/{}/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA)) + et_qa.load_state_dict(torch.load('storage/models/{}/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + print('===vocab_path===') + print(attr['vocab_path']) + et_qa.cuda() + et_qa.eval() + + if debiased: + return et_qa, vocab, qa_l + else: + return et_qa, vocab + + +def preprocess_token(token): + # Reduce token to its lowercase lemma form + return token.lemma_.strip().lower() + + +def QG(mission, questionable_words): + len_mission = len(mission) + qg_data = {'questions': [], 'answers': []} + for idx_w in range(len_mission): + # if mission[idx_w] not in stop_words: + if mission[idx_w] in questionable_words: + qg_data['questions'].append(mission[:idx_w] + ['<>'] + mission[idx_w + 1:]) + qg_data['answers'].append(mission[idx_w]) + + return qg_data + + +def numericalize(vocab, words, train=False): + ''' + converts words to unique integers + ''' + + if not train: + new_words = set(words) - set(vocab.counts.keys()) + if new_words: + # replace unknown words with <> + words = [w if w not in new_words else '<>' for w in words] + return vocab.word2index(words, train=train) + + +def generate_batch(demo, nbr_slice): + batch_demo = {} + total_length = 0 + for k in demo: + if k != 'length_frames_max' and k != 'env_ids' and k != 'missions': + if k == 'questions': + batch_demo[k] = [] + for i in range(len(demo[k])): + len_q = len(demo[k][i]) + total_length += len_q + for j in range(len_q): + batch_demo[k].append(torch.tensor(demo[k][i][j], dtype=torch.long)) + elif k == 'answers': + batch_demo[k] = [] + for i in range(len(demo[k])): + len_q = len(demo[k][i]) + for j in range(len_q): + batch_demo[k].append(demo[k][i][j][0]) + + else: + batch_demo[k] = [] + for i in range(len(demo[k])): + len_q = len(demo['questions'][i]) + for j in range(len_q): + if k == 'actions': + batch_demo[k].append(torch.tensor(demo[k][i], dtype=torch.long)) + elif k == 'frames': + frames_tensor = torch.from_numpy(demo[k][i]) + batch_demo[k].append(frames_tensor) + else: + batch_demo[k].append(torch.unsqueeze(torch.unsqueeze(demo[k][i], 0), 0)) + + if k == 'length_frames': + batch_demo[k] = torch.cat(batch_demo[k], 0) + batch_demo['length_frames_max'] = max(batch_demo[k]) + elif k == 'answers': + batch_demo[k] = torch.tensor(batch_demo[k]) + + elif k != 'length_frames_max': + batch_demo[k] = demo[k] + + # pad and tensorize questions + batch_demo['questions'] = pad_sequence(batch_demo['questions'], + batch_first=True, + padding_value=0) + + # pad and tensorize actions + batch_demo['actions'] = pad_sequence(batch_demo['actions'], + batch_first=True, + padding_value=0) + + batch_demo['frames'] = pad_sequence(batch_demo['frames'], + batch_first=True, + padding_value=0) + + assert batch_demo['questions'].shape[0] == batch_demo['answers'].shape[0] + assert batch_demo['questions'].shape[0] == batch_demo['actions'].shape[0] + assert batch_demo['questions'].shape[0] == batch_demo['frames'].shape[0] + + slices = [] + slice_length = int(np.ceil(total_length / nbr_slice)) + counter = 0 + size_tensor = [] + for s in range(nbr_slice): + if total_length - counter >= slice_length: + demo_batch = {'questions': batch_demo['questions'][counter: counter + slice_length], + 'frames': batch_demo['frames'][counter: counter + slice_length], + 'length_frames': batch_demo['length_frames'][counter: counter + slice_length], + 'length_frames_max': batch_demo['length_frames_max'], + 'actions': batch_demo['actions'][counter: counter + slice_length]} + size_tensor.append(slice_length) + slices.append(demo_batch) + counter += slice_length + else: + if counter == total_length: + demo_batch = {'questions': None, + 'frames': None, + 'length_frames': None, + 'length_frames_max': batch_demo['length_frames_max'], + 'actions': None} + size_tensor.append(0) + slices.append(demo_batch) + else: + demo_batch = {'questions': batch_demo['questions'][counter: total_length], + 'frames': batch_demo['frames'][counter: total_length], + 'length_frames': batch_demo['length_frames'][counter: total_length], + 'length_frames_max': batch_demo['length_frames_max'], + 'actions': batch_demo['actions'][counter: total_length]} + size_tensor.append(total_length - counter) + slices.append(demo_batch) + counter = total_length + + for s in slices: + s['size_tensor'] = size_tensor + + return slices, batch_demo['answers'] + + +def multi_worker(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data, biased_env = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(a) + if done: + obs = env.reset() + if biased_env: + m = nlp(obs["mission"]) + adj1 = str(m[2]) + obj1 = str(m[3]) + adj2 = str(m[7]) + obj2 = str(m[8]) + rand_value = np.random.rand() + while dict_biased_proba[obj1][adj1]*dict_biased_proba[obj2][adj2] < rand_value: + """print("mission: {}".format(obs["mission"])) + print('{} < {}'.format(dict_biased_proba[obj1][adj1]*dict_biased_proba[obj2][adj2], rand_value))""" + env.reset() + obs = env.reset() + m = nlp(obs["mission"]) + adj1 = str(m[2]) + obj1 = str(m[3]) + adj2 = str(m[7]) + obj2 = str(m[8]) + rand_value = np.random.rand() + ret.append((obs, reward, done, info)) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + ret.append(env.reset()) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode, highlight = data + ret = envs[0].render(mode, highlight) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +def multi_worker_cont(conn, envs): + """Target for a subprocess that handles a set of envs""" + while True: + cmd, data = conn.recv() + # step(actions, stop_mask) + if cmd == "step": + ret = [] + for env, a, stopped in zip(envs, data[0], data[1]): + if not stopped: + obs, reward, done, info = env.step(action=a) + if done: + obs = env.reset() + ret.append((obs, reward, done, info)) + else: + ret.append((None, 0, False, None)) + conn.send(ret) + # reset() + elif cmd == "reset": + ret = [] + for env in envs: + ret.append(env.reset()) + conn.send(ret) + # render_one() + elif cmd == "render_one": + mode = data + ret = envs[0].render(mode) + conn.send(ret) + # __str__() + elif cmd == "__str__": + ret = str(envs[0]) + conn.send(ret) + else: + raise NotImplementedError + + +class ParallelShapedEnv(gym.Env): + """Parallel environment that holds a list of environments and can + evaluate a low-level policy for use in reward shaping. + """ + + def __init__(self, + envs, # List of environments + pi_l=None, # Low-level policy or termination classifier + done_action=None, # Output of pi_l indicating done + instr_handler=None, # InstructionHandler for low-level demos + reward_shaping=None, # Reward shaping type + subtask_cls=None, # Subtask relevance classifier + subtask_cls_preproc=None, # Instruction preprocessor + subtask_online_ds=None, # Dataset for subtask classifier + subtask_discount=1, # Discount for done subtask count + learn_baseline_cls=None, # LEARN baseline classifier + learn_baseline_preproc=None, # LEARN baseline classifier + type_QG_QA_reward=None, # QGQA type of reward simple or adjusted + no_answer_question=True, # use a model with possibility to answer "no_answer" + train_env=None, # name of env used for training + model_QA=None, # scheme used for training QA + epoch_QA=None, # epoch of the trained model used + model_qa_l=None, # model for the linguistic only QA + epoch_qa_l=None, # epoch for the linguistic only QA + debiased=None, + # if the original dataset is biased, debiased by doing the difference with prediction learn only with the language + biased_env=None, # generate a biased env with higher probability to have some combination of words only for PNL env + biased_train_env=None, # to select a QA train on a biased env only for PNL + stateactionpredictor=None, # if you use a reward based on curiosity + obss_preprocessor=None): + assert len(envs) >= 1, "No environment provided" + self.envs = envs + self.num_envs = len(self.envs) + self.device = torch.device("cuda") if torch.cuda.is_available() \ + else torch.device("cpu") + self.spec = deepcopy(self.envs[0].unwrapped.spec) + self.spec_id = f"ParallelShapedEnv<{self.spec.id}>" + self.env_name = self.envs[0].unwrapped.spec.id + self.action_space = self.envs[0].action_space + self.pi_l = pi_l + self.done_action = done_action + self.instr_handler = instr_handler + if self.instr_handler: + self.num_subtasks = self.instr_handler.D_l_size() + self.reward_shaping = reward_shaping + self.subtask_cls = subtask_cls + self.subtask_cls_preproc = subtask_cls_preproc + self.subtask_online_ds = subtask_online_ds + self.subtask_discount = float(subtask_discount) + self.learn_baseline_cls = learn_baseline_cls + self.learn_baseline_preproc = learn_baseline_preproc + self.type_QG_QA_reward = type_QG_QA_reward + self.debiased = debiased + self.biased_train_env = biased_train_env + self.biased_env = biased_env + self.stateactionpredictor = stateactionpredictor + self.obss_preprocessor = obss_preprocessor + self.number_parallel_QA = idr_torch.size + + if "BabyAI" in self.env_name: + self.envs_per_proc = 64 + elif "BabyPANDA" in self.env_name: + self.envs_per_proc = 1 + else: + self.envs_per_proc = 64 + + if self.reward_shaping in ["subtask_oracle_ordered"]: + # Setup stacks to hold oracle subtasks + self.stacks = [[] for _ in range(self.num_envs)] + + if self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + # Setup arrays to keep track of which subtasks are completed + # during episode, and past bonuses + self.pi_l_already_done_relevant = np.array( + [[False for j in range(self.num_subtasks)] + for i in range(self.num_envs)] + ) + self.pi_l_already_done_all = np.array( + [[False for j in range(self.num_subtasks)] + for i in range(self.num_envs)] + ) + self.past_pi_l_done_discounted = np.array( + [0. for i in range(self.num_envs)] + ) + # Setup list to keep track of instructions to store for dataset + self.tasks_instr = ["" for _ in range(self.num_envs)] + # Setup array to record of which environments have succeeded + # at the high-level task + self.tasks_succeeded = np.array([False for _ in range(self.num_envs)]) + + if self.reward_shaping in ["learn_baseline"]: + # Setup array to record unnormalized action frequencies + assert "Discrete" in str(type(self.envs[0].action_space)) + self.num_actions = self.envs[0].action_space.n + self.action_freqs = np.array( + [[0 for j in range(self.num_actions)] + for i in range(self.num_envs)] + ) + + if self.reward_shaping in ["QG_QA"]: + + if self.debiased: + self.QA, self.vocabulary, self.QA_l = load_model(no_answer_question, + self.debiased, + train_env, + biased_train_env=biased_train_env, + model_QA=model_QA, + epoch_QA=epoch_QA, + model_qa_l=model_qa_l, + epoch_qa_l=epoch_qa_l) + else: + self.QA, self.vocabulary = load_model(no_answer_question, + self.debiased, + train_env, + biased_train_env=biased_train_env, + model_QA=model_QA, + epoch_QA=epoch_QA) + self.questionable_words = self.vocabulary['answer'].to_dict()['index2word'] + + self.questions = [[] for _ in range(self.num_envs)] + self.questions_len_begin = np.zeros(self.num_envs) + self.questions_answered_len_current = np.zeros(self.num_envs) + self.frames = [[] for _ in range(self.num_envs)] + self.actions = [[] for _ in range(self.num_envs)] + + self.answers = [[] for _ in range(self.num_envs)] + + self.rewards_bonus = np.zeros(self.num_envs) + + self.rewards_bonus_discounted = np.zeros(self.num_envs) + if reward_shaping in ["RIDE"]: + self.dicts_state = [dict() for _ in range(self.num_envs)] + # Setup arrays to hold current observation and timestep + # for each environment + self.obss = [] + self.ts = np.array([0 for _ in range(self.num_envs)]) + + # Spin up subprocesses + self.locals = [] + self.processes = [] + if idr_torch.rank == 0: + self.start_processes() + + def __len__(self): + return self.num_envs + + def __str__(self): + self.locals[0].send(("__str__", None, None)) + return f">" + + def __del__(self): + for p in self.processes: + p.terminate() + + def gen_obs(self): + return self.obss + + def render(self, mode="rgb_array", highlight=False): + """Render a single environment""" + if "BabyPANDA" in self.spec_id: + self.locals[0].send(("render_one", mode, None)) + else: + self.locals[0].send(("render_one", (mode, highlight), None)) + return self.locals[0].recv() + + def start_processes(self): + """Spin up the num_envs/envs_per_proc number of processes""" + logger.info(f"spinning up {self.num_envs} processes") + for i in range(0, self.num_envs, self.envs_per_proc): + local, remote = Pipe() + self.locals.append(local) + if "BabyPANDA" in self.spec_id: + p = Process(target=multi_worker_cont, + args=(remote, self.envs[i:i + self.envs_per_proc])) + else: + p = Process(target=multi_worker, + args=(remote, self.envs[i:i + self.envs_per_proc])) + p.daemon = True + p.start() + remote.close() + self.processes.append(p) + logger.info("done spinning up processes") + + def request_reset_envs(self): + """Request all processes to reset their envs""" + logger.info("requesting resets") + for local in self.locals: + local.send(("reset", None, None)) + self.obss = [] + logger.info("requested resets") + for local in self.locals: + self.obss += local.recv() + logger.info("completed resets") + + def reset(self): + """Reset all environments""" + self.request_reset_envs() + return [obs for obs in self.obss] + + def request_step(self, actions, stop_mask): + """Request processes to step corresponding to (primitive) actions + unless stop mask indicates otherwise""" + for i in range(0, self.num_envs, self.envs_per_proc): + self.locals[i // self.envs_per_proc].send( + ("step", [actions[i:i + self.envs_per_proc], + stop_mask[i:i + self.envs_per_proc]], self.biased_env) + ) + results = [] + for i in range(0, self.num_envs, self.envs_per_proc): + res = self.locals[i // self.envs_per_proc].recv() + for j in range(len(res)): + results.append(res[j]) + if results[-1][0] != None: + self.obss[i + j] = results[-1][0] + return zip(*results) + + def reset_pi_l(self): + """Clear pi_l's memory (in case it is a recurrent policy)""" + self.pi_l.analyze_feedback(None, 1) + self.pi_l.on_reset() + + def reset_pi_l_partial(self, reset_mask): + """Clear pi_l's memory for certain environments based on reset mask""" + self.pi_l.analyze_feedback(None, + torch.tensor(reset_mask).to(self.device).int().unsqueeze(1)) + + def pop_masked(self, stacks, mask, allow_zero=False): + if allow_zero: + stacks = [stacks[i][1:] if mask[i] + else stacks[i] for i in range(len(stacks))] + else: + stacks = [stacks[i][1:] if len(stacks[i]) > 1 and mask[i] + else stacks[i] for i in range(len(stacks))] + return stacks + + def step(self, actions): + """Complete a step and evaluate low-level policy / termination + classifier as needed depending on reward shaping scheme. + + Returns: obs: list of environment observations, + reward: np.array of extrinsic rewards, + done: np.array of booleans, + info: depends on self.reward_shaping. Output can be used + to shape the reward. + """ + # Make sure input is numpy array + if idr_torch.rank == 0: + if type(actions) != np.ndarray: + if type(actions) == list or type(actions) == int: + actions = np.array(actions) + elif type(actions) == torch.Tensor: + actions = actions.cpu().numpy() + else: + raise TypeError + actions_to_take = actions.copy() + + # Oracle + if self.reward_shaping in ["subtask_oracle_ordered"]: + self.pi_l_obss = deepcopy(self.obss) + self.out_of_instr = np.array([False for _ in range(self.num_envs)]) + for i in range(self.num_envs): + # For every newly reset environment, get a new stack + if self.ts[i] == 0: + old_mission = self.pi_l_obss[i]['mission'] + self.stacks[i] = self.instr_handler.get_oracle_stack( + old_mission, unlock="Unlock" in self.env_name) + # For every environment, set change the mission of the + # observation to pi_l to what's at the top of the stack + if len(self.stacks[i]) > 0: + self.pi_l_obss[i]['mission'] = self.stacks[i][0] + else: + self.out_of_instr[i] = True + # Run pi_l on these observations and determine which + # predict termination (ignoring those where the stack's empty) + pi_l_eval = self.pi_l.act_batch(self.pi_l_obss, + stop_mask=self.out_of_instr) + pi_l_actions = pi_l_eval['action'].cpu().numpy() + pi_l_done = (pi_l_actions == self.done_action) * \ + (1 - self.out_of_instr) + + # LEARN Baseline + elif self.reward_shaping in ["learn_baseline"]: + for i in range(self.num_envs): + if self.ts[i] == 0: + self.action_freqs[i] *= 0 + task_text = [self.obss[i]["mission"] for i in range(self.num_envs)] + + # Subtask classifier, static or learned online + elif self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped", + ]: + self.pi_l_obss = [deepcopy(self.obss[i]) + for i in range(self.num_envs) + for _ in range(self.num_subtasks)] + for i in range(self.num_envs): + # For every newly reset environment, add to the dataset + # if task was successful (and classifier is learned online), + # and reset arrays + if self.ts[i] == 0: + old_mission = self.tasks_instr[i] + if self.reward_shaping in ["subtask_classifier_online", + "subtask_classifier_online_unclipped"]: + if self.tasks_succeeded[i] and \ + self.pi_l_already_done_all[i].sum() > 0: + self.subtask_online_ds.add_demos([ + (old_mission, + [(-1, np.where(self.pi_l_already_done_all[i])[0])] + ) + ]) + self.pi_l_already_done_relevant[i] *= False + self.pi_l_already_done_all[i] *= False + self.past_pi_l_done_discounted[i] *= 0 + self.tasks_succeeded[i] = False + self.tasks_instr[i] = self.obss[i]["mission"] + # For every (environment, subtask) pair, set the mission + # of pi_l's observation to the subtask instruction + for j in range(self.num_subtasks): + self.pi_l_obss[i * self.num_subtasks + j]["mission"] = \ + self.instr_handler.get_instruction(j) + pi_l_eval = self.pi_l.act_batch(self.pi_l_obss, stop_mask=None) + pi_l_actions = pi_l_eval["action"].cpu().numpy() + pi_l_done = pi_l_actions == self.done_action + pi_l_done = pi_l_done.reshape((self.num_envs, self.num_subtasks)) + # Just keep the instructions that weren't already done and relevant + pi_l_done *= np.invert(self.pi_l_already_done_relevant) + if pi_l_done.sum() > 0: + # Preprocess the instructions for the tasks and completed + # subtasks + task_idx, subtask_idx = np.where(pi_l_done) + task_text = [self.obss[i]["mission"] for i in task_idx] + subtask_text = self.instr_handler.missions[subtask_idx] + task_preproc = self.subtask_cls_preproc(task_text) + subtask_preproc = self.subtask_cls_preproc(subtask_text) + if self.reward_shaping in ["subtask_classifier_online", + "subtask_classifier_online_unclipped"]: + task_preproc = task_preproc.to(self.device) + subtask_preproc = subtask_preproc.to(self.device) + # Run them through the subtask classifier + predicted_subtasks = self.subtask_cls(task_preproc, subtask_preproc) \ + .round().detach().cpu().numpy().astype(bool) + # Record them + self.pi_l_already_done_all |= pi_l_done + # Overwrite pi_l_done with only the done and relevant subtasks + # and record them + pi_l_done &= False + for j in range(len(task_idx)): + if predicted_subtasks[j]: + pi_l_done[task_idx[j], subtask_idx[j]] = True + self.pi_l_already_done_relevant[task_idx[j], + subtask_idx[j]] = True + + # QG_QA + elif self.reward_shaping in ["QG_QA"] and idr_torch.rank == 0: + + self.obss = [deepcopy(self.obss[i]) + for i in range(self.num_envs)] + for i in range(self.num_envs): + # For every newly reset environment, + # generate question and answers update mask QA and reward + if self.ts[i] == 0: + # QG generation + mission = self.obss[i]["mission"] + mission = nlp(mission) + mission = [preprocess_token(token) for token in mission if + (not token.is_punct and not token.like_num)] + + qg_data = QG(mission, self.questionable_words) + # numericalized + self.questions[i] = [numericalize(self.vocabulary['question'], x) for x in qg_data['questions']] + self.questions_len_begin[i] = len(self.questions[i]) + self.questions_answered_len_current[i] = 0 + self.answers[i] = [numericalize(self.vocabulary['answer'], [x]) for x in qg_data['answers']] + + self.frames[i] = [] + self.actions[i] = [] + self.rewards_bonus[i] = 0 + self.rewards_bonus_discounted[i] = 0 + + + elif self.reward_shaping in ["RIDE"]: + self.obss = [deepcopy(self.obss[i]) + for i in range(self.num_envs)] + for i in range(self.num_envs): + if self.ts[i] == 0: + self.dicts_state[i] = dict() + number_visits = torch.ones(self.num_envs, device=self.device) + + # Compute the bonus reward using QA + if self.reward_shaping in ["QG_QA"]: + + if idr_torch.rank == 0: + demo_dict = {'questions': self.questions, + 'answers': self.answers, + 'frames': [], + 'length_frames': [], + 'length_frames_max': None, + 'actions': []} + + for i in range(self.num_envs): + im = self.obss[i]['image'] + # reordering to obtain images under the format CxHxW + self.frames[i].append(np.array([im[:, :, 0], im[:, :, 1], im[:, :, 2]], dtype=np.uint8)) + demo_dict['frames'].append(np.array(self.frames[i])) + demo_dict['length_frames'].append(len(self.frames[i])) + self.actions[i].append(actions_to_take[i] + 1) # shift needed sice 0 is the pad for action + + demo_dict['actions'] = self.actions + demo_dict['length_frames'] = torch.tensor(demo_dict['length_frames']) + + if self.type_QG_QA_reward in ["simple"]: + demo_batch = generate_batch(demo_dict) + with torch.no_grad(): + if self.debiased: + answer_pred_QA = self.QA.forward(self.vocabulary['question'], **demo_batch)[ + 'answers'].cpu().detach() + answer_pred_QA_l = self.QA_l.forward(self.vocabulary['question'], **demo_batch)[ + 'answers'].cpu().detach() + answer_pred = F.relu(F.softmax(answer_pred_QA, dim=1) - F.softmax(answer_pred_QA_l, dim=1)) + else: + answer_pred = self.QA.forward(self.vocabulary['question'], **demo_batch)[ + 'answers'].cpu().detach() + success_pred_batch = (torch.argmax(answer_pred, dim=1) == demo_batch['answers']) + not_answered_question = (torch.argmax(answer_pred, dim=1) != demo_batch['answers']).cpu().detach() + # Take unanswered questions to ask them anew + count = 0 + + for i in range(self.num_envs): + lenq = len(self.questions[i]) + self.rewards_bonus[i] = success_pred_batch[ + count:(count + lenq)].sum().cpu().detach() + for j in reversed(range(lenq)): + if not not_answered_question[count + j]: + del self.questions[i][j] + del self.answers[i][j] + self.questions_answered_len_current[i] += 1 + count += lenq + + elif self.type_QG_QA_reward in ["adjusted"]: + if idr_torch.rank == 0: + slices, answer_true = generate_batch(demo_dict, self.number_parallel_QA) + torch.distributed.broadcast_object_list(slices, src=idr_torch.rank) + + else: + slices = [dict() for _ in range(self.number_parallel_QA)] + torch.distributed.broadcast_object_list(slices, src=0) + with torch.no_grad(): + if self.debiased: + if slices[0]['size_tensor'][idr_torch.rank] > 0: + demo_batch = {k: slices[idr_torch.rank][k].to(gpu) for k in + slices[idr_torch.rank].keys() if (k != 'answers' and k != 'size_tensor')} + answer_pred_QA = self.QA.forward(self.vocabulary['question'], **demo_batch)[ + 'answers'] + answer_pred_QA_l = self.QA_l.forward(self.vocabulary['question'], **demo_batch)[ + 'answers'] + answer_pred_local = F.pad(F.relu(F.softmax(answer_pred_QA, dim=1) - F.softmax(answer_pred_QA_l, dim=1)), + (0, 0, 0, slices[0]['size_tensor'][0]-slices[0]['size_tensor'][idr_torch.rank]), + "constant", 0).contiguous() + else: + answer_pred_local = torch.zeros((slices[0]['size_tensor'][0], len(self.vocabulary['answer'])), device=gpu).contiguous() + tensor_list = [torch.zeros((slices[0]['size_tensor'][0], len(self.vocabulary['answer'])), + dtype=torch.float32).cuda() for _ in range(self.number_parallel_QA)] + dist.all_gather(tensor_list, answer_pred_local) + else: + if slices[0]['size_tensor'][idr_torch.rank] > 0: + demo_batch = {k: slices[idr_torch.rank][k].to(gpu) for k in + slices[idr_torch.rank].keys() if (k != 'answers' and k != 'size_tensor')} + answer_pred_local = F.pad(self.QA.forward(self.vocabulary['question'], **demo_batch)['answers'], + (0, 0, 0, slices[0]['size_tensor'][0]-slices[0]['size_tensor'][idr_torch.rank]), + "constant", 0).contiguous() + else: + answer_pred_local = torch.zeros((slices[0]['size_tensor'][0], len(self.vocabulary['answer'])), device=gpu).contiguous() + # print("rank: {}, answer_pred_shape: {}".format(idr_torch.rank, answer_pred_local.shape)) + tensor_list = [torch.zeros((slices[0]['size_tensor'][0], len(self.vocabulary['answer'])), + dtype=torch.float32).cuda() for _ in range(self.number_parallel_QA)] + """if idr_torch.rank == 0: + for t in tensor_list: + print("tensor_shape: {}".format(t.shape))""" + dist.all_gather(tensor_list, answer_pred_local) + + if idr_torch.rank == 0: + len_tensor_list = len(tensor_list) + # print(tensor_list) + tensor_list = [tensor_list[i][:slices[0]['size_tensor'][i]] for i in range(len_tensor_list)] + answer_pred = torch.cat(tensor_list).cpu().detach() + # print(answer_pred) + good_answers = (torch.argmax(answer_pred, dim=1) == answer_true) + # calculate confidence of the QA in the given answer + argm = torch.argmax(answer_pred, dim=1).unsqueeze(dim=1).detach() + confidence = F.softmax(answer_pred, dim=1).gather(1, argm).squeeze(dim=1).cpu().detach() + success_pred_batch = (good_answers * confidence) + not_answered_question = (torch.argmax(answer_pred, dim=1) != answer_true).cpu().detach() + # Take unanswered questions to ask them anew + count = 0 + + for i in range(self.num_envs): + lenq = len(self.questions[i]) + self.rewards_bonus[i] = success_pred_batch[ + count:(count + lenq)].sum().cpu().detach() + for j in reversed(range(lenq)): + if not not_answered_question[count + j]: + del self.questions[i][j] + del self.answers[i][j] + self.questions_answered_len_current[i] += 1 + count += lenq + + if self.reward_shaping in ["IC"]: + obs_state = self.obss_preprocessor(self.obss, device=self.device) + + elif self.reward_shaping in ["RIDE"]: + obs_state = self.obss_preprocessor(self.obss, device=self.device) + for i in range(self.num_envs): + key = tuple(torch.cat([obs_state.image[i].view(-1), obs_state.instr[i].view(-1)]).tolist()) + if key in self.dicts_state[i]: + self.dicts_state[i][key] += 1 + else: + self.dicts_state[i].update({key: 1}) + number_visits[i] *= self.dicts_state[i][key] + + if idr_torch.rank == 0: + # Make a step in the environment + stop_mask = np.array([False for _ in range(self.num_envs)]) + obs, reward, done, info = self.request_step(actions_to_take, stop_mask) + reward = np.array(reward) + done_mask = np.array(done) + + # Add reward shaping information to info + if self.reward_shaping in ["subtask_oracle_ordered"]: + self.stacks = self.pop_masked(self.stacks, pi_l_done, allow_zero=True) + to_reset = done | pi_l_done + self.reset_pi_l_partial(to_reset) + info = (pi_l_done.astype(int), + torch.tensor(pi_l_actions).to(self.device)) + + elif self.reward_shaping in ["learn_baseline"]: + prev_action_freqs = torch.as_tensor( + np.nan_to_num(np.divide(self.action_freqs, self.ts[:, None]), + posinf=0)).float().to(self.device) + for i in range(self.num_envs): + self.action_freqs[i][actions_to_take[i]] += 1 + cur_action_freqs = torch.as_tensor( + np.divide(self.action_freqs, self.ts[:, None] + 1)).float().to(self.device) + task_preproc = self.learn_baseline_preproc(task_text).to(self.device) + prev_pred = F.softmax(self.learn_baseline_cls(task_preproc, \ + prev_action_freqs)[1], dim=-1) + cur_pred = F.softmax(self.learn_baseline_cls(task_preproc, \ + cur_action_freqs)[1], dim=-1) + prev_potential = prev_pred[:, 1] - prev_pred[:, 0] + cur_potential = cur_pred[:, 1] - cur_pred[:, 0] + info = (np.stack((prev_potential.detach().cpu().numpy(), \ + cur_potential.detach().cpu().numpy()), axis=-1), None) + + elif self.reward_shaping in ["subtask_classifier_static", + "subtask_classifier_online"]: + # Reset all pi_l models for an environment if any subtasks + # predict termination + to_reset = (done | pi_l_done.sum(1) > 0).repeat(self.num_subtasks) + self.reset_pi_l_partial(to_reset) + + pi_l_done_count_clipped = pi_l_done.sum(1).clip(0, 1) + self.past_pi_l_done_discounted += pi_l_done_count_clipped + info = (np.stack((pi_l_done_count_clipped, self.past_pi_l_done_discounted), axis=-1), + torch.tensor(pi_l_actions).to(self.device)) + self.tasks_succeeded = reward > 0 + self.past_pi_l_done_discounted *= 1. / self.subtask_discount + + elif self.reward_shaping in ["QG_QA"] and idr_torch.rank == 0: + self.rewards_bonus_discounted += self.rewards_bonus + info = {"reward_QG_QA": np.stack((self.rewards_bonus, self.rewards_bonus_discounted), axis=-1)} + self.rewards_bonus_discounted *= 1. / self.subtask_discount + + info["success_rate_QA"] = (self.questions_answered_len_current / self.questions_len_begin) * done_mask + + elif self.reward_shaping in ["subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + # Reset all pi_l models for an environment if any subtasks + # predict termination + to_reset = (done | pi_l_done.sum(1) > 0).repeat(self.num_subtasks) + self.reset_pi_l_partial(to_reset) + + pi_l_done_count = pi_l_done.sum(1) + self.past_pi_l_done_discounted += pi_l_done_count + info = (np.stack((pi_l_done_count, self.past_pi_l_done_discounted), axis=-1), + torch.tensor(pi_l_actions).to(self.device)) + self.tasks_succeeded = reward > 0 + self.past_pi_l_done_discounted *= 1. / self.subtask_discount + + elif self.reward_shaping in ["IC"]: + obs_next_state = self.obss_preprocessor(self.obss, device=self.device) + with torch.no_grad(): + phi2_pred, actions_pred, _, phi2 = self.stateactionpredictor(obs_state, obs_next_state, + torch.tensor(actions_to_take, + device=self.device, + dtype=torch.long)) + + info = torch.clamp(0.01 / 2 * torch.square(torch.norm(phi2 - phi2_pred, dim=1)), max=1) + + elif self.reward_shaping in ["RIDE"]: + obs_next_state = self.obss_preprocessor(self.obss, device=self.device) + with torch.no_grad(): + phi2_pred, actions_pred, phi1, phi2 = self.stateactionpredictor(obs_state, obs_next_state, + torch.tensor(actions_to_take, + device=self.device, + dtype=torch.long)) + info = torch.clamp(torch.square(torch.norm(phi2 - phi1, dim=1)) / torch.sqrt(number_visits), max=1) + + if idr_torch.rank == 0: + self.ts += 1 + self.ts[done_mask] *= 0 + + if idr_torch.rank == 0: + return [obs for obs in self.obss], reward, done_mask, info + else: + return None, None, None, None diff --git a/babyai/babyai/test_paral.py b/babyai/babyai/test_paral.py new file mode 100644 index 0000000..4444706 --- /dev/null +++ b/babyai/babyai/test_paral.py @@ -0,0 +1,200 @@ +import sys +import os +# import idr_torch +import torch +import torch.distributed as dist + +sys.path.append(os.getcwd()) +sys.path.append('/gpfsdswork/projects/rech/imi/uez56by/code/ELLA/babyai') +sys.path.append('/gpfsdswork/projects/rech/imi/uez56by/code/ELLA/gym-minigrid') + +# print(idr_torch.rank) + +import babyai.utils as utils +from attrdict import AttrDict +from babyai.QA_simple import Model +from babyai.l_class import Model as Model_l + +import time +from torch.nn.parallel import DistributedDataParallel as DDP + + + +dist.init_process_group(backend='nccl', + init_method='env://', + world_size=idr_torch.size, + rank=idr_torch.rank) +torch.cuda.set_device(idr_torch.local_rank) +gpu = torch.device("cuda") + +if idr_torch.rank==0: + print('world_size: {}'.format(idr_torch.size)) +print("rank: {}, local_rank: {}, gpu: {}".format(idr_torch.rank, idr_torch.local_rank, torch.cuda.current_device())) + +def load_model(no_answer, debiased, train_env, model_QA, epoch_QA, model_qa_l=None, epoch_qa_l=None): + # Load voc + demo_voc = utils.get_demos_QG_voc_path('{}_agent_done'.format(train_env), train_env, None, + valid=False) + if no_answer == True: + demo_voc = demo_voc.replace("QG_vocab.pkl", "QG_no_answer_vocab.pkl") + if debiased == True: + demo_voc = demo_voc.replace("vocab.pkl", "biased_vocab.pkl") + print(demo_voc) + vocab = utils.load_voc(demo_voc) + # values for the model + print(vocab['answer']) + emb_size = len(vocab['question']) + numb_action = 8 + + attr = AttrDict() + # TRANSFORMER settings + # size of transformer embeddings + attr['demb'] = 768 + # number of heads in multi-head attention + attr['encoder_heads'] = 12 + # number of layers in transformer encoder + attr['encoder_layers'] = 2 + # how many previous actions to use as input + attr['num_input_actions'] = 1 + # which encoder to use for language encoder (by default no encoder) + attr['encoder_lang'] = { + 'shared': True, + 'layers': 2, + 'pos_enc': True, + 'instr_enc': False, + } + # which decoder to use for the speaker model + attr['decoder_lang'] = { + 'layers': 2, + 'heads': 12, + 'demb': 768, + 'dropout': 0.1, + 'pos_enc': True, + } + + attr['detach_lang_emb'] = False + + # DROPOUT + attr['dropout'] = { + # dropout rate for language (goal + instr) + 'lang': 0.0, + # dropout rate for Resnet feats + 'vis': 0.3, + # dropout rate for processed lang and visual embeddings + 'emb': 0.0, + # transformer model specific dropouts + 'transformer': { + # dropout for transformer encoder + 'encoder': 0.1, + # remove previous actions + 'action': 0.0, + }, + } + + # ENCODINGS + attr['enc'] = { + # use positional encoding + 'pos': True, + # use learned positional encoding + 'pos_learn': False, + # use learned token ([WORD] or [IMG]) encoding + 'token': False, + # dataset id learned encoding + 'dataset': False, + } + if no_answer: + attr['vocab_path'] = demo_voc + et_qa = Model(attr, emb_size, numb_action, pad=0) + if debiased == True: + et_qa.load_state_dict(torch.load('storage/models/{}_no_answer_biased/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + qa_l = Model_l(attr, emb_size, 0, pad=0) + qa_l.load_state_dict(torch.load('storage/models/{}_no_answer_l_class/model_{}/et_qa_{}.pt'.format(train_env, + model_qa_l, + epoch_qa_l))) + qa_l.cuda() + qa_l.eval() + else: + et_qa.load_state_dict(torch.load('storage/models/{}_no_answer/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + else: + attr['vocab_path'] = demo_voc + et_qa = Model(attr, emb_size, numb_action, pad=0) + if debiased == True: + et_qa.load_state_dict(torch.load('storage/models/{}_biased/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + qa_l = Model_l(attr, emb_size, 0, pad=0) + qa_l.load_state_dict(torch.load('storage/models/{}_l_class/model_{}/et_qa_{}.pt'.format(train_env, + model_qa_l, + epoch_qa_l))) + qa_l.cuda() + qa_l.eval() + else: + print('storage/models/{}/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA)) + et_qa.load_state_dict(torch.load('storage/models/{}/model_{}/et_qa_{}.pt'.format(train_env, + model_QA, + epoch_QA))) + print('===vocab_path===') + print(attr['vocab_path']) + et_qa.cuda() + et_qa.eval() + + if debiased: + return et_qa, vocab, qa_l + else: + return et_qa, vocab + + +QA, vocab = load_model(no_answer=True, + debiased=False, + train_env='BabyAI-PutNextLocal-v0', + model_QA=2, + epoch_QA=10) + +lenght_seq = 512 +number_quest = 38 + +if idr_torch.rank == 0: + slices = [] + for i in range(idr_torch.size): + + demo_batch = {'questions': torch.randint(0, 8, (number_quest, 9), dtype=torch.int64), + 'answers': torch.randint(0, 8, size=(number_quest,), dtype=torch.int64), + 'frames': torch.randint(0, 6, (number_quest, lenght_seq, 3, 7, 7), dtype=torch.uint8), + 'length_frames': torch.ones((number_quest, 1), dtype=torch.int64)*lenght_seq, + 'length_frames_max': torch.ones(1, dtype=torch.int64)*lenght_seq, + 'actions': torch.randint(0, 7, (number_quest, lenght_seq), dtype=torch.int64)} + + slices.append(demo_batch) + torch.distributed.broadcast_object_list(slices, src=idr_torch.rank) + dict_s = {k: slices[idr_torch.rank][k].to(gpu) for k in slices[idr_torch.rank].keys() if k != 'answers'} + with torch.no_grad(): + answer = QA.forward(vocab['question'], **dict_s)['answers'].contiguous() + # print("answer for local process {}: {}".format(idr_torch.rank, answer.dtype)) + # print("answer size: {}, answer:{}".format(answer.shape, answer)) + + +else: + slices = [dict() for _ in range(idr_torch.size)] + torch.distributed.broadcast_object_list(slices, src=0) + dict_s = {k: slices[idr_torch.rank][k].to(gpu) for k in slices[idr_torch.rank].keys() if k != 'answers'} + with torch.no_grad(): + answer = QA.forward(vocab['question'], **dict_s)['answers'].contiguous() + # print("answer for local process {}: {}".format(idr_torch.rank, answer.dtype)) + # print("answer size: {}, answer:{}".format(answer.shape, answer)) + + +# print("answer size: {}, answer:{}".format(answer.shape, answer)) +tensor_list = [torch.zeros((number_quest, 10), dtype=torch.float32).cuda() for _ in range(idr_torch.size)] +dist.all_gather(tensor_list, answer) +if idr_torch.rank == 0: + print(" ==========list==========") + answer_pred = torch.cat(tensor_list) + answer = torch.cat([slices[i]['answers'] for i in range(idr_torch.size)]) + print(answer_pred.shape) + print(answer.shape) diff --git a/babyai/babyai/trainer_l_class.py b/babyai/babyai/trainer_l_class.py new file mode 100644 index 0000000..7f0fcc7 --- /dev/null +++ b/babyai/babyai/trainer_l_class.py @@ -0,0 +1,264 @@ +import copy +import gym +import time +import datetime +import numpy as np +import sys +import itertools +import torch +import pickle as pkl +import blosc +import multiprocessing +import os +import logging +import babyai.utils as utils + +import torch.nn as nn +from torch.nn import functional as F +from torch.nn.utils.rnn import pad_sequence +from nn.enc_visual import Resnet18 +from tqdm import tqdm +from PIL import Image +from gym import spaces + +from babyai.evaluate import batch_evaluate +from babyai.QA import Model +from babyai.l_class import Model + +logger = logging.getLogger(__name__) +if torch.cuda.is_available(): + resnet = Resnet18('cuda') +else: + resnet = Resnet18('cpu') + +softmax = nn.Softmax(dim=1) + + +class TrainerClass(object): + def __init__(self, args, attr): + self.args = args + self.attr = attr + utils.seed(self.args.seed) + + demos_path = utils.get_demos_QG_path(args.demos, args.env, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_QG_path(args.demos, args.env, args.demos_origin, valid=True) + demos_voc = utils.get_demos_QG_voc_path(args.demos, args.env, args.demos_origin, valid=False) + + demos_path_l_class = str(demos_path).replace("QG", "QG_no_answer_biased_l_class") + demos_path_valid_l_class = str(demos_path_valid).replace("QG", "QG_no_answer_biased_l_class") + demos_voc_l_class = str(demos_voc).replace("QG", "QG_no_answer_biased") + print(demos_path_l_class) + print(demos_path_valid_l_class) + print(demos_voc_l_class) + logger.info('loading train demos language classifier') + self.train_demos_l_class = utils.load_demos(demos_path_l_class) + logger.info('loaded train demos language classifier') + + logger.info('loading valid demos language classifier') + self.valid_demos_l_class = utils.load_demos(demos_path_valid_l_class) + logger.info('loaded valid demos language classifier') + + logger.info('loading voc train demos language classifier') + self.demos_voc_l_class = utils.load_voc(demos_voc_l_class) + logger.info('loaded voc train demos language classifier') + + print(self.demos_voc_l_class['question'].to_dict()['index2word']) + print(" ") + print(self.demos_voc_l_class['answer'].to_dict()['index2word']) + # Define episodic transformer for QA + if self.args.QA: + emb_size = len(self.demos_voc_l_class['question']) + self.l_qa = Model(attr, emb_size, numb_action=0, pad=0) + else: + ValueError("no args.QA") + + if torch.cuda.is_available(): + self.l_qa.cuda() + + self.optimizer = torch.optim.Adam(self.l_qa.parameters(), + self.args.lr, + eps=self.args.optim_eps) + self.scheduler_1 = torch.optim.lr_scheduler.StepLR(self.optimizer, + step_size=10, + gamma=0.1) + + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + def generate_batch(self, indices, batch_size, train=True): + + if train: + demo = self.train_demos_l_class + else: + demo = self.valid_demos_l_class + + offset = 0 + with tqdm(total=len(indices) // batch_size, desc="creation batch") as t: + for batch_index in range(len(indices) // batch_size): + batch_demo = {} + for k in demo: + if k == 'questions': + batch_demo[k] = [] + for i in indices[offset: offset + batch_size]: + len_q = len(demo[k][i]) + for j in range(len_q): + batch_demo[k].append(demo[k][i][j]) + + else: + assert k == 'answers' + batch_demo[k] = [] + for i in indices[offset: offset + batch_size]: + len_q = len(demo[k][i]) + for j in range(len_q): + batch_demo[k].append(demo[k][i][j]) + if k == 'answers': + batch_demo[k] = torch.tensor(batch_demo[k]) + + # pad and tensorize questions + batch_demo['questions'] = pad_sequence( + [torch.tensor(x, dtype=torch.float32) for x in batch_demo['questions']], + batch_first=True, + padding_value=0).type(torch.IntTensor) + + assert batch_demo['questions'].shape[0] == batch_demo['answers'].shape[0] + + if train: + pkl.dump(batch_demo, open("storage/batch_train_l_class/batch_{}.pkl".format(batch_index), "wb")) + else: + pkl.dump(batch_demo, open("storage/batch_valid_l_class/batch_{}.pkl".format(batch_index), "wb")) + + offset += batch_size + t.update() + + def train(self): + + # Log dictionary + log = {"loss_cross_entropy_train": [], "success_pred_train": [], "loss_cross_entropy_valid": [], + "success_pred_valid": [], "confidence": []} + generated = False + print(' ') + print('Batch generated {}'.format(generated)) + print(' ') + unique_t = [] + count_t = [] + + for e in range(self.args.epochs): + print('lr {}'.format(self.optimizer.state_dict()['param_groups'][0]['lr'])) + # Train + batch_size = min(self.args.batch_size, len(self.train_demos_l_class['questions'])) + if self.args.epoch_length == 0: + indices = list(range(len(self.train_demos_l_class['questions']))) + else: + indices = np.random.choice(len(self.train_demos_l_class['questions']), self.args.epoch_length) + self.l_qa.train() + + if not generated: + np.random.shuffle(indices) + self.generate_batch(indices, batch_size, train=True) + + with tqdm(total=len(indices) // batch_size, desc="train") as t: + answer_loss_batch = 0 + success_pred_batch = 0 + for batch_index in range(len(indices) // batch_size): + # batch_index_overfit = 0 + demo = pkl.load(open("storage/batch_train_l_class/batch_{}.pkl".format(batch_index), "rb")) + batch_demo = {} + for k, v in demo.items(): + if k != 'length_frames_max' and k != 'env_ids' and k != 'missions': + batch_demo[k] = v.cuda() + else: + batch_demo[k] = v + + answer_pred = self.l_qa.forward(self.demos_voc_l_class['question'], **batch_demo) + answer_loss = F.cross_entropy(answer_pred['answers'], batch_demo['answers'], reduction='mean') + + # count the number of time a class is answered on a sub_batch + if batch_index == 0 or batch_index == (len(indices) // batch_size) - 1: + unique, return_counts = torch.unique(torch.argmax(answer_pred['answers'], dim=1), + return_counts=True) + unique_t.append(unique.cpu().detach().numpy()) + d = {k: v for k, v in + zip(self.demos_voc_l_class['answer'].index2word(list(unique.cpu().detach().numpy())), + return_counts.cpu().detach().numpy())} + print(d) + count_t.append(return_counts.cpu().detach().numpy()) + + success_pred_batch += (torch.argmax(answer_pred['answers'], dim=1) + == batch_demo['answers']).sum().cpu().detach().numpy() / \ + batch_demo['answers'].shape[0] + answer_loss_batch += answer_loss.cpu().detach().numpy() + + self.optimizer.zero_grad() + answer_loss.backward() + self.optimizer.step() + + t.update() + self.scheduler_1.step() + # print('lr {}'.format(self.scheduler_1.get_last_lr())) + # self.scheduler_seq.step() + + log["loss_cross_entropy_train"].append(answer_loss_batch / (len(indices) // batch_size)) + log["success_pred_train"].append(success_pred_batch / (len(indices) // batch_size)) + + # Valid + with torch.no_grad(): + if self.args.epoch_length == 0: + indices = list(range(len(self.valid_demos_l_class['questions']))) + else: + indices = np.random.choice(len(self.valid_demos_l_class['questions']), self.args.epoch_length) + + batch_size = min(self.args.batch_size, len(self.valid_demos_l_class['questions'])) + + self.l_qa.eval() + + if not generated: + np.random.shuffle(indices) + self.generate_batch(indices, batch_size, train=False) + generated = True + + with tqdm(total=len(indices) // batch_size, desc="valid") as t: + answer_loss_batch = 0 + success_pred_batch = 0 + '''table_confidence = np.zeros(4)''' + for batch_index in range(len(indices) // batch_size): + demo = pkl.load(open("storage/batch_valid_l_class/batch_{}.pkl".format(batch_index), "rb")) + batch_demo = {} + for k, v in demo.items(): + if k != 'length_frames_max' and k != 'env_ids' and k != 'missions': + batch_demo[k] = v.cuda() + else: + batch_demo[k] = v + + answer_pred = self.l_qa.forward(self.demos_voc_l_class['question'], **batch_demo) + answer_loss = F.cross_entropy(answer_pred['answers'], batch_demo['answers'], reduction='mean') + + success_pred_batch += (torch.argmax(answer_pred['answers'], dim=1) + == batch_demo['answers']).sum().cpu().detach().numpy() / \ + batch_demo['answers'].shape[0] + + answer_loss_batch += answer_loss.cpu().detach().numpy() + t.update() + + # self.scheduler_2.step(answer_loss_batch / (len(indices) // batch_size)) + log["loss_cross_entropy_valid"].append(answer_loss_batch / (len(indices) // batch_size)) + log["success_pred_valid"].append(success_pred_batch / (len(indices) // batch_size)) + + + logger.info( + 'Epoch {} train CE {} SR {} valid CE {} and the SR is {}'.format(e, + log["loss_cross_entropy_train"][-1], + log["success_pred_train"][-1], + log["loss_cross_entropy_valid"][-1], + log["success_pred_valid"][-1])) + + pkl.dump(log, + open('storage/models/{}_l_class/model_{}/log.pkl'.format(self.args.env, self.args.model_number), "wb")) + pkl.dump(np.array(unique_t, dtype=object), + open('storage/models/{}_l_class/model_{}/unique.pkl'.format(self.args.env, self.args.model_number), + "wb")) + pkl.dump(np.array(count_t, dtype=object), + open('storage/models/{}_l_class/model_{}/count.pkl'.format(self.args.env, self.args.model_number), + "wb")) + torch.save(self.l_qa.state_dict(), + 'storage/models/{}_l_class/model_{}/et_qa_{}.pt'.format(self.args.env, self.args.model_number, e)) + + return log diff --git a/babyai/babyai/utils/__init__.py b/babyai/babyai/utils/__init__.py new file mode 100644 index 0000000..baa9add --- /dev/null +++ b/babyai/babyai/utils/__init__.py @@ -0,0 +1,32 @@ +import os +import random +import numpy +import torch +from babyai.utils.agent import load_agent, ModelAgent, DemoAgent, BotAgent +from babyai.utils.demos import ( + load_demos, load_voc, save_demos, synthesize_demos, get_demos_path, get_demos_QG_path, get_demos_QG_voc_path) +from babyai.utils.format import ObssPreprocessor, ObssContPreprocessor, ObssDirPreprocessor, IntObssPreprocessor, InstructionOnlyPreprocessor, get_vocab_path +from babyai.utils.log import ( + get_log_path, get_log_dir, synthesize, configure_logging) +from babyai.utils.model import get_model_dir, load_model, save_model, load_stactpredictor_model, save_stactpredictor_model +from babyai.utils.viz import watch, viz, info, clear + +def storage_dir(): + # defines the storage directory to be in the root (Same level as babyai folder) + print(os.environ) + return os.environ.get("DLP_STORAGE", '.') + + +def create_folders_if_necessary(path): + dirname = os.path.dirname(path) + if not(os.path.isdir(dirname)): + os.makedirs(dirname) + + +def seed(seed): + random.seed(seed) + numpy.random.seed(seed) + torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + diff --git a/babyai/babyai/utils/agent.py b/babyai/babyai/utils/agent.py new file mode 100644 index 0000000..eb60daf --- /dev/null +++ b/babyai/babyai/utils/agent.py @@ -0,0 +1,189 @@ +from abc import ABC, abstractmethod +import torch +from .. import utils +from babyai.bot import Bot +from babyai.model import ACModel +from random import Random + + +class Agent(ABC): + """An abstraction of the behavior of an agent. The agent is able: + - to choose an action given an observation, + - to analyze the feedback (i.e. reward and done state) of its action.""" + + def on_reset(self): + pass + + @abstractmethod + def act(self, obs): + """Propose an action based on observation. + + Returns a dict, with 'action` entry containing the proposed action, + and optionaly other entries containing auxiliary information + (e.g. value function). + + """ + pass + + @abstractmethod + def analyze_feedback(self, reward, done): + pass + + +class ModelAgent(Agent): + """A model-based agent. This agent behaves using a model.""" + + def __init__(self, model_or_name, obss_preprocessor, argmax, + done_classifier=False, ns=None, index=None, share=False): + self.share = share + if self.share: + self.ns = ns + self.model_name = "model_" + str(index) + self.obs_name = "obs_" + str(index) + else: + if obss_preprocessor is None: + assert isinstance(model_or_name, str) + obss_preprocessor = utils.ObssPreprocessor(model_or_name) + self.obss_preprocessor = obss_preprocessor + if isinstance(model_or_name, str): + self.model = utils.load_model(model_or_name) + if torch.cuda.is_available(): + self.model.cuda() + else: + self.model = model_or_name + if self.share: + self.device = next(self.ns.__getattr__(self.model_name).parameters()).device + else: + self.device = next(self.model.parameters()).device + self.argmax = argmax + self.memory = None + + def act_batch(self, many_obs, stop_mask=None): + if self.memory is None: + if not self.share: + self.memory = torch.zeros( + len(many_obs), self.model.memory_size, device=self.device) + else: + self.memory = torch.zeros( + len(many_obs), self.ns.__getattr__(self.model_name).memory_size, device=self.device) + elif self.memory.shape[0] != len(many_obs): + raise ValueError("stick to one batch size for the lifetime of an agent") + + if not self.share: + preprocessed_obs = self.obss_preprocessor(many_obs, device=self.device) + else: + preprocessed_obs = self.ns.__getattr__(self.obs_name)(many_obs, device=self.device) + + if stop_mask is not None: + self.memory[stop_mask] *= 0 + + with torch.no_grad(): + if not self.share: + model_results = self.model(preprocessed_obs, self.memory) + else: + model_results = self.ns.__getattr__(self.model_name)(preprocessed_obs, self.memory) + dist = model_results['dist'] + value = model_results['value'] + self.memory = model_results['memory'] + + if self.argmax: + action = dist.probs.argmax(1) + else: + action = dist.sample() + + return {'action': action, + 'dist': dist, + 'value': value} + + def act(self, obs): + return self.act_batch([obs]) + + def analyze_feedback(self, reward, done): + if isinstance(done, tuple): + for i in range(len(done)): + if done[i]: + self.memory[i, :] *= 0. + else: + self.memory *= (1 - done) + + +class RandomAgent: + """A newly initialized model-based agent.""" + + def __init__(self, seed=0, number_of_actions=7): + self.rng = Random(seed) + self.number_of_actions = number_of_actions + + def act(self, obs): + action = self.rng.randint(0, self.number_of_actions - 1) + # To be consistent with how a ModelAgent's output of `act`: + return {'action': torch.tensor(action), + 'dist': None, + 'value': None} + + +class DemoAgent(Agent): + """A demonstration-based agent. This agent behaves using demonstrations.""" + + def __init__(self, demos_name, env_name, origin): + self.demos_path = utils.get_demos_path(demos_name, env_name, origin, valid=False) + self.demos = utils.load_demos(self.demos_path) + self.demos = utils.demos.transform_demos(self.demos) + self.demo_id = 0 + self.step_id = 0 + + @staticmethod + def check_obss_equality(obs1, obs2): + if not(obs1.keys() == obs2.keys()): + return False + for key in obs1.keys(): + if type(obs1[key]) in (str, int): + if not(obs1[key] == obs2[key]): + return False + else: + if not (obs1[key] == obs2[key]).all(): + return False + return True + + def act(self, obs): + if self.demo_id >= len(self.demos): + raise ValueError("No demonstration remaining") + expected_obs = self.demos[self.demo_id][self.step_id][0] + assert DemoAgent.check_obss_equality(obs, expected_obs), "The observations do not match" + + return {'action': self.demos[self.demo_id][self.step_id][1]} + + def analyze_feedback(self, reward, done): + self.step_id += 1 + + if done: + self.demo_id += 1 + self.step_id = 0 + + +class BotAgent: + def __init__(self, env): + """An agent based on a GOFAI bot.""" + self.env = env + self.on_reset() + + def on_reset(self): + self.bot = Bot(self.env) + + def act(self, obs=None, action_choosen=None, update_internal_state=True, *args, **kwargs): + action = self.bot.replan(action_choosen) + return {'action': action} + + def analyze_feedback(self, reward, done): + pass + + +def load_agent(env, model_name, demos_name=None, demos_origin=None, argmax=True, env_name=None): + # env_name needs to be specified for demo agents + if model_name == 'BOT': + return BotAgent(env) + elif model_name is not None: + obss_preprocessor = utils.ObssPreprocessor(model_name, env.observation_space) + return ModelAgent(model_name, obss_preprocessor, argmax) + elif demos_origin is not None or demos_name is not None: + return DemoAgent(demos_name=demos_name, env_name=env_name, origin=demos_origin) diff --git a/babyai/babyai/utils/demos.py b/babyai/babyai/utils/demos.py new file mode 100644 index 0000000..a21c73c --- /dev/null +++ b/babyai/babyai/utils/demos.py @@ -0,0 +1,263 @@ +import os +import pickle +import numpy as np + +from .. import utils +from gym_minigrid.minigrid import MiniGridEnv +import blosc + + +def get_demos_path(demos=None, env=None, origin=None, valid=False): + valid_suff = '_valid' if valid else '' + demos_path = (demos + valid_suff + if demos + else env + "_" + origin + valid_suff) + '.pkl' + return os.path.join(utils.storage_dir(), 'demos', demos_path) + +def get_demos_QG_path(demos=None, env=None, origin=None, valid=False): + valid_suff = '_valid' if valid else '' + demos_path = (demos + valid_suff + if demos + else env + "_" + origin + valid_suff) + '_QG.pkl' + return os.path.join(utils.storage_dir(), 'demos', demos_path) + +def get_demos_QG_voc_path(demos=None, env=None, origin=None, valid=False): + valid_suff = '_valid' if valid else '' + demos_path = (demos + valid_suff + if demos + else env + "_" + origin + valid_suff) + '_QG_vocab.pkl' + return os.path.join(utils.storage_dir(), 'demos', demos_path) + +def load_demos(path, raise_not_found=True): + try: + return pickle.load(open(path, "rb")) + except FileNotFoundError: + if raise_not_found: + raise FileNotFoundError("No demos found at {}".format(path)) + else: + return [] + +def load_voc(path, raise_not_found=True): + try: + return pickle.load(open(path, "rb")) + except FileNotFoundError: + if raise_not_found: + raise FileNotFoundError("No vo found at {}".format(path)) + else: + return [] + +def save_demos(demos, path): + utils.create_folders_if_necessary(path) + pickle.dump(demos, open(path, "wb"), protocol=4) + + +def synthesize_demos(demos): + print('{} demonstrations saved'.format(len(demos))) + num_frames_per_episode = [len(demo[2]) for demo in demos] + if len(demos) > 0: + print('Demo num frames: {}'.format(num_frames_per_episode)) + + +def transform_demos(demos): + ''' + takes as input a list of demonstrations in the format generated with `make_agent_demos` or `make_human_demos` + i.e. each demo is a tuple (mission, blosc.pack_array(np.array(images)), directions, actions) + returns demos as a list of lists. Each demo is a list of (obs, action, done) tuples + ''' + new_demos = [] + for demo in demos: + new_demo = [] + + mission = demo[0] + all_images = demo[1] + directions = demo[2] + actions = demo[3] + + all_images = blosc.unpack_array(all_images) + n_observations = all_images.shape[0] + assert len(directions) == len(actions) == n_observations, "error transforming demos" + for i in range(n_observations): + obs = {'image': all_images[i], + 'direction': directions[i], + 'mission': mission} + action = actions[i] + done = i == n_observations - 1 + new_demo.append((obs, action, done)) + new_demos.append(new_demo) + return new_demos + + +def transform_demos_imitation(demos, include_done=False): + new_demos = [] + for demo in demos: + new_demo = [] + + mission = demo[1] + all_images = demo[2] + directions = demo[3] + actions = demo[4] + + all_images = blosc.unpack_array(all_images) + n_observations = all_images.shape[0] + if not include_done: + n_observations -= 1 + else: + raise NotImplementedError() + for i in range(n_observations): + obs = {'image': all_images[i], + 'direction': directions[i], + 'mission': mission} + action = actions[i] + done = i == n_observations - 1 + new_demo.append((obs, action, done)) + new_demos.append(new_demo) + return new_demos + + +def transform_demos_imitation_done_classifier(demos, oversample=20): + new_demos = [] + all_missions = set([demo[1] for demo in demos]) + for i, demo in enumerate(demos): + mission = demo[1] + images = demo[2] + images = blosc.unpack_array(images) + for i in range(oversample): + pos_image = images[1] + obs = {'image': pos_image, + 'mission': mission} + action = 1 + done = True + new_demo = [(obs, action, done)] + new_demos.append(new_demo) + for i in range(oversample // 2): + neg_image = images[0] + obs = {'image': neg_image, + 'mission': mission} + action = 0 + done = True + new_demo = [(obs, action, done)] + new_demos.append(new_demo) + replace = False + neg_missions_pop = list(all_missions - {mission}) + if oversample // 2 > len(neg_missions_pop): + replace = True + neg_missions = np.random.choice(neg_missions_pop, oversample // 2, replace=replace) + for i in range(oversample // 2): + obs = {'image': pos_image, + 'mission': neg_missions[i]} + action = 0 + done = True + new_demo = [(obs, action, done)] + new_demos.append(new_demo) + return new_demos + + +def transform_demos_imitation_done_classifier_cont(demos, oversample=20): + new_demos = [] + all_missions = set([demo[1] for demo in demos]) + for i, demo in enumerate(demos): + mission = demo[1] + obss = demo[2] + for i in range(oversample): + pos_obs = obss[1] + action = 1 + done = True + new_demo = [(pos_obs, action, done)] + new_demos.append(new_demo) + for i in range(oversample // 2): + neg_obs = obss[0] + action = 0 + done = True + new_demo = [(neg_obs, action, done)] + new_demos.append(new_demo) + replace = False + neg_missions_pop = list(all_missions - {mission}) + if oversample // 2 > len(neg_missions_pop): + replace = True + neg_missions = np.random.choice(neg_missions_pop, oversample // 2, replace=replace) + for i in range(oversample // 2): + obs = {'pm_position': pos_obs['pm_position'], + 'objects': pos_obs['objects'], + 'mission': neg_missions[i]} + action = 0 + done = True + new_demo = [(obs, action, done)] + new_demos.append(new_demo) + return new_demos + + +def transform_demos_learn(demos): + missions = [] + action_freqs = [] + labels = [] + + new_demos = [] + for i, demo in enumerate(demos): + task_id = demo[0] + mission = demo[1] + actions = demo[4] + if len(actions) < 5: + continue + while True: + r, s = np.random.choice(len(actions)), np.random.choice(len(actions)+1) + r, s = min(r, s), max(r, s) + if s - r >= 5: + break + action_freq = np.bincount(actions[r:s] + [MiniGridEnv.Actions.done]) + action_freq[-1] -= 1 + action_freq = action_freq / np.sum(action_freq) + + missions.append(mission) + action_freqs.append(action_freq) + labels.append(1) + + if np.random.random() < 0.5: + while True: + mission_alt = demos[np.random.choice(len(demos))][1] + if mission_alt != mission: + break + missions.append(mission_alt) + action_freqs.append(action_freq) + labels.append(0) + else: + action_freq_alt = np.random.random(len(MiniGridEnv.Actions)) + action_freq_alt = action_freq_alt / np.sum(action_freq_alt) + missions.append(mission) + action_freqs.append(action_freq_alt) + labels.append(0) + return list(zip(missions, action_freqs, labels)) + + +def transform_demos_subtasks_cross(demos, instr_handler, n=20): + + examples = [] + + for i, demo in enumerate(demos): + mission = demo[0] + all_subtasks = demo[1] + all_subtasks_flat = [s for ts in all_subtasks for s in ts[1]] + pos_subtasks = set(all_subtasks_flat) + neg_subtasks = set(range(instr_handler.D_l_size())) - pos_subtasks + + if len(pos_subtasks) > 0: + for s in np.random.choice(list(pos_subtasks), n): + examples.append([mission, instr_handler.get_instruction(s), 1]) + + if len(neg_subtasks) > 0: + for s in np.random.choice(list(neg_subtasks), n): + examples.append([mission, instr_handler.get_instruction(s), 0]) + + return examples + + +def transform_demos_subtasks_cross_ones(demos, instr_handler): + + examples = [] + + for i, demo in enumerate(demos): + mission = demo[0] + all_subtasks = set(range(instr_handler.D_l_size())) + for s in all_subtasks: + examples.append([mission, instr_handler.get_instruction(s), 1]) + + return examples diff --git a/babyai/babyai/utils/format.py b/babyai/babyai/utils/format.py new file mode 100644 index 0000000..16ed4c9 --- /dev/null +++ b/babyai/babyai/utils/format.py @@ -0,0 +1,246 @@ +import os +import json +import numpy +import re +import torch +import babyai.rl + +from .. import utils + + +def get_vocab_path(model_name): + return os.path.join(utils.get_model_dir(model_name), "vocab.json") + + +class Vocabulary: + def __init__(self, model_name): + self.path = get_vocab_path(model_name) + self.max_size = 100 + if os.path.exists(self.path): + self.vocab = json.load(open(self.path)) + else: + self.vocab = {} + + def __getitem__(self, token): + if not (token in self.vocab.keys()): + if len(self.vocab) >= self.max_size: + raise ValueError("Maximum vocabulary capacity reached") + self.vocab[token] = len(self.vocab) + 1 + return self.vocab[token] + + def save(self, path=None): + if path is None: + path = self.path + utils.create_folders_if_necessary(path) + json.dump(self.vocab, open(path, "w")) + + def copy_vocab_from(self, other): + ''' + Copy the vocabulary of another Vocabulary object to the current object. + ''' + self.vocab.update(other.vocab) + + +class InstructionsPreprocessor(object): + def __init__(self, model_name, load_vocab_from=None): + self.model_name = model_name + self.vocab = Vocabulary(model_name) + + path = get_vocab_path(model_name) + if not os.path.exists(path) and load_vocab_from is not None: + # self.vocab.vocab should be an empty dict + secondary_path = get_vocab_path(load_vocab_from) + if os.path.exists(secondary_path): + old_vocab = Vocabulary(load_vocab_from) + self.vocab.copy_vocab_from(old_vocab) + else: + raise FileNotFoundError('No pre-trained model under the specified name') + + def __call__(self, obss, device=None): + raw_instrs = [] + max_instr_len = 0 + + for obs in obss: + tokens = re.findall("([a-z]+)", obs["mission"].lower()) + instr = numpy.array([self.vocab[token] for token in tokens]) + raw_instrs.append(instr) + max_instr_len = max(len(instr), max_instr_len) + + instrs = numpy.zeros((len(obss), max_instr_len)) + + for i, instr in enumerate(raw_instrs): + instrs[i, :len(instr)] = instr + + instrs = torch.tensor(instrs, device=device, dtype=torch.long) + return instrs + +class InstructionOnlyPreprocessor(object): + def __init__(self, model_name, load_vocab_from=None): + self.model_name = model_name + self.vocab = Vocabulary(model_name) + + path = get_vocab_path(model_name) + if not os.path.exists(path) and load_vocab_from is not None: + # self.vocab.vocab should be an empty dict + secondary_path = get_vocab_path(load_vocab_from) + if os.path.exists(secondary_path): + old_vocab = Vocabulary(load_vocab_from) + self.vocab.copy_vocab_from(old_vocab) + else: + raise FileNotFoundError('No pre-trained model under the specified name') + + def __call__(self, instructions, device=None): + raw_instrs = [] + max_instr_len = 0 + + for instruction in instructions: + tokens = re.findall("([a-z]+)", instruction.lower()) + instr = numpy.array([self.vocab[token] for token in tokens]) + raw_instrs.append(instr) + max_instr_len = max(len(instr), max_instr_len) + + instrs = numpy.zeros((len(instructions), max_instr_len)) + + for i, instr in enumerate(raw_instrs): + instrs[i, :len(instr)] = instr + + instrs = torch.tensor(instrs, device=device, dtype=torch.long) + return instrs + +class RawImagePreprocessor(object): + def __call__(self, obss, device=None): + images = numpy.array([obs["image"] for obs in obss]) + images = torch.tensor(images, device=device, dtype=torch.float) + return images + +class ObjectPreprocessor(object): + def __call__(self, obss, device=None): + objects = numpy.array([obs["objects"] for obs in obss]) + objects = torch.tensor(objects, device=device, dtype=torch.float) + return objects + +class JointPreprocessor(object): + def __call__(self, obss, device=None): + pos = numpy.array([obs["pm_position"] for obs in obss]) + return torch.tensor(pos, device=device, dtype=torch.float) + +class RawImageDirPreprocessor(object): + def __call__(self, obss, device=None): + images = numpy.array([obs["image"] for obs in obss]) + images = torch.tensor(images, device=device, dtype=torch.float) + directions = numpy.array([obs["direction"] for obs in obss]) + directions = torch.tensor(directions, device=device, dtype=torch.float) + directions_channel = (directions.reshape(directions.shape[0], 1, 1, 1) + 1) * (images==10).long()[...,0].unsqueeze(-1).float().to(device) + images = torch.cat((images, directions_channel), dim=-1) + return images + +class IntImagePreprocessor(object): + def __init__(self, num_channels, max_high=255): + self.num_channels = num_channels + self.max_high = max_high + self.offsets = numpy.arange(num_channels) * max_high + self.max_size = int(num_channels * max_high) + + def __call__(self, obss, device=None): + images = numpy.array([obs["image"] for obs in obss]) + # The padding index is 0 for all the channels + images = (images + self.offsets) * (images > 0) + images = torch.tensor(images, device=device, dtype=torch.long) + return images + + +class ObssPreprocessor: + def __init__(self, model_name, obs_space=None, load_vocab_from=None): + self.image_preproc = RawImagePreprocessor() + self.instr_preproc = InstructionsPreprocessor(model_name, load_vocab_from) + self.vocab = self.instr_preproc.vocab + self.obs_space = { + "image": 147, + "instr": self.vocab.max_size + } + + def __call__(self, obss, device=None): + obs_ = babyai.rl.DictList() + + if "image" in self.obs_space.keys(): + obs_.image = self.image_preproc(obss, device=device) + + if "instr" in self.obs_space.keys(): + obs_.instr = self.instr_preproc(obss, device=device) + + return obs_ + +class ObssContPreprocessor: + def __init__(self, model_name, obs_space=None, load_vocab_from=None): + # self.image_preproc = RawImagePreprocessor() + self.obj_preproc = ObjectPreprocessor() + self.joint_preproc = JointPreprocessor() + self.instr_preproc = InstructionsPreprocessor(model_name, load_vocab_from) + self.vocab = self.instr_preproc.vocab + self.obs_space = { + # "image": 65536, + "objects": 20, + "pm_positions": 2, + "instr": self.vocab.max_size + } + + def __call__(self, obss, device=None): + obs_ = babyai.rl.DictList() + + # if "image" in self.obs_space.keys(): + # obs_.image = self.image_preproc(obss, device=device) + + if "objects" in self.obs_space.keys(): + obs_.objects = self.obj_preproc(obss, device=device) + + if "pm_positions" in self.obs_space.keys(): + obs_.joint_positions = self.joint_preproc(obss, device=device) + + if "instr" in self.obs_space.keys(): + obs_.instr = self.instr_preproc(obss, device=device) + + return obs_ + +class ObssDirPreprocessor: + def __init__(self, model_name, obs_space=None, load_vocab_from=None): + self.image_dir_preproc = RawImageDirPreprocessor() + self.instr_preproc = InstructionsPreprocessor(model_name, load_vocab_from) + self.vocab = self.instr_preproc.vocab + self.obs_space = { + "image": 256, + "instr": self.vocab.max_size + } + + def __call__(self, obss, device=None): + obs_ = babyai.rl.DictList() + + if "image" in self.obs_space.keys(): + obs_.image = self.image_dir_preproc(obss, device=device) + + if "instr" in self.obs_space.keys(): + obs_.instr = self.instr_preproc(obss, device=device) + + return obs_ + +class IntObssPreprocessor(object): + def __init__(self, model_name, obs_space, load_vocab_from=None): + image_obs_space = obs_space.spaces["image"] + self.image_preproc = IntImagePreprocessor(image_obs_space.shape[-1], + max_high=image_obs_space.high.max()) + self.instr_preproc = InstructionsPreprocessor(load_vocab_from or model_name) + self.vocab = self.instr_preproc.vocab + self.obs_space = { + "image": self.image_preproc.max_size, + "instr": self.vocab.max_size + } + + def __call__(self, obss, device=None): + obs_ = babyai.rl.DictList() + + if "image" in self.obs_space.keys(): + obs_.image = self.image_preproc(obss, device=device) + + if "instr" in self.obs_space.keys(): + obs_.instr = self.instr_preproc(obss, device=device) + + return obs_ \ No newline at end of file diff --git a/babyai/babyai/utils/log.py b/babyai/babyai/utils/log.py new file mode 100644 index 0000000..35ba133 --- /dev/null +++ b/babyai/babyai/utils/log.py @@ -0,0 +1,42 @@ +import os +import sys +import numpy +import logging + +from .. import utils + + +def get_log_dir(log_name): + return os.path.join(utils.storage_dir(), "logs", log_name) + + +def get_log_path(log_name): + return os.path.join(get_log_dir(log_name), "log.log") + + +def synthesize(array): + import collections + d = collections.OrderedDict() + d["mean"] = numpy.mean(array) + d["std"] = numpy.std(array) + if len(array) > 0: + d["min"] = numpy.amin(array) + d["max"] = numpy.amax(array) + else: + d["min"] = numpy.nan + d["max"] = numpy.nan + return d + + +def configure_logging(log_name): + path = get_log_path(log_name) + utils.create_folders_if_necessary(path) + + logging.basicConfig( + level=logging.INFO, + format="%(name)s: %(asctime)s: %(message)s", + handlers=[ + logging.FileHandler(filename=path), + logging.StreamHandler(sys.stdout) + ] + ) diff --git a/babyai/babyai/utils/model.py b/babyai/babyai/utils/model.py new file mode 100644 index 0000000..fd771f5 --- /dev/null +++ b/babyai/babyai/utils/model.py @@ -0,0 +1,52 @@ +import os +import torch +import wandb + +from .. import utils + + +def get_model_dir(model_name): + return os.path.join(utils.storage_dir(), "models", model_name) + + +def get_model_path(model_name): + return os.path.join(get_model_dir(model_name), "model.pt") + +def get_stactpredictor_model_path(model_name): + return os.path.join(get_model_dir(model_name), "stactpredictor_model.pt") + + +def load_model(model_name, raise_not_found=True): + path = get_model_path(model_name) + try: + model = torch.load(path) + model.eval() + return model + except FileNotFoundError: + if raise_not_found: + raise FileNotFoundError("No model found at {}".format(path)) + +def load_stactpredictor_model(model_name, raise_not_found=True): + path = get_stactpredictor_model_path(model_name) + try: + model = torch.load(path) + model.eval() + return model + except FileNotFoundError: + if raise_not_found: + raise FileNotFoundError("No model found at {}".format(path)) + + +def save_model(model, model_name, writer): + path = get_model_path(model_name) + utils.create_folders_if_necessary(path) + torch.save(model, path) + if writer: + writer.save(path) + +def save_stactpredictor_model(model, model_name, writer): + path = get_stactpredictor_model_path(model_name) + utils.create_folders_if_necessary(path) + torch.save(model, path) + if writer: + writer.save(path) diff --git a/babyai/babyai/utils/viz.py b/babyai/babyai/utils/viz.py new file mode 100644 index 0000000..ea4d62d --- /dev/null +++ b/babyai/babyai/utils/viz.py @@ -0,0 +1,169 @@ +""" +This file allows BabyAI environments / policies to be conveniently visualized +in the terminal or in a Jupyter notebook. +""" + +from os import system, name +from IPython.display import clear_output +from gym_minigrid.wrappers import * +from babyai.utils.agent import ModelAgent, BotAgent +import matplotlib.pyplot as plt +import numpy as np +from colorama import Fore, Back, Style, init +from termcolor import colored +import time + +COLORS = { + 'R': Fore.RED, + 'G': Fore.GREEN, + 'B': Fore.BLUE, + 'P': Fore.MAGENTA, + 'Y': Fore.YELLOW, + 'Q': Fore.WHITE, + 'K': Fore.BLACK, + ' ': Fore.RESET, + } +SYMBOLS = { + 'A': '@ ', + 'K': '* ', + 'W': '+ ', + 'B': '# ', + '>': '> ', + '<': '< ', + 'V': 'v ', + '^': '^ ' +} + +def clear(): + clear_output(wait=True) + if name == 'nt': + _ = system('cls') + else: + _ = system('clear') + + +def emph(text, color="B"): + ascii_color = COLORS.get(color, Fore.BLACK) + return ascii_color + Style.BRIGHT + text + Fore.BLACK + Style.RESET_ALL + + +def info(text, heading=None, heading_color="B"): + if heading: + return f"\t{emph(heading)}: {text}" + else: + return f"\t{text}" + + +def viz(env, show_env_name=True, show_mission=True, aux_info=None, mode="colored_text"): + """ Visualize a BabyAI environment, optionally displaying the env name, mission, and + arbitrary auxiliary information. + + Modes: colored_text, image + """ + if "Parallel" in env.spec.id or "hrl" in dir(env): + mission = env.gen_obs()[0]['mission'] + else: + mission = env.gen_obs()['mission'] + if mode == "image": + print() + print(info(env.spec.id, heading="Env")) + print(info(mission, heading="Mission")) + print(aux_info) + plt.imshow(env.render(mode="rgb_array")) + plt.show() + elif mode == "colored_text": + env_str = env.__str__() + env_str_ll = env_str.split("\n") + # Clear out wrapper from plain text representation + width = len(env_str_ll[1]) + env_str_ll[0] = env_str_ll[0][-width:] + env_str_ll[-1] = env_str_ll[-1][:width] + # Output the representation in appropriate colors + for l, line in enumerate(env_str_ll): + for i in range(0, len(line)-1, 2): + if line[i] == " ": + print(2*line[i], end="") + else: + print(emph(SYMBOLS.get(line[i], 2*line[i]), color=line[i+1]), end="") + if show_env_name and l == len(env_str_ll)//2 - 3: + print(info(env.spec.id, heading="Env"), end="") + elif show_mission and l == len(env_str_ll)//2 - 1: + print(info(mission, heading="Mission"), end="") + elif aux_info and l == len(env_str_ll)//2 + 1: + print(aux_info, end="") + print() + + +def watch(agent, env, max_t=None, pause=.5, mode="colored_text", hrl=False, bot=False, clear_screen=True): + """ Visualize an agent working through a BabyAI environment. + + Modes: colored_text, image, static + """ + env.reset() + if agent == "BOT": + bot = True + if not hrl: + agent = BotAgent(env) + else: + agent = BotAgent(env.envs[0]) + if mode == "static": + obs = env.gen_obs() + x = [env.render(mode="rgb_array", highlight=False)] + done = False + if hrl: + obs = obs[0] + print() + print(info(env.spec.id, "Env")) + print(info(obs['mission'], "Mission")) + print(info("", "Actions"), end="") + t = 0 + while not done: + t += 1 + if not bot: + a = agent.act(obs)['action'].item() + else: + a = agent.act(obs)['action'].value + print(a, end=" ") + if t % 25 == 0: + print('\n\t\t', end="") + if hrl: + a = [a] + obs, reward, done, env_info = env.step(a) + if hrl: + obs = obs[0] + x.append(env.render(mode="rgb_array", highlight=False)) + if t == max_t: + break + all = np.array(x) + all_max = all.max(axis=0).astype(int) + all_mean = all.mean(axis=0).astype(int) + out = (0.5 * all_max).astype(int) + (0.5 * all_mean).astype(int) + print() + print(info(done, "Done")) + print(info(reward, "Reward")) + plt.imshow(out) + else: + obs = env.gen_obs() + if hrl: + obs = obs[0] + viz(env, mode=mode) + time.sleep(pause) + done = False + t = 0 + while not done: + t += 1 + if not bot: + a = agent.act(obs)['action'].item() + else: + a = agent.act(obs)['action'].value + if hrl: + a = [a] + obs, reward, done, env_info = env.step(a) + if clear_screen: + clear() + viz(env, aux_info=info(a, "Action") + info(reward, "Reward") + info(done, "Done") + info(env_info, "Info"), mode=mode) + time.sleep(pause) + if t == max_t: + break + if hrl: + obs = obs[0] \ No newline at end of file diff --git a/babyai/docs/bonus_levels.md b/babyai/docs/bonus_levels.md new file mode 100644 index 0000000..1ca77f1 --- /dev/null +++ b/babyai/docs/bonus_levels.md @@ -0,0 +1,258 @@ +# Bonus Levels + +The levels described in this file were created prior to the ICLR19 publication. +We've chosen to keep these because they may be useful for curriculum learning +or for specific research projects. + +Please note that these levels are not as widely tested as the ICLR19 levels. +If you run into problems, please open an issue on this repository. + +In naming the levels we adhere to the following convention: +- `N2`, `N3`, `N4` refers to the number of objects in the room/environment +- `S2`, `S3`, `S4` refers to the size of the room/environment +- in `Debug` levels the episode is terminated once the agent does something unnecessary or fatally bad, for example + - picks up an object which it is not supposed to pick up (unnecessary) + - open the door that it is supposed to open _after_ another one (fatal) +- in `Carrying` levels the agent starts carrying the object of interest +- in `Dist` levels distractor objects are placed to confuse the agent + +## OpenRedDoor + +- Environment: The agent is placed in a room with a door. +- instruction: open the red door +- Evaluate: image understanding +- Level id: `BabyAI-OpenRedDoor-v0` + +

+ +## OpenDoor + +- Environment: The agent is placed in a room with 4 different doors. The environment is done when the instruction is executed in the regular mode or when a door is opened in the `debug` mode. +- instruction: open a door of: + - a given color or location in `OpenDoor` + - a given color in `OpenDoorColor` + - a given location in `OpenDoorLoc` +- Evaluate: image & text understanding, memory in `OpenDoor` and `OpenDoorLoc` +- Level id: + - `BabyAI-OpenDoor-v0` + - `BabyAI-OpenDoorDebug-v0` + - `BabyAI-OpenDoorColor-v0` + - `BabyAI-OpenDoorColorDebug-v0` + - `BabyAI-OpenDoorLoc-v0` + - `BabyAI-OpenDoorLocDebug-v0` + +

+ +## GoToDoor + +- Environment: The agent is placed in a room with 4 different doors. +- Instruction: Go to a door of a given of a given color. +- Evaluate: image & text understanding +- Level id: `BabyAI-GoToDoor-v0` + +## GoToObjDoor + +- Environment: The agent is placed in a room with 4 different doors and 5 different objects. +- Instruction: Go to an object or a door of a given type and color +- Evaluate: image & text understanding +- Level id: `BabyAI-GoToObjDoor-v0` + +

+ +## ActionObjDoor + +- Environment: The agent is placed in a room with 4 different doors and 5 different objects. +- Instruction: [Pick up an object] or [go to an object or door] or [open a door] +- Evaluate: image & text understanding +- Level id: `BabyAI-ActionObjDoor-v0` + +

+ +## UnlockPickup + +- Environment: The agent is placed in a room with a key and a locked door. The door opens onto a room with a box. Rooms have either no distractors in `UnlockPickup` or 4 distractors in `UnlockPickupDist`. +- instruction: pick up an object of a given type and color +- Evaluate: image understanding, memory in `UnlockPickupDist` +- Level id: `BabyAI-UnlockPickup-v0`, `BabyAI-UnlockPickupDist-v0` + +

+ + +

+ +## BlockedUnlockPickup + +- Environment: The agent is placed in a room with a key and a locked door. The door is blocked by a ball. The door opens onto a room with a box. +- instruction: pick up the box +- Evaluate: image understanding +- Level id: `BabyAI-BlockedUnlockPickup-v0` + +

+ +## UnlockToUnlock + +- Environment: The agent is placed in a room with a key of color A and two doors of color A and B. The door of color A opens onto a room with a key of color B. The door of color B opens onto a room with a ball. +- instruction: pick up the ball +- Evaluate: image understanding +- Level id: `BabyAI-UnlockToUnlock-v0` + +

+ +## KeyInBox + +- Environment: The agent is placed in a room with a box containing a key and a locked door. +- instruction: open the door +- Evaluate: image understanding +- Level id: `BabyAI-KeyInBox-v0` + +

+ +## PickupDist + +- Environment: The agent is placed in a room with 5 objects. The environment is done when the instruction is executed in the regular mode or when any object is picked in the `debug` mode. +- instruction: pick up an object of a given type and color +- Evaluate: image & text understanding +- Level id: + - `BabyAI-PickupDist-v0` + - `BabyAI-PickupDistDebug-v0` + +

+ +## PickupAbove + +- Environment: The agent is placed in the middle room. An object is placed in the top-middle room. +- instruction: pick up an object of a given type and color +- Evaluate: image & text understanding, memory +- Level id: `BabyAI-PickupAbove-v0` + +

+ +## OpenRedBlueDoors + +- Environment: The agent is placed in a room with a red door and a blue door facing each other. The environment is done when the instruction is executed in the regular mode or when the blue door is opened in the `debug` mode. +- instruction: open the red door then open the blue door +- Evaluate: image understanding, memory +- Level id: + - `BabyAI-OpenRedBlueDoors-v0` + - `BabyAI-OpenRedBlueDoorsDebug-v0` + +

+ +## OpenTwoDoors + +- Environment: The agent is placed in a room with a red door and a blue door facing each other. The environment is done when the instruction is executed in the regular mode or when the second door is opened in the `debug` mode. +- instruction: open the door of color X then open the door of color Y +- Evaluate: image & text understanding, memory +- Level id: + - `BabyAI-OpenTwoDoors-v0` + - `BabyAI-OpenTwoDoorsDebug-v0` + +

+ +## FindObj + +- Environment: The agent is placed in the middle room. An object is placed in one of the rooms. Rooms have a size of 5 in `FindObjS5`, 6 in `FindObjS6` or 7 in `FindObjS7`. +- instruction: pick up an object of a given type and color +- Evaluate: image understanding, memory +- Level id: + - `BabyAI-FindObjS5-v0` + - `BabyAI-FindObjS6-v0` + - `BabyAI-FindObjS7-v0` + +

+ + + +

+ +## FourObjs + +- Environment: The agent is placed in the middle room. 4 different objects are placed in the adjacent rooms. Rooms have a size of 5 in `FourObjsS5`, 6 in `FourObjsS6` or 7 in `FourObjsS7`. +- instruction: pick up an object of a given type and location +- Evaluate: image understanding, memory +- Level id: + - `BabyAI-FourObjsS5-v0` + - `BabyAI-FourObjsS6-v0` + - `BabyAI-FourObjsS7-v0` + +

+ + + +

+ +## KeyCorridor + +- Environment: The agent is placed in the middle of the corridor. One of the rooms is locked and contains a ball. Another room contains a key for opening the previous one. The level is split into a curriculum starting with one row of 3x3 rooms, going up to 3 rows of 6x6 rooms. +- instruction: pick up an object of a given type +- Evaluate: image understanding, memory +- Level ids: + - `BabyAI-KeyCorridorS3R1-v0` + - `BabyAI-KeyCorridorS3R2-v0` + - `BabyAI-KeyCorridorS3R3-v0` + - `BabyAI-KeyCorridorS4R3-v0` + - `BabyAI-KeyCorridorS5R3-v0` + - `BabyAI-KeyCorridorS6R3-v0` + +

+ + + + + + +

+ +## 1Room + +- Environment: The agent is placed in a room with a ball. The level is split into a curriculum with rooms of size 8, 12, 16 or 20. +- instruction: pick up the ball +- Evaluate: image understanding, memory +- Level ids: + - `BabyAI-1RoomS8-v0` + - `BabyAI-1RoomS12-v0` + - `BabyAI-1RoomS16-v0` + - `BabyAI-1RoomS20-v0` + +

+ + + + +

+ +## OpenDoorsOrder + +- Environment: There are two or four doors in a room. The agent has to open + one or two of the doors in a given order. +- Instruction: + - open the X door + - open the X door and then open the Y door + - open the X door after you open the Y door +- Level ids: + - `BabyAI-OpenDoorsOrderN2-v0` + - `BabyAI-OpenDoorsOrderN4-v0` + - `BabyAI-OpenDoorsOrderN2Debug-v0` + - `BabyAI-OpenDoorsOrderN4Debug-v0` + +## PutNext + +- Environment: Single room with multiple objects. One of the objects must be moved next to another specific object. +- instruction: put the X next to the Y +- Level ids: + - `BabyAI-PutNextS4N1-v0` + - `BabyAI-PutNextS5N1-v0` + - `BabyAI-PutNextS6N2-v0` + - `BabyAI-PutNextS6N3-v0` + - `BabyAI-PutNextS7N4-v0` + - `BabyAI-PutNextS6N2Carrying-v0` + - `BabyAI-PutNextS6N3Carrying-v0` + - `BabyAI-PutNextS7N4Carrying-v0` + +## MoveTwoAcross + +- Environment: Two objects must be moved so that they are next to two other objects. This task is structured to have a very large number of possible instructions. +- instruction: put the A next to the B and the C next to the D +- Level ids: + - `BabyAI-MoveTwoAcrossS5N2-v0` + - `BabyAI-MoveTwoAcrossS8N9-v0` diff --git a/babyai/docs/codebase.md b/babyai/docs/codebase.md new file mode 100644 index 0000000..69fdafc --- /dev/null +++ b/babyai/docs/codebase.md @@ -0,0 +1,17 @@ +# Structure of the Codebase +In `babyai`: +- `levels` contains the code for all levels +- `bot.py` is a heuristic stack-based bot that can solve all levels +- `imitation.py` is an imitation learning implementation +- `rl` contains an implementation of the Proximal Policy Optimization (PPO) RL algorithm +- `model.py` contains the neural network code + +In `scripts`: +- use `train_il.py` to train an agent with imitation learning, using demonstrations from the bot, from another agent or even provided by a human +- use `train_rl.py` to train an agent with reinforcement learning +- use `make_agent_demos.py` to generate demonstrations with the bot or with another agent +- use `make_human_demos.py` to make and save human demonstrations +- use `train_intelligent_expert.py` to train an agent with an interactive imitation learning algorithm that incrementally grows the training set by adding demonstrations for the missions that the agent currently fails +- use `evaluate.py` to evaluate a trained agent +- use `enjoy.py` to visualze an agent's behavior +- use `manual_control.py` to visualize example missions from BabyAI levels diff --git a/babyai/docs/iclr19_levels.md b/babyai/docs/iclr19_levels.md new file mode 100644 index 0000000..6d842e0 --- /dev/null +++ b/babyai/docs/iclr19_levels.md @@ -0,0 +1,142 @@ +# ICLR19 Levels + +The levels described in this file were created for the ICLR19 submission. +These form a curriculum that is subdivided according to specific competencies. + +## GoToObj + +Go to an object, inside a single room with no doors, no distractors. + +

+ +## GoToRedBall + +Go to the red ball, single room, with obstacles. +The obstacles/distractors are all the same, to eliminate +perceptual complexity. + +

+ +## GoToRedBallGrey + +Go to the red ball, single room, with obstacles. +The obstacles/distractors are all grey boxes, to eliminate +perceptual complexity. No unblocking required. + +

+ +## GoToLocal + +Go to an object, inside a single room with no doors, no distractors. + +

+ +## PutNextLocal + +Put an object next to another object, inside a single room +with no doors, no distractors. + +

+ +## PickUpLoc + +Pick up an object which may be described using its location. This is a +single room environment. + +Competencies: PickUp, Loc. No unblocking. + +

+ +## GoToObjMaze + +Go to an object, the object may be in another room. No distractors. + +

+ +## GoTo + +Go to an object, the object may be in another room. Many distractors. + +

+ +## Pickup + +Pick up an object, the object may be in another room. + +

+ +## UnblockPickup + +Pick up an object, the object may be in another room. The path may +be blocked by one or more obstructors. + +

+ +## Open + +Open a door, which may be in another room. + +

+ +## Unlock + +Maze environment where the agent has to retrieve a key to open a locked door. + +Competencies: Maze, Open, Unlock. No unblocking. + +

+ +## PutNext + +Put an object next to another object. Either of these may be in another room. + +

+ +## Synth + +Union of all instructions from PutNext, Open, Goto and PickUp. The agent +may need to move objects around. The agent may have to unlock the door, +but only if it is explicitly referred by the instruction. + +Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open + +

+ +## SynthLoc + +Like Synth, but a significant share of object descriptions involves +location language like in PickUpLoc. No implicit unlocking. +Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open, Loc + +

+ +## GoToSeq + +Sequencing of go-to-object commands. + +Competencies: Maze, GoTo, Seq. No locked room. No locations. No unblocking. + +

+ +## SynthSeq + +Like SynthLoc, but now with multiple commands, combined just like in GoToSeq. + +Competencies: Maze, Unblock, Unlock, GoTo, PickUp, PutNext, Open, Loc, Seq. No implicit unlocking. + +

+ +## GoToImpUnlock + +Go to an object, which may be in a locked room. No unblocking. + +Competencies: Maze, GoTo, ImpUnlock + +

+ +## BossLevel + +Command can be any sentence drawn from the Baby Language grammar. Union of +all competencies. This level is a superset of all other levels. + +

diff --git a/babyai/docs/train-eval.md b/babyai/docs/train-eval.md new file mode 100644 index 0000000..368f662 --- /dev/null +++ b/babyai/docs/train-eval.md @@ -0,0 +1,38 @@ +# Training + +To train an RL agent run e.g. + +``` +scripts/train_rl.py --env BabyAI-GoToLocal-v0 +``` + +Folders `logs/` and `models/` will be created in the current directory. The default name +for the model is chosen based on the level name, the current time and the other settings (e.g. +`BabyAI-GoToLocal-v0_ppo_expert_filmcnn_gru_mem_seed1_18-10-12-12-45-02`). You can also choose the model +name by setting `--model`. After 5 hours of training you should be getting a success rate of 97-99\%. +A machine readable log can be found in `logs//log.csv`, a human readable in `logs//log.log`. + +To train an agent with IL (imitation learning) first make sure that you have your demonstrations in +`demos/` (Instructions to load the demos are present [here](demo-dataset.md)). Then run e.g. + +``` +scripts/train_il.py --env BabyAI-GoToLocal-v0 --demos +``` + +In the example above we run scripts from the root of the repository, but if you have installed BabyAI as +described above, you can also run all scripts with commands like `/scripts/train_il.py`. + +# Evaluation + +In the same directory where you trained your model run e.g. + +``` +scripts/evaluate.py --env BabyAI-GoToLocal-v0 --model +``` + +to evaluate the performance of your model named `` on 1000 episodes. If you want to see +your agent performing, run + +``` +scripts/enjoy.py --env BabyAI-GoToLocal-v0 --model +``` \ No newline at end of file diff --git a/babyai/docs/troubleshooting.md b/babyai/docs/troubleshooting.md new file mode 100644 index 0000000..705d8b8 --- /dev/null +++ b/babyai/docs/troubleshooting.md @@ -0,0 +1,21 @@ +# Troubleshooting + +If you run into error messages relating to OpenAI gym or PyQT, it may be that the version of those libraries that you have installed is incompatible. You can try upgrading specific libraries with pip3, eg: `pip3 install --upgrade gym`. If the problem persists, please [open an issue](https://github.com/mila-iqia/babyai/issues/new) on this repository and paste a *complete* error message, along with some information about your platform (are you running Windows, Mac, Linux? Are you running this on a Mila machine?). + +## If you cannot install PyQT + +If you cannot install PyQT using pip, another option is to install it using conda instead: + +``` +conda install -c anaconda pyqt +``` + +Alternatively, it is also possible to install PyQT5 manually: + +``` +wget https://files.pythonhosted.org/packages/98/61/fcd53201a23dd94a1264c29095821fdd55c58b4cd388dc7115e5288866db/PyQt5-5.12.1-5.12.2-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl +PYTHONPATH="" +pip3 install --user PyQt5-5.12.1-5.12.2-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl +``` + +Finally, if none of the above options work, note that PyQT is only needed to produce graphics for human viewing, and isn't needed during training. As such, it's possible to install BabyAI without PyQT and train a policy. To do so, you can comment out the `gym_minigrid` dependency in `setup.py`, clone the [gym-minigrid repository](https://github.com/maximecb/gym-minigrid) manually, and comment out the `pyqt5` dependency in the `setup.py` of the minigrid repository. diff --git a/babyai/environment.yaml b/babyai/environment.yaml new file mode 100644 index 0000000..7fdd6b9 --- /dev/null +++ b/babyai/environment.yaml @@ -0,0 +1,13 @@ +name: babyai +channels: + - pytorch + - defaults +dependencies: + - python=3.6 + - pytorch=1.4 + - numpy + - blosc + - pip + - pip: + - gym + - scikit-build diff --git a/babyai/nn/GPTJ_with_value_head.py b/babyai/nn/GPTJ_with_value_head.py new file mode 100644 index 0000000..2d2da29 --- /dev/null +++ b/babyai/nn/GPTJ_with_value_head.py @@ -0,0 +1,437 @@ +import transformers +from transformers.modeling_outputs import ModelOutput +from transformers import top_k_top_p_filtering + +from dataclasses import dataclass +from typing import Optional, Tuple + +import torch +import torch.nn.functional as F +from torch import nn +from torch.nn import CrossEntropyLoss +from torch.cuda.amp import custom_fwd, custom_bwd + +import numpy as np +import time + +from bitsandbytes.functional import quantize_blockwise, dequantize_blockwise + +from tqdm.auto import tqdm +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +class FrozenBNBLinear(nn.Module): + def __init__(self, weight, absmax, code, bias=None): + assert isinstance(bias, nn.Parameter) or bias is None + super().__init__() + self.out_features, self.in_features = weight.shape + self.register_buffer("weight", weight.requires_grad_(False)) + self.register_buffer("absmax", absmax.requires_grad_(False)) + self.register_buffer("code", code.requires_grad_(False)) + self.adapter = None + self.bias = bias + + def forward(self, input): + output = DequantizeAndLinear.apply(input, self.weight, self.absmax, self.code, self.bias) + if self.adapter: + output += self.adapter(input) + return output + + @classmethod + def from_linear(cls, linear: nn.Linear) -> "FrozenBNBLinear": + weights_int8, state = quantize_blockise_lowmemory(linear.weight) + return cls(weights_int8, *state, linear.bias) + + def __repr__(self): + return f"{self.__class__.__name__}({self.in_features}, {self.out_features})" + + +class DequantizeAndLinear(torch.autograd.Function): + @staticmethod + @custom_fwd + def forward(ctx, input: torch.Tensor, weights_quantized: torch.ByteTensor, + absmax: torch.FloatTensor, code: torch.FloatTensor, bias: torch.FloatTensor): + weights_deq = dequantize_blockwise(weights_quantized, absmax=absmax, code=code) + ctx.save_for_backward(input, weights_quantized, absmax, code) + ctx._has_bias = bias is not None + return F.linear(input, weights_deq, bias) + + @staticmethod + @custom_bwd + def backward(ctx, grad_output: torch.Tensor): + assert not ctx.needs_input_grad[1] and not ctx.needs_input_grad[2] and not ctx.needs_input_grad[3] + input, weights_quantized, absmax, code = ctx.saved_tensors + # grad_output: [*batch, out_features] + weights_deq = dequantize_blockwise(weights_quantized, absmax=absmax, code=code) + grad_input = grad_output @ weights_deq + grad_bias = grad_output.flatten(0, -2).sum(dim=0) if ctx._has_bias else None + return grad_input, None, None, None, grad_bias + + +class FrozenBNBEmbedding(nn.Module): + def __init__(self, weight, absmax, code): + super().__init__() + self.num_embeddings, self.embedding_dim = weight.shape + self.register_buffer("weight", weight.requires_grad_(False)) + self.register_buffer("absmax", absmax.requires_grad_(False)) + self.register_buffer("code", code.requires_grad_(False)) + self.adapter = None + + def forward(self, input, **kwargs): + with torch.no_grad(): + # note: both quantuized weights and input indices are *not* differentiable + weight_deq = dequantize_blockwise(self.weight, absmax=self.absmax, code=self.code) + output = F.embedding(input, weight_deq, **kwargs) + if self.adapter: + output += self.adapter(input) + return output + + @classmethod + def from_embedding(cls, embedding: nn.Embedding) -> "FrozenBNBEmbedding": + weights_int8, state = quantize_blockise_lowmemory(embedding.weight) + return cls(weights_int8, *state) + + def __repr__(self): + return f"{self.__class__.__name__}({self.num_embeddings}, {self.embedding_dim})" + + +def quantize_blockise_lowmemory(matrix: torch.Tensor, chunk_size: int = 2 ** 20): + assert chunk_size % 4096 == 0 + code = None + chunks = [] + absmaxes = [] + flat_tensor = matrix.view(-1) + for i in range((matrix.numel() - 1) // chunk_size + 1): + input_chunk = flat_tensor[i * chunk_size: (i + 1) * chunk_size].clone() + quantized_chunk, (absmax_chunk, code) = quantize_blockwise(input_chunk, code=code) + chunks.append(quantized_chunk) + absmaxes.append(absmax_chunk) + + matrix_i8 = torch.cat(chunks).reshape_as(matrix) + absmax = torch.cat(absmaxes) + return matrix_i8, (absmax, code) + + +def convert_to_int8(model): + """Convert linear and embedding modules to 8-bit with optional adapters""" + for module in list(model.modules()): + for name, child in module.named_children(): + if isinstance(child, nn.Linear) and name not in ['summary']: # no quantization of value head + print('name: {}, child:{}'.format(name, child)) + setattr( + module, + name, + FrozenBNBLinear( + weight=torch.zeros(child.out_features, child.in_features, dtype=torch.uint8), + absmax=torch.zeros((child.weight.numel() - 1) // 4096 + 1), + code=torch.zeros(256), + bias=child.bias, + ), + ) + elif isinstance(child, nn.Embedding): + setattr( + module, + name, + FrozenBNBEmbedding( + weight=torch.zeros(child.num_embeddings, child.embedding_dim, dtype=torch.uint8), + absmax=torch.zeros((child.weight.numel() - 1) // 4096 + 1), + code=torch.zeros(256), + ) + ) + + +@dataclass +class CausalLMOutputWithCrossAttentions(ModelOutput): + loss: Optional[torch.FloatTensor] = None + logits: torch.FloatTensor = None + past_key_values: Optional[Tuple[Tuple[torch.FloatTensor]]] = None + hidden_states: Optional[Tuple[torch.FloatTensor]] = None + attentions: Optional[Tuple[torch.FloatTensor]] = None + value: Optional[torch.FloatTensor] = None + + +class ValueHead(nn.Module): + """The ValueHead class implements a head for GPTJ that returns a scalar for each output token.""" + + def __init__(self, config): + super().__init__() + + self.detach_head = False + self.summary_type = config.summary_type if hasattr(config, "summary_type") else "last" + if self.summary_type == "attn": + raise NotImplementedError + + self.summary = nn.Identity() + if hasattr(config, "summary_use_proj") and config.summary_use_proj: + if hasattr(config, "summary_proj_to_labels") and config.summary_proj_to_labels and config.num_labels > 0: + num_classes = config.num_labels + else: + num_classes = config.hidden_size + self.summary = nn.Linear(config.hidden_size, num_classes) + + self.activation = nn.Identity() + if hasattr(config, "summary_activation") and config.summary_activation == "tanh": + self.activation = nn.Tanh() + + self.first_dropout = nn.Identity() + if hasattr(config, "summary_first_dropout") and config.summary_first_dropout > 0: + self.first_dropout = nn.Dropout(config.summary_first_dropout) + + self.last_dropout = nn.Identity() + if hasattr(config, "summary_last_dropout") and config.summary_last_dropout > 0: + self.last_dropout = nn.Dropout(config.summary_last_dropout) + + self.flatten = nn.Flatten() + + def forward(self, hidden_states, cls_index=None): + if self.detach_head: + output = hidden_states.detach() + else: + output = hidden_states + # output = self.first_dropout(output) + output = self.summary(output) + output = self.activation(output) + # output = self.last_dropout(output) + + return output + + +class GPTJBlock(transformers.models.gptj.modeling_gptj.GPTJBlock): + def __init__(self, config): + super().__init__(config) + + convert_to_int8(self.attn) + convert_to_int8(self.mlp) + + +class GPTJModel(transformers.models.gptj.modeling_gptj.GPTJModel): + def __init__(self, config): + super().__init__(config) + convert_to_int8(self) + + +class GPTJForCausalLM(transformers.models.gptj.modeling_gptj.GPTJForCausalLM): + def __init__(self, config): + super().__init__(config) + transformers.models.gptj.modeling_gptj.GPTJBlock = GPTJBlock + convert_to_int8(self) + + +class GPTJForCausalLMWithValueModel(transformers.models.gptj.modeling_gptj.GPTJForCausalLM): + _keys_to_ignore_on_load_missing = [r"h\.\d+\.attn\.masked_bias", r"h\.\d+\.attn\.bias"] + + def __init__(self, config): + super().__init__(config) + config.num_labels = 1 + self.v_head = ValueHead(config) + + # Model parallel + self.model_parallel = False + self.device_map = None + + # Initialize weights and apply final processing + self.post_init() + + def forward( + self, + input_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[Tuple[Tuple[torch.Tensor]]] = None, + attention_mask: Optional[torch.FloatTensor] = None, + token_type_ids: Optional[torch.LongTensor] = None, + position_ids: Optional[torch.LongTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + labels: Optional[torch.LongTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ): + loss = None + transformer_outputs = self.transformer( + input_ids, + past_key_values=past_key_values, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + ) + + hidden_states = transformer_outputs[0] + + lm_logits = self.lm_head(hidden_states) + value = self.v_head(hidden_states).squeeze(-1) + + if labels is not None: + # Shift so that tokens < n predict n + shift_logits = lm_logits[..., :-1, :].contiguous() + shift_labels = labels[..., 1:].contiguous() + # print("shift_labels: {}".format(shift_labels)) + # print("shift logit shape:{}".format(shift_logits.shape)) + # print("shift logit transpose shape:{}".format(torch.transpose(shift_logits, 1, 2).shape)) + # print("shift labels shape:{}".format(shift_labels.shape)) + # print("shift labels view shape:{}".format(shift_labels.view(-1).shape)) + # Flatten the tokens + loss_fct = CrossEntropyLoss() + loss = loss_fct(torch.transpose(shift_logits, 1, 2), shift_labels) + + loss = loss.to(hidden_states.dtype) + + if not return_dict: + if loss is not None: + outputs = {'loss': loss, 'lm_logits': lm_logits, 'transformers': transformer_outputs[1:], + 'value': value} + return outputs + else: + # outputs = (lm_logits,) + transformer_outputs[1:] + (value,) + outputs = {'lm_logits': lm_logits, 'transformers': transformer_outputs[1:], 'value': value} + return outputs + + return CausalLMOutputWithCrossAttentions( + loss=loss, + logits=lm_logits, + past_key_values=transformer_outputs.past_key_values, + hidden_states=transformer_outputs.hidden_states, + attentions=transformer_outputs.attentions, + value=value, + ) + + +class GPTJForCausalLMWithValueModel_quantized(GPTJForCausalLMWithValueModel): + def __init__(self, config): + super().__init__(config) + convert_to_int8(self) + + +def respond_to_batch(model, queries, txt_len=20, top_k=0, top_p=1.0): + """Sample text from language model.""" + input_ids = queries['input_ids'] + attention_mask = queries['attention_mask'] + for i in range(txt_len): + # Get Logits + outputs = model(input_ids, attention_mask=attention_mask) + next_token_logits = outputs['lm_logits'][:, -1, :] + next_token_logits = top_k_top_p_filtering(next_token_logits, top_k=top_k, top_p=top_p) + # Sample + probs = F.softmax(next_token_logits, dim=-1) + next_token = torch.multinomial(probs, num_samples=1).squeeze(1) + input_ids = torch.cat([input_ids, next_token.unsqueeze(-1)], dim=-1) + attention_mask = torch.cat([attention_mask, torch.ones((attention_mask.shape[0], 1), device=device)], dim=-1) + return input_ids[:, -txt_len:] + + +def perplexity(model, inputs_ids, attention_mask, len_subgoals): + target_ids = inputs_ids.clone() + target_ids[:, :-len_subgoals] = -100 + with torch.no_grad(): + # t1 = time.time() + outputs = model(inputs_ids, attention_mask=attention_mask, labels=target_ids) + # t2 = time.time() + # print("Forward pass duration: {}".format(t2-t1)) + neg_log_likelihood = outputs['loss'] + # print("nll: {}".format(neg_log_likelihood)) + if inputs_ids.shape[0] == 1: + return torch.exp(neg_log_likelihood).unsqueeze(dim=0) + else: + return torch.exp(neg_log_likelihood) + + +def ranking_subgoals(model, prompt, attention_mask, subgoals_tokenized): + perplexity_matrix = [] # final dimension: nbr_prompts x nbr_subgoals + + for s in subgoals_tokenized.keys(): + # print("prompt.shape: {}".format(prompt.shape)) + # print("attention_mask.shape: {}".format(attention_mask.shape)) + # print("sg tokenized shape: {}".format(subgoals_tokenized[s]['input_ids'].shape)) + # print("repeat_shape: {}".format(torch.repeat_interleave(subgoals_tokenized[s]['input_ids'], prompt.shape[0], dim=0).shape)) + # print("ones_shape: {}".format(torch.ones((subgoals_tokenized[s]['input_ids'].shape[0], prompt.shape[0]), device=device).shape)) + + input_ids = torch.cat( + [prompt, torch.repeat_interleave(subgoals_tokenized[s]['input_ids'], prompt.shape[0], dim=0)], dim=1) + update_attention_mask = torch.cat( + [attention_mask, torch.ones((prompt.shape[0], subgoals_tokenized[s]['input_ids'].shape[1]), device=device)], + dim=-1) + # print("input_ids.shape: {}".format(input_ids.shape)) + # print("update_attention_mask.shape: {}".format(update_attention_mask.shape)) + ppl = perplexity(model, input_ids, update_attention_mask, + subgoals_tokenized[s]['input_ids'].shape[1]).unsqueeze( + dim=0) + # print(ppl) + perplexity_matrix.append(ppl) + + # print(torch.cat(perplexity_matrix, dim=0)) + perplexity_matrix = torch.transpose(torch.cat(perplexity_matrix, dim=0), 0, + 1) # before transpose dimension are: nbr_subgoals x nbr_prompts + + return perplexity_matrix.cpu().detach().numpy() + + +def choosing_subgoals(model, prompt, attention_mask, subgoal_tokenized, eps): + ppl_matrix = ranking_subgoals(model, prompt, attention_mask, subgoal_tokenized) + + subgoal_id_array = np.ones(prompt.shape[0]) + # print("The ppl matrix: {}".format(ppl_matrix)) + for i in range(prompt.shape[0]): + if np.random.rand() > eps: + subgoal_id_array[i] = np.argmin(ppl_matrix[i]) + else: + inv_ppl = 1 / ppl_matrix[i] + proba = np.exp(inv_ppl)/np.sum(np.exp(inv_ppl)) + subgoal_id_array[i] = np.random.choice(np.arange(ppl_matrix.shape[1]), p=proba) + return subgoal_id_array + + +# config = transformers.GPTJConfig.from_pretrained("EleutherAI/gpt-j-6B") +# config = transformers.GPTJConfig.from_json_file('storage/models/GPTJ/config.json') + +# tokenizer = transformers.AutoTokenizer.from_pretrained('storage/models/GPTJ') +# tokenizer = GPT2Tokenizer.from_pretrained('EleutherAI/gpt-j-6B') + +"""tokenizer = transformers.AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B", padding_side="left") +tokenizer.add_special_tokens({'pad_token': tokenizer.eos_token}) + +# transformers.models.gptj.modeling_gptj.GPTJBlock = GPTJBlock +gpt = GPTJForCausalLMWithValueModel_quantized.from_pretrained("hivemind/gpt-j-6B-8bit", low_cpu_mem_usage=True) + + +gpt.to(device)""" + +"""query_txt_1 = "My most favourite movie is" +query_txt_2 = "My most favourite movies" +query_txt_3 = "My most favourite movie is Red" +queries_txt = [query_txt_1, query_txt_2, query_txt_3] + +queries = tokenizer(queries_txt, return_tensors='pt', padding=True).to(device) + +print("input_ids: {}".format(queries["input_ids"])) +print("attention_mask: {}".format(queries["attention_mask"])) + +print(queries) +responses = respond_to_batch(gpt, queries, txt_len=10) + +for i in range(responses.shape[0]): + response_txt = tokenizer.decode(responses[i]) + query_txt = queries_txt[i] + print(query_txt + response_txt)""" + +"""prompt = [ + "Possible action of the agent: go forward, turn right, turn left \n Goal of the agent: Go to green ball \n Past observations and actions \n Observation 1: A green key is 2 step left and 1 step in front, a grey box is 2 step left, a purple box is 1 step left and 1 step in front, a green box is 2 step in front, a blue key is 1 step right and 2 step in front, a green ball is 2 step right and 2 step in front \n Action 1: ", + "Possible action of the agent: go forward, turn right, turn left \n Goal of the agent: Go to purple box \n Past observations and actions \n Observation 1: A green key is 2 step left and 1 step in front, a grey box is 2 step left, a purple box is 1 step left and 1 step in front, a green box is 2 step in front, a blue key is 1 step right and 2 step in front, a green ball is 2 step right and 2 step in front \n Action 1: "] + +subgoals = {0: "go forward", + 1: "turn right", + 2: "turn left"} +subgoals_tokenized = {0: tokenizer(["go forward"], return_tensors='pt').to(device), + 1: tokenizer(["turn right"], return_tensors='pt').to(device), + 2: tokenizer(["turn left"], return_tensors='pt').to(device)} +prompt_inputs = tokenizer(prompt, return_tensors='pt', padding=True).to(device) + +eps = 0 +sbg = choosing_subgoals(gpt, + prompt=prompt_inputs['input_ids'], + attention_mask=prompt_inputs['attention_mask'], + subgoal_tokenized=subgoals_tokenized, + eps=eps) + +for s in sbg: + print(subgoals[s])""" diff --git a/babyai/nn/dec_QA.py b/babyai/nn/dec_QA.py new file mode 100644 index 0000000..a5bc3ae --- /dev/null +++ b/babyai/nn/dec_QA.py @@ -0,0 +1,21 @@ +import os +import pickle as pkl +import torch +from torch import nn +from torch.nn import functional as F + +class QAClassifier(nn.Module): + ''' + object classifier module (a single FF layer) + ''' + def __init__(self, input_size, vocab_path): + super().__init__() + with open(vocab_path, 'rb') as filehandle: + # read the data as binary data stream + vocab_list = pkl.load(filehandle)['answer'] + num_classes = len(vocab_list) + self.linear = nn.Linear(input_size, num_classes) + + def forward(self, x): + out = self.linear(x) + return out \ No newline at end of file diff --git a/babyai/nn/enc_lang.py b/babyai/nn/enc_lang.py new file mode 100644 index 0000000..26a86c3 --- /dev/null +++ b/babyai/nn/enc_lang.py @@ -0,0 +1,91 @@ +import os +import torch +import numpy as np +from torch import nn +from torch.nn import functional as F +from torch.nn.utils.rnn import pad_sequence + +from nn.encodings import PosLangEncoding, InstrLangEncoding + + +class EncoderLang(nn.Module): + def __init__(self, num_layers, args, + subgoal_token='<>', goal_token='<>'): + ''' + transformer encoder for language inputs + ''' + super(EncoderLang, self).__init__() + self.subgoal_token = subgoal_token + self.goal_token = goal_token + + # transformer layers + encoder_layer = nn.TransformerEncoderLayer( + args.demb, args.encoder_heads, args.demb, + args.dropout['transformer']['encoder']) + if args.encoder_lang['shared']: + enc_transformer = nn.TransformerEncoder( + encoder_layer, num_layers) + self.enc_transformers = enc_transformer + else: + self.enc_transformers = nn.TransformerEncoder( + encoder_layer, num_layers) + + # encodings + self.enc_pos = PosLangEncoding(args.demb) if args.encoder_lang['pos_enc'] else None + self.enc_instr = InstrLangEncoding(args.demb) if args.encoder_lang['instr_enc'] else None + self.enc_layernorm = nn.LayerNorm(args.demb) + self.enc_dropout = nn.Dropout(args.dropout['lang'], inplace=True) + + def forward(self, lang_pad, embedder, vocab, pad): + ''' + pass embedded inputs through embeddings and encode them using a transformer + ''' + # pad the input language sequences and embed them with a linear layer + mask_pad = (lang_pad == pad) + emb_lang = embedder(lang_pad) + # add positional encodings + mask_token = EncoderLang.mask_token( + lang_pad, vocab, {self.subgoal_token, self.goal_token}) + emb_lang = self.encode_inputs(emb_lang, mask_token, mask_pad) + # pass the inputs through the encoder + hiddens = EncoderLang.encoder( + self.enc_transformers, emb_lang, mask_pad, vocab) + lengths = (lang_pad != pad).sum(dim=1) + return hiddens, lengths + + @staticmethod + def mask_token(lang_pad, vocab, tokens): + ''' + returns mask of the tokens + ''' + tokens_mask = torch.zeros_like(lang_pad).long() + for token in tokens: + tokens_mask += lang_pad == vocab.word2index(token) + return tokens_mask.bool() + + @staticmethod + def encoder(encoders, emb_lang, mask_pad, mask_attn=None): + ''' + compute encodings for all tokens using a normal flat encoder + ''' + # skip mask: mask padded words + if mask_attn is None: + # attention mask: all tokens can attend to all others + mask_attn = torch.zeros( + (mask_pad.shape[1], mask_pad.shape[1]), device=mask_pad.device).float() + # encode the inputs + output = encoders( + emb_lang.transpose(0, 1), + mask_attn, + mask_pad).transpose(0, 1) + return output + + def encode_inputs(self, emb_lang, mask_token, mask_pad): + ''' + add positional encodings, apply layernorm and dropout + ''' + emb_lang = self.enc_pos(emb_lang) if self.enc_pos else emb_lang + emb_lang = self.enc_instr(emb_lang, mask_token) if self.enc_instr else emb_lang + emb_lang = self.enc_dropout(emb_lang) + emb_lang = self.enc_layernorm(emb_lang) + return emb_lang diff --git a/babyai/nn/enc_lang_QA.py b/babyai/nn/enc_lang_QA.py new file mode 100644 index 0000000..ff18221 --- /dev/null +++ b/babyai/nn/enc_lang_QA.py @@ -0,0 +1,96 @@ +import os +import torch +import numpy as np +from torch import nn +from torch.nn import functional as F +from torch.nn.utils.rnn import pad_sequence + +from nn.enc_lang import EncoderLang +from nn.encodings import PosLangEncoding, InstrLangEncoding + +class EncoderLang_QA(EncoderLang): + def __init__(self, num_layers, args, + subgoal_token='<>', goal_token='<>', question_token='<>'): + ''' + transformer encoder for language inputs + ''' + super(EncoderLang_QA, self).__init__(num_layers, args) + self.subgoal_token = subgoal_token + self.goal_token = goal_token + self.question_token = question_token + + # transofmer layers + encoder_layer = nn.TransformerEncoderLayer( + args.demb, args.encoder_heads, args.demb, + args.dropout['transformer']['encoder']) + if args.encoder_lang['shared']: + enc_transformer = nn.TransformerEncoder( + encoder_layer, num_layers) + self.enc_transformers = enc_transformer + else: + self.enc_transformers = nn.TransformerEncoder( + encoder_layer, num_layers) + + # encodings + self.enc_pos = PosLangEncoding(args.demb) if args.encoder_lang['pos_enc'] else None + self.enc_instr = InstrLangEncoding(args.demb) if args.encoder_lang['instr_enc'] else None + self.enc_layernorm = nn.LayerNorm(args.demb) + self.enc_dropout = nn.Dropout(args.dropout['lang'], inplace=True) + + def forward(self, lang_pad, embedder, vocab, pad): + ''' + pass embedded inputs through embeddings and encode them using a transformer + ''' + # pad the input language sequences and embed them with a linear layer + + mask_pad = (lang_pad == pad) + emb_lang = embedder(lang_pad) + # add positional encodings + mask_token = EncoderLang.mask_token( + lang_pad, vocab, {self.question_token}) + + emb_lang = self.encode_inputs(emb_lang, mask_token, mask_pad) + # pass the inputs through the encoder + hiddens = EncoderLang.encoder( + self.enc_transformers, emb_lang, mask_pad) + + lengths = (lang_pad != pad).sum(dim=1) + + return hiddens, lengths + + @staticmethod + def mask_token(lang_pad, vocab, tokens): + ''' + returns mask of the tokens + ''' + tokens_mask = torch.zeros_like(lang_pad).long() + for token in tokens: + tokens_mask += lang_pad == vocab.word2index(token) + return tokens_mask.bool() + + @staticmethod + def encoder(encoders, emb_lang, mask_pad, mask_attn=None): + ''' + compute encodings for all tokens using a normal flat encoder + ''' + # skip mask: mask padded words + if mask_attn is None: + # attention mask: all tokens can attend to all others + mask_attn = torch.zeros( + (mask_pad.shape[1], mask_pad.shape[1]), device=mask_pad.device).float() + # encode the inputs + output = encoders( + emb_lang.transpose(0, 1), + mask_attn, + mask_pad).transpose(0, 1) + return output + + def encode_inputs(self, emb_lang, mask_token, mask_pad): + ''' + add positional encodings, apply layernorm and dropout + ''' + emb_lang = self.enc_pos(emb_lang) if self.enc_pos else emb_lang + emb_lang = self.enc_instr(emb_lang, mask_token) if self.enc_instr else emb_lang + emb_lang = self.enc_dropout(emb_lang) + emb_lang = self.enc_layernorm(emb_lang) + return emb_lang diff --git a/babyai/nn/enc_visual.py b/babyai/nn/enc_visual.py new file mode 100644 index 0000000..340f517 --- /dev/null +++ b/babyai/nn/enc_visual.py @@ -0,0 +1,113 @@ +import os +import types +import torch +import contextlib +import numpy as np +import torch.nn as nn +import PIL + +from PIL import Image +from torchvision import models +from torchvision.transforms import functional as F + +from nn.transforms import Transforms + +class Resnet18(nn.Module): + ''' + pretrained Resnet18 from torchvision + ''' + def __init__(self, + device, + checkpoint_path=None, + share_memory=False): + super().__init__() + self.device = device + self.model = models.resnet18(pretrained=True) + self.model = nn.Sequential(*list(self.model.children())[:-3]) + '''if checkpoint_path is not None: + print('Loading ResNet checkpoint from {}'.format(checkpoint_path)) + model_state_dict = torch.load(checkpoint_path, map_location=device) + model_state_dict = { + key: value for key, value in model_state_dict.items() + if 'GU_' not in key and 'text_pooling' not in key} + model_state_dict = { + key: value for key, value in model_state_dict.items() + if 'fc.' not in key} + model_state_dict = { + key.replace('resnet.', ''): value + for key, value in model_state_dict.items()} + self.model.load_state_dict(model_state_dict) + self.model = self.model.to(torch.device(device))''' + + if self.device == 'cuda': + self.model.cuda() + self.model = self.model.eval() + if share_memory: + self.model.share_memory() + self._transform = Transforms.get_transform('default') + + def extract(self, x): + # small image returned by RGBImgPartialObsWrapper transform with resize not necessary + x = torch.stack([self._transform(Image.fromarray(i.astype('uint8'), 'RGB')).to(torch.device(self.device)) for i in x]) + # x_tensor = torch.tensor(x, dtype=torch.float32) + return self.model(x) + +class FeatureFlat(nn.Module): + ''' + a few conv layers to flatten features that come out of ResNet + ''' + def __init__(self, input_shape, output_size): + super().__init__() + if input_shape[0] == -1: + input_shape = input_shape[1:] + layers, activation_shape = self.init_cnn( + input_shape, channels=[256, 64], kernels=[1, 1], paddings=[0, 0]) + layers += [ + Flatten(), nn.Linear(np.prod(activation_shape), output_size)] + self.layers = nn.Sequential(*layers) + + def init_cnn(self, input_shape, channels, kernels, paddings): + layers = [] + planes_in, spatial = input_shape[0], input_shape[-1] + for planes_out, kernel, padding in zip(channels, kernels, paddings): + # do not use striding + stride = 1 + layers += [ + nn.Conv2d(planes_in, planes_out, kernel_size=kernel, + stride=stride, padding=padding), + nn.BatchNorm2d(planes_out), nn.ReLU(inplace=True)] + planes_in = planes_out + + spatial = ((spatial - kernel + 2 * padding) // stride) + 1 + activation_shape = (planes_in, spatial, spatial) + + return layers, activation_shape + + def forward(self, frames): + activation = self.layers(frames) + return activation + + +class Flatten(nn.Module): + def forward(self, x): + return x.view(x.size(0), -1) + +class SimpleEncoder(nn.Module): + ''' + a simple image encoder that is not pretrained to replace the use of resnet18 + ''' + def __init__(self): + super().__init__() + self.image_conv = nn.Sequential( + nn.Conv2d(in_channels=3, out_channels=128, kernel_size=(2, 2), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2), + nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(), + nn.MaxPool2d(kernel_size=(2, 2), stride=2) + ) + def forward(self, frame): + frame_extracted = self.image_conv(frame) + return frame_extracted diff --git a/babyai/nn/enc_vl.py b/babyai/nn/enc_vl.py new file mode 100644 index 0000000..f1ea173 --- /dev/null +++ b/babyai/nn/enc_vl.py @@ -0,0 +1,99 @@ +import torch +from torch import nn +import nn.model_util as model_util +from nn.encodings import PosEncoding, PosLearnedEncoding, TokenLearnedEncoding + + +class EncoderVL(nn.Module): + def __init__(self, args): + ''' + transformer encoder for language, frames and action inputs + ''' + super(EncoderVL, self).__init__() + + # transofmer layers + encoder_layer = nn.TransformerEncoderLayer( + args.demb, args.encoder_heads, args.demb, + args.dropout['transformer']['encoder']) + self.enc_transformer = nn.TransformerEncoder( + encoder_layer, args.encoder_layers) + + # how many last actions to attend to + self.num_input_actions = args.num_input_actions + + # encodings + self.enc_pos = PosEncoding(args.demb) if args.enc['pos'] else None + self.enc_pos_learn = PosLearnedEncoding(args.demb) if args.enc['pos_learn'] else None + self.enc_token = TokenLearnedEncoding(args.demb) if args.enc['token'] else None + self.enc_layernorm = nn.LayerNorm(args.demb) + self.enc_dropout = nn.Dropout(args.dropout['emb'], inplace=True) + + def forward(self, + emb_lang, + emb_frames, + emb_actions, + lengths_lang, + lengths_frames, + lengths_actions, + length_frames_max, + attn_masks=True): + ''' + pass embedded inputs through embeddings and encode them using a transformer + ''' + # emb_lang is processed on each GPU separately so they size can vary + length_lang_max = lengths_lang.max().item() + emb_lang = emb_lang[:, :length_lang_max] + # create a mask for padded elements + length_mask_pad = length_lang_max + length_frames_max * ( + 2 if lengths_actions.max() > 0 else 1) + mask_pad = torch.zeros( + (len(emb_lang), length_mask_pad), device=emb_lang.device).bool() + for i, (len_l, len_f, len_a) in enumerate( + zip(lengths_lang, lengths_frames, lengths_actions)): + # mask padded words + mask_pad[i, len_l: length_lang_max] = True + # mask padded frames + mask_pad[i, length_lang_max + len_f: + length_lang_max + length_frames_max] = True + # mask padded actions + mask_pad[i, length_lang_max + length_frames_max + len_a:] = True + + # encode the inputs + emb_all = self.encode_inputs( + emb_lang, emb_frames, emb_actions, lengths_lang, lengths_frames, mask_pad) + + # create a mask for attention (prediction at t should not see frames at >= t+1) + if attn_masks: + # assert length_frames_max == max(lengths_actions) + mask_attn = model_util.generate_attention_mask( + length_lang_max, length_frames_max, + emb_all.device, self.num_input_actions) + else: + # allow every token to attend to all others + mask_attn = torch.zeros( + (mask_pad.shape[1], mask_pad.shape[1]), + device=mask_pad.device).float() + + # encode the inputs + output = self.enc_transformer( + emb_all.transpose(0, 1), mask_attn, mask_pad).transpose(0, 1) + return output, mask_pad + + def encode_inputs(self, emb_lang, emb_frames, emb_actions, + lengths_lang, lengths_frames, mask_pad): + ''' + add encodings (positional, token and so on) + ''' + if self.enc_pos is not None: + emb_lang, emb_frames, emb_actions = self.enc_pos( + emb_lang, emb_frames, emb_actions, lengths_lang, lengths_frames) + if self.enc_pos_learn is not None: + emb_lang, emb_frames, emb_actions = self.enc_pos_learn( + emb_lang, emb_frames, emb_actions, lengths_lang, lengths_frames) + if self.enc_token is not None: + emb_lang, emb_frames, emb_actions = self.enc_token( + emb_lang, emb_frames, emb_actions) + emb_cat = torch.cat((emb_lang, emb_frames, emb_actions), dim=1) + emb_cat = self.enc_layernorm(emb_cat) + emb_cat = self.enc_dropout(emb_cat) + return emb_cat diff --git a/babyai/nn/encodings.py b/babyai/nn/encodings.py new file mode 100644 index 0000000..9665187 --- /dev/null +++ b/babyai/nn/encodings.py @@ -0,0 +1,153 @@ +import os +import torch +import math +from torch import nn + + +class PosEncoding(nn.Module): + ''' + Transformer-style positional encoding with wavelets + ''' + def __init__(self, d_model, max_len=1250): + super().__init__() + self.d_model = d_model + pe = torch.zeros(max_len, d_model) + position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) + div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)) + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + self.register_buffer('pe', pe[None]) + + def forward(self, lang, frames, actions, lens_lang, lens_frames, pos=None): + if pos is None: + enc = self.pe[:, :lang.shape[1] + frames.shape[1]] + else: + enc = [[] for _ in range(len(lang))] + for batch_idx in range(pos.shape[0]): + for pos_idx in range(lang.shape[1] + frames.shape[1]): + enc[batch_idx].append(self.pe[0, pos[batch_idx, pos_idx]]) + enc = torch.stack([torch.stack(pos_batch) for pos_batch in enc]) + enc = enc / math.sqrt(self.d_model) + lang = lang + enc[:, :lang.shape[1]] + for i in range(frames.shape[0]): + frames[i] = frames[i] + enc[0, lens_lang[i]: lens_lang[i] + frames.shape[1]] + # use the same position indices for actions as for the frames + for i in range(actions.shape[0]): + actions[i] = actions[i] + enc[0, lens_lang[i]: lens_lang[i] + actions.shape[1]] + return lang, frames, actions + + +class LearnedEncoding(nn.Module): + ''' + Learned additive encoding implemented on top of nn.Embedding + ''' + def __init__(self, d_model, vocab_size, init_range=0.1): + super().__init__() + self.emb = nn.Embedding(vocab_size, d_model) + self.emb.weight.data.uniform_(-init_range, init_range) + + def forward(self, x, tokens): + tokens_emb = self.emb(tokens) + return x + tokens_emb + + +class PosLearnedEncoding(nn.Module): + ''' + Learned additive positional encoding implemented on top of nn.Embedding + ''' + def __init__(self, d_model, max_pos=1250, init_range=0.1): + super().__init__() + self.emb = nn.Embedding(max_pos, d_model) + self.emb.weight.data.uniform_(-init_range, init_range) + + def forward(self, lang, frames, actions, lens_lang, lens_frames): + pos_lang = torch.stack([torch.arange(0, lang.shape[1])] * lang.shape[0]) + pos_frames = torch.stack([torch.arange(0, frames.shape[1]) + l for l in lens_lang]) + # use the same position indices for actions as for the frames + pos_actions = torch.stack([torch.arange(0, actions.shape[1]) + l for l in lens_lang]) + lang += self.emb(pos_lang.to(lang.device)) + frames += self.emb(pos_frames.to(frames.device)) + actions += self.emb(pos_actions.to(actions.device)) + return lang, frames, actions + + +class TokenLearnedEncoding(nn.Module): + ''' + Learned additive img/word/action token encoding implemented on top of nn.Embedding + ''' + def __init__(self, d_model, vocab_size=3, init_range=0.1): + super().__init__() + self.emb = nn.Embedding(vocab_size, d_model) + self.emb.weight.data.uniform_(-init_range, init_range) + + def forward(self, lang, frames, actions): + token_lang = torch.ones(lang.shape[:2], device=lang.device, dtype=torch.long) * 0 + token_lang_emb = self.emb(token_lang) + lang += token_lang_emb + token_frames = torch.ones(frames.shape[:2], device=frames.device, dtype=torch.long) * 1 + token_frames_emb = self.emb(token_frames) + frames += token_frames_emb + token_actions = torch.ones(actions.shape[:2], device=actions.device, dtype=torch.long) * 2 + token_actions_emb = self.emb(token_actions) + actions += token_actions_emb + return lang, frames, actions + +class PosLangEncoding(nn.Module): + ''' + Transformer-style positional encoding with wavelets + ''' + def __init__(self, d_model, max_len=2000): + super().__init__() + self.d_model = d_model + pe = torch.zeros(max_len, d_model) + position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) + div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)) + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + self.register_buffer('pe', pe[None]) + + def forward(self, x, pos=None): + if pos is None: + enc = self.pe[:, :x.shape[1]] + else: + enc = [[] for _ in range(len(x))] + for batch_idx in range(pos.shape[0]): + for pos_idx in range(pos.shape[1]): + enc[batch_idx].append(self.pe[0, pos[batch_idx, pos_idx]]) + enc = torch.stack([torch.stack(pos_batch) for pos_batch in enc]) + x = x + enc / math.sqrt(self.d_model) + return x + +class InstrLangEncoding(PosLangEncoding): + ''' + Relative position in an instruction (a sentence) encoding with wavelets + ''' + def forward(self, x, tokens_mask): + counts = torch.zeros_like(tokens_mask)[:, 0].long() + instrs = torch.zeros_like(tokens_mask).long() + # offset the tokens by 1 + tokens_mask[:, 1:] = tokens_mask.clone()[:, :-1] + for i in range(tokens_mask.shape[1] - 1): + instrs[:, i] = counts + counts += (tokens_mask[:, i + 1] == True) + instrs[:, -1] = instrs[:, -2] + pe_tokens = self.pe[0, instrs] + x = x + pe_tokens / math.sqrt(self.d_model) + return x + + +class DatasetLearnedEncoding(nn.Module): + ''' + Learned additive dataset id encoding implemented on top of nn.Embedding + ''' + def __init__(self, d_model, datasets, init_range=0.1): + super().__init__() + self.datasets = {dataset: i for i, dataset in enumerate(datasets)} + self.emb = nn.Embedding(len(datasets), d_model) + self.emb.weight.data.uniform_(-init_range, init_range) + + def forward(self, lang, vocab): + dataset_ids = torch.ones(lang.shape[0], device=lang.device, dtype=torch.long) + dataset_emb = self.emb(dataset_ids * self.datasets[vocab.name]) + lang_enc = lang + dataset_emb[:, None] + return lang_enc diff --git a/babyai/nn/model_util.py b/babyai/nn/model_util.py new file mode 100644 index 0000000..dab519a --- /dev/null +++ b/babyai/nn/model_util.py @@ -0,0 +1,425 @@ +import os +import torch +import json +import collections +import copy +import numpy as np + +from importlib import import_module +from pathlib import Path +from PIL import Image +from torch.nn import functional as F + +# from alfred.utils import metric_util +# from alfred.gen import constants + + +def adjust_lr(optimizer, args, epoch, schedulers): + ''' + adjust optimizer learning rate w.r.t the schedulers + ''' + if epoch >= args.lr['warmup_epoch']: + schedulers['base'].step() + else: + schedulers['warmup'].step() + + +def create_optimizer_and_schedulers(first_epoch, args, parameters, optimizer=None): + ''' + create a scheduler for the learning rate + ''' + # create an optimizer if it was not provided + init_lr = args.lr['init'] * args.lr['warmup_scale'] + if args.lr['warmup_scale'] != 1: + assert args.lr['warmup_epoch'] > 0 + if optimizer is None: + assert args.optimizer in ('adam', 'adamw') + OptimizerClass = torch.optim.Adam if args.optimizer == 'adam' else torch.optim.AdamW + optimizer = OptimizerClass(parameters, lr=init_lr, weight_decay=args.weight_decay) + else: + for param_group in optimizer.param_groups: + param_group['lr'] = init_lr + + # create a learning rate scheduler + assert args.lr['profile'] in ('linear', 'cosine', 'triangular', 'triangular2') + if args.lr['profile'] == 'linear': + lr_scheduler = torch.optim.lr_scheduler.StepLR( + optimizer, gamma=args.lr['decay_scale'], step_size=args.lr['decay_epoch']) + elif args.lr['profile'] == 'cosine': + lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR( + optimizer, T_max=(args.epochs - args.lr['warmup_epoch'] - 1), eta_min=args.lr['final']) + else: + assert min(args.lr['cycle_epoch_up'], args.lr['cycle_epoch_down']) > 0 + lr_scheduler = torch.optim.lr_scheduler.CyclicLR( + optimizer, base_lr=args.lr['init'], max_lr=args.lr['final'], + step_size_up=args.lr['cycle_epoch_up'], step_size_down=args.lr['cycle_epoch_down'], + mode=args.lr['profile'], cycle_momentum=False) + + # create a learning rate scheduler for the warmup period + warmup_scheduler = None + if args.lr['warmup_epoch']: + warmup_scheduler = torch.optim.lr_scheduler.ExponentialLR( + optimizer, gamma=(1 / args.lr['warmup_scale'] ** (1 / args.lr['warmup_epoch']))) + + # in case if we start not from the first epoch, fastforward the scheduler + for epoch in range(first_epoch): + if epoch >= args.lr['warmup_epoch']: + lr_scheduler.step() + else: + warmup_scheduler.step() + return optimizer, {'base': lr_scheduler, 'warmup': warmup_scheduler} + + +def load_model(fsave, device, check_epoch=None): + ''' + load pth model from disk + ''' + print('Loading from {} to {}'.format(fsave, device)) + save = torch.load(fsave, map_location=device) + LearnedModel = import_module('alfred.model.learned').LearnedModel + model = LearnedModel(save['args'], save['embs_ann'], save['vocab_out']) + model.load_state_dict(save['model']) + OptimizerClass = torch.optim.Adam if save['args'].optimizer == 'adam' else torch.optim.AdamW + optimizer = OptimizerClass(model.parameters(), lr=1e-3, weight_decay=save['args'].weight_decay) + optimizer.load_state_dict(save['optim']) + if check_epoch: + assert save['metric']['epoch'] == check_epoch, 'Epochs in info.json and latest.pth do not match' + model = model.to(torch.device(device)) + optimizer_to(optimizer, torch.device(device)) + return model, optimizer + + +def load_model_args(fsave): + ''' + load model's args from disk + ''' + save = torch.load(fsave, map_location=lambda storage, loc: storage) + return save['args'] + + +def save_model(model, model_name, stats, optimizer=None, symlink=False): + ''' + save the model to args.dout/model_name or create a symlink from the latest model to args.dout/model_name + ''' + save_path = os.path.join(model.args.dout, model_name) + if not symlink: + # nn.DaraParallel related renaming + state_dict = {key.replace('model.module.', 'model.'): value + for key, value in model.state_dict().items()} + assert optimizer is not None + torch.save({ + 'metric': stats, + 'model': state_dict, + 'optim': optimizer.state_dict(), + 'args': model.args, + 'vocab_out': model.vocab_out, + 'embs_ann': model.embs_ann, + }, save_path) + else: + # create symlink to last saved model + model_path = os.path.join( + model.args.dout, 'model_{:02d}.pth'.format(stats['epoch'])) + if os.path.islink(save_path): + os.unlink(save_path) + os.symlink(model_path, save_path) + + +def has_interaction(action): + ''' + check if low-level action is interactive + ''' + non_interact_actions = ['MoveAhead', 'Rotate', 'Look', '<>', '<>', '<>'] + if any(a in action for a in non_interact_actions): + return False + else: + return True + + +def get_task_and_ann_id(ex): + ''' + single string for task_id and annotation repeat idx + ''' + return "%s_%s" % (ex['task_id'], str(ex['repeat_idx'])) + + +def tensorboard(writer, metrics, split, iter, frequency, batch_size): + if (iter // batch_size) % frequency == 0: + for metric_name, metric_value_list in metrics.items(): + metric_value = np.mean(metric_value_list[-frequency:]) + writer.add_scalar('{}/{}'.format(split, metric_name), metric_value, iter) + + +def save_log(dout, progress, total, stage, **kwargs): + ''' + logging a method json for besteffort mode and jobs monitoring on Alex's machine + ''' + info_path = os.path.join(dout, 'info.json') + info_dicts = [] + if os.path.exists(info_path): + with open(info_path, 'r') as f: + info_dicts = json.load(f) + info_dict = {'stage': stage, 'progress': progress, 'total': total} + info_dict.update(kwargs) + info_dicts.append(info_dict) + with open(info_path, 'w') as f: + json.dump(info_dicts, f) + + +def load_log(dout, stage): + ''' + loading a method json to continue training from the correct place + ''' + info_path = os.path.join(dout, 'info.json') + if os.path.exists(info_path): + with open(info_path) as f: + info_dicts = json.load(f) + info_dict = [el for el in info_dicts if el['stage'] == stage][-1] + else: + info_dict = {'progress': 0, 'best_loss': {}, 'iters': {}} + if isinstance(info_dict['best_loss'], dict): + info_dict['best_loss'] = collections.defaultdict( + lambda: 1e10, info_dict['best_loss']) + if isinstance(info_dict['iters'], dict): + info_dict['iters'] = collections.defaultdict( + lambda: 0, info_dict['iters']) + return info_dict + +def load_log_choose_progress(dout, stage, epoch): + ''' + loading a method json to continue training from the correct place + ''' + info_path = os.path.join(dout, 'info.json') + if os.path.exists(info_path): + with open(info_path) as f: + info_dicts = json.load(f) + info_dict = [el for el in info_dicts if el['stage'] == stage][epoch] + return info_dict + +def update_log(dout, stage, update, **kwargs): + ''' + updating a method json for monitoring on Alex's machine + ''' + assert update in ('increase', 'rewrite') + info_path = os.path.join(dout, 'info.json') + assert os.path.exists(info_path) + with open(info_path) as f: + info_dicts = json.load(f) + info_dict = copy.deepcopy([el for el in info_dicts if el['stage'] == stage][-1]) + # update the values + for key, value in kwargs.items(): + assert key in info_dict + new_value = value + info_dict[key] if update == 'increase' else value + info_dict[key] = new_value + # decide what to do with the list with updated values + if info_dicts[-1]['stage'] == stage: + # rewrite the values + info_dicts[-1] = info_dict + else: + # append a new list element + info_dicts.append(info_dict) + # dump to the disk + with open(info_path, 'w') as f: + json.dump(info_dicts, f) + + +def test_extractor(orig_json_path, extractor, feats_orig): + images_root = Path(orig_json_path).parents[0] / 'raw_images' + if not images_root.is_dir(): + print('WARNING: feature extraction unit check can not be performed, directory does not exist') + return + first_image = Image.open(images_root / '000000000.png') + feat_extracted = extractor.featurize([first_image], batch=1) + assert torch.isclose(feat_extracted.mean(), feats_orig[0].mean()), \ + 'feature extraction is not the same for training and evaluation' + + +def triangular_mask(size, device, diagonal_shift=1): + ''' + generate upper triangular matrix filled with ones + ''' + square = torch.triu(torch.ones(size, size, device=device), diagonal=diagonal_shift) + square = square.masked_fill(square == 1., float('-inf')) + return square + + +def generate_attention_mask(len_lang, len_frames, device, num_input_actions=0): + ''' + generate mask for attention (a timestep at t does not attend to timesteps after t)''' + # 1.1 language should attend only to language + lang_to_lang = torch.zeros((len_lang, len_lang), device=device).float() + #lang_to_rest = torch.ones((len_lang, len_frames * 2), device=device).float() * float('-inf') + # 1.2 language should attend to all frames and all actions + lang_to_rest = torch.zeros((len_lang, len_frames * 2), device=device).float() + lang_to_all = torch.cat((lang_to_lang, lang_to_rest), dim=1) + # 2.1 frames should attend to all language tokens + frames_to_lang = torch.zeros((len_frames, len_lang), device=device).float() + # 2.2 frames should attend to frames with timestep <= t + frames_to_frames = triangular_mask(len_frames, device) + # 2.3 frames should attend to actions with timestep < t. first make all actions invisible + frames_to_actions = torch.ones((len_frames, len_frames), device=device).float() * float('-inf') + # 2.3 then unmask `num_input_actions` previous actions for each frame (excluding index t) + for a_idx in range(num_input_actions): + for f_idx in range(len_frames): + if f_idx - 1 - a_idx < 0: + # the index is out of bound + continue + frames_to_actions[f_idx, f_idx - 1 - a_idx] = 0. + frames_to_all = torch.cat((frames_to_lang, frames_to_frames, frames_to_actions), dim=1) + # 3. actions should attend to the same indices as frames + actions_to_all = frames_to_all.clone() + # 4. concatenate all the masks + all_to_all = torch.cat((lang_to_all, frames_to_all, actions_to_all), dim=0) + return all_to_all + + +def process_prediction( + action, objects, pad, vocab_action, clean_special_tokens, predict_object=True): + ''' + process a single trajectory, return it as a dict + ''' + # remove padding tokens + if pad in action: + pad_start_idx = action.index(pad) + action = action[:pad_start_idx] + objects = objects[:pad_start_idx] + if clean_special_tokens: + # remove <> tokens + stop_token = vocab_action.word2index('<>') + if stop_token in action: + stop_start_idx = action.index(stop_token) + action = action[:stop_start_idx] + objects = objects[:stop_start_idx] + # index to API actions + words = vocab_action.index2word(action) + + if predict_object: + pred_object = objects[None].max(2)[1].cpu().numpy() + else: + pred_object = None + pred_processed = { + 'action': ' '.join(words), + 'object': pred_object, + } + return pred_processed + + +def extract_action_preds( + model_out, pad, vocab_action, clean_special_tokens=True, lang_only=False): + ''' + output processing for a VLN agent + ''' + zipped_data = zip(model_out['action'].max(2)[1].tolist(), model_out['object']) + predict_object = not lang_only + preds_list = [ + process_prediction( + action, objects, pad, vocab_action, clean_special_tokens, predict_object) + for action, objects in zipped_data] + return preds_list + + +"""def compute_f1_and_exact(metrics, preds, labels, loss_key): + ''' + compute f1 and extract match scores for agent output + ''' + m = collections.defaultdict(list) + for pred_str, label_str in zip(preds, labels): + pred_list, label_list = pred_str.lower().split(' '), label_str.lower().split(' ') + # compute f1 score for the full sequence of actions + m['{}/f1'.format(loss_key)].append( + metric_util.compute_f1(label_str, pred_str)) + # compute exact matching for each timestep individually + for pred_action, label_action in zip(pred_list, label_list): + m['{}/exact'.format(loss_key)].append( + metric_util.compute_exact(label_action, pred_action)) + m_averaged = {k: sum(v)/len(v) for k, v in m.items()} + for k, v in m_averaged.items(): + metrics[k].append(v)""" + + +def compute_obj_class_precision(metrics, gt_dict, classes_out): + ''' + compute precision of predictions for interaction object classes + ''' + interact_idxs = torch.nonzero(gt_dict['action_valid_interact']) + obj_classes_prob = classes_out[tuple(interact_idxs.T)] + obj_classes_pred = obj_classes_prob.max(1)[1] + obj_classes_gt = torch.cat(gt_dict['object'], dim=0) + precision = torch.sum( + obj_classes_pred == obj_classes_gt) / len(obj_classes_gt) + metrics['action/object'].append(precision.item()) + + +def obj_classes_loss(pred_obj_cls, gt_obj_cls, interact_idxs): + ''' + Compute a cross-entropy loss for the object class predictions. + ''' + pred_obj_cls_inter = pred_obj_cls[interact_idxs] + # the interaction objects should be non zeros + assert not (gt_obj_cls == 0).any() + # compute the loss for interaction objects + obj_cls_loss = F.cross_entropy( + pred_obj_cls_inter, gt_obj_cls, reduction='mean') + return obj_cls_loss + + +def tokens_to_lang(tokens, vocab, skip_tokens=None, join=True): + ''' + convert tokens into human-readable words + ''' + if skip_tokens is None: + skip_tokens = {} + def _tokens_to_lang(seq): + if isinstance(seq, torch.Tensor): + seq = seq.tolist() + lang = [vocab.index2word(t) for t in seq if t not in skip_tokens] + lang = ' '.join(lang) if join else lang + return lang + if isinstance(tokens[0], int): + # a list of ints is provided, only one sequence + output = _tokens_to_lang(tokens) + else: + # a list of lists is provided, several sequences + output = [_tokens_to_lang(seq) for seq in tokens] + return output + + +def translate_to_vocab(tokens, vocab, vocab_translate, skip_new_tokens=False): + ''' + translate tokens from orig vocab to translate vocab + ''' + if vocab_translate.contains_same_content(vocab): + return tokens + lang_orig = tokens_to_lang(tokens, vocab, join=False) + tokens_new = [] + for word in lang_orig: + if skip_new_tokens and word not in vocab_translate.counts: + word = '<>' + tokens_new.append(vocab_translate.word2index(word)) + if not skip_new_tokens: + lang_new = tokens_to_lang(tokens_new, vocab_translate, join=False) + assert lang_orig == lang_new + return tokens_new + + +"""def last_model_path(exp_name): + ''' + get path of the last model in the exp + ''' + model_path = os.path.join(constants.ET_LOGS, exp_name, 'latest.pth') + assert os.path.islink(model_path) + return model_path""" + + +def optimizer_to(optim, device): + for param in optim.state.values(): + # Not sure there are any global tensors in the state dict + if isinstance(param, torch.Tensor): + param.data = param.data.to(device) + if param._grad is not None: + param._grad.data = param._grad.data.to(device) + elif isinstance(param, dict): + for subparam in param.values(): + if isinstance(subparam, torch.Tensor): + subparam.data = subparam.data.to(device) + if subparam._grad is not None: + subparam._grad.data = subparam._grad.data.to(device) diff --git a/babyai/nn/transforms.py b/babyai/nn/transforms.py new file mode 100644 index 0000000..34db753 --- /dev/null +++ b/babyai/nn/transforms.py @@ -0,0 +1,90 @@ +import numbers +import random +import math +import torch + +from torchvision import transforms + + +class Transforms(object): + @staticmethod + def resize(img_size=224): + # expects a PIL Image + return transforms.Resize((img_size, img_size)) + + @staticmethod + def affine(degree=5, translate=0.04, scale=0.02): + # expects a PIL Image + return transforms.RandomAffine( + degrees=(-degree, degree), + translate=(translate, translate), + scale=(1-scale, 1+scale), + shear=None) + + @staticmethod + def random_crop(img_size=224): + # expects a PIL Image + return transforms.RandomCrop((img_size, img_size)) + + @staticmethod + def normalize(): + # expects a PIL Image + return transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize( + mean=[0.485, 0.456, 0.406], + std=[0.229, 0.224, 0.225], + ) + ]) + + @staticmethod + def cutout(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0.): + # expects a tensor + return transforms.RandomErasing( + p=p, scale=scale, ratio=ratio, value=value) + + @staticmethod + def get_transform(transform='default'): + if transform == 'default': + return transforms.Compose([ + Transforms.resize(224), + Transforms.normalize()]) + + elif transform == 'none': + return transforms.ToTensor() + elif transform == 'crops': + return transforms.Compose([ + Transforms.resize(240), + Transforms.random_crop(224), + Transforms.normalize()]) + elif transform == 'cutout': + return transforms.Compose([ + Transforms.resize(224), + Transforms.normalize(), + Transforms.cutout()]) + elif transform == 'affine': + return transforms.Compose([ + Transforms.resize(224), + Transforms.affine(), + Transforms.normalize()]) + elif transform == 'affine_crops': + return transforms.Compose([ + Transforms.resize(240), + Transforms.random_crop(224), + Transforms.affine(), + Transforms.normalize()]) + elif transform == 'affine_crops_cutout': + return transforms.Compose([ + Transforms.resize(240), + Transforms.random_crop(224), + Transforms.affine(), + Transforms.normalize(), + Transforms.cutout()]) + elif transform == 'affine_cutout': + return transforms.Compose([ + Transforms.resize(224), + Transforms.affine(), + Transforms.normalize(), + Transforms.cutout()]) + else: + raise ValueError('Image augmentation {} is not implemented'.format(transform)) diff --git a/babyai/run_tests.py b/babyai/run_tests.py new file mode 100755 index 0000000..266720f --- /dev/null +++ b/babyai/run_tests.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +""" +Run basic BabyAI level tests +Note: there are other automated tests in .circleci/config.yml +""" + +import babyai +from babyai import levels + +# NOTE: please make sure that tests are always deterministic + +print('Testing levels, mission generation') +levels.test() diff --git a/babyai/scripts/.gitignore b/babyai/scripts/.gitignore new file mode 100644 index 0000000..ba1c41c --- /dev/null +++ b/babyai/scripts/.gitignore @@ -0,0 +1,4 @@ +*__pycache__ +*egg-info +*.sh +!run_slurm.sh \ No newline at end of file diff --git a/babyai/scripts/GPR.py b/babyai/scripts/GPR.py new file mode 100644 index 0000000..7678556 --- /dev/null +++ b/babyai/scripts/GPR.py @@ -0,0 +1,67 @@ +import matplotlib.pyplot as plt +import numpy as np +from sklearn.gaussian_process import GaussianProcessRegressor +from sklearn.gaussian_process.kernels import RBF + +SR = np.array([0.73, 0.73, 0.73, 0.73, + 0.66, 0.66, 0.66, 0.66, + 0.56, 0.56, 0.56, 0.56, + 0.41, 0.41, 0.41, 0.41, + 0.250, 0.250, 0.250, 0.250]).reshape(-1, 1) +SE = np.array([0.560, 0.548, 0.573, 0.556, + 0.555, 0.556, 0.568, 0.577, + 0.557, 0.563, 0.529, 0.538, + 0.501, 0.488, 0.452, 0.481, + 0.192, 0.214, 0.206, 0.132]).reshape(-1, 1) +print(SR) +print(SE) +kernel = RBF(length_scale_bounds=(1e-05, 100000.0)) + +"""alpha_step = np.arange(1e-4, 5e-3, 2e-4) +score = np.zeros_like(alpha_step) +for a in range(len(alpha_step)): + gpr = GaussianProcessRegressor(alpha=alpha_step[a], kernel=kernel, random_state=0).fit(SR, SE) + score[a] = gpr.score(SR, SE) + +plt.plot(alpha_step, score) +plt.show()""" + +gpr = GaussianProcessRegressor(alpha=0.0005, kernel=kernel, random_state=0).fit(SR, SE) +print(gpr.score(SR, SE)) +SR_pred = np.arange(0.250, 0.73, 0.001) +SE_mean, SE_std = gpr.predict(SR_pred.reshape(-1, 1), return_std=True) +SE_mean = SE_mean.reshape(480, ) +plt.scatter(SR, SE, label="Observations") +plt.plot(SR_pred, SE_mean) +plt.fill_between(SR_pred, + SE_mean + 1.96 * SE_std, + SE_mean - 1.96 * SE_std, + alpha=0.5, + label=r"95% confidence interval") +plt.ylabel("Sample Efficiency") +plt.xlabel("Success rate of the QA") +plt.legend() +plt.show() + +high_curve = SE_mean + 1.96 * SE_std +valid_idx = np.where(high_curve >= 0.5)[0][0] +print(SR_pred[valid_idx]) + +low_curve = SE_mean - 1.96 * SE_std +valid_idx = np.where(low_curve >= 0.5)[0][0] +print(SR_pred[valid_idx]) +"""print(gpr.get_params(deep=True)) +SR_min = np.arange(0.250, 0.73, 0.001) +proba_SR_min = [] +len_SR_min = len(SR_min) + +print("proba inferior: {}".format(len(SE_pred[SE_pred < 0.5])/len(SE_pred))) + +for i in range(1, 481): + proba_inferior = (len(SE_pred[SE_pred < 0.5])/len(SE_pred))**(i-1) + proba_superior = len(SE_pred[SE_pred > 0.5])/len(SE_pred) + proba_SR_min.append(proba_inferior*proba_superior) +len(SR_min) +print(len(proba_SR_min)) +plt.plot(SR_min, np.array(proba_SR_min)) +plt.show()""" diff --git a/babyai/scripts/compute_possible_instructions.py b/babyai/scripts/compute_possible_instructions.py new file mode 100755 index 0000000..b12df6e --- /dev/null +++ b/babyai/scripts/compute_possible_instructions.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +""" +Compute the number of possible instructions in the BabyAI grammar. +""" + +from gym_minigrid.minigrid import COLOR_NAMES + +def count_Sent(): + return ( + count_Sent1() + + # Sent1, then Sent1 + count_Sent1() * count_Sent1() + + # Sent1 after you Sent1 + count_Sent1() * count_Sent1() + ) + +def count_Sent1(): + return ( + count_Clause() + + # Clause and Clause + count_Clause() * count_Clause() + ) + +def count_Clause(): + return ( + # go to + count_Descr() + + # pick up + count_DescrNotDoor() + + # open + count_DescrDoor() + + # put next + count_DescrNotDoor() * count_Descr() + ) + +def count_DescrDoor(): + # (the|a) Color door Location + return 2 * count_Color() * count_LocSpec() +def count_DescrBall(): + return count_DescrDoor() +def count_DescrBox(): + return count_DescrDoor() +def count_DescrKey(): + return count_DescrDoor() +def count_Descr(): + return count_DescrDoor() + count_DescrBall() + count_DescrBox() + count_DescrKey() +def count_DescrNotDoor(): + return count_DescrBall() + count_DescrBox() + count_DescrKey() + +def count_Color(): + # Empty string or color + return len([None] + COLOR_NAMES) + +def count_LocSpec(): + # Empty string or location + return len([None, 'left', 'right', 'front', 'behind']) + +print('DescrKey: ', count_DescrKey()) +print('Descr: ', count_Descr()) +print('DescrNotDoor: ', count_DescrNotDoor()) +print('Clause: ', count_Clause()) +print('Sent1: ', count_Sent1()) +print('Sent: ', count_Sent()) +print('Sent: {:.3g}'.format(count_Sent())) diff --git a/babyai/scripts/enjoy.py b/babyai/scripts/enjoy.py new file mode 100755 index 0000000..4599a2e --- /dev/null +++ b/babyai/scripts/enjoy.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 + +""" +Visualize the performance of a model on a given environment. +""" + +import argparse +import gym +import time + +import babyai.utils as utils + +# Parse arguments + +parser = argparse.ArgumentParser() +parser.add_argument("--env", required=True, + help="name of the environment to be run (REQUIRED)") +parser.add_argument("--model", default=None, + help="name of the trained model (REQUIRED or --demos-origin or --demos REQUIRED)") +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or --model demos-origin required)") +parser.add_argument("--demos-origin", default=None, + help="origin of the demonstrations: human | agent (REQUIRED or --model or --demos REQUIRED)") +parser.add_argument("--seed", type=int, default=None, + help="random seed (default: 0 if model agent, 1 if demo agent)") +parser.add_argument("--argmax", action="store_true", default=False, + help="action with highest probability is selected for model agent") +parser.add_argument("--pause", type=float, default=0.1, + help="the pause between two consequent actions of an agent") +parser.add_argument("--manual-mode", action="store_true", default=False, + help="Allows you to take control of the agent at any point of time") + +args = parser.parse_args() + +action_map = { + "LEFT" : "left", + "RIGHT" : "right", + "UP" : "forward", + "PAGE_UP": "pickup", + "PAGE_DOWN": "drop", + "SPACE": "toggle" +} + +assert args.model is not None or args.demos is not None, "--model or --demos must be specified." +if args.seed is None: + args.seed = 0 if args.model is not None else 1 + +# Set seed for all randomness sources + +utils.seed(args.seed) + +# Generate environment + +env = gym.make(args.env) +env.seed(args.seed) + +global obs +obs = env.reset() +print("Mission: {}".format(obs["mission"])) + +# Define agent +agent = utils.load_agent(env, args.model, args.demos, args.demos_origin, args.argmax, args.env) + +# Run the agent + +done = True + +action = None + +def keyDownCb(keyName): + global obs + # Avoiding processing of observation by agent for wrong key clicks + if keyName not in action_map and keyName != "RETURN": + return + + agent_action = agent.act(obs)['action'] + + if keyName in action_map: + action = env.actions[action_map[keyName]] + + elif keyName == "RETURN": + action = agent_action + + obs, reward, done, _ = env.step(action) + agent.analyze_feedback(reward, done) + if done: + print("Reward:", reward) + obs = env.reset() + print("Mission: {}".format(obs["mission"])) + +step = 0 +episode_num = 0 +while True: + time.sleep(args.pause) + renderer = env.render("human") + if args.manual_mode and renderer.window is not None: + renderer.window.setKeyDownCb(keyDownCb) + else: + result = agent.act(obs) + obs, reward, done, _ = env.step(result['action']) + agent.analyze_feedback(reward, done) + if 'dist' in result and 'value' in result: + dist, value = result['dist'], result['value'] + dist_str = ", ".join("{:.4f}".format(float(p)) for p in dist.probs[0]) + print("step: {}, mission: {}, dist: {}, entropy: {:.2f}, value: {:.2f}".format( + step, obs["mission"], dist_str, float(dist.entropy()), float(value))) + else: + print("step: {}, mission: {}".format(step, obs['mission'])) + if done: + print("Reward:", reward) + episode_num += 1 + env.seed(args.seed + episode_num) + obs = env.reset() + agent.on_reset() + step = 0 + else: + step += 1 + + if renderer.window is None: + break diff --git a/babyai/scripts/eval_bot.py b/babyai/scripts/eval_bot.py new file mode 100755 index 0000000..b3e674a --- /dev/null +++ b/babyai/scripts/eval_bot.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 + +""" +Evaluate the success rate of the bot +This script is used for testing/debugging purposes + +Examples of usage: +- Run the bot on the GoTo level 10 times (seeds 9 to 18) +eval_bot.py --level GoTo --num_runs 10 --seed 9 +- for all levels, 100 times, run a Random(seed 0) agent for len(episode)/3 steps before running the bot: +eval_bot.py --advise_mode --num_runs 100 +- for all levels, 500 times, during the first 10 steps, choose action form a Random(seed 9) agent with proba .9 or + optimal (from bot) with proba .1, then continue with optimal bot actions: +eval_boy.py --advise_mode --bad_action_proba .8 --non_optimal_steps 10 --random_agent_seed 9 + +""" + +import random +import time +import traceback +from optparse import OptionParser +from babyai.levels import level_dict +from babyai.bot import Bot +from babyai.utils.agent import ModelAgent, RandomAgent +from random import Random + + +# MissBossLevel is the only level the bot currently can't always handle +level_list = [name for name, level in level_dict.items() + if (not getattr(level, 'is_bonus', False) and not name == 'MiniBossLevel')] + + +parser = OptionParser() +parser.add_option( + "--level", + default=None +) +parser.add_option( + "--advise_mode", + action='store_true', + default=False, + help='If specified, a RandomAgent or ModelAgent will act first, then the bot will take over') +parser.add_option( + "--non_optimal_steps", + type=int, + default=None, + help='Number of non bot steps ModelAgent or RandomAgent takes before letting the bot take over' +) +parser.add_option( + "--model", + default=None, + help='Model to use to act for a few steps before letting the bot take over' +) +parser.add_option( + "--random_agent_seed", + type="int", + default=1, + help='Seed of the random agent that acts a few steps before letting the bot take over' +) +parser.add_option( + "--bad_action_proba", + type="float", + default=1., + help='Probability of performing the non-optimal action when the random/model agent is performing' +) +parser.add_option( + "--seed", + type="int", + default=1 +) +parser.add_option( + "--num_runs", + type="int", + default=500 +) +parser.add_option( + "--verbose", + action='store_true' +) +(options, args) = parser.parse_args() + +if options.level: + level_list = [options.level] + +bad_agent = None +if options.advise_mode: + if options.model: + bad_agent = ModelAgent(options.model, obss_preprocessor=None, + argmax=True) + else: + bad_agent = RandomAgent(seed=options.random_agent_seed) + +start_time = time.time() + +all_good = True + +for level_name in level_list: + + num_success = 0 + total_reward = 0 + total_steps = [] + total_bfs = 0 + total_episode_steps = 0 + total_bfs_steps = 0 + + for run_no in range(options.num_runs): + level = level_dict[level_name] + + mission_seed = options.seed + run_no + mission = level(seed=mission_seed) + expert = Bot(mission) + + if options.verbose: + print('%s/%s: %s, seed=%d' % (run_no+1, options.num_runs, mission.surface, mission_seed)) + + optimal_actions = [] + before_optimal_actions = [] + non_optimal_steps = options.non_optimal_steps or int(mission.max_steps // 3) + rng = Random(mission_seed) + + try: + episode_steps = 0 + last_action = None + while True: + action = expert.replan(last_action) + if options.advise_mode and episode_steps < non_optimal_steps: + if rng.random() < options.bad_action_proba: + while True: + action = bad_agent.act(mission.gen_obs())['action'].item() + fwd_pos = mission.agent_pos + mission.dir_vec + fwd_cell = mission.grid.get(*fwd_pos) + # The current bot can't recover from two kinds of behaviour: + # - opening a box (cause it just disappears) + # - closing a door (cause its path finding mechanism get confused) + opening_box = (action == mission.actions.toggle + and fwd_cell and fwd_cell.type == 'box') + closing_door = (action == mission.actions.toggle + and fwd_cell and fwd_cell.type == 'door' and fwd_cell.is_open) + if not opening_box and not closing_door: + break + before_optimal_actions.append(action) + else: + optimal_actions.append(action) + + obs, reward, done, info = mission.step(action) + last_action = action + + total_reward += reward + episode_steps += 1 + + if done: + total_episode_steps += episode_steps + total_bfs_steps += expert.bfs_step_counter + total_bfs += expert.bfs_counter + if reward > 0: + num_success += 1 + total_steps.append(episode_steps) + if options.verbose: + print('SUCCESS on seed {}, reward {:.2f}'.format(mission_seed, reward)) + if reward <= 0: + assert episode_steps == mission.max_steps # Is there another reason for this to happen ? + if options.verbose: + print('FAILURE on %s, seed %d, reward %.2f' % (level_name, mission_seed, reward)) + break + except Exception as e: + print('FAILURE on %s, seed %d' % (level_name, mission_seed)) + traceback.print_exc() + # Playing these 2 sets of actions should get you to the mission snapshot above + print(before_optimal_actions) + print(optimal_actions) + print(expert.stack) + break + + all_good = all_good and (num_success == options.num_runs) + + success_rate = 100 * num_success / options.num_runs + mean_reward = total_reward / options.num_runs + mean_steps = sum(total_steps) / options.num_runs + + print('%16s: %.1f%%, r=%.3f, s=%.2f' % (level_name, success_rate, mean_reward, mean_steps)) + # Uncomment the following line to print the number of steps per episode (useful to look for episodes to debug) + # print({options.seed + num_run: total_steps[num_run] for num_run in range(options.num_runs)}) +end_time = time.time() +total_time = end_time - start_time +print('total time: %.1fs' % total_time) +if not all_good: + raise Exception("some tests failed") +print('total episode_steps:', total_episode_steps) +print('total bfs:', total_bfs) +print('total bfs steps:', total_bfs_steps) diff --git a/babyai/scripts/evaluate.py b/babyai/scripts/evaluate.py new file mode 100755 index 0000000..a871fad --- /dev/null +++ b/babyai/scripts/evaluate.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 + +""" +Evaluate a trained model or bot +""" + +import argparse +import gym +import time +import datetime + +import babyai.utils as utils +from babyai.evaluate import evaluate_demo_agent, batch_evaluate, evaluate +# Parse arguments + +parser = argparse.ArgumentParser() +parser.add_argument("--env", required=True, + help="name of the environment to be run (REQUIRED)") +parser.add_argument("--model", default=None, + help="name of the trained model (REQUIRED or --demos-origin or --demos REQUIRED)") +parser.add_argument("--demos-origin", default=None, + help="origin of the demonstrations: human | agent (REQUIRED or --model or --demos REQUIRED)") +parser.add_argument("--demos", default=None, + help="name of the demos file (REQUIRED or --demos-origin or --model REQUIRED)") +parser.add_argument("--episodes", type=int, default=1000, + help="number of episodes of evaluation (default: 1000)") +parser.add_argument("--seed", type=int, default=int(1e9), + help="random seed") +parser.add_argument("--argmax", action="store_true", default=False, + help="action with highest probability is selected for model agent") +parser.add_argument("--contiguous-episodes", action="store_true", default=False, + help="Make sure episodes on which evaluation is done are contiguous") +parser.add_argument("--worst-episodes-to-show", type=int, default=10, + help="The number of worse episodes to show") + + +def main(args, seed, episodes): + # Set seed for all randomness sources + utils.seed(seed) + + # Define agent + + env = gym.make(args.env) + env.seed(seed) + agent = utils.load_agent(env, args.model, args.demos, args.demos_origin, args.argmax, args.env) + if args.model is None and args.episodes > len(agent.demos): + # Set the number of episodes to be the number of demos + episodes = len(agent.demos) + + # Evaluate + if isinstance(agent, utils.DemoAgent): + logs = evaluate_demo_agent(agent, episodes) + elif isinstance(agent, utils.BotAgent) or args.contiguous_episodes: + logs = evaluate(agent, env, episodes, False) + else: + logs = batch_evaluate(agent, args.env, seed, episodes) + + + return logs + + +if __name__ == "__main__": + args = parser.parse_args() + assert_text = "ONE of --model or --demos-origin or --demos must be specified." + assert int(args.model is None) + int(args.demos_origin is None) + int(args.demos is None) == 2, assert_text + + start_time = time.time() + logs = main(args, args.seed, args.episodes) + end_time = time.time() + + # Print logs + num_frames = sum(logs["num_frames_per_episode"]) + fps = num_frames/(end_time - start_time) + ellapsed_time = int(end_time - start_time) + duration = datetime.timedelta(seconds=ellapsed_time) + + if args.model is not None: + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + + num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + if args.model is not None: + print("F {} | FPS {:.0f} | D {} | R:xsmM {:.3f} {:.3f} {:.3f} {:.3f} | S {:.3f} | F:xsmM {:.1f} {:.1f} {} {}" + .format(num_frames, fps, duration, + *return_per_episode.values(), + success_per_episode['mean'], + *num_frames_per_episode.values())) + else: + print("F {} | FPS {:.0f} | D {} | F:xsmM {:.1f} {:.1f} {} {}" + .format(num_frames, fps, duration, *num_frames_per_episode.values())) + + indexes = sorted(range(len(logs["num_frames_per_episode"])), key=lambda k: - logs["num_frames_per_episode"][k]) + + n = args.worst_episodes_to_show + if n > 0: + print("{} worst episodes:".format(n)) + for i in indexes[:n]: + if 'seed_per_episode' in logs: + print(logs['seed_per_episode'][i]) + if args.model is not None: + print("- episode {}: R={}, F={}".format(i, logs["return_per_episode"][i], logs["num_frames_per_episode"][i])) + else: + print("- episode {}: F={}".format(i, logs["num_frames_per_episode"][i])) diff --git a/babyai/scripts/evaluate_all_demos.py b/babyai/scripts/evaluate_all_demos.py new file mode 100755 index 0000000..9edb795 --- /dev/null +++ b/babyai/scripts/evaluate_all_demos.py @@ -0,0 +1,23 @@ +""" +Script to evaluate all available demos. + +Assumes all demos (human and agent, except the "valid" ones) +are generated with seed 1 +""" + +import os +from subprocess import call +import sys + +import babyai.utils as utils + +folder = os.path.join(utils.storage_dir(), "demos") +for filename in sorted(os.listdir(folder)): + if filename.endswith(".pkl") and 'valid' in filename: + env = 'BabyAI-BossLevel-v0' # It doesn't really matter. The evaluation only considers the lengths of demos. + demo = filename[:-4] # Remove the .pkl part of the name + + print("> Demos: {}".format(demo)) + + command = ["python evaluate.py --env {} --demos {} --worst-episodes-to-show 0".format(env, demo)] + sys.argv[1:] + call(" ".join(command), shell=True) diff --git a/babyai/scripts/evaluate_all_models.py b/babyai/scripts/evaluate_all_models.py new file mode 100755 index 0000000..38a4d3b --- /dev/null +++ b/babyai/scripts/evaluate_all_models.py @@ -0,0 +1,48 @@ +""" +Evaluate all models in a storage directory. + +In order to use this script make sure to add baby-ai-game/scripts to the $PATH +environment variable. + +Sample usage: +evaluate_all_models.py --episodes 200 --argmax +""" + +import os +from subprocess import call +import sys + +import babyai.utils as utils +from babyai.levels import level_dict +import re + +# List of all levels ordered by length of the level name from longest to shortest +LEVELS = sorted(list(level_dict.keys()), key=len)[::-1] + + +def get_levels_from_model_name(model): + levels = [] + # Assume that our model names are separated with _ or - + model_name_parts = re.split('_|-', model) + for part in model_name_parts: + # Assume that each part contains at most one level name. + # Sorting LEVELS using length of level name is to avoid scenarios like + # extracting 'GoTo' from the model name 'GoToLocal-model' + for level in LEVELS: + if level in part: + levels.append('BabyAI-{}-v0'.format(level)) + break + return list(set(levels)) + + +folder = os.path.join(utils.storage_dir(), "models") + +for model in sorted(os.listdir(folder)): + if model.startswith('.'): + continue + envs = get_levels_from_model_name(model) + print("> Envs: {} > Model: {}".format(envs, model)) + for env in envs: + command = ["evaluate.py --env {} --model {}".format(env, model)] + sys.argv[1:] + print("Command: {}".format(" ".join(command))) + call(" ".join(command), shell=True) diff --git a/babyai/scripts/instruction_handler.py b/babyai/scripts/instruction_handler.py new file mode 100644 index 0000000..58409eb --- /dev/null +++ b/babyai/scripts/instruction_handler.py @@ -0,0 +1,211 @@ +""" +General class for handling instructions provided by demonstrations. +""" + +import pickle +import os +import numpy as np +from babyai import utils +# from transformers import BertTokenizer, BertModel +from torch.nn import CosineSimilarity +import torch +import logging +logging.getLogger("transformers").setLevel(logging.WARNING) +logger = logging.getLogger(__name__) + +class InstructionHandler: + + def __init__(self, demos=None, missions=None, load_bert=False, save_path=None): + self.missions = [] + if missions is not None: + self.missions = missions + else: + self.missions = [demo[1] for demo in demos] + self.missions = np.array(sorted(list(set(self.missions)))) + if load_bert: + # Deprecated + self.tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") + self.model = BertModel.from_pretrained("bert-base-uncased") + self.cos = CosineSimilarity(dim=1, eps=1e-6) + self.build_compounds(os.path.join(save_path, "compound_embeddings.pkl")) + + def D_l_size(self): + return len(self.missions) + + def save(self, item, path): + utils.create_folders_if_necessary(path) + with open(path, 'wb') as f: + pickle.dump(item, f) + + def load(self, path): + try: + with open(path, "rb") as f: + return pickle.load(f) + except FileNotFoundError: + return None + + def build_compounds(self, path): + # Deprecated + logger.info("loading BERT embeddings") + self.compound_missions = [] + for i in range(len(self.missions)): + for j in range(len(self.missions)): + compound = f"{self.missions[i]} and {self.missions[j]}" + self.compound_missions.append(compound) + self.compound_missions = np.array(self.compound_missions) + self.compound_embeddings = self.load(path) + if self.compound_embeddings is None: + compound_encodings = self.tokenizer.batch_encode_plus(self.compound_missions, pad_to_max_length=True, return_tensors="pt") + self.compound_embeddings = self.model(compound_encodings['input_ids'])[0][:, 0, :] + self.save(self.compound_embeddings, path) + self.compound_embeddings_norm = self.compound_embeddings/self.compound_embeddings.norm(dim=1)[:, None] + logger.info("loaded BERT embeddings") + + def get_instruction(self, index): + return self.missions[index] + + def get_index(self, instruction): + i, = np.where(self.missions == instruction) + if len(i) > 0: + return i[0] + else: + return None + + def get_random_instruction(self): + return np.random.choice(self.missions) + + def get_oracle_stack(self, mission, strict=True, unlock=False): + """ Get the oracle decomposition, only for validation purposes, + using handcrafted rules. + """ + words = mission.split(" ") + if strict: + if "then" in mission or "after you" in mission: + if "then" in mission: + split = mission.split(", then ") + elif "after you" in mission: + split = mission.split(" after you ") + subs = [] + for part in split: + words = part.split(" ") + if part.startswith("pick up "): + assert len(words) == 5 + sub1 = "go to {}".format(" ".join(words[2:5])) + subs.extend([sub1]) + elif part.startswith("open "): + assert len(words) == 4 + sub1 = "go to the {}".format(" ".join(words[2:4])) + subs.extend([sub1]) + elif part.startswith("put "): + assert len(words) == 9 + sub1 = "go to {}".format(" ".join(words[1:4])) + subs.extend([sub1]) + return list(set(subs)) + elif mission.startswith("pick up "): + # pick up the red ball + assert len(words) == 5 + sub1 = "go to {}".format(" ".join(words[2:5])) + return [sub1] + elif mission.startswith("open "): + # open the red door + if len(words) == 4: + sub1 = "go to the {}".format(" ".join(words[2:4])) + return [sub1] + # open the red door and pick up a green ball + elif len(words) == 10: + sub1 = "go to the {}".format(" ".join(words[2:4])) + sub2 = "open the {}".format(" ".join(words[2:4])) + sub3 = "go to {}".format(" ".join(words[7:10])) + sub4 = "go to the {}".format(" ".join(words[8:10])) + return [sub1, sub2, sub3, sub4] + elif mission.startswith("put "): + # put the red ball next to the green box + assert len(words) == 9 + sub1 = "go to {}".format(" ".join(words[1:4])) + return [sub1] + elif mission.startswith("move "): + # move the red block next to the green block + assert len(words) == 9 + sub1 = "go to {}".format(" ".join(words[1:4])) + return [sub1] + else: + raise NotImplementedError + else: + if "then" in mission or "after you" in mission: + if "then" in mission: + split = mission.split(", then ") + elif "after you" in mission: + split = mission.split(" after you ") + subs = [] + for part in split: + words = part.split(" ") + if part.startswith("pick up "): + assert len(words) == 5 + sub1 = "go to a {}".format(" ".join(words[3:5])) + sub2 = "go to the {}".format(" ".join(words[3:5])) + subs.extend([sub1, sub2]) + elif part.startswith("open "): + assert len(words) == 4 + sub1 = "go to the {}".format(" ".join(words[2:4])) + subs.extend([sub1]) + elif part.startswith("put "): + assert len(words) == 9 + sub1 = "go to a {}".format(" ".join(words[2:4])) + sub2 = "go to the {}".format(" ".join(words[2:4])) + subs.extend([sub1, sub2]) + return list(set(subs)) + elif mission.startswith("pick up "): + # pick up the red ball + assert len(words) == 5 + sub1 = "go to a {}".format(" ".join(words[3:5])) + sub2 = "go to the {}".format(" ".join(words[3:5])) + return [sub1, sub2] + elif mission.startswith("open "): + # open the red door + if len(words) == 4: + if unlock: + sub1 = "pick up a {} key".format(words[2]) + sub2 = "pick up the {} key".format(words[2]) + return [sub1, sub2] + else: + sub1 = "go to the {}".format(" ".join(words[2:4])) + return [sub1] + # open the red door and pick up a green ball + elif len(words) == 10: + sub1 = "go to the {}".format(" ".join(words[2:4])) + sub2 = "open the {}".format(" ".join(words[2:4])) + sub3 = "go to a {}".format(" ".join(words[8:10])) + sub4 = "go to the {}".format(" ".join(words[8:10])) + return [sub1, sub2, sub3, sub4] + elif mission.startswith("put "): + # put the red ball next to the green box + assert len(words) == 9 + sub1 = "go to a {}".format(" ".join(words[2:4])) + sub2 = "go to the {}".format(" ".join(words[2:4])) + return [sub1, sub2] + elif mission.startswith("move "): + # move the red block next to the green block + assert len(words) == 9 + sub1 = "go to {}".format(" ".join(words[1:4])) + return [sub1] + else: + raise NotImplementedError + + + def get_projection_stack(self, mission): + # Deprecated + mission_encoding = self.tokenizer.batch_encode_plus([mission], pad_to_max_length=True, return_tensors="pt") + mission_embedding = self.model(mission_encoding['input_ids'])[0][:, 0, :] + similarities = self.cos(self.compound_embeddings, mission_embedding) + best = self.compound_missions[similarities.argmax()] + return self.get_oracle_stack(best, 'BabyAI-GoToLocal2-v0') + + + def get_projection_stacks(self, missions): + # Deprecated + mission_encodings = self.tokenizer.batch_encode_plus(missions, pad_to_max_length=True, return_tensors="pt") + mission_embeddings = self.model(mission_encodings['input_ids'])[0][:, 0, :] + mission_embeddings_norm = mission_embeddings / mission_embeddings.norm(dim=1)[:, None] + similarities = torch.mm(self.compound_embeddings_norm, mission_embeddings_norm.T) + bests = self.compound_missions[similarities.argmax(dim=0)] + return [self.get_oracle_stack(best, 'BabyAI-GoToLocal2-v0') for best in bests] \ No newline at end of file diff --git a/babyai/scripts/learn_baseline.py b/babyai/scripts/learn_baseline.py new file mode 100644 index 0000000..5f870be --- /dev/null +++ b/babyai/scripts/learn_baseline.py @@ -0,0 +1,272 @@ +""" +Training interface for the LEARN model (Goyal et al., 2019) +""" + +import copy +import gym +import time +import datetime +import numpy as np +import sys +import itertools +import torch +import torch.nn as nn +import babyai.utils as utils +import os +import json +import logging +import wandb +from tqdm import tqdm +from gym import spaces +from learn_baseline_model import LEARNBaselineModel +from instruction_handler import InstructionHandler +from gym_minigrid.minigrid import MiniGridEnv + +logger = logging.getLogger(__name__) + + +class LEARNBaseline(object): + + def __init__(self, args, online_args=False): + + self.args = args + + utils.seed(self.args.seed) + + self.model = LEARNBaselineModel({"instr":100, "num_actions":len(MiniGridEnv.Actions)}, dropout=args.dropout) + + if getattr(self.args, 'pretrained_model', None): + logger.info("loading pretrained model") + self.model = utils.load_model(args.pretrained_model, raise_not_found=True) + + demos_path = utils.get_demos_path(args.demos, args.env, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_path(args.demos, args.env, args.demos_origin, valid=True) + demos = utils.load_demos(demos_path) + if args.episodes: + if args.episodes > len(demos): + raise ValueError("there are only {} demos".format(len(demos))) + demos = demos[:args.episodes] + + self.train_demos = utils.demos.transform_demos_learn(demos) + + logger.info('loading instruction handler') + self.instr_handler = InstructionHandler(demos, load_bert=False, save_path=os.path.join(os.path.splitext(demos_path)[0], "ih")) + logger.info('loaded instruction handler') + + val_demos = utils.load_demos(demos_path_valid) + if args.val_episodes > len(val_demos): + logger.info('Using all the available {} demos to evaluate valid. accuracy'.format(len(val_demos))) + val_demos = val_demos[:self.args.val_episodes] + + self.val_demos = utils.demos.transform_demos_learn(val_demos) + + self.instr_preprocessor = utils.InstructionOnlyPreprocessor(args.model, getattr(self.args, 'pretrained_model', None)) + self.instr_preprocessor.vocab.save() + + self.model.train() + if torch.cuda.is_available(): + self.model.cuda() + + self.optimizer = torch.optim.Adam(self.model.parameters(), self.args.lr, eps=self.args.optim_eps) + self.scheduler = torch.optim.lr_scheduler.StepLR(self.optimizer, step_size=10000, gamma=0.95) + + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + @staticmethod + def default_model_name(args): + named_envs = args.env + # Define model name + suffix = datetime.datetime.now().strftime("%y-%m-%d-%H-%M-%S") + instr = args.instr_arch if args.instr_arch else "noinstr" + model_name_parts = { + 'envs': named_envs, + 'arch': args.arch, + 'instr': instr, + 'seed': args.seed, + 'suffix': suffix} + default_model_name = "{envs}_{arch}_{instr}_seed{seed}_{suffix}".format(**model_name_parts) + if getattr(args, 'pretrained_model', None): + default_model_name = args.pretrained_model + '_pretrained_' + default_model_name + return default_model_name + + def run_epoch_recurrence(self, demos, batch_size, is_training=False): + indices = list(range(len(demos))) + if is_training: + np.random.shuffle(indices) + + batch_size = min(self.args.batch_size, len(demos)) + offset = 0 + + if not is_training: + self.model.eval() + + log = {"loss": [], "accuracy": [], "correct_true": 0, "predict_true": 0, "target_true": 0, "precision": 0, "recall": 0, "frames": 0} + + start_time = time.time() + frames = 0 + + for batch_index in range(len(indices) // batch_size): + batch = [demos[i] for i in indices[offset : offset + batch_size]] + frames += len(batch) + + _log = self.run_epoch_recurrence_one_batch(batch, is_training=is_training) + + log["loss"].append(_log["loss"]) + log["accuracy"].append(_log["accuracy"]) + log["frames"] = frames + + log["correct_true"] += _log["correct_true"] + log["target_true"] += _log["target_true"] + log["predict_true"] += _log["predict_true"] + + offset += batch_size + + if log["predict_true"] > 0: + log["precision"] = log["correct_true"] / log["predict_true"] + if log["target_true"] > 0: + log["recall"] = log["correct_true"] / log["target_true"] + + if not is_training: + self.model.train() + + return log + + def run_epoch_recurrence_one_batch(self, batch, is_training=False): + missions, action_freqs, labels = list(zip(*batch)) + + missions = self.instr_preprocessor(missions, device=self.device) + action_freqs = torch.tensor(action_freqs).to(self.device).float() + labels = torch.tensor(labels).to(self.device).long() + + predictions, logits = self.model(missions, action_freqs) + loss_fn = nn.CrossEntropyLoss() + loss = loss_fn(logits, labels) + accuracy = float((predictions == labels).sum()) / len(labels) + + if is_training: + self.optimizer.zero_grad() + loss.backward() + self.optimizer.step() + + log = {} + log["loss"] = float(loss) + log["accuracy"] = float(accuracy) + + log["correct_true"] = int(((predictions == labels).int() & labels.int()).sum()) + log["predict_true"] = int(predictions.sum()) + log["target_true"] = int(labels.sum()) + + return log + + def train(self, train_demos, writer, csv_writer, status_path, header, reset_status=False): + + # Load the status + def initial_status(): + return {'i': 0, + 'num_frames': 0} + + status = initial_status() + if os.path.exists(status_path) and not reset_status: + with open(status_path, 'r') as src: + status = json.load(src) + elif not os.path.exists(os.path.dirname(status_path)): + # Ensure that the status directory exists + os.makedirs(os.path.dirname(status_path)) + + # If the batch size is larger than the number of demos, we need to lower the batch size + if self.args.batch_size > len(train_demos): + self.args.batch_size = len(train_demos) + logger.info("Batch size too high. Setting it to the number of train demos ({})".format(len(train_demos))) + + # Model saved initially to avoid "Model not found Exception" during first validation step + utils.save_model(self.model, self.args.model, writer) + + # best mean return to keep track of performance on validation set + best_success_rate, i = 0, 0 + total_start_time = time.time() + + while status['i'] < getattr(self.args, 'epochs', int(1e9)): + + status['i'] += 1 + i = status['i'] + update_start_time = time.time() + + log = self.run_epoch_recurrence(train_demos, batch_size=self.args.batch_size, is_training=True) + # Learning rate scheduler + self.scheduler.step() + + status['num_frames'] += log['frames'] + + update_end_time = time.time() + + # Print logs + if status['i'] % self.args.log_interval == 0: + total_ellapsed_time = int(time.time() - total_start_time) + fps = log['frames'] / (update_end_time - update_start_time) + duration = datetime.timedelta(seconds=total_ellapsed_time) + + for key in log: + log[key] = np.mean(log[key]) + + train_data = [status['i'], status['num_frames'], fps, total_ellapsed_time, + log["loss"], log["accuracy"], log["precision"], log["recall"]] + + logger.info("U {} | M {:06} | MPS {:04.0f} | D {} | Loss {:.3f} | Accuracy {:.3f} | Precision {:.3f} | Recall {:.3f}".format(*train_data)) + + # Log the gathered data only when we don't evaluate the validation metrics. It will be logged anyways + # afterwards when status['i'] % self.args.val_interval == 0 + if status['i'] % self.args.val_interval != 0: + # instantiate a validation_log with empty strings when no validation is done + validation_data = [''] * len([key for key in header if 'valid' in key]) + assert len(header) == len(train_data + validation_data) + if self.args.tb: + for key, value in zip(header, train_data): + writer.add_scalar(key, float(value), status['num_frames']) + elif self.args.wb: + writer.log({key: float(value) for key, value in zip(header, train_data)},\ + step=status['num_frames']) + csv_writer.writerow(train_data + validation_data) + + if status['i'] % self.args.val_interval == 0: + val_log = self.run_epoch_recurrence(self.val_demos, batch_size=self.args.batch_size, is_training=False) + validation_precision = np.mean(val_log["precision"]) + validation_recall = np.mean(val_log["recall"]) + validation_loss = np.mean(val_log["loss"]) + validation_accuracy = np.mean(val_log["accuracy"]) + success_rate = validation_accuracy + + if status['i'] % self.args.log_interval == 0: + validation_data = [validation_loss, validation_accuracy, validation_precision, validation_recall] + logger.info(("Validation: Loss {: .3f} | Accuracy {: .3f} | Val Precision {: .3f} | Val Recall {: .3f}" + ).format(*validation_data)) + + assert len(header) == len(train_data + validation_data) + if self.args.wb: + writer.log({key: float(value) for key, value in zip(header, train_data + validation_data)},\ + step=status['num_frames']) + csv_writer.writerow(train_data + validation_data) + + if np.mean(success_rate) > best_success_rate: + best_success_rate = np.mean(success_rate) + with open(status_path, 'w') as dst: + json.dump(status, dst) + # Saving the model + logger.info("Saving best model") + + if torch.cuda.is_available(): + self.model.cpu() + utils.save_model(self.model, self.args.model + "_best", writer) + self.instr_preprocessor.vocab.save(utils.get_vocab_path(self.args.model + "_best")) + if torch.cuda.is_available(): + self.model.cuda() + + if status['i'] % self.args.save_interval == 0: + logger.info("Saving current model") + if torch.cuda.is_available(): + self.model.cpu() + utils.save_model(self.model, self.args.model, writer) + self.instr_preprocessor.vocab.save() + if torch.cuda.is_available(): + self.model.cuda() + with open(status_path, 'w') as dst: + json.dump(status, dst) diff --git a/babyai/scripts/learn_baseline_model.py b/babyai/scripts/learn_baseline_model.py new file mode 100644 index 0000000..b046ee5 --- /dev/null +++ b/babyai/scripts/learn_baseline_model.py @@ -0,0 +1,74 @@ +""" +A reimplmentation of the LEARN model (Goyal et al., 2019) +""" + +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import Variable + + +def initialize_parameters(m): + classname = m.__class__.__name__ + if classname.find('Linear') != -1: + torch.nn.init.xavier_uniform_(m.weight) + if m.bias is not None: + m.bias.data.fill_(0.1) + + +class LEARNBaselineModel(nn.Module): + + def __init__(self, obs_space, arch="learn", lang_model="gru", instr_dim=128, action_dim=128, hidden_dim=128, dropout=0): + super().__init__() + + self.arch = arch + self.lang_model = lang_model + self.instr_dim = instr_dim + self.action_dim = action_dim + self.hidden_dim = hidden_dim + + if self.lang_model in ['gru']: + self.word_embedding = nn.Embedding(obs_space["instr"], self.instr_dim) + gru_dim = self.instr_dim + self.instr_rnn = nn.GRU( + self.instr_dim, gru_dim, num_layers=2, + batch_first=True, + bidirectional=False + ) + + action_input_sizes = [obs_space['num_actions'], self.hidden_dim, self.hidden_dim] + action_output_sizes = [self.hidden_dim, self.hidden_dim, self.action_dim] + self.action_mlp = self.mlp(action_input_sizes, action_output_sizes, dropout=dropout) + + cls_input_sizes = [self.action_dim + self.instr_dim, self.hidden_dim, self.hidden_dim] + cls_output_sizes = [self.hidden_dim, self.hidden_dim, 2] + self.classification_mlp = self.mlp(cls_input_sizes, cls_output_sizes, dropout=dropout) + + self.apply(initialize_parameters) + + def mlp(self, in_dim, out_dim, dropout=0, n_layers=3): + layers = [] + for l in range(n_layers - 1): + layers.extend([nn.Linear(in_dim[l], out_dim[l]), + nn.ReLU(), + nn.BatchNorm1d(out_dim[l]), + nn.Dropout(dropout)]) + layers.extend([nn.Linear(in_dim[-1], out_dim[-1])]) + return nn.Sequential(*layers) + + def forward(self, missions, action_frequencies): + action_enc = self.action_mlp(action_frequencies) + text_enc = self._get_instr_embedding(missions) + action_text = torch.cat((action_enc, text_enc,), dim=-1) + + logits = self.classification_mlp(action_text) + + preds = torch.argmax(logits, axis=-1) + return preds, logits + + def _get_instr_embedding(self, instr): + lengths = (instr != 0).sum(1).long() + if self.lang_model == 'gru': + out, _ = self.instr_rnn(self.word_embedding(instr)) + hidden = out[range(len(lengths)), lengths-1, :] + return hidden \ No newline at end of file diff --git a/babyai/scripts/make_agent_demos.py b/babyai/scripts/make_agent_demos.py new file mode 100755 index 0000000..d73f22c --- /dev/null +++ b/babyai/scripts/make_agent_demos.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python3 + +""" +Generate a set of agent demonstrations. + +The agent can either be a trained model or the heuristic expert (bot). + +Demonstration generation can take a long time, but it can be parallelized +if you have a cluster at your disposal. Provide a script that launches +make_agent_demos.py at your cluster as --job-script and the number of jobs as --jobs. + + +""" + +import argparse +import gym +import logging +import sys +import subprocess +import os +import time +import numpy as np +import blosc +import torch + +import babyai.utils as utils +from gym_minigrid.minigrid import MiniGridEnv +from gym_minigrid.wrappers import FullyObsImgDirWrapper, FullyObsImgEgoWrapper + +# Parse arguments + +parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) +parser.add_argument("--env", required=True, + help="name of the environment to be run (REQUIRED)") +parser.add_argument("--model", default='BOT', + help="name of the trained model (REQUIRED)") +parser.add_argument("--demos", default=None, + help="path to save demonstrations (based on --model and --origin by default)") +parser.add_argument("--episodes", type=int, default=1000, + help="number of episodes to generate demonstrations for") +parser.add_argument("--valid-episodes", type=int, default=512, + help="number of validation episodes to generate demonstrations for") +parser.add_argument("--seed", type=int, default=0, + help="start random seed") +parser.add_argument("--argmax", action="store_true", default=False, + help="action with highest probability is selected") +parser.add_argument("--log-interval", type=int, default=100, + help="interval between progress reports") +parser.add_argument("--save-interval", type=int, default=10000, + help="interval between demonstrations saving") +parser.add_argument("--filter-steps", type=int, default=0, + help="filter out demos with number of steps more than filter-steps") +parser.add_argument("--on-exception", type=str, default='warn', choices=('warn', 'crash'), + help="How to handle exceptions during demo generation") + +parser.add_argument("--job-script", type=str, default=None, + help="The script that launches make_agent_demos.py at a cluster.") +parser.add_argument("--jobs", type=int, default=0, + help="Split generation in that many jobs") +parser.add_argument("--full-obs", action="store_true", default=False, + help="Use full observations of the environment") +parser.add_argument("--ego", action="store_true", default=False, + help="Make full observations egocentric") +parser.add_argument("--include-goal", action="store_true", default=False, + help="Include an image of the final goal") +parser.add_argument("--include-direction", action="store_true", default=True, + help="Include list of agent orientations") +parser.add_argument("--done-classifier", action="store_true", default=False, + help="Make dataset for binary termination classifier") + + +args = parser.parse_args() +logger = logging.getLogger(__name__) + +# Set seed for all randomness sources + + +def print_demo_lengths(demos): + num_frames_per_episode = [len(demo[3]) for demo in demos] + logger.info('Demo length: {:.3f}+-{:.3f}'.format( + np.mean(num_frames_per_episode), np.std(num_frames_per_episode))) + + +def generate_demos(n_episodes, valid, seed, shift=0): + utils.seed(seed) + + # Generate environment + env = gym.make(args.env) + + if args.full_obs: + logger.info("using full observations") + env = FullyObsImgDirWrapper(env) + if args.ego: + logger.info("using egocentric view") + env = FullyObsImgEgoWrapper(env) + + if "BabyAI" in env.spec.id: + agent = utils.load_agent(env, args.model, args.demos, 'agent', args.argmax, args.env) + if args.done_classifier: + demos_path = utils.get_demos_path(args.demos, args.env, 'agent_done', valid) + else: + demos_path = utils.get_demos_path(args.demos, args.env, 'agent', valid) + demos = [] + + checkpoint_time = time.time() + + just_crashed = False + + set_of_missions = set() + while True: + if len(demos) == n_episodes: + break + + done = False + if just_crashed: + logger.info("reset the environment to find a mission that the bot can solve") + env.reset() + else: + env.seed(seed + len(demos)) + obs = env.reset() + if "BabyAI" in env.spec.id: + agent.on_reset() + + actions = [] + mission = obs["mission"] + set_of_missions.add(mission) + images = [] + directions = [] + + obss = [] + + try: + while not done: + if "BabyAI" in env.spec.id: + action = agent.act(obs)['action'] + if isinstance(action, torch.Tensor): + action = action.item() + new_obs, reward, done, _ = env.step(action) + agent.analyze_feedback(reward, done) + actions.append(action) + images.append(obs['image']) + if args.include_direction: + directions.append(obs['direction']) + else: + action = env.expert.act() + new_obs, reward, done, _ = env.step(action=action) + actions.append(action[0]) + obss.append(obs) + obs = new_obs + if done and args.include_goal: + if "BabyAI" in env.spec.id: + actions.append(MiniGridEnv.Actions.done) + images.append(obs['image']) + if args.include_direction: + directions.append(obs['direction']) + else: + obss.append(obs) + if reward > 0 and (args.filter_steps == 0 or len(images) <= args.filter_steps): + if args.done_classifier: + if "BabyAI" in env.spec.id: + idxs = [np.random.randint(0, len(images)-1), len(images)-1] + images = [images[idx] for idx in idxs] + directions = [directions[idx] for idx in idxs] + actions = [0, 1] + demos.append((env.unwrapped.spec.id, mission, blosc.pack_array(np.array(images)), directions, actions)) + else: + idxs = [np.random.randint(0, len(obss)-1), len(obss)-1] + obss = [obss[idx] for idx in idxs] + actions = [0, 1] + demos.append((env.unwrapped.spec.id, mission, obss, directions, actions)) + else: + if "BabyAI" in env.spec.id: + demos.append((env.unwrapped.spec.id, mission, blosc.pack_array(np.array(images)), directions, actions)) + else: + demos.append((env.unwrapped.spec.id, mission, obss, directions, actions)) + just_crashed = False + + if reward == 0: + if args.on_exception == 'crash': + raise Exception("mission failed, the seed is {}".format(seed + len(demos))) + just_crashed = True + logger.info("mission failed") + except (Exception, AssertionError): + if args.on_exception == 'crash': + raise + just_crashed = True + logger.exception("error while generating demo #{}".format(len(demos))) + continue + + if len(demos) and len(demos) % args.log_interval == 0: + now = time.time() + demos_per_second = args.log_interval / (now - checkpoint_time) + to_go = (n_episodes - len(demos)) / demos_per_second + logger.info("demo #{}, {:.3f} demos per second, {:.3f} seconds to go".format( + len(demos) - 1, demos_per_second, to_go)) + checkpoint_time = now + + # Save demonstrations + + if args.save_interval > 0 and len(demos) < n_episodes and len(demos) % args.save_interval == 0: + logger.info("Saving demos...") + utils.save_demos(demos, demos_path) + logger.info("{} demos saved".format(len(demos))) + # print statistics for the last 100 demonstrations + print_demo_lengths(demos[-100:]) + + + # Save demonstrations + logger.info("Saving demos...") + utils.save_demos(demos, demos_path) + logger.info("{} demos saved".format(len(demos))) + print_demo_lengths(demos[-100:]) + + with open("{}.txt".format(str(demos_path).replace('.pkl', '')), "w") as output: + output.write(str(list(set_of_missions))) + + +def generate_demos_cluster(): + demos_per_job = args.episodes // args.jobs + if args.done_classifier: + demos_path = utils.get_demos_path(args.demos, args.env, 'agent_done') + else: + demos_path = utils.get_demos_path(args.demos, args.env, 'agent') + job_demo_names = [os.path.realpath(demos_path + '.shard{}'.format(i)) + for i in range(args.jobs)] + for demo_name in job_demo_names: + job_demos_path = utils.get_demos_path(demo_name) + if os.path.exists(job_demos_path): + os.remove(job_demos_path) + + command = [args.job_script] + command += sys.argv[1:] + for i in range(args.jobs): + cmd_i = list(map(str, + command + + ['--seed', args.seed + i * demos_per_job] + + ['--demos', job_demo_names[i]] + + ['--episodes', demos_per_job] + + ['--jobs', 0] + + ['--valid-episodes', 0])) + logger.info('LAUNCH COMMAND') + logger.info(cmd_i) + output = subprocess.check_output(cmd_i) + logger.info('LAUNCH OUTPUT') + logger.info(output.decode('utf-8')) + + job_demos = [None] * args.jobs + while True: + jobs_done = 0 + for i in range(args.jobs): + if job_demos[i] is None or len(job_demos[i]) < demos_per_job: + try: + logger.info("Trying to load shard {}".format(i)) + job_demos[i] = utils.load_demos(utils.get_demos_path(job_demo_names[i])) + logger.info("{} demos ready in shard {}".format( + len(job_demos[i]), i)) + except Exception: + logger.exception("Failed to load the shard") + if job_demos[i] and len(job_demos[i]) == demos_per_job: + jobs_done += 1 + logger.info("{} out of {} shards done".format(jobs_done, args.jobs)) + if jobs_done == args.jobs: + break + logger.info("sleep for 60 seconds") + time.sleep(60) + + # Training demos + all_demos = [] + for demos in job_demos: + all_demos.extend(demos) + utils.save_demos(all_demos, demos_path) + + +logging.basicConfig(level='INFO', format="%(asctime)s: %(levelname)s: %(message)s") +logger.info(args) +# Training demos +if args.jobs == 0: + generate_demos(args.episodes, False, args.seed) +else: + generate_demos_cluster() +# Validation demos +if args.valid_episodes: + generate_demos(args.valid_episodes, True, int(1e9)) diff --git a/babyai/scripts/make_subtask_recipe_demos.py b/babyai/scripts/make_subtask_recipe_demos.py new file mode 100644 index 0000000..d792a14 --- /dev/null +++ b/babyai/scripts/make_subtask_recipe_demos.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 + +""" +Generate a set of subtask decompositions -- via an oracle or a +low-level/termination policy. +""" + +import argparse +import gym +import logging +import sys +import os +import time +import numpy as np +import torch +from tqdm import tqdm +import babyai.utils as utils +from babyai.utils.agent import ModelAgent, BotAgent +from instruction_handler import InstructionHandler +from babyai.hrl import HRLManyEnvs +from babyai.shaped_env import ParallelShapedEnv + + +parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) +parser.add_argument("--env", required=True, + help="name of the environment to be run (REQUIRED)") +parser.add_argument("--low-level-demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") +parser.add_argument("--multi-low-level-demos", nargs="*", default=None, + help="multiple demos filenames") +parser.add_argument("--low-level-demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") +parser.add_argument("--ll-episodes", type=int, default=100, + help="number of low-level episodes to load") +parser.add_argument("--multi-ll-episodes", type=int, nargs="*", default=None, + help="number of low-level episodes to load") +parser.add_argument("--episodes", type=int, default=100, + help="number of episodes to generate demonstrations for") +parser.add_argument("--valid-episodes", type=int, default=100, + help="number of validation episodes to generate demonstrations for") +parser.add_argument("--seed", type=int, default=int(1e7), + help="start random seed") +parser.add_argument("--pi-l", default=None, + help="model to use for low-level policy") +parser.add_argument("--done-classifier", action="store_true", default=False, + help="whether the low-level policy is actually a binary termination classifier") +parser.add_argument("--debug", action="store_true", default=False, + help="debug mode") +parser.add_argument("--oracle", action="store_true", default=False, + help="use oracle breakdown rather than running pi_l") +parser.add_argument("--nonstrict", action="store_true", default=False, + help="don't be strict about articles in oracle decomposition") + + +args = parser.parse_args() +logger = logging.getLogger(__name__) + +def generate_subtask_breakdowns(env_name, pi_l, instr_handler, seed, num_demos, max_t=64, + valid=False, debug=args.debug, oracle=args.oracle, + done_classifier=args.done_classifier, strict=not args.nonstrict): + missions = [] + subtasks = [] + + for s in tqdm(range(seed, seed+num_demos)): + env = gym.make(args.env) + env.seed(s) + if oracle: + henv = ParallelShapedEnv([env], instr_handler=instr_handler, reward_shaping=None) + else: + henv = HRLManyEnvs([env], hrl="none", pi_l=pi_l, instr_handler=instr_handler,\ + reward_shaping="pi_l_all", done_classifier=done_classifier) + henv.reset() + env.reset() + if "BabyAI" in env_name: + bot = BotAgent(env) + missions.append(env.mission) + else: + missions.append(env.instr) + subtasks.append([]) + + obs = henv.gen_obs()[0] + done = False + if oracle: + subtasks_text = instr_handler.get_oracle_stack(missions[-1], strict=strict, unlock="Unlock" in env_name) + subtasks[-1].append((-1, [instr_handler.get_index(s) for s in subtasks_text])) + if debug: + input() + print(env.mission, subtasks_text) + else: + for t in range(max_t): + if done: + break + # Get bot's recommended action + a = bot.act(obs)['action'].value + # Perform it + obs, reward, done, env_info, extra_info = henv.step([a], extra_info=True, project=False) + env.step(a) + pi_l_actions = env_info[1] + done_action = 1 if done_classifier else env.actions.done + pi_l_done_instr_idx = [i for i in range(instr_handler.D_l_size()) if pi_l_actions[i] == done_action] + if pi_l_done_instr_idx: + subtasks[-1].append((t, pi_l_done_instr_idx)) + + if debug: + input() + pi_l_done_instr = [instr_handler.get_instruction(i) for i in range(instr_handler.D_l_size())\ + if pi_l_actions[i] == done_action] + print(utils.info(pi_l_done_instr, "Done Instr")) + + pi_l_done_top_probs = extra_info['dist'].probs[:,done_action].topk(4) + print(utils.info(pi_l_done_top_probs.values, "Top Done Probs")) + print(utils.info([instr_handler.get_instruction(i) for i in pi_l_done_top_probs.indices], "Top Done Instr")) + + pi_l_value = extra_info['value'] + pi_l_top_values = extra_info['value'].topk(4) + print(utils.info(pi_l_top_values.values, "Top Value Value")) + print(utils.info([instr_handler.get_instruction(i) for i in pi_l_top_values.indices], "Top Value Instr")) + + utils.viz(henv, aux_info=utils.info(a, "Action") + utils.info(reward, "Reward") + utils.info(done, "Done")) + + logger.info("Saving demos...") + suffix = "_oracle" if args.oracle else "" + demos_path = utils.get_demos_path(None, args.env, 'agent_subtasks' + suffix, valid) + utils.save_demos((missions, subtasks), demos_path) + + return (missions, subtasks) + +def get_breakdown_stats(missions, subtasks): + num_subtasks = np.array([sum([len(t[1]) for t in s]) for s in subtasks]) + logging.info(f"collected {len(missions)} missions") + logging.info(f"average of # subtasks: {np.mean(num_subtasks)}") + logging.info(f"variance of # subtasks: {np.var(num_subtasks)}") + +logging.basicConfig(level='INFO', format="%(asctime)s: %(levelname)s: %(message)s") +logger.info(args) + +if getattr(args, 'multi_low_level_demos'): + low_level_demos = [] + for demos, episodes in zip(args.multi_low_level_demos, args.multi_ll_episodes): + demos_path = utils.get_demos_path(demos, None, None, valid=False) + logger.info('loading {} of {} demos'.format(episodes, demos)) + demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if episodes > len(demos): + raise ValueError("there are only {} low-level demos".format(len(low_level_demos))) + low_level_demos.extend(demos[:episodes]) + logger.info('So far, {} demos loaded'.format(len(low_level_demos))) + logger.info('loading instruction handler') + instr_handler = InstructionHandler(low_level_demos, load_bert=False, save_path=None) + logger.info("loaded pi_l model") + +elif getattr(args, 'low_level_demos', None): + low_level_demos_path = utils.get_demos_path(args.low_level_demos, None, None, valid=False) + logger.info('loading demos') + low_level_demos = utils.load_demos(low_level_demos_path) + logger.info('loaded demos') + if args.ll_episodes > len(low_level_demos): + raise ValueError("there are only {} low-level demos".format(len(low_level_demos))) + low_level_demos = low_level_demos[:args.ll_episodes] + logger.info('loading instruction handler') + instr_handler = InstructionHandler(low_level_demos, load_bert=False, save_path=os.path.join(os.path.splitext(low_level_demos_path)[0], "ih")) + logger.info('loaded instruction handler') + +if args.oracle: + pi_l = None +else: + logger.info("loading pi_l model") + pi_l = ModelAgent(args.pi_l, None, done_classifier=args.done_classifier, argmax=True) + logger.info("loaded pi_l model") + +logger.info(f"collecting {args.episodes} training missions for {args.env}") +missions, subtasks = generate_subtask_breakdowns(args.env, pi_l, instr_handler, seed=args.seed, num_demos=args.episodes) +get_breakdown_stats(missions, subtasks) + +logger.info(f"collecting {args.valid_episodes} validation missions for {args.env}") +valid_missions, valid_subtasks = generate_subtask_breakdowns(args.env, pi_l, instr_handler, seed=int(1e9), num_demos=args.valid_episodes, valid=True) +get_breakdown_stats(valid_missions, valid_subtasks) diff --git a/babyai/scripts/manual_control.py b/babyai/scripts/manual_control.py new file mode 100755 index 0000000..5700aee --- /dev/null +++ b/babyai/scripts/manual_control.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import time +import argparse +import numpy as np +import gym +import gym_minigrid +from gym_minigrid.wrappers import * +from gym_minigrid.window import Window +import babyai + +def redraw(img): + if not args.agent_view: + img = env.render('rgb_array', tile_size=args.tile_size) + + window.show_img(img) + +def reset(): + if args.seed != -1: + env.seed(args.seed) + + obs = env.reset() + + if hasattr(env, 'mission'): + print('Mission: %s' % env.mission) + window.set_caption(env.mission) + + redraw(obs) + +def step(action): + obs, reward, done, info = env.step(action) + print('step=%s, reward=%.2f' % (env.step_count, reward)) + + if done: + print('done!') + reset() + else: + redraw(obs) + +def key_handler(event): + print('pressed', event.key) + + if event.key == 'escape': + window.close() + return + + if event.key == 'backspace': + reset() + return + + if event.key == 'left': + step(env.actions.left) + return + if event.key == 'right': + step(env.actions.right) + return + if event.key == 'up': + step(env.actions.forward) + return + + # Spacebar + if event.key == ' ': + step(env.actions.toggle) + return + if event.key == 'pageup': + step(env.actions.pickup) + return + if event.key == 'pagedown': + step(env.actions.drop) + return + + if event.key == 'enter': + step(env.actions.done) + return + +parser = argparse.ArgumentParser() +parser.add_argument( + "--env", + help="gym environment to load", + default='BabyAI-BossLevel-v0' +) +parser.add_argument( + "--seed", + type=int, + help="random seed to generate the environment with", + default=-1 +) +parser.add_argument( + "--tile_size", + type=int, + help="size at which to render tiles", + default=32 +) +parser.add_argument( + '--agent_view', + default=False, + help="draw the agent sees (partially observable view)", + action='store_true' +) + +args = parser.parse_args() + +env = gym.make(args.env) + +if args.agent_view: + env = RGBImgPartialObsWrapper(env) + env = ImgObsWrapper(env) + +window = Window('gym_minigrid - ' + args.env) +window.reg_key_handler(key_handler) + +reset() + +# Blocking event loop +window.show(block=True) diff --git a/babyai/scripts/result_l_class_study.py b/babyai/scripts/result_l_class_study.py new file mode 100644 index 0000000..f3f7b0a --- /dev/null +++ b/babyai/scripts/result_l_class_study.py @@ -0,0 +1,54 @@ +import torch +import pickle as pkl +import matplotlib.pyplot as plt +import numpy as np + + +def learning_curves(name_env, model_number): + print("======== env:{} model:{}=======".format(name_env, model_number)) + log = pkl.load(open('storage/models/' + name_env + '/' + 'model_{}'.format(model_number) + '/log.pkl', "rb")) + + train_error = np.array(log["loss_cross_entropy_train"]) + success_rate_train = np.array(log["success_pred_train"]) + valid_error = np.array(log["loss_cross_entropy_valid"]) + success_rate_valid = np.array(log["success_pred_valid"]) + + print('At epoch {} the CE error for train reach the minimum value of {}'.format(np.argmin(train_error), + min(train_error))) + print(train_error) + print(" ") + print('At epoch {} the CE error for valid reach the minimum value of {}'.format(np.argmin(valid_error), + min(valid_error))) + print(valid_error) + print(" ") + print('At epoch {} the success rate for train reach the maximum value of {}'.format(np.argmax(success_rate_train), + max(success_rate_train))) + print(success_rate_train) + print(" ") + print('At epoch {} the success rate for valid reach the maximum value of {}'.format(np.argmax(success_rate_valid), + max(success_rate_valid))) + print(success_rate_valid) + + """plt.plot(np.arange(len(train_error)), train_error) + plt.title("Train error") + plt.grid(axis='both') + plt.show() + plt.plot(np.arange(len(valid_error)), valid_error) + plt.title("Valid error") + plt.grid(axis='both') + plt.show() + plt.plot(np.arange(len(success_rate_train)), success_rate_train) + plt.title("Success rate train set") + plt.grid(axis='both') + plt.show() + plt.plot(np.arange(len(success_rate_valid)), success_rate_valid) + plt.title("Success rate valid set") + plt.grid(axis='both') + plt.show() +""" + + + + +learning_curves('BabyAI-PutNextLocal-v0_no_answer_l_class', 0) + diff --git a/babyai/scripts/show_level_instructions.py b/babyai/scripts/show_level_instructions.py new file mode 100755 index 0000000..1ed0ee5 --- /dev/null +++ b/babyai/scripts/show_level_instructions.py @@ -0,0 +1,21 @@ +""" +Randomly sample and print out instructions from a level. +""" + +import argparse + +import babyai +import gym + + +parser = argparse.ArgumentParser("Show level instructions") +parser.add_argument("--n-episodes", type=int, default=10000, + help="Collect instructions from this many episodes") +parser.add_argument("level", + help="The level of interest") +args = parser.parse_args() + +env = gym.make(args.level) +instructions = set(env.reset()['mission'] for i in range(args.n_episodes)) +for instr in sorted(instructions): + print(instr) diff --git a/babyai/scripts/subtask_prediction.py b/babyai/scripts/subtask_prediction.py new file mode 100644 index 0000000..94533db --- /dev/null +++ b/babyai/scripts/subtask_prediction.py @@ -0,0 +1,501 @@ +""" +Code for the subtask prediction model (relevance classifier). +""" + +import copy +import gym +import time +import datetime +import numpy as np +import sys +import itertools +import torch +import torch.nn as nn +import babyai.utils as utils +import os +import json +import logging +from tqdm import tqdm +from gym import spaces +from subtask_prediction_model import SubtaskPredictionModel +from instruction_handler import InstructionHandler + +logger = logging.getLogger(__name__) + + +class SubtaskDataset(object): + """Dataset for online subtask decomposition collection""" + + def __init__(self): + self.denoised_demos = {} + + def add_demos(self, demos): + """demos: list of observed decompositions [(instr, [(t, subtask),...])] + t (time of completion) is currently ignored + """ + + for instr, subtasks in demos: + # ignore timestep + subtasks_flat = [idx for sub in subtasks for idx in sub[1]] + if instr in self.denoised_demos: + if len(self.denoised_demos[instr].intersection(subtasks_flat)) > 0: + self.denoised_demos[instr] = self.denoised_demos[instr].intersection( + subtasks_flat) + else: + self.denoised_demos[instr] = set(subtasks_flat) + else: + self.denoised_demos[instr] = set(subtasks_flat) + + def get_stats(self): + num_subs = list([len(v) + for v in self.denoised_demos.values() if len(v) > 0]) + if len(num_subs) > 0: + return (len(num_subs), np.mean(num_subs), np.std(num_subs), min(num_subs), max(num_subs)) + else: + return (0, 0, 0, 0) + + def get_demos(self): + return [(instr, [(-1, list(subtasks))]) for instr, subtasks in self.denoised_demos.items()] + + +class SubtaskPrediction(object): + + def __init__(self, args, online_args=False): + + self.args = args + self.online_args = online_args + + utils.seed(self.args.seed) + + if online_args: + if getattr(self.args, 'subtask_pretrained_model', None): + logger.info("loading pretrained model") + self.model = utils.load_model( + args.subtask_pretrained_model, raise_not_found=True) + else: + self.model = SubtaskPredictionModel( + {"instr": 100}, instr_dim=args.instr_dim, arch=args.subtask_arch, lang_model=args.instr_arch) + + else: + if getattr(self.args, 'pretrained_model', None): + logger.info("loading pretrained model") + self.model = utils.load_model( + args.pretrained_model, raise_not_found=True) + else: + self.model = SubtaskPredictionModel( + {"instr": 100}, instr_dim=args.instr_dim, arch=args.arch, lang_model=args.instr_arch) + + if online_args: + demos_path_valid = utils.get_demos_path( + args.subtask_hl_demos, args.env, args.demos_origin, valid=True) + ll_demos_path = utils.get_demos_path( + args.demos, None, None, valid=False) + logger.info('loading low-level demos') + ll_demos = utils.load_demos(ll_demos_path) + logger.info('loaded low-level demos') + if args.episodes: + if args.episodes > len(ll_demos): + raise ValueError( + "there are only {} low-level demos".format(len(ll_demos))) + ll_demos = ll_demos[:args.episodes] + else: + demos_path = utils.get_demos_path( + args.demos, args.env, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_path( + args.demos, args.env, args.demos_origin, valid=True) + ll_demos_path = utils.get_demos_path( + args.low_level_demos, args.env, args.demos_origin, valid=False) + logger.info('loading low-level demos') + ll_demos = utils.load_demos(ll_demos_path) + logger.info('loaded low-level demos') + if args.ll_episodes: + if args.ll_episodes > len(ll_demos): + raise ValueError( + "there are only {} low-level demos".format(len(ll_demos))) + ll_demos = ll_demos[:args.ll_episodes] + + logger.info('loading instruction handler') + self.instr_handler = InstructionHandler( + ll_demos, load_bert=False, save_path=os.path.join(os.path.splitext(ll_demos_path)[0], "ih")) + logger.info('loaded instruction handler') + + if not online_args: + # Load training data + logger.info('loading demos') + self.train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + self.train_demos = list( + tuple(zip(self.train_demos[0], self.train_demos[1]))) + if args.episodes: + if args.episodes > len(self.train_demos): + raise ValueError( + "there are only {} train demos".format(len(self.train_demos))) + self.train_demos = self.train_demos[:args.episodes] + + if args.denoise: + self.train_demos = self.denoise_demos( + self.train_demos, args.denoise_k, args.denoise_total) + logger.info( + f"denoised demos -> {len(self.train_demos)} each with {args.denoise_k} instances") + + if args.augment: + self.train_demos.extend(self.augment_demos(args.augment_total)) + logger.info(f"augmented demos -> {args.augment_total}") + + self.val_demos = utils.load_demos(demos_path_valid) + self.val_demos = list(tuple(zip(self.val_demos[0], self.val_demos[1]))) + if online_args: + if args.subtask_val_episodes > len(self.val_demos): + logger.info('Using all the available {} demos to evaluate valid. accuracy'.format( + len(self.val_demos))) + self.val_demos = self.val_demos[:self.args.subtask_val_episodes] + else: + if args.val_episodes > len(self.val_demos): + logger.info('Using all the available {} demos to evaluate valid. accuracy'.format( + len(self.val_demos))) + self.val_demos = self.val_demos[:self.args.val_episodes] + + if online_args: + self.instr_preprocessor = utils.InstructionOnlyPreprocessor( + args.subtask_model, getattr(self.args, 'subtask_pretrained_model', None)) + self.instr_preprocessor.vocab.save() + else: + self.instr_preprocessor = utils.InstructionOnlyPreprocessor( + args.model, getattr(self.args, 'pretrained_model', None)) + self.instr_preprocessor.vocab.save() + + self.model.train() + if torch.cuda.is_available(): + self.model.cuda() + + self.optimizer = torch.optim.Adam( + self.model.parameters(), self.args.lr, eps=self.args.optim_eps) + self.scheduler = torch.optim.lr_scheduler.StepLR( + self.optimizer, step_size=100, gamma=0.9) + + self.device = torch.device( + "cuda" if torch.cuda.is_available() else "cpu") + + if online_args: + self.status = {"i": 0, "num_frames": 0} + + @staticmethod + def default_model_name(args): + named_envs = args.env + # Define model name + suffix = datetime.datetime.now().strftime("%y-%m-%d-%H-%M-%S") + instr = args.instr_arch if args.instr_arch else "noinstr" + model_name_parts = { + 'envs': named_envs, + 'arch': args.arch, + 'instr': instr, + 'seed': args.seed, + 'suffix': suffix} + default_model_name = "{envs}_SP_{arch}_{instr}_seed{seed}_{suffix}".format( + **model_name_parts) + if getattr(args, 'pretrained_model', None): + default_model_name = args.pretrained_model + '_pretrained_' + default_model_name + return default_model_name + + def augment_demos(self, total): + demos = [] + for i, instr1 in enumerate(self.instr_handler.missions): + for j, instr2 in enumerate(self.instr_handler.missions): + demos.append((instr1 + " and " + instr2, [(-1, [i, j])])) + np.random.shuffle(demos) + demos = demos[:total] + return demos + + def denoise_demos(self, demos, k, total): + denoised = {} + num_used = {} + for instr, subtasks in demos: + if instr not in num_used or num_used[instr] < k: + subtasks_flat = [idx for sub in subtasks for idx in sub[1]] + denoised[instr] = denoised.get(instr, set( + subtasks_flat)).intersection(subtasks_flat) + num_used[instr] = num_used.get(instr, 0) + 1 + num_subs = list([len(v) for i, v in denoised.items() + if num_used[i] == k and len(v) > 0]) + logger.info("denoised {} +- {}, ({}, {})".format(np.mean(num_subs), np.std(num_subs), + min(num_subs), max(num_subs))) + return [(instr, [(-1, list(subtasks))]) for instr, subtasks in denoised.items() + if len(subtasks) > 0 and num_used[instr] == k][:total] + + def run_epoch_recurrence(self, demos, batch_size, is_training=False, truth=False, ones=False): + + if ones: + demos = utils.demos.transform_demos_subtasks_cross_ones( + demos, self.instr_handler) + else: + demos = utils.demos.transform_demos_subtasks_cross( + demos, self.instr_handler) + + indices = list(range(len(demos))) + if is_training: + np.random.shuffle(indices) + + offset = 0 + + if not is_training: + self.model.eval() + + log = {"loss": [], "accuracy": [], "correct_true": 0, "predict_true": 0, + "target_true": 0, "precision": 0, "recall": 0, "frames": 0} + + start_time = time.time() + frames = 0 + for batch_index in range(len(indices) // batch_size): + batch = [demos[i] for i in indices[offset: offset + batch_size]] + frames += len(batch) + + _log = self.run_epoch_recurrence_one_batch( + batch, is_training=is_training, truth=truth) + + log["loss"].append(_log["loss"]) + log["accuracy"].append(_log["accuracy"]) + log["frames"] = frames + + if truth: + log["correct_true"] += _log["correct_true"] + log["target_true"] += _log["target_true"] + log["predict_true"] += _log["predict_true"] + + offset += batch_size + + if truth: + if log["predict_true"] > 0: + log["precision"] = log["correct_true"] / log["predict_true"] + if log["target_true"] > 0: + log["recall"] = log["correct_true"] / log["target_true"] + + if not is_training: + self.model.train() + + return log + + def run_epoch_recurrence_one_batch(self, batch, is_training=False, truth=False): + + missions, subtasks, labels = zip(*batch) + + missions = self.instr_preprocessor(missions, device=self.device) + try: + subtasks = self.instr_preprocessor(subtasks, device=self.device) + except: + import pdb + pdb.set_trace() + subtasks = self.instr_preprocessor(subtasks, device=self.device) + labels = torch.tensor(labels).to(self.device).float() + + preds = self.model(missions, subtasks) + predictions = preds.round() + loss_fn = nn.BCELoss() + loss = loss_fn(preds, labels) + accuracy = float((predictions == labels).sum()) / len(labels) + + if is_training: + self.optimizer.zero_grad() + loss.backward() + self.optimizer.step() + + log = {} + log["loss"] = float(loss) + log["accuracy"] = float(accuracy) + + if truth: + log["correct_true"] = int( + ((predictions == labels).int() & labels.int()).sum()) + log["predict_true"] = int(predictions.sum()) + log["target_true"] = int(labels.sum()) + + return log + + def online_update(self, train_demos, header, writer, validate=True): + + logger.info("Dataset size: {}".format(len(train_demos))) + total_start_time = time.time() + + for u in range(self.args.subtask_updates): + + self.status['i'] += 1 + i = self.status['i'] + update_start_time = time.time() + + log = self.run_epoch_recurrence( + train_demos, batch_size=self.args.subtask_batch_size, is_training=True, truth=True) + + update_end_time = time.time() + + if u == self.args.subtask_updates-1: + total_ellapsed_time = int(time.time() - total_start_time) + fps = log['frames'] / (update_end_time - update_start_time) + duration = datetime.timedelta(seconds=total_ellapsed_time) + + for key in log: + log[key] = np.mean(log[key]) + + train_data = [self.status['i'], self.status['num_frames'], fps, total_ellapsed_time, + log["loss"], log["accuracy"], log["precision"], log["recall"]] + + logger.info( + "U {} | M {:06} | MPS {:04.0f} | D {} | Loss {:.3f} | Accuracy {:.3f} | Precision {:.3f} | Recall {:.3f}".format(*train_data)) + + if validate: + val_log = self.run_epoch_recurrence( + self.val_demos, batch_size=self.args.subtask_batch_size, is_training=False) + truth_validation_accuracy = 0 # Deprecated but retained not to mess up logging + truth_validation_precision = 0 + truth_validation_recall = 0 + validation_loss = np.mean(val_log["loss"]) + validation_accuracy = np.mean(val_log["accuracy"]) + success_rate = validation_accuracy + + validation_data = [validation_loss, validation_accuracy, + truth_validation_accuracy, truth_validation_precision, truth_validation_recall] + logger.info(("Validation: Loss {: .3f} | Accuracy {: .3f} | GT Accuracy {: .3f} | GT Precision {: .3f} | GT Recall {: .3f}" + ).format(*validation_data)) + + subtask_log = {key: float(value) for key, value in zip( + header, train_data + validation_data)} + else: + subtask_log = {key: float(value) + for key, value in zip(header, train_data)} + + logger.info("Saving current model") + if torch.cuda.is_available(): + self.model.cpu() + utils.save_model(self.model, self.args.subtask_model, writer) + self.instr_preprocessor.vocab.save() + if torch.cuda.is_available(): + self.model.cuda() + + return subtask_log + + def train(self, train_demos, writer, csv_writer, status_path, header, reset_status=False): + # Load the status + def initial_status(): + return {'i': 0, + 'num_frames': 0} + + status = initial_status() + if os.path.exists(status_path) and not reset_status: + with open(status_path, 'r') as src: + status = json.load(src) + elif not os.path.exists(os.path.dirname(status_path)): + # Ensure that the status directory exists + os.makedirs(os.path.dirname(status_path)) + + # If the batch size is larger than the number of demos, we need to lower the batch size + if self.args.batch_size > len(train_demos): + self.args.batch_size = len(train_demos) + logger.info("Batch size too high. Setting it to the number of train demos ({})".format( + len(train_demos))) + + # Model saved initially to avoid "Model not found Exception" during first validation step + utils.save_model(self.model, self.args.model, writer) + + # best mean return to keep track of performance on validation set + best_success_rate, i = 0, 0 + total_start_time = time.time() + + while status['i'] < getattr(self.args, 'epochs', int(1e9)): + + if self.args.augment: + if status['i'] < self.args.wait_finetune: + train_demos_truncated = train_demos[-self.args.augment_total:] + else: + train_demos_truncated = train_demos[:- + self.args.augment_total] + else: + train_demos_truncated = train_demos + + status['i'] += 1 + i = status['i'] + update_start_time = time.time() + + log = self.run_epoch_recurrence( + train_demos_truncated, batch_size=self.args.batch_size, is_training=True, truth=True, ones=self.args.ones) + + status['num_frames'] += log['frames'] + + update_end_time = time.time() + + # Print logs + if status['i'] % self.args.log_interval == 0: + total_ellapsed_time = int(time.time() - total_start_time) + fps = log['frames'] / (update_end_time - update_start_time) + duration = datetime.timedelta(seconds=total_ellapsed_time) + + for key in log: + log[key] = np.mean(log[key]) + + train_data = [status['i'], status['num_frames'], fps, total_ellapsed_time, + log["loss"], log["accuracy"], log["precision"], log["recall"]] + + logger.info( + "U {} | M {:06} | MPS {:04.0f} | D {} | Loss {:.3f} | Accuracy {:.3f} | Precision {:.3f} | Recall {:.3f}".format(*train_data)) + + # Log the gathered data only when we don't evaluate the validation metrics. It will be logged anyways + # afterwards when status['i'] % self.args.val_interval == 0 + if status['i'] % self.args.val_interval != 0: + # instantiate a validation_log with empty strings when no validation is done + validation_data = [ + ''] * len([key for key in header if 'valid' in key]) + assert len(header) == len(train_data + validation_data) + if self.args.tb: + for key, value in zip(header, train_data): + writer.add_scalar(key, float( + value), status['num_frames']) + elif self.args.wb: + writer.log({key: float(value) for key, value in zip(header, train_data)}, + step=status['num_frames']) + csv_writer.writerow(train_data + validation_data) + + if status['i'] % self.args.val_interval == 0: + val_log = self.run_epoch_recurrence( + self.val_demos, batch_size=self.args.batch_size, is_training=False, ones=self.args.ones) + truth_validation_accuracy = 0 # Deprecated but retained not to mess up logging + truth_validation_precision = 0 + truth_validation_recall = 0 + validation_loss = np.mean(val_log["loss"]) + validation_accuracy = np.mean(val_log["accuracy"]) + success_rate = validation_accuracy + + if status['i'] % self.args.log_interval == 0: + validation_data = [validation_loss, validation_accuracy, + truth_validation_accuracy, truth_validation_precision, truth_validation_recall] + logger.info(("Validation: Loss {: .3f} | Accuracy {: .3f} | GT Accuracy {: .3f} | GT Precision {: .3f} | GT Recall {: .3f}" + ).format(*validation_data)) + + assert len(header) == len(train_data + validation_data) + if self.args.wb: + writer.log({key: float(value) for key, value in zip(header, train_data + validation_data)}, + step=status['num_frames']) + csv_writer.writerow(train_data + validation_data) + + if np.mean(success_rate) > best_success_rate: + best_success_rate = np.mean(success_rate) + with open(status_path, 'w') as dst: + json.dump(status, dst) + # Saving the model + logger.info("Saving best model") + + if torch.cuda.is_available(): + self.model.cpu() + utils.save_model( + self.model, self.args.model + "_best", writer) + self.instr_preprocessor.vocab.save( + utils.get_vocab_path(self.args.model + "_best")) + if torch.cuda.is_available(): + self.model.cuda() + + if status['i'] % self.args.save_interval == 0: + logger.info("Saving current model") + if torch.cuda.is_available(): + self.model.cpu() + utils.save_model(self.model, self.args.model, writer) + self.instr_preprocessor.vocab.save() + if torch.cuda.is_available(): + self.model.cuda() + with open(status_path, 'w') as dst: + json.dump(status, dst) diff --git a/babyai/scripts/subtask_prediction_model.py b/babyai/scripts/subtask_prediction_model.py new file mode 100644 index 0000000..e2a89a8 --- /dev/null +++ b/babyai/scripts/subtask_prediction_model.py @@ -0,0 +1,78 @@ +""" +""" + +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import Variable + + +def initialize_parameters(m): + classname = m.__class__.__name__ + if classname.find('Linear') != -1: + m.weight.data.normal_(0, 1) + m.weight.data *= 1 / torch.sqrt(m.weight.data.pow(2).sum(1, keepdim=True)) + if m.bias is not None: + m.bias.data.fill_(0) + + +class SubtaskPredictionModel(nn.Module): + + def __init__(self, obs_space, arch="siamese", lang_model="gru", instr_dim=128): + super().__init__() + + self.arch = arch + self.lang_model = lang_model + self.instr_dim = instr_dim + + if self.lang_model in ['gru']: + self.word_embedding = nn.Embedding(obs_space["instr"], self.instr_dim) + gru_dim = self.instr_dim + self.instr_rnn = nn.GRU( + self.instr_dim, gru_dim, batch_first=True, + bidirectional=False + ) + + self.fc1 = nn.Linear(self.instr_dim, self.instr_dim // 2) + self.fc2 = nn.Linear(self.instr_dim, self.instr_dim // 2) + self.dropout1 = nn.Dropout(0.1) + self.dropout2 = nn.Dropout(0.1) + self.fc3 = nn.Linear(self.instr_dim, self.instr_dim // 2) + self.fc4 = nn.Linear(self.instr_dim // 2, 1) + + self.sigmoid = nn.Sigmoid() + + self.apply(initialize_parameters) + + def forward(self, missions, subtasks): + if self.arch == "siamese": + mission_embedding = self._get_instr_embedding(missions) + subtask_embedding = self._get_instr_embedding(subtasks) + + mission_embedding = self.dropout1(self.fc1(mission_embedding)) + subtask_embedding = self.dropout2(self.fc2(subtask_embedding)) + + both_embeddings = torch.cat((mission_embedding, subtask_embedding), dim=-1) + both_embeddings = self.fc3(both_embeddings) + + logits = self.fc4(both_embeddings) + preds = self.sigmoid(logits).squeeze(-1) + elif self.arch == "siamese-l1": + mission_embedding = self._get_instr_embedding(missions) + subtask_embedding = self._get_instr_embedding(subtasks) + + mission_embedding = self.fc1(mission_embedding) + subtask_embedding = self.fc2(subtask_embedding) + + dist = torch.norm(mission_embedding - subtask_embedding, p=1, dim=1) + + preds = torch.exp(-dist) + + return preds + + def _get_instr_embedding(self, instr): + lengths = (instr != 0).sum(1).long() + if self.lang_model == 'gru': + out, _ = self.instr_rnn(self.word_embedding(instr)) + hidden = out[range(len(lengths)), lengths-1, :] + return hidden \ No newline at end of file diff --git a/babyai/scripts/test_PPO.py b/babyai/scripts/test_PPO.py new file mode 100644 index 0000000..3a9124e --- /dev/null +++ b/babyai/scripts/test_PPO.py @@ -0,0 +1,206 @@ +from abc import ABC, abstractmethod +import torch +import numpy +from tqdm import tqdm + +from babyai.rl.format import default_preprocess_obss +from babyai.rl.utils import DictList, ParallelEnv +from babyai.rl.utils.supervised_losses import ExtraInfoCollector +import babyai.utils +from torch.distributions import Categorical +import logging +logger = logging.getLogger(__name__) +import matplotlib.pyplot as plt + + +class BaseAlgo(ABC): + """The base class for RL algorithms.""" + + def __init__(self, envs, acmodel, number_episodes, reshape_reward, preprocess_obss, + aux_info, sampling_temperature=1): + """ + Initializes a `BaseAlgo` instance. + + Parameters: + ---------- + envs : list + a list of environments that will be run in parallel + acmodel : torch.Module + the model + num_frames_per_proc : int + the number of frames collected by every process for an update + discount : float + the discount for future rewards + preprocess_obss : function + a function that takes observations returned by the environment + and converts them into the format that the model can handle + reshape_reward : function + a function that shapes the reward, takes an + (observation, action, reward, done) tuple as an input + aux_info : list + a list of strings corresponding to the name of the extra information + retrieved from the environment for supervised auxiliary losses + + """ + # Store parameters + + self.env = envs + self.acmodel = acmodel + self.number_episodes = number_episodes + self.preprocess_obss = preprocess_obss or default_preprocess_obss + self.reshape_reward = reshape_reward + self.aux_info = aux_info + self.sampling_temperature = sampling_temperature + + # Store helpers values + + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + self.num_procs = len(envs) + + # Initialize experience values + + logging.info("resetting environment") + self.obs = self.env.reset() + logging.info("reset environment") + + self.memory = torch.zeros(self.num_procs, self.acmodel.memory_size, device=self.device) + + self.mask = torch.ones(self.num_procs, device=self.device) + + self.rewards = [] + self.rewards_bonus = [] + + # Initialize log values + + self.log_episode_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return_bonus = torch.zeros(self.num_procs, device=self.device) + self.log_episode_num_frames = torch.zeros(self.num_procs, device=self.device) + + self.log_done_counter = 0 + self.log_return = [0] * self.num_procs + self.log_reshaped_return = [0] * self.num_procs + self.log_reshaped_return_bonus = [0] * self.num_procs + self.log_num_frames = [0] * self.num_procs + + def prompt_modifier(self, prompt: str, dict_changes: dict) -> str: + """use a dictionary of equivalence to modify the prompt accordingly + ex: + prompt= 'green box red box', dict_changes={'box':'tree'} + promp_modifier(prompt, dict_changes)='green tree red tree' """ + + for key, value in dict_changes.items(): + prompt = prompt.replace(key, value) + return prompt + def generate_trajectories(self, dict_modifier): + """Collects rollouts and computes advantages. + + Runs several environments concurrently. The next actions are computed + in a batch mode for all environments at the same time. The rollouts + and advantages from all environments are concatenated together. + + Returns + ------- + exps : DictList + Contains actions, rewards, advantages etc as attributes. + Each attribute, e.g. `exps.reward` has a shape + (self.num_frames_per_proc * num_envs, ...). k-th block + of consecutive `self.num_frames_per_proc` frames contains + data obtained from the k-th environment. Be careful not to mix + data from different environments! + logs : dict + Useful stats about the training process, including the average + reward, policy loss, value loss, etc. + + """ + # TODO change the goal in obs + pbar = tqdm(range(self.number_episodes), ascii=" " * 9 + ">", ncols=100) + while self.log_done_counter < self.number_episodes: + # Do one agent-environment interaction + for o in self.obs: + o['mission'] = self.prompt_modifier(o['mission'], dict_modifier) + preprocessed_obs = self.preprocess_obss(self.obs, device=self.device) + with torch.no_grad(): + model_results = self.acmodel(preprocessed_obs, self.memory * self.mask.unsqueeze(1)) + dist = model_results['dist'] + value = model_results['value'] + memory = model_results['memory'] + extra_predictions = model_results['extra_predictions'] + + if self.sampling_temperature != 1: + dist = Categorical(logits=dist.logits/self.sampling_temperature) + action = dist.sample() + # action = dist.probs.argmax(dim=1) + + a = action.cpu().numpy() + real_a = numpy.copy(a) + real_a[real_a > 6] = 6 + obs, reward, done, env_info = self.env.step(real_a) + + if isinstance(env_info, tuple) and len(env_info) == 2: + info, pi_l_actions = env_info + else: + info = env_info + if self.aux_info: + env_info = self.aux_info_collector.process(env_info) + # env_info = self.process_aux_info(env_info) + + # Update experiences values + self.obs = obs + self.memory = memory + self.mask = 1 - torch.tensor(done, device=self.device, dtype=torch.float) + + if self.reshape_reward is not None: + rewards_shaped = torch.tensor([ + self.reshape_reward(obs_, action_, reward_, done_, info_) + for obs_, action_, reward_, done_, info_ in zip(obs, action, reward, done, info) + ], device=self.device) + self.rewards.append(rewards_shaped[:, 0]) + self.rewards_bonus.append(rewards_shaped[:, 1]) + else: + self.rewards.append(torch.tensor(reward, device=self.device)) + + # Update log values + + self.log_episode_return += torch.tensor(reward, device=self.device, dtype=torch.float) + self.log_episode_reshaped_return += self.rewards[-1] + self.log_episode_reshaped_return_bonus += self.rewards_bonus[-1] + self.log_episode_num_frames += torch.ones(self.num_procs, device=self.device) + + for i, done_ in enumerate(done): + if done_: + self.log_done_counter += 1 + pbar.update(1) + self.log_return.append(self.log_episode_return[i].item()) + if self.log_episode_return[i].item() > 0: + print(self.obs[i]['mission']) + self.log_reshaped_return.append(self.log_episode_reshaped_return[i].item()) + self.log_reshaped_return_bonus.append(self.log_episode_reshaped_return_bonus[i].item()) + self.log_num_frames.append(self.log_episode_num_frames[i].item()) + + self.log_episode_return *= self.mask + self.log_episode_reshaped_return *= self.mask + self.log_episode_reshaped_return_bonus *= self.mask + self.log_episode_num_frames *= self.mask + + pbar.close() + + # Log some values + + keep = max(self.log_done_counter, self.num_procs) + + log = { + "return_per_episode": self.log_return[-keep:], + "reshaped_return_per_episode": self.log_reshaped_return[-keep:], + "reshaped_return_bonus_per_episode": self.log_reshaped_return_bonus[-keep:], + "num_frames_per_episode": self.log_num_frames[-keep:], + "episodes_done": self.log_done_counter, + } + + self.log_done_counter = 0 + self.log_return = self.log_return[-self.num_procs:] + self.log_reshaped_return = self.log_reshaped_return[-self.num_procs:] + self.log_reshaped_return_bonus = self.log_reshaped_return_bonus[-self.num_procs:] + self.log_num_frames = self.log_num_frames[-self.num_procs:] + + return log diff --git a/babyai/scripts/test_rl.py b/babyai/scripts/test_rl.py new file mode 100755 index 0000000..e2b80c6 --- /dev/null +++ b/babyai/scripts/test_rl.py @@ -0,0 +1,377 @@ +#!/usr/bin/env python3 + +""" +Script to train the agent through reinforcement learning. +""" + +import os +import logging +import csv +import json +import gym +import time +import datetime +import torch +import test_PPO +import numpy as np + +import babyai +import babyai.utils as utils +import babyai.rl +from babyai.arguments import ArgumentParser +from babyai.model import ACModel +from babyai.utils.agent import ModelAgent +from gym_minigrid.wrappers import FullyObsImgDirWrapper, FullyObsImgEgoWrapper +from babyai.shaped_env import ParallelShapedEnv +from gym import spaces +from instruction_handler import InstructionHandler +from subtask_prediction import SubtaskPrediction, SubtaskDataset +from colorama import Fore, Back, Style + +if __name__ == "__main__": + + # Parse arguments + parser = ArgumentParser() + parser.add_argument("--algo", default='ppo', + help="algorithm to use (default: ppo)") + parser.add_argument("--discount", type=float, default=0.99, + help="discount factor (default: 0.99)") + parser.add_argument("--reward-scale", type=float, default=20., + help="Reward scale multiplier") + parser.add_argument("--gae-lambda", type=float, default=0.99, + help="lambda coefficient in GAE formula (default: 0.99, 1 means no gae)") + parser.add_argument("--value-loss-coef", type=float, default=0.5, + help="value loss term coefficient (default: 0.5)") + parser.add_argument("--max-grad-norm", type=float, default=0.5, + help="maximum norm of gradient (default: 0.5)") + parser.add_argument("--clip-eps", type=float, default=0.2, + help="clipping epsilon for PPO (default: 0.2)") + parser.add_argument("--ppo-epochs", type=int, default=4, + help="number of epochs for PPO (default: 4)") + parser.add_argument("--save-interval", type=int, default=50, + help="number of updates between two saves (default: 50, 0 means no saving)") + parser.add_argument("--full-obs", action="store_true", default=False, + help="use full observations of the environment") + parser.add_argument("--ego", action="store_true", default=False, + help="use egocentric full observations") + parser.add_argument("--pi-l", default=None, + help="model to use for low-level policy") + parser.add_argument("--hrl", default=None, + help="either 'vanilla', 'shape', or a hierarchical rl type (deprecated)") + parser.add_argument("--N", type=int, default=1, + help="hierarchical timestep") + parser.add_argument("--T", type=int, default=0, + help="number of steps per instruction in HRL (0 means to termination)") + parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") + parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") + parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--multi-demos", nargs='*', default=None, + help="demos filenames for envs to train on (REQUIRED when multi-env is specified)") + parser.add_argument("--multi-episodes", type=int, nargs='*', default=None, + help="number of episodes of demos to use from each file (REQUIRED when multi-env is specified)") + + parser.add_argument("--sampling-temperature", type=float, default=1, + help="softmax temperature to use when sampling from action distribution") + parser.add_argument("--oracle-rate", type=float, default=1, + help="rate at which hierarchical oracle option is non-null") + parser.add_argument("--reward-shaping", type=str, default="multiply", + help="apply reward shaping") + parser.add_argument("--pi-l-scale", type=float, default=1., + help="Reshaped pi-l multiplier") + parser.add_argument("--pi-l-scale-2", type=float, default=1., + help="Another reshaped pi-l multiplier (e.g. for penalties)") + + parser.add_argument("--high-level-demos", default=None, + help="demos filename") + parser.add_argument("--hl-episodes", type=int, default=0, + help="number of high-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--subtask-model", default=None, + help="model to use for subtask prediction") + parser.add_argument("--subtask-arch", default=None, + help="architecture of subtask model") + parser.add_argument("--subtask-pretrained-model", default=None, + help="pretrained subtask model") + parser.add_argument("--subtask-hl-demos", default=None, + help="demos for online subtask training (only validation used)") + parser.add_argument("--subtask-val-episodes", type=int, default=None, + help="number of validation demos to use for the subtask model") + parser.add_argument("--subtask-batch-size", type=int, default=None, + help="batch size for subtask model") + parser.add_argument("--subtask-update-rate", type=int, default=None, + help="rate at which subtask predictor is updated") + parser.add_argument("--subtask-updates", type=int, default=None, + help="number of gradient steps") + parser.add_argument("--subtask-discount", type=float, default=1., + help="discount (un)applied when removing subtask bonuses") + + parser.add_argument("--done-classifier", action="store_true", default=False, + help="whether pi_l is actually a binary termination classifier") + + parser.add_argument("--number-actions", type=int, default=None, + help="nbr actions can be done more than 7, if more than 7 all additional actions are the action done in order to study the effect of useless actions") + + parser.add_argument("--learn-baseline", default=None, + help="model to use for LEARN baseline classifier") + + parser.add_argument("--debug", action="store_true", default=False, + help="whether to run RL in debug mode") + + parser.add_argument("--number-trajs", type=int, default=None, + help="nbr trajs for the test") + + args = parser.parse_args() + + utils.seed(args.seed) + + # Generate environments + + envs = [] + for i in range(args.procs): + env = gym.make(args.env) + + env.seed(int(1e9 * args.seed + i)) # to be sure to not have the same seeds as in the train (100h max ~ 100000 episodes done in our settings) + if args.full_obs: + if args.ego: + env = FullyObsImgEgoWrapper(env) + else: + env = FullyObsImgDirWrapper(env) + envs.append(env) + + # Define model name + suffix = datetime.datetime.now().strftime("%y-%m-%d-%H-%M-%S") + instr = args.instr_arch if args.instr_arch else "noinstr" + mem = "mem" if not args.no_mem else "nomem" + model_name_parts = { + 'env': args.env, + 'algo': args.algo, + 'arch': args.arch, + 'instr': instr, + 'mem': mem, + 'seed': args.seed, + 'info': '', + 'coef': '', + 'suffix': suffix} + default_model_name = "{env}_{algo}_{arch}_{instr}_{mem}_seed{seed}{info}{coef}_{suffix}".format(**model_name_parts) + if args.pretrained_model: + default_model_name = args.pretrained_model + '_pretrained_' + default_model_name + elif args.hrl: + if args.pi_l is not None: + default_model_name = args.pi_l + '_pi_l_' + default_model_name + args.model = args.model.format(**model_name_parts) if args.model else default_model_name + + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + # Define obss preprocessor + if 'emb' in args.arch: + obss_preprocessor = utils.IntObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif args.full_obs and not args.ego: + obss_preprocessor = utils.ObssDirPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif 'cont' in args.arch: + obss_preprocessor = utils.ObssContPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + else: + obss_preprocessor = utils.ObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + + pi_l_agent = None + instr_handler = None + + # Load the instruction handler from demonstrations + if args.hrl is not None: + if getattr(args, 'multi_demos', None): + train_demos = [] + for demos, episodes in zip(args.multi_demos, args.multi_episodes): + demos_path = utils.get_demos_path(demos, None, None, valid=False) + logger.info('loading {} of {} demos'.format(episodes, demos)) + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if episodes > len(train_demos): + raise ValueError("there are only {} train demos in {}".format(len(train_demos), demos)) + train_demos.extend(train_demos[:episodes]) + logger.info('So far, {} demos loaded'.format(len(self.train_demos))) + logger.info('Loaded all demos') + elif getattr(args, 'demos', None): + demos_path = utils.get_demos_path(args.demos, None, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_path(args.demos, None, args.demos_origin, valid=True) + logger.info('loading demos') + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if args.episodes: + if args.episodes > len(train_demos): + raise ValueError("there are only {} train demos".format(len(train_demos))) + train_demos = train_demos[:args.episodes] + logger.info('loading instruction handler') + if args.hrl != "vanilla": + instr_handler = InstructionHandler(train_demos, load_bert="projection" in args.hrl, + save_path=os.path.join(os.path.splitext(demos_path)[0], "ih")) + logger.info('loading instruction handler') + + if getattr(args, 'high_level_demos', None): + hl_demos_path = utils.get_demos_path(args.high_level_demos, args.env, args.demos_origin, valid=False) + logger.info('loading high-level demos') + hl_demos = utils.load_demos(hl_demos_path) + logger.info('loaded high-level demos') + if args.hl_episodes: + if args.hl_episodes > len(hl_demos): + raise ValueError("there are only {} high-level demos".format(len(hl_demos))) + hl_demos = hl_demos[:args.hl_episodes] + + # Load low-level model (low-level policy or termination classifier) + if args.hrl is not None and args.hrl != "vanilla": + pi_l_agent = ModelAgent(args.pi_l, None, argmax=True) + logger.info("loaded pi_l models") + + # Initialize datasets / models used for shaping + if args.reward_shaping in ["subtask_classifier_static"]: + subtask_model = utils.load_model(args.subtask_model) + subtask_model_preproc = utils.InstructionOnlyPreprocessor(args.subtask_model, + load_vocab_from=args.subtask_model) + subtask_dataset = None + elif args.reward_shaping in ["subtask_classifier_online", "subtask_classifier_online_unclipped"]: + args.subtask_model = args.model + "_subtask" + subtask_prediction = SubtaskPrediction(args, online_args=True) + subtask_model = subtask_prediction.model + subtask_model_preproc = subtask_prediction.instr_preprocessor + subtask_dataset = SubtaskDataset() + else: + subtask_model = None + subtask_model_preproc = None + subtask_dataset = None + learn_baseline_cls = None + learn_baseline_preproc = None + if args.reward_shaping in ['learn_baseline']: + learn_baseline_cls = utils.load_model(args.learn_baseline) + if torch.cuda.is_available(): + learn_baseline_cls.cuda() + learn_baseline_preproc = utils.InstructionOnlyPreprocessor(args.learn_baseline, + load_vocab_from=args.learn_baseline) + + # Adjust action space if necessary + if args.hrl is not None: + if envs[0].action_space.__class__.__name__ == "Discrete": + if args.number_actions is None: + A = envs[0].action_space.n + else: + A = int(args.number_actions) + action_space = spaces.Discrete(A) + logger.info("setting hrl to {}; |A| = {}".format(args.hrl, action_space.n)) + if args.done_classifier: + done_action = 1 + else: + done_action = envs[0].actions.done + else: + A = envs[0].action_space.shape[0] + action_space = envs[0].action_space + done_action = 1 + + # Create vectorized environment + envs = ParallelShapedEnv(envs, pi_l=pi_l_agent, done_action=done_action, + instr_handler=instr_handler, reward_shaping=args.reward_shaping, + subtask_cls=subtask_model, subtask_cls_preproc=subtask_model_preproc, + subtask_online_ds=subtask_dataset, subtask_discount=args.subtask_discount, + learn_baseline_cls=learn_baseline_cls, learn_baseline_preproc=learn_baseline_preproc) + else: + action_space = envs[0].action_space + + # Define actor-critic model + logger.info("loading ACModel") + acmodel = utils.load_model(args.model, raise_not_found=False) + if acmodel is None: + if args.pretrained_model: + acmodel = utils.load_model(args.pretrained_model, raise_not_found=True) + else: + acmodel = ACModel(obss_preprocessor.obs_space, action_space, + args.image_dim, args.memory_dim, args.instr_dim, + not args.no_instr, args.instr_arch, not args.no_mem, args.arch) + logger.info("loaded ACModel") + + if torch.cuda.is_available(): + acmodel.cuda() + + + # Set reward shaping function + def bonus_penalty(_0, _1, reward, _2, info): + if info[0] > 0: + return [args.reward_scale * reward + args.pi_l_scale * max(info[0], 1), args.pi_l_scale * max(info[0], 1)] + elif info[1] > 0: + return [args.reward_scale * reward - args.pi_l_scale_2 * max(info[1], 1), + -args.pi_l_scale_2 * max(info[1], 1)] + else: + return [args.reward_scale * reward, 0] + + + if args.reward_shaping == "multiply": + reshape_reward = lambda _0, _1, reward, _2, _3: [args.reward_scale * reward, 0] + + + def subtask_shaping(_0, _1, reward, _2, info): + if reward > 0: + return [args.reward_scale * reward + args.pi_l_scale * info[0] - args.pi_l_scale * info[1], + args.pi_l_scale * info[0] - args.pi_l_scale * info[1]] + else: + return [args.pi_l_scale * info[0], + args.pi_l_scale * info[0]] + + + def learn_baseline_shaping(_0, _1, reward, _2, info): + return [args.reward_scale * reward + args.pi_l_scale * (args.subtask_discount * info[1] - info[0]), + args.subtask_discount * info[1] - info[0]] + + + if args.reward_shaping in ["subtask_oracle_ordered", + "subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + reshape_reward = subtask_shaping + + elif args.reward_shaping in ["learn_baseline"]: + reshape_reward = learn_baseline_shaping + + # Define actor-critic algorithm + if args.algo == "ppo": + algo = test_PPO.BaseAlgo(envs, acmodel, args.number_trajs, reshape_reward, + obss_preprocessor, aux_info=None, sampling_temperature=args.sampling_temperature) + else: + raise ValueError("Incorrect algorithm name: {}".format(args.algo)) + + utils.seed(args.seed) + + experiment_path = utils.get_log_dir(args.model) + test_path = os.path.join(experiment_path, 'test') + if not os.path.exists(test_path): + os.makedirs(test_path) + os.makedirs(os.path.join(test_path, 'return_per_episode')) + + dict_modifier_english = [{}] + dict_modifier_name = ['no_modification_test'] + + format_str = ("Name dict: {} | Episodes Done: {} | Reward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) |\ + Success Rate: {: .2f} | \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f}\ + (Min: {: .2f} Max: {: .2f})") + + dm = dict_modifier_english + for d, d_name in zip(dm, dict_modifier_name): + logs = algo.generate_trajectories(d) + + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + reshaped_return_per_episode = utils.synthesize(logs["reshaped_return_per_episode"]) + reshaped_return_bonus_per_episode = utils.synthesize(logs["reshaped_return_bonus_per_episode"]) + # num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + data = [d_name, logs['episodes_done'], *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values()] + + logger.info(Fore.YELLOW + format_str.format(*data) + Fore.RESET) + + path_test_folder = os.path.join(experiment_path, 'test/return_per_episode') + np_path = os.path.join(path_test_folder, d_name) + np.save(np_path, np.array(logs["return_per_episode"])) diff --git a/babyai/scripts/trace_agent_traj.py b/babyai/scripts/trace_agent_traj.py new file mode 100644 index 0000000..f14fc46 --- /dev/null +++ b/babyai/scripts/trace_agent_traj.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python3 + +""" +Generate a set of agent demonstrations. + +The agent can either be a trained model or the heuristic expert (bot). + +Demonstration generation can take a long time, but it can be parallelized +if you have a cluster at your disposal. Provide a script that launches +make_agent_demos.py at your cluster as --job-script and the number of jobs as --jobs. +""" + +import gym +import sys +import os + +for p in sys.path: + print(p) + +import gym_minigrid.window + +import time +import numpy as np + +import torch +import pandas as pd +import matplotlib.pyplot as plt + +from collections import deque + +import babyai.utils as utils + +from nn.GPTJ_with_value_head import GPTJForCausalLMWithValueModel_quantized, choosing_subgoals +import transformers + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +TILE_PIXELS = 32 + + +def generate_traj(model, env, seed): + """ + generate a simple trajectory with windows display + """ + env_name = env + # Generate environment + env = gym.make(env) + + env.window = gym_minigrid.window.Window('gym_minigrid') + env.window.show(block=False) + + utils.seed(seed) + traj = np.zeros((env.width, env.height), dtype=np.int32) + + number_model = 1 + model_i = model.format(number_model) + + utils.seed(seed) + + agent = torch.load('storage/models/' + model_i + '/model.pt') + obss_preprocessor = utils.ObssPreprocessor(model_i, env.observation_space, None) + if torch.cuda.is_available(): + agent.eval() + agent.cuda() + + memory = torch.zeros(1, agent.memory_size, device=device) + done = False + env.seed(seed) + obs, infos = env.reset() + print('mission: {}'.format(obs['mission'])) + print("graph: \n") + for t in infos: + print(t) + for i in range(100): + env.render('human') + while not done: + + preprocessed_obs = obss_preprocessor([obs], device=device) + model_results = agent(preprocessed_obs, memory) + + dist = model_results['dist'] + memory = model_results['memory'] + + action = torch.argmax(dist.probs).cpu().numpy() + print(action) + new_obs, reward, done, infos = env.step(action) + traj[env.agent_pos[0]][env.agent_pos[1]] += 1 + obs = new_obs + + print(" ") + print("graph: \n") + for t in infos: + print(t) + for i in range(100): + env.render('human') + + +def generate_prompt(goal, deque_obs, deque_actions): + ldo = len(deque_obs) + lda = len(deque_actions) + head_prompt = "Possible action of the agent: go forward, turn right, turn left " + """modify_goal = "go face" + goal[5:] + g = " \n Goal of the agent: {}".format(modify_goal)""" + g = " \n Goal of the agent: {}".format(goal) + obs = "" + for i in range(ldo): + obs += " \n Observation {}: ".format(i) + for d_obs in deque_obs[i]: + obs += "{}, ".format(d_obs) + obs += "\n Action {}: ".format(i) + if i < lda: + obs += "{}".format(deque_actions[i]) + return head_prompt + g + obs + + +def traj_LLM(model, env, seed): + """ + measure 0-shot performance of a LLM + """ + env_name = env + # Generate environment + env = gym.make(env) + + env.window = gym_minigrid.window.Window('gym_minigrid') + env.window.show(block=False) + + utils.seed(seed) + + tokenizer = transformers.AutoTokenizer.from_pretrained('storage/models/GPTJ', padding_side="left") + tokenizer.add_special_tokens({'pad_token': tokenizer.eos_token}) + subgoals = {0: "turn left", + 1: "turn right", + 2: "go forward"} + subgoals_tokenized = {0: tokenizer(["turn left"], return_tensors='pt').to(device), + 1: tokenizer(["turn right"], return_tensors='pt').to(device), + 2: tokenizer(["go forward"], return_tensors='pt').to(device)} + + obs_queue = deque([], maxlen=3) + acts_queue = deque([], maxlen=2) + + done = False + + env.seed(seed) + obs, infos = env.reset() + print('mission: {}'.format(obs['mission'])) + obs_queue.append(infos) + """print("graph: \n") + for t in infos: + print(t)""" + for i in range(100): + env.render('human') + while not done: + + prompt = [generate_prompt(goal=obs['mission'], deque_obs=obs_queue, deque_actions=acts_queue)] + print(prompt) + prompt_inputs = tokenizer(prompt, return_tensors='pt', padding=True).to(device) + eps = 0 + sbg = choosing_subgoals(model, + prompt=prompt_inputs['input_ids'], + attention_mask=prompt_inputs['attention_mask'], + subgoal_tokenized=subgoals_tokenized, + eps=eps) + + action = sbg[0] + acts_queue.append(subgoals[action]) + print("{} -> {}".format(sbg[0], subgoals[action])) + new_obs, reward, done, infos = env.step(action) + obs = new_obs + obs_queue.append(infos) + """print(" ") + print("graph: \n") + for t in infos: + print(t)""" + for i in range(100): + env.render('human') + env.close() + + +def perf_LLM(model, env, eps=0., random=False, min_seed=0, max_seed=100): + """ + measure 0-shot performance of a LLM + """ + env_name = env + # Generate environment + env = gym.make(env) + + success = 0 + chosen_moves = np.zeros(3) + seed_tab = [] + average_reward = 0 + + for seed in range(min_seed, max_seed): + utils.seed(seed) + + if not random: + tokenizer = transformers.AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B", padding_side="left") + tokenizer.add_special_tokens({'pad_token': tokenizer.eos_token}) + subgoals = {0: "turn left", + 1: "turn right", + 2: "go forward"} + subgoals_tokenized = {0: tokenizer(["turn left"], return_tensors='pt').to(device), + 1: tokenizer(["turn right"], return_tensors='pt').to(device), + 2: tokenizer(["go forward"], return_tensors='pt').to(device)} + + obs_queue = deque([], maxlen=3) + acts_queue = deque([], maxlen=2) + + done = False + + env.seed(seed) + obs, infos = env.reset() + print('seed {}, mission: {}'.format(seed, obs['mission'])) + if not random: + obs_queue.append(infos) + + while not done: + if not random: + prompt = [generate_prompt(goal=obs['mission'], deque_obs=obs_queue, deque_actions=acts_queue)] + # print(prompt) + prompt_inputs = tokenizer(prompt, return_tensors='pt', padding=True).to(device) + sbg = choosing_subgoals(model, + prompt=prompt_inputs['input_ids'], + attention_mask=prompt_inputs['attention_mask'], + subgoal_tokenized=subgoals_tokenized, + eps=eps) + + action = int(sbg[0]) + else: + action = np.random.randint(0, 3) + chosen_moves[action] += 1 + if not random: + acts_queue.append(subgoals[action]) + # print("{} -> {}".format(sbg[0], subgoals[action])) + new_obs, reward, done, infos = env.step(action) + + obs = new_obs + if not random: + obs_queue.append(infos) + + if reward > 0: + success += 1 + average_reward += reward + seed_tab.append(seed) + + if seed % 10 == 0: + print("success: {}".format(success/((seed-min_seed)+1))) + print("average_reward: {}".format(average_reward/((seed-min_seed)+1))) + print("chosen_moves: {}".format(chosen_moves/np.sum(chosen_moves))) + # print(seed_tab) + print(" ") + + return success/(max_seed-min_seed), average_reward/(max_seed-min_seed), chosen_moves/np.sum(chosen_moves), seed_tab + + +# generate_traj('QG_QA/PNL-adjusted-train_env-PNL_no_answer-lambda_24-model-2_10-seed_{}', 'BabyAI-PutNextLocal-v0', 1) + +gpt = GPTJForCausalLMWithValueModel_quantized.from_pretrained("storage/models/GPTJ/GPTJForCausalLMWithValueModel_quantized") + +device = 'cuda' if torch.cuda.is_available() else 'cpu' +gpt.to(device) + +"""success, average_reward, chosen_moves, seed_tab = perf_LLM(gpt, 'BabyAI-GoToLocal-v0', + eps=0.5, + random=False, + min_seed=0, + max_seed=150) +print("success: {}".format(success)) +print("average_reward: {}".format(average_reward)) +print("chosen_moves: {}".format(chosen_moves)) +print(seed_tab)""" + +for i in [0, 7, 9, 18, 19, 24, 39, 51, 58, 62, 67, 85, 86, 89, 98]: + print("SEED:{}".format(i)) + traj_LLM(gpt, 'BabyAI-GoToLocal-v0', i) + +"""success, chosen_moves, seed_tab = perf_LLM(None, 'BabyAI-GoToLocal-v0', eps=0., random=True, max_seed=100) +print("success: {}".format(success)) +print("chosen_moves: {}".format(chosen_moves)) +print(seed_tab)""" \ No newline at end of file diff --git a/babyai/scripts/train_il.py b/babyai/scripts/train_il.py new file mode 100755 index 0000000..9509f3e --- /dev/null +++ b/babyai/scripts/train_il.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +""" +Script to train agent through imitation learning using demonstrations. +""" + +import os +import csv +import copy +import gym +import time +import datetime +import numpy as np +import sys +import logging +import torch +from babyai.arguments import ArgumentParser +import babyai.utils as utils +from babyai.imitation import ImitationLearning + + +# Parse arguments +parser = ArgumentParser() +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") +parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") +parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--multi-env", nargs='*', default=None, + help="name of the environments used for validation/model loading") +parser.add_argument("--multi-demos", nargs='*', default=None, + help="demos filenames for envs to train on (REQUIRED when multi-env is specified)") +parser.add_argument("--multi-episodes", type=int, nargs='*', default=None, + help="number of episodes of demos to use from each file (REQUIRED when multi-env is specified)") +parser.add_argument("--save-interval", type=int, default=1, + help="number of epochs between two saves (default: 1, 0 means no saving)") + +parser.add_argument("--include-done", action="store_true", default=False, + help="predict termination") +parser.add_argument("--full-obs", action="store_true", default=False, + help="use full observations of the environment") +parser.add_argument("--ego", action="store_true", default=False, + help="use egocentric full observations") + +parser.add_argument("--extra-actions", type=int, default=0, + help="number of extra actions to add to the action space") +parser.add_argument("--done-classifier", action="store_true", default=False, + help="train a binary termination predictor instead of a full policy") +parser.add_argument("--oversample", type=int, default=1, + help="how many times positive examples are oversampled for the done classifier") + +def main(args): + # Verify the arguments when we train on multiple environments + # No need to check for the length of len(args.multi_env) in case, for some reason, we need to validate on other envs + if args.multi_env is not None: + assert len(args.multi_demos) == len(args.multi_episodes) + + args.model = args.model or ImitationLearning.default_model_name(args) + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + il_learn = ImitationLearning(args) + + # Define logger and Tensorboard writer + header = (["update", "frames", "fps", "duration", "entropy", "train_loss", "train_accuracy"] + + ["validation_loss", "validation_accuracy"]) + if args.multi_env is None: + header.extend(["validation_reward", "validation_rate"]) + else: + header.extend(["validation_reward_{}".format(env) for env in args.multi_env]) + header.extend(["validation_rate_{}".format(env) for env in args.multi_env]) + writer = None + if args.tb: + from tensorboardX import SummaryWriter + writer = SummaryWriter(utils.get_log_dir(args.model)) + if args.wb: + import wandb + wandb.init(project="ella", name=args.model) + wandb.config.update(args) + writer = wandb + + # Define csv writer + csv_writer = None + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Get the status path + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + + # Log command, availability of CUDA, and model + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + logger.info(il_learn.acmodel) + + il_learn.train(il_learn.train_demos, writer, csv_writer, status_path, header) + + +if __name__ == "__main__": + args = parser.parse_args() + main(args) diff --git a/babyai/scripts/train_intelligent_expert.py b/babyai/scripts/train_intelligent_expert.py new file mode 100755 index 0000000..be048f6 --- /dev/null +++ b/babyai/scripts/train_intelligent_expert.py @@ -0,0 +1,276 @@ +#!/usr/bin/env python3 + +""" +Train an agent using an intelligent expert. + +The procedure starts with a small set of training demonstrations, and +iteratively grows the training set by some percentage. At every step, the new +demos used to grow the training set are demos the agent is currently failing +on. A new model is trained from scratch at every step. + +Sample usage: +scripts/train_intelligent_expert.py --env BabyAI-GoToObj-v0 --demos GoToObj-bot-100k --validation-interval 5 + +Vanilla imitation learning: +GoToObj, 1000 demos for 100 percent success rate +GoToLocal, over 60K demos needed +""" + +import os +import csv +import json +import copy +import gym +import time +import datetime +import numpy as np +import sys +import logging +import babyai.utils as utils +from babyai.arguments import ArgumentParser +from babyai.imitation import ImitationLearning +from babyai.evaluate import batch_evaluate, evaluate +from babyai.utils.agent import BotAgent +import babyai.utils as utils +import torch +import blosc +from babyai.utils.agent import DemoAgent + +# Parse arguments +parser = ArgumentParser() +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin required)") +parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos required)") +parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--start-demos", type=int, default=5000, + help="the starting number of demonstrations") +parser.add_argument("--demo-grow-factor", type=float, default=1.2, + help="number of demos to add to the training set") +parser.add_argument("--num-eval-demos", type=int, default=1000, + help="number of demos used for evaluation while growing the training set") +parser.add_argument("--phases", type=int, default=1000, + help="maximum number of phases to train for") +parser.add_argument("--save-interval", type=int, default=1, + help="number of epochs between two saves (default: 1, 0 means no saving)") + + +logger = logging.getLogger(__name__) + +check_obss_equality = DemoAgent.check_obss_equality +def evaluate_agent(il_learn, eval_seed, num_eval_demos, return_obss_actions=False): + """ + Evaluate the agent on some number of episodes and return the seeds for the + episodes the agent performed the worst on. + """ + + logger.info("Evaluating agent on {} using {} demos".format(il_learn.args.env, num_eval_demos)) + + agent = utils.load_agent(il_learn.env, il_learn.args.model) + + agent.model.eval() + logs = batch_evaluate( + agent, + il_learn.args.env, + episodes=num_eval_demos, + seed=eval_seed, + return_obss_actions=return_obss_actions + ) + agent.model.train() + + success_rate = np.mean([1 if r > 0 else 0 for r in logs['return_per_episode']]) + logger.info("success rate: {:.2f}".format(success_rate)) + + # Find the seeds for all the failing demos + fail_seeds = [] + fail_obss = [] + fail_actions = [] + + for idx, ret in enumerate(logs["return_per_episode"]): + if ret <= 0: + fail_seeds.append(logs["seed_per_episode"][idx]) + if return_obss_actions: + fail_obss.append(logs["observations_per_episode"][idx]) + fail_actions.append(logs["actions_per_episode"][idx]) + + logger.info("{} fails".format(len(fail_seeds))) + + if not return_obss_actions: + return success_rate, fail_seeds + else: + return success_rate, fail_seeds, fail_obss, fail_actions + + +def generate_demos(env_name, seeds): + env = gym.make(env_name) + agent = BotAgent(env) + demos = [] + + for seed in seeds: + # Run the expert for one episode + done = False + + env.seed(int(seed)) + obs = env.reset() + agent.on_reset() + + actions = [] + mission = obs["mission"] + images = [] + directions = [] + + try: + while not done: + action = agent.act(obs)['action'] + new_obs, reward, done, _ = env.step(action) + agent.analyze_feedback(reward, done) + + actions.append(action) + images.append(obs['image']) + directions.append(obs['direction']) + + obs = new_obs + + if reward > 0: + demos.append((mission, blosc.pack_array(np.array(images)), directions, actions)) + if reward == 0: + logger.info("failed to accomplish the mission") + + except Exception: + logger.exception("error while generating demo #{}".format(len(demos))) + continue + + # logger.info("demo #{}".format(len(demos))) + + return demos + + +def grow_training_set(il_learn, train_demos, eval_seed, grow_factor, num_eval_demos): + """ + Grow the training set of demonstrations by some factor + We specifically generate demos on which the agent fails + """ + + new_train_set_size = int(len(train_demos) * grow_factor) + num_new_demos = new_train_set_size - len(train_demos) + + logger.info("Generating {} new demos for {}".format(num_new_demos, il_learn.args.env)) + + # Add new demos until we rearch the new target size + while len(train_demos) < new_train_set_size: + num_new_demos = new_train_set_size - len(train_demos) + + # Evaluate the success rate of the model + success_rate, fail_seeds = evaluate_agent(il_learn, eval_seed, num_eval_demos) + eval_seed += num_eval_demos + + if len(fail_seeds) > num_new_demos: + fail_seeds = fail_seeds[:num_new_demos] + + # Generate demos for the worst performing seeds + new_demos = generate_demos(il_learn.args.env, fail_seeds) + train_demos.extend(new_demos) + + return eval_seed + + +def get_bot_mean(env_name, episodes_to_evaluate_mean, seed): + logger.info("Evaluating the average number of steps using {} episodes".format(episodes_to_evaluate_mean)) + env = gym.make(env_name) + env.seed(seed) + agent = BotAgent(env) + logs = evaluate(agent, env, episodes_to_evaluate_mean, model_agent=False) + average_number_of_steps = np.mean(logs["num_frames_per_episode"]) + logger.info("Average number of steps: {}".format(average_number_of_steps)) + return average_number_of_steps + + +def main(args): + args.model = args.model or ImitationLearning.default_model_name(args) + utils.configure_logging(args.model) + il_learn = ImitationLearning(args) + + # Define logger and Tensorboard writer + header = (["update", "frames", "FPS", "duration", "entropy", "policy_loss", "train_accuracy"] + + ["validation_accuracy", "validation_return", "validation_success_rate"]) + writer = None + if args.tb: + from tensorboardX import SummaryWriter + writer = SummaryWriter(utils.get_log_dir(args.model)) + + # Define csv writer + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Log command, availability of CUDA, and model + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + logger.info(il_learn.acmodel) + + # Seed at which demo evaluation/generation will begin + eval_seed = args.seed + len(il_learn.train_demos) + + # Phase at which we start + cur_phase = 0 + + # Try to load the status (if resuming) + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + if os.path.exists(status_path): + with open(status_path, 'r') as src: + status = json.load(src) + eval_seed = status.get('eval_seed', eval_seed) + cur_phase = status.get('cur_phase', cur_phase) + + model_name = args.model + + for phase_no in range(cur_phase, args.phases): + logger.info("Starting phase {} with {} demos, eval_seed={}".format(phase_no, len(il_learn.train_demos), eval_seed)) + + # Each phase trains a different model from scratch + args.model = model_name + ('_phase_%d' % phase_no) + il_learn = ImitationLearning(args) + + # Train the imitation learning agent + if len(il_learn.train_demos) > 0: + train_status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + il_learn.train(il_learn.train_demos, writer, csv_writer, train_status_path, header) + + # Stopping criterion + valid_log = il_learn.validate(args.val_episodes) + success_rate = np.mean([1 if r > 0 else 0 for r in valid_log[0]['return_per_episode']]) + + if success_rate >= 0.99: + logger.info("Reached target success rate with {} demos, stopping".format(len(il_learn.train_demos))) + break + + eval_seed = grow_training_set( + il_learn, + il_learn.train_demos, + eval_seed, + args.demo_grow_factor, + args.num_eval_demos + ) + + # Save the current demo generation seed + with open(status_path, 'w') as dst: + status = { + 'eval_seed': eval_seed, + 'cur_phase':phase_no + 1 + } + json.dump(status, dst) + + # Save the demos + demos_path = utils.get_demos_path(args.demos, args.env, args.demos_origin, valid=False) + print('saving demos to:', demos_path) + utils.save_demos(il_learn.train_demos, demos_path) + +if __name__ == "__main__": + args = parser.parse_args() + main(args) diff --git a/babyai/scripts/train_l_class.py b/babyai/scripts/train_l_class.py new file mode 100644 index 0000000..b7daf6d --- /dev/null +++ b/babyai/scripts/train_l_class.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 + +""" +Script to train agent through imitation learning using demonstrations. +""" + +import os +import csv +import copy +import gym +import time +import datetime +import numpy as np +import sys +import logging +import torch +import pickle as pkl + +import babyai.utils as utils +from babyai.arguments import ArgumentParser +from babyai.trainer_l_class import TrainerClass + +from attrdict import AttrDict + +# Parse arguments +parser = ArgumentParser() +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") +parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") +parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--multi-env", nargs='*', default=None, + help="name of the environments used for validation/model loading") +parser.add_argument("--multi-demos", nargs='*', default=None, + help="demos filenames for envs to train on (REQUIRED when multi-env is specified)") +parser.add_argument("--multi-episodes", type=int, nargs='*', default=None, + help="number of episodes of demos to use from each file (REQUIRED when multi-env is specified)") +parser.add_argument("--save-interval", type=int, default=1, + help="number of epochs between two saves (default: 1, 0 means no saving)") + +parser.add_argument("--include-done", action="store_true", default=False, + help="predict termination") +parser.add_argument("--full-obs", action="store_true", default=False, + help="use full observations of the environment") +parser.add_argument("--ego", action="store_true", default=False, + help="use egocentric full observations") + +parser.add_argument("--extra-actions", type=int, default=0, + help="number of extra actions to add to the action space") +parser.add_argument("--QA", action="store_true", default=False, + help="train a QA predictor instead of a full policy") +parser.add_argument("--oversample", type=int, default=1, + help="how many times positive examples are oversampled for the done classifier") + +parser.add_argument("--model-number", type=int, default=0, + help="number of the model that will be saved") + +def main(args, attr): + # Verify the arguments when we train on multiple environments + # No need to check for the length of len(args.multi_env) in case, for some reason, we need to validate on other envs + if args.multi_env is not None: + assert len(args.multi_demos) == len(args.multi_episodes) + + args.model = args.model or TrainerClass.default_model_name(args) + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + l_class = TrainerClass(args, attr) + + # Log command, availability of CUDA, and model + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + + # il_learn.train(il_learn.train_demos, writer, csv_writer, status_path, header) + log = l_class.train() + print('At the last epoch train CE {} SR {} valid CE {} and the SR is {}'.format( + log["loss_cross_entropy_train"][-1], + log["success_pred_train"][-1], + log["loss_cross_entropy_valid"][-1], + log["success_pred_valid"][-1])) + + +if __name__ == "__main__": + args = parser.parse_args() + + attr = AttrDict() + + # TRANSFORMER settings + # size of transformer embeddings + attr['demb'] = 768 + # number of heads in multi-head attention + attr['encoder_heads'] = 12 + # number of layers in transformer encoder + attr['encoder_layers'] = 2 + # how many previous actions to use as input + attr['num_input_actions'] = 1 + # which encoder to use for language encoder (by default no encoder) + attr['encoder_lang'] = { + 'shared': True, + 'layers': 2, + 'pos_enc': True, + 'instr_enc': False, + } + # which decoder to use for the speaker model + attr['decoder_lang'] = { + 'layers': 2, + 'heads': 12, + 'demb': 768, + 'dropout': 0.1, + 'pos_enc': True, + } + + attr['detach_lang_emb'] = False + + # DROPOUT + attr['dropout'] = { + # dropout rate for language (goal + instr) + 'lang': 0.0, + # dropout rate for Resnet feats + 'vis': 0.3, + # dropout rate for processed lang and visual embeddings + 'emb': 0.0, + # transformer model specific dropouts + 'transformer': { + # dropout for transformer encoder + 'encoder': 0.1, + # remove previous actions + 'action': 0.0, + }, + } + + # ENCODINGS + attr['enc'] = { + # use positional encoding + 'pos': True, + # use learned positional encoding + 'pos_learn': False, + # use learned token ([WORD] or [IMG]) encoding + 'token': False, + # dataset id learned encoding + 'dataset': False, + } + attr['vocab_path'] = 'storage/demos/{}_agent_done_QG_no_answer_biased_vocab.pkl'.format(args.env) + print(args) + print(attr) + main(args, attr) diff --git a/babyai/scripts/train_learn_baseline_model.py b/babyai/scripts/train_learn_baseline_model.py new file mode 100644 index 0000000..cfb5a7c --- /dev/null +++ b/babyai/scripts/train_learn_baseline_model.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +""" +Training code for the LEARN model (Goyal et al., 2019) +""" + +import os +import csv +import copy +import gym +import time +import datetime +import numpy as np +import sys +import logging +import torch +import wandb +from babyai.arguments import ArgumentParser +import babyai.utils as utils + +from learn_baseline import LEARNBaseline +from babyai.arguments import ArgumentParser +import babyai.utils as utils + + +parser = ArgumentParser() + +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") +parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") +parser.add_argument("--episodes", type=int, default=0, + help="number of high-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--save-interval", type=int, default=1, + help="number of epochs between two saves (default: 1, 0 means no saving)") + + +def main(args): + + args.model = args.model or LEARNBaseline.default_model_name(args) + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + learn_baseline = LEARNBaseline(args) + + header = (["update", "frames", "fps", "duration", "train_loss", "train_accuracy", "train_precision", "train_recall"] + + ["validation_loss", "validation_accuracy", "validation_precision", "validation_recall"]) + + writer = None + if args.wb: + wandb.init(project="ella", name=args.model) + wandb.config.update(args) + writer = wandb + + # Define csv writer + csv_writer = None + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Get the status path + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + + # Log command, availability of CUDA, and model + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + logger.info(learn_baseline.model) + + learn_baseline.train(learn_baseline.train_demos, writer, csv_writer, status_path, header) + + +if __name__ == "__main__": + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/babyai/scripts/train_rl.py b/babyai/scripts/train_rl.py new file mode 100755 index 0000000..2fa9aef --- /dev/null +++ b/babyai/scripts/train_rl.py @@ -0,0 +1,478 @@ +#!/usr/bin/env python3 + +""" +Script to train the agent through reinforcement learning. +""" + +import os +import logging +import csv +import json +import gym +import time +import datetime +import torch + +import babyai +import babyai.utils as utils +import babyai.rl +from babyai.arguments import ArgumentParser +from babyai.model import ACModel +from babyai.utils.agent import ModelAgent +from gym_minigrid.wrappers import FullyObsImgDirWrapper, FullyObsImgEgoWrapper +from babyai.shaped_env import ParallelShapedEnv +from gym import spaces +from instruction_handler import InstructionHandler +from subtask_prediction import SubtaskPrediction, SubtaskDataset +from colorama import Fore, Back, Style + +if __name__ == "__main__": + + # Parse arguments + parser = ArgumentParser() + parser.add_argument("--algo", default='ppo', + help="algorithm to use (default: ppo)") + parser.add_argument("--discount", type=float, default=0.99, + help="discount factor (default: 0.99)") + parser.add_argument("--reward-scale", type=float, default=20., + help="Reward scale multiplier") + parser.add_argument("--gae-lambda", type=float, default=0.99, + help="lambda coefficient in GAE formula (default: 0.99, 1 means no gae)") + parser.add_argument("--value-loss-coef", type=float, default=0.5, + help="value loss term coefficient (default: 0.5)") + parser.add_argument("--max-grad-norm", type=float, default=0.5, + help="maximum norm of gradient (default: 0.5)") + parser.add_argument("--clip-eps", type=float, default=0.2, + help="clipping epsilon for PPO (default: 0.2)") + parser.add_argument("--ppo-epochs", type=int, default=4, + help="number of epochs for PPO (default: 4)") + parser.add_argument("--save-interval", type=int, default=50, + help="number of updates between two saves (default: 50, 0 means no saving)") + parser.add_argument("--full-obs", action="store_true", default=False, + help="use full observations of the environment") + parser.add_argument("--ego", action="store_true", default=False, + help="use egocentric full observations") + parser.add_argument("--pi-l", default=None, + help="model to use for low-level policy") + parser.add_argument("--hrl", default=None, + help="either 'vanilla', 'shape', or a hierarchical rl type (deprecated)") + parser.add_argument("--N", type=int, default=1, + help="hierarchical timestep") + parser.add_argument("--T", type=int, default=0, + help="number of steps per instruction in HRL (0 means to termination)") + parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") + parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") + parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--multi-demos", nargs='*', default=None, + help="demos filenames for envs to train on (REQUIRED when multi-env is specified)") + parser.add_argument("--multi-episodes", type=int, nargs='*', default=None, + help="number of episodes of demos to use from each file (REQUIRED when multi-env is specified)") + + parser.add_argument("--sampling-temperature", type=float, default=1, + help="softmax temperature to use when sampling from action distribution") + parser.add_argument("--oracle-rate", type=float, default=1, + help="rate at which hierarchical oracle option is non-null") + parser.add_argument("--reward-shaping", type=str, default="multiply", + help="apply reward shaping") + parser.add_argument("--pi-l-scale", type=float, default=1., + help="Reshaped pi-l multiplier") + parser.add_argument("--pi-l-scale-2", type=float, default=1., + help="Another reshaped pi-l multiplier (e.g. for penalties)") + + parser.add_argument("--high-level-demos", default=None, + help="demos filename") + parser.add_argument("--hl-episodes", type=int, default=0, + help="number of high-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--subtask-model", default=None, + help="model to use for subtask prediction") + parser.add_argument("--subtask-arch", default=None, + help="architecture of subtask model") + parser.add_argument("--subtask-pretrained-model", default=None, + help="pretrained subtask model") + parser.add_argument("--subtask-hl-demos", default=None, + help="demos for online subtask training (only validation used)") + parser.add_argument("--subtask-val-episodes", type=int, default=None, + help="number of validation demos to use for the subtask model") + parser.add_argument("--subtask-batch-size", type=int, default=None, + help="batch size for subtask model") + parser.add_argument("--subtask-update-rate", type=int, default=None, + help="rate at which subtask predictor is updated") + parser.add_argument("--subtask-updates", type=int, default=None, + help="number of gradient steps") + parser.add_argument("--subtask-discount", type=float, default=1., + help="discount (un)applied when removing subtask bonuses") + + parser.add_argument("--done-classifier", action="store_true", default=False, + help="whether pi_l is actually a binary termination classifier") + + parser.add_argument("--number-actions", type=int, default=None, + help="nbr actions can be done more than 7, if more than 7 all additional actions are the action done in order to study the effect of useless actions") + + parser.add_argument("--learn-baseline", default=None, + help="model to use for LEARN baseline classifier") + + parser.add_argument("--debug", action="store_true", default=False, + help="whether to run RL in debug mode") + + args = parser.parse_args() + + utils.seed(args.seed) + + # Generate environments + + envs = [] + for i in range(args.procs): + env = gym.make(args.env) + + env.seed(100 * args.seed + i) + if args.full_obs: + if args.ego: + env = FullyObsImgEgoWrapper(env) + else: + env = FullyObsImgDirWrapper(env) + envs.append(env) + + # Define model name + suffix = datetime.datetime.now().strftime("%y-%m-%d-%H-%M-%S") + instr = args.instr_arch if args.instr_arch else "noinstr" + mem = "mem" if not args.no_mem else "nomem" + model_name_parts = { + 'env': args.env, + 'algo': args.algo, + 'arch': args.arch, + 'instr': instr, + 'mem': mem, + 'seed': args.seed, + 'info': '', + 'coef': '', + 'suffix': suffix} + default_model_name = "{env}_{algo}_{arch}_{instr}_{mem}_seed{seed}{info}{coef}_{suffix}".format(**model_name_parts) + if args.pretrained_model: + default_model_name = args.pretrained_model + '_pretrained_' + default_model_name + elif args.hrl: + if args.pi_l is not None: + default_model_name = args.pi_l + '_pi_l_' + default_model_name + args.model = args.model.format(**model_name_parts) if args.model else default_model_name + + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + # Define logger and Tensorboard writer and CSV writer + header = (["update", "episodes", "frames", "FPS", "duration"] + + ["return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["success_rate"] + + ["reshaped_return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_bonus_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["num_frames_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["entropy", "value", "policy_loss", "value_loss", "loss", "grad_norm"]) + + writer = None + if args.tb: + from tensorboardX import SummaryWriter + writer = SummaryWriter(utils.get_log_dir(args.model)) + if args.wb: + import wandb + wandb.init(project="ella", name=args.model) + wandb.config.update(args) + writer = wandb + + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Define obss preprocessor + if 'emb' in args.arch: + obss_preprocessor = utils.IntObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif args.full_obs and not args.ego: + obss_preprocessor = utils.ObssDirPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif 'cont' in args.arch: + obss_preprocessor = utils.ObssContPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + else: + obss_preprocessor = utils.ObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + + pi_l_agent = None + instr_handler = None + + # Load the instruction handler from demonstrations + if args.hrl is not None: + if getattr(args, 'multi_demos', None): + train_demos = [] + for demos, episodes in zip(args.multi_demos, args.multi_episodes): + demos_path = utils.get_demos_path(demos, None, None, valid=False) + logger.info('loading {} of {} demos'.format(episodes, demos)) + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if episodes > len(train_demos): + raise ValueError("there are only {} train demos in {}".format(len(train_demos), demos)) + train_demos.extend(train_demos[:episodes]) + logger.info('So far, {} demos loaded'.format(len(self.train_demos))) + logger.info('Loaded all demos') + elif getattr(args, 'demos', None): + demos_path = utils.get_demos_path(args.demos, None, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_path(args.demos, None, args.demos_origin, valid=True) + logger.info('loading demos') + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if args.episodes: + if args.episodes > len(train_demos): + raise ValueError("there are only {} train demos".format(len(train_demos))) + train_demos = train_demos[:args.episodes] + logger.info('loading instruction handler') + if args.hrl != "vanilla": + instr_handler = InstructionHandler(train_demos, load_bert="projection" in args.hrl, save_path=os.path.join(os.path.splitext(demos_path)[0], "ih")) + logger.info('loading instruction handler') + + if getattr(args, 'high_level_demos', None): + hl_demos_path = utils.get_demos_path(args.high_level_demos, args.env, args.demos_origin, valid=False) + logger.info('loading high-level demos') + hl_demos = utils.load_demos(hl_demos_path) + logger.info('loaded high-level demos') + if args.hl_episodes: + if args.hl_episodes > len(hl_demos): + raise ValueError("there are only {} high-level demos".format(len(hl_demos))) + hl_demos = hl_demos[:args.hl_episodes] + + # Load low-level model (low-level policy or termination classifier) + if args.hrl is not None and args.hrl != "vanilla": + pi_l_agent = ModelAgent(args.pi_l, None, argmax=True) + logger.info("loaded pi_l models") + + # Initialize datasets / models used for shaping + if args.reward_shaping in ["subtask_classifier_static"]: + subtask_model = utils.load_model(args.subtask_model) + subtask_model_preproc = utils.InstructionOnlyPreprocessor(args.subtask_model, load_vocab_from=args.subtask_model) + subtask_dataset = None + elif args.reward_shaping in ["subtask_classifier_online", "subtask_classifier_online_unclipped"]: + args.subtask_model = args.model + "_subtask" + subtask_prediction = SubtaskPrediction(args, online_args=True) + subtask_model = subtask_prediction.model + subtask_model_preproc = subtask_prediction.instr_preprocessor + subtask_dataset = SubtaskDataset() + else: + subtask_model = None + subtask_model_preproc = None + subtask_dataset = None + learn_baseline_cls = None + learn_baseline_preproc = None + if args.reward_shaping in ['learn_baseline']: + learn_baseline_cls = utils.load_model(args.learn_baseline) + if torch.cuda.is_available(): + learn_baseline_cls.cuda() + learn_baseline_preproc = utils.InstructionOnlyPreprocessor(args.learn_baseline, load_vocab_from=args.learn_baseline) + + # Adjust action space if necessary + if args.hrl is not None: + if envs[0].action_space.__class__.__name__ == "Discrete": + if args.number_actions is None: + A = envs[0].action_space.n + else: + A = int(args.number_actions) + action_space = spaces.Discrete(A) + logger.info("setting hrl to {}; |A| = {}".format(args.hrl, action_space.n)) + if args.done_classifier: + done_action = 1 + else: + done_action = envs[0].actions.done + else: + A = envs[0].action_space.shape[0] + action_space = envs[0].action_space + done_action = 1 + + # Create vectorized environment + envs = ParallelShapedEnv(envs, pi_l=pi_l_agent, done_action=done_action, + instr_handler=instr_handler, reward_shaping=args.reward_shaping, + subtask_cls=subtask_model, subtask_cls_preproc=subtask_model_preproc, + subtask_online_ds=subtask_dataset, subtask_discount=args.subtask_discount, + learn_baseline_cls=learn_baseline_cls, learn_baseline_preproc=learn_baseline_preproc) + else: + action_space = envs[0].action_space + + # Define actor-critic model + logger.info("loading ACModel") + acmodel = utils.load_model(args.model, raise_not_found=False) + if acmodel is None: + if args.pretrained_model: + acmodel = utils.load_model(args.pretrained_model, raise_not_found=True) + else: + acmodel = ACModel(obss_preprocessor.obs_space, action_space, + args.image_dim, args.memory_dim, args.instr_dim, + not args.no_instr, args.instr_arch, not args.no_mem, args.arch) + logger.info("loaded ACModel") + obss_preprocessor.vocab.save() + utils.save_model(acmodel, args.model, writer) + + if torch.cuda.is_available(): + acmodel.cuda() + + # Set reward shaping function + def bonus_penalty(_0, _1, reward, _2, info): + if info[0] > 0: + return [args.reward_scale * reward + args.pi_l_scale * max(info[0], 1), args.pi_l_scale * max(info[0], 1)] + elif info[1] > 0: + return [args.reward_scale * reward - args.pi_l_scale_2 * max(info[1], 1), -args.pi_l_scale_2 * max(info[1], 1)] + else: + return [args.reward_scale * reward, 0] + + if args.reward_shaping == "multiply": + reshape_reward = lambda _0, _1, reward, _2, _3: [args.reward_scale * reward, 0] + + def subtask_shaping(_0, _1, reward, _2, info): + if reward > 0: + return [args.reward_scale * reward + args.pi_l_scale * info[0] - args.pi_l_scale * info[1], + args.pi_l_scale * info[0] - args.pi_l_scale * info[1]] + else: + return [args.pi_l_scale * info[0], + args.pi_l_scale * info[0]] + + def learn_baseline_shaping(_0, _1, reward, _2, info): + return [args.reward_scale * reward + args.pi_l_scale * (args.subtask_discount * info[1] - info[0]), + args.subtask_discount * info[1] - info[0]] + + if args.reward_shaping in ["subtask_oracle_ordered", + "subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped"]: + reshape_reward = subtask_shaping + + elif args.reward_shaping in ["learn_baseline"]: + reshape_reward = learn_baseline_shaping + + # Define actor-critic algorithm + if args.algo == "ppo": + algo = babyai.rl.PPOAlgo(envs, acmodel, args.frames_per_proc, args.discount, args.lr, args.beta1, args.beta2, + args.gae_lambda, + args.entropy_coef, args.value_loss_coef, args.max_grad_norm, args.recurrence, + args.optim_eps, args.clip_eps, args.ppo_epochs, args.batch_size, obss_preprocessor, + reshape_reward, use_penv=False, sampling_temperature=args.sampling_temperature, + debug=args.debug) + else: + raise ValueError("Incorrect algorithm name: {}".format(args.algo)) + + # When using extra binary information, more tensors (model params) are initialized compared to when we don't use that. + # Thus, there starts to be a difference in the random state. If we want to avoid it, in order to make sure that + # the results of supervised-loss-coef=0. and extra-binary-info=0 match, we need to reseed here. + + utils.seed(args.seed) + + # Restore training status + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + if os.path.exists(status_path): + with open(status_path, 'r') as src: + status = json.load(src) + else: + status = {'i': 0, + 'num_episodes': 0, + 'num_frames': 0} + + + logger.info('COMMAND LINE ARGS:') + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + + # Train model + + total_start_time = time.time() + best_success_rate = 0 + best_mean_return = 0 + test_env_name = args.env + + logger.info("starting training") + while status['num_frames'] < args.frames: + + # Update parameters + update_start_time = time.time() + logs = algo.update_parameters() + update_end_time = time.time() + + status['num_frames'] += logs["num_frames"] + status['num_episodes'] += logs['episodes_done'] + status['i'] += 1 + + # Print logs + if status['i'] % args.log_interval == 0: + total_ellapsed_time = int(time.time() - total_start_time) + fps = logs["num_frames"] / (update_end_time - update_start_time) + duration = datetime.timedelta(seconds=total_ellapsed_time) + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + reshaped_return_per_episode = utils.synthesize(logs["reshaped_return_per_episode"]) + reshaped_return_bonus_per_episode = utils.synthesize(logs["reshaped_return_bonus_per_episode"]) + num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + data = [status['i'], status['num_episodes'], status['num_frames'], + fps, total_ellapsed_time, + *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values(), + *num_frames_per_episode.values(), + logs["entropy"], logs["value"], logs["policy_loss"], logs["value_loss"], + logs["loss"], logs["grad_norm"]] + + + format_str = ("\nUpdate: {} | Episodes Done: {} | Frames Seen: {:06} | FPS: {:04.0f} | Ellapsed: {}\ + \nReward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Success Rate: {: .2f}\ + \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nFrames/Eps: {:.1f} +- {:.1f} (Min: {}, Max {})\ + \nEntropy: {: .3f} | Value: {: .3f} | Policy Loss: {: .3f} | Value Loss: {: .3f} | Loss: {: .3f} | Grad Norm: {: .3f}") + + logger.info(Fore.YELLOW + format_str.format(*data) + Fore.RESET) + if args.tb: + assert len(header) == len(data) + for key, value in zip(header, data): + writer.add_scalar(key, float(value), status['num_frames']) + if args.wb: + writer.log({key: float(value) for key, value in zip(header, data)},\ + step=status['num_frames']) + + csv_writer.writerow(data) + + if args.reward_shaping in ["subtask_classifier_online", "subtask_classifier_online_unclipped"] and \ + status['i'] % args.subtask_update_rate == 0: + s_header = ['subtask_' + item for item in \ + ["update", "frames", "fps", "duration", "train_loss", "train_accuracy", "train_precision", "train_recall"] + + ["validation_loss", "validation_accuracy"] + + ["ground_truth_validation_accuracy", "ground_truth_validation_precision", "ground_truth_validation_recall"]] + subtask_log = subtask_prediction.online_update(subtask_dataset.get_demos(), s_header, writer) + if args.wb: + writer.log(subtask_log, step=status['num_frames']) + s_stats = subtask_dataset.get_stats() + s_header = ["subtask_dataset_" + item for item in ["len", "mean", "std", "min", "max"]] + if s_stats: + writer.log({key: val for key, val in zip(s_header, s_stats)}) + text = [[str(subtask_dataset.denoised_demos)]] + wandb.log({"subtask_dataset": wandb.Table(data=text, columns=["Contents"])}) + + # Save obss preprocessor vocabulary and model + if args.save_interval > 0 and status['i'] % args.save_interval == 0: + obss_preprocessor.vocab.save() + with open(status_path, 'w') as dst: + json.dump(status, dst) + utils.save_model(acmodel, args.model, writer) + + save_model = False + mean_return = return_per_episode["mean"] + success_rate = success_per_episode["mean"] + if success_rate > best_success_rate: + best_success_rate = success_rate + save_model = True + elif (success_rate == best_success_rate) and (mean_return > best_mean_return): + best_mean_return = mean_return + save_model = True + if save_model: + utils.save_model(acmodel, args.model + '_best', writer) + obss_preprocessor.vocab.save(utils.get_vocab_path(args.model + '_best')) + logger.info("Return {: .2f}; best model is saved".format(mean_return)) + else: + logger.info("Return {: .2f}; not the best model; not saved".format(mean_return)) diff --git a/babyai/scripts/train_rl_paral.py b/babyai/scripts/train_rl_paral.py new file mode 100755 index 0000000..053e42f --- /dev/null +++ b/babyai/scripts/train_rl_paral.py @@ -0,0 +1,687 @@ +#!/usr/bin/env python3 + +""" +Script to train the agent through reinforcement learning. +""" + +import os +try: + import idr_torch +except KeyError: + pass + +import sys + +"""===ONLY for Jeanzay==""" +sys.path.append(os.getcwd()) +sys.path.append('/gpfsdswork/projects/rech/imi/uez56by/code/ELLA/babyai') +sys.path.append('/gpfsdswork/projects/rech/imi/uez56by/code/ELLA/gym-minigrid') + +import logging +import csv +import json + +import gym +import time +import datetime +import torch + +import babyai +import babyai.utils as utils +import babyai.rl +from babyai.arguments import ArgumentParser +from babyai.model import ACModel, StateActionPredictor +from babyai.utils.agent import ModelAgent +from gym_minigrid.wrappers import FullyObsImgDirWrapper, FullyObsImgEgoWrapper +try: + from babyai.shaped_env_paral import ParallelShapedEnv as ParallelShapedEnv_paral_QA +except NameError: + pass + +from gym import spaces +from instruction_handler import InstructionHandler +from subtask_prediction import SubtaskPrediction, SubtaskDataset +from colorama import Fore, Back, Style + +if __name__ == "__main__": + + # Parse arguments + parser = ArgumentParser() + parser.add_argument("--algo", default='ppo', + help="algorithm to use (default: ppo)") + parser.add_argument("--discount", type=float, default=0.99, + help="discount factor (default: 0.99)") + parser.add_argument("--reward-scale", type=float, default=20., + help="Reward scale multiplier") + parser.add_argument("--gae-lambda", type=float, default=0.99, + help="lambda coefficient in GAE formula (default: 0.99, 1 means no gae)") + parser.add_argument("--value-loss-coef", type=float, default=0.5, + help="value loss term coefficient (default: 0.5)") + parser.add_argument("--max-grad-norm", type=float, default=0.5, + help="maximum norm of gradient (default: 0.5)") + parser.add_argument("--clip-eps", type=float, default=0.2, + help="clipping epsilon for PPO (default: 0.2)") + parser.add_argument("--ppo-epochs", type=int, default=4, + help="number of epochs for PPO (default: 4)") + parser.add_argument("--save-interval", type=int, default=50, + help="number of updates between two saves (default: 50, 0 means no saving)") + parser.add_argument("--full-obs", action="store_true", default=False, + help="use full observations of the environment") + parser.add_argument("--ego", action="store_true", default=False, + help="use egocentric full observations") + parser.add_argument("--pi-l", default=None, + help="model to use for low-level policy") + parser.add_argument("--hrl", default=None, + help="either 'vanilla', 'shape', or a hierarchical rl type (deprecated)") + parser.add_argument("--N", type=int, default=1, + help="hierarchical timestep") + parser.add_argument("--T", type=int, default=0, + help="number of steps per instruction in HRL (0 means to termination)") + parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") + parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") + parser.add_argument("--episodes", type=int, default=0, + help="number of episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--multi-demos", nargs='*', default=None, + help="demos filenames for envs to train on (REQUIRED when multi-env is specified)") + parser.add_argument("--multi-episodes", type=int, nargs='*', default=None, + help="number of episodes of demos to use from each file (REQUIRED when multi-env is specified)") + + parser.add_argument("--sampling-temperature", type=float, default=1, + help="softmax temperature to use when sampling from action distribution") + parser.add_argument("--oracle-rate", type=float, default=1, + help="rate at which hierarchical oracle option is non-null") + parser.add_argument("--reward-shaping", type=str, default="multiply", + help="apply reward shaping") + parser.add_argument("--pi-l-scale", type=float, default=1., + help="Reshaped pi-l multiplier") + parser.add_argument("--pi-l-scale-2", type=float, default=1., + help="Another reshaped pi-l multiplier (e.g. for penalties)") + + parser.add_argument("--high-level-demos", default=None, + help="demos filename") + parser.add_argument("--hl-episodes", type=int, default=0, + help="number of high-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") + parser.add_argument("--subtask-model", default=None, + help="model to use for subtask prediction") + parser.add_argument("--subtask-arch", default=None, + help="architecture of subtask model") + parser.add_argument("--subtask-pretrained-model", default=None, + help="pretrained subtask model") + parser.add_argument("--subtask-hl-demos", default=None, + help="demos for online subtask training (only validation used)") + parser.add_argument("--subtask-val-episodes", type=int, default=None, + help="number of validation demos to use for the subtask model") + parser.add_argument("--subtask-batch-size", type=int, default=None, + help="batch size for subtask model") + parser.add_argument("--subtask-update-rate", type=int, default=None, + help="rate at which subtask predictor is updated") + parser.add_argument("--subtask-updates", type=int, default=None, + help="number of gradient steps") + parser.add_argument("--subtask-discount", type=float, default=1., + help="discount (un)applied when removing subtask bonuses") + + parser.add_argument("--done-classifier", action="store_true", default=False, + help="whether pi_l is actually a binary termination classifier") + + parser.add_argument("--learn-baseline", default=None, + help="model to use for LEARN baseline classifier") + + parser.add_argument("--debug", action="store_true", default=False, + help="whether to run RL in debug mode") + + parser.add_argument("--type-QG-QA-reward", type=str, default=None, + help="what type of QGQA reward is chosen simple or cumulative_scaled") + parser.add_argument("--no-answer-question", type=bool, default=False, + help="use a model where the QA can answer no_answer") + parser.add_argument("--train-env", default=None, + help="name of env used for training") + parser.add_argument("--model-QA", type=int, default=None, + help="model of the QA") + parser.add_argument("--epoch-QA", type=int, default=None, + help="epoch of the model used for the QA") + parser.add_argument("--model-qa-l", type=int, default=None, + help="model of the linguistic only QA") + parser.add_argument("--epoch-qa-l", type=int, default=None, + help="epoch of the model used for the linguistic only QA") + parser.add_argument("--debiased", type=int, default=0, + help="if we have to use the debiasing method using the linguistic only QA") + parser.add_argument("--biased-train-env", action="store_true", default=False, + help="to select a QA that has been trained on a biased PNL environment") + parser.add_argument("--biased-env", type=int, default=0, + help="generate biased env with a higher probability to see some combination of words in the obs[mission], only for PNL env") + parser.add_argument("--saving-agent-traj", type=int, default=None, + help="save the agent every save-agent-traj frames, to study the evolution of the behaviour of the agent") + args = parser.parse_args() + + utils.seed(args.seed) + + print('========') + print(args.pi_l_scale) + print(args.model) + print(args.procs) + print(args.no_answer_question) + if args.debiased != 0: + debiased = True + print("debiased") + else: + debiased = False + print("not debiased") + if args.biased_env != 0: + biased_env = True + print("biased_env") + else: + biased_env = False + print("rl env is not biased") + print('========') + # Generate environments + + envs = [] + for i in range(args.procs): + env = gym.make(args.env) + env.seed(100 * args.seed + i) + if args.full_obs: + if args.ego: + env = FullyObsImgEgoWrapper(env) + else: + env = FullyObsImgDirWrapper(env) + envs.append(env) + + # Define model name + suffix = datetime.datetime.now().strftime("%y-%m-%d-%H-%M-%S") + instr = args.instr_arch if args.instr_arch else "noinstr" + mem = "mem" if not args.no_mem else "nomem" + model_name_parts = { + 'env': args.env, + 'algo': args.algo, + 'arch': args.arch, + 'instr': instr, + 'mem': mem, + 'seed': args.seed, + 'info': '', + 'coef': '', + 'suffix': suffix} + default_model_name = "{env}_{algo}_{arch}_{instr}_{mem}_seed{seed}{info}{coef}_{suffix}".format(**model_name_parts) + if args.pretrained_model: + default_model_name = args.pretrained_model + '_pretrained_' + default_model_name + elif args.hrl: + if args.pi_l is not None: + default_model_name = args.pi_l + '_pi_l_' + default_model_name + args.model = args.model.format(**model_name_parts) if args.model else default_model_name + + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + # Define logger and Tensorboard writer and CSV writer + if args.reward_shaping in ['IC', + 'RIDE']: + header = (["update", "episodes", "frames", "FPS", "duration"] + + ["return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["success_rate"] + + ["reshaped_return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_bonus_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["num_frames_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["entropy", "value", "policy_loss", "value_loss", "loss", "grad_norm"] + + ["error_forward_model", "error_inverse_model", "error_pred"]) + elif args.reward_shaping in ['QG_QA']: + header = (["update", "episodes", "frames", "FPS", "duration"] + + ["return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["success_rate"] + + ["success_rate_QA_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_bonus_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["num_frames_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["entropy", "value", "policy_loss", "value_loss", "loss", "grad_norm"]) + else: + header = (["update", "episodes", "frames", "FPS", "duration"] + + ["return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["success_rate"] + + ["reshaped_return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_bonus_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["num_frames_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["entropy", "value", "policy_loss", "value_loss", "loss", "grad_norm"]) + + writer = None + if args.tb: + from tensorboardX import SummaryWriter + + writer = SummaryWriter(utils.get_log_dir(args.model)) + if args.wb: + import wandb + + wandb.init(project="ella", name=args.model) + wandb.config.update(args) + writer = wandb + + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + simple_header = False + if not first_created: + csvreader = csv.reader(open(csv_path)) + header = [] + header = next(csvreader) + if "success_rate_QA_mean" not in header: + simple_header = True + # Define obss preprocessor + if 'emb' in args.arch: + obss_preprocessor = utils.IntObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif args.full_obs and not args.ego: + obss_preprocessor = utils.ObssDirPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + elif 'cont' in args.arch: + obss_preprocessor = utils.ObssContPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + else: + obss_preprocessor = utils.ObssPreprocessor(args.model, envs[0].observation_space, args.pretrained_model) + + pi_l_agent = None + instr_handler = None + + # Load the instruction handler from demonstrations + if args.hrl is not None: + if getattr(args, 'multi_demos', None): + train_demos = [] + for demos, episodes in zip(args.multi_demos, args.multi_episodes): + demos_path = utils.get_demos_path(demos, None, None, valid=False) + logger.info('loading {} of {} demos'.format(episodes, demos)) + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if episodes > len(train_demos): + raise ValueError("there are only {} train demos in {}".format(len(train_demos), demos)) + train_demos.extend(train_demos[:episodes]) + logger.info('So far, {} demos loaded'.format(len(self.train_demos))) + logger.info('Loaded all demos') + elif getattr(args, 'demos', None): + demos_path = utils.get_demos_path(args.demos, None, args.demos_origin, valid=False) + demos_path_valid = utils.get_demos_path(args.demos, None, args.demos_origin, valid=True) + logger.info('loading demos') + train_demos = utils.load_demos(demos_path) + logger.info('loaded demos') + if args.episodes: + if args.episodes > len(train_demos): + raise ValueError("there are only {} train demos".format(len(train_demos))) + train_demos = train_demos[:args.episodes] + else: + train_demos = None + logger.info('loading instruction handler') + if args.hrl != "vanilla" and train_demos is not None: + instr_handler = InstructionHandler(train_demos, load_bert="projection" in args.hrl, + save_path=os.path.join(os.path.splitext(demos_path)[0], "ih")) + logger.info('loading instruction handler') + + if getattr(args, 'high_level_demos', None): + hl_demos_path = utils.get_demos_path(args.high_level_demos, args.env, args.demos_origin, valid=False) + logger.info('loading high-level demos') + hl_demos = utils.load_demos(hl_demos_path) + logger.info('loaded high-level demos') + if args.hl_episodes: + if args.hl_episodes > len(hl_demos): + raise ValueError("there are only {} high-level demos".format(len(hl_demos))) + hl_demos = hl_demos[:args.hl_episodes] + + # Load low-level model (low-level policy or termination classifier) + if args.hrl is not None and args.hrl != "vanilla" and args.pi_l is not None: + pi_l_agent = ModelAgent(args.pi_l, None, argmax=True) + logger.info("loaded pi_l models") + + # Initialize datasets / models used for shaping + if args.reward_shaping in ["subtask_classifier_static"]: + subtask_model = utils.load_model(args.subtask_model) + subtask_model_preproc = utils.InstructionOnlyPreprocessor(args.subtask_model, + load_vocab_from=args.subtask_model) + subtask_dataset = None + elif args.reward_shaping in ["subtask_classifier_online", "subtask_classifier_online_unclipped"]: + args.subtask_model = args.model + "_subtask" + subtask_prediction = SubtaskPrediction(args, online_args=True) + subtask_model = subtask_prediction.model + subtask_model_preproc = subtask_prediction.instr_preprocessor + subtask_dataset = SubtaskDataset() + else: + subtask_model = None + subtask_model_preproc = None + subtask_dataset = None + learn_baseline_cls = None + learn_baseline_preproc = None + if args.reward_shaping in ['learn_baseline']: + learn_baseline_cls = utils.load_model(args.learn_baseline) + if torch.cuda.is_available(): + learn_baseline_cls.cuda() + learn_baseline_preproc = utils.InstructionOnlyPreprocessor(args.learn_baseline, + load_vocab_from=args.learn_baseline) + + # Adjust action space if necessary + if args.hrl is not None: + if envs[0].action_space.__class__.__name__ == "Discrete": + A = envs[0].action_space.n + action_space = spaces.Discrete(A) + logger.info("setting hrl to {}; |A| = {}".format(args.hrl, action_space.n)) + if args.done_classifier: + done_action = 1 + else: + done_action = envs[0].actions.done + else: + A = envs[0].action_space.shape[0] + action_space = envs[0].action_space + done_action = 1 + + if args.reward_shaping in ['IC', + 'RIDE']: + # Define StateActionPredictor model + logger.info("loading StateActionPredictorModel") + stactpredictor = utils.load_stactpredictor_model(args.model, raise_not_found=False) + if stactpredictor is None: + if args.pretrained_model: + stactpredictor = utils.load_stactpredictor_model(args.pretrained_model, raise_not_found=True) + else: + stactpredictor = StateActionPredictor(obss_preprocessor.obs_space, action_space) + logger.info("loaded StateActionPredictorModel") + utils.save_stactpredictor_model(stactpredictor, args.model, writer) + + if torch.cuda.is_available(): + stactpredictor.cuda() + else: + stactpredictor = None + + # Create vectorized environment + envs = ParallelShapedEnv_paral_QA(envs, pi_l=pi_l_agent, done_action=done_action, + instr_handler=instr_handler, reward_shaping=args.reward_shaping, + subtask_cls=subtask_model, subtask_cls_preproc=subtask_model_preproc, + subtask_online_ds=subtask_dataset, subtask_discount=args.subtask_discount, + learn_baseline_cls=learn_baseline_cls, + learn_baseline_preproc=learn_baseline_preproc, + type_QG_QA_reward=args.type_QG_QA_reward, + no_answer_question=args.no_answer_question, + train_env=args.train_env, model_QA=args.model_QA, epoch_QA=args.epoch_QA, + model_qa_l=args.model_qa_l, epoch_qa_l=args.epoch_qa_l, + debiased=debiased, biased_env=biased_env, biased_train_env=args.biased_train_env, + stateactionpredictor=stactpredictor, obss_preprocessor=obss_preprocessor) + + + else: + action_space = envs[0].action_space + + # Define actor-critic model + logger.info("rank: {}, loading ACModel".format(idr_torch.rank)) + print("rank: {}, model: {}".format(idr_torch.rank, args.model)) + if idr_torch.rank==0: + acmodel = utils.load_model(args.model, raise_not_found=False) + if acmodel is None: + if args.pretrained_model: + acmodel = utils.load_model(args.pretrained_model, raise_not_found=True) + else: + acmodel = ACModel(obss_preprocessor.obs_space, action_space, + args.image_dim, args.memory_dim, args.instr_dim, + not args.no_instr, args.instr_arch, not args.no_mem, args.arch) + logger.info("rank: {}, loaded ACModel".format(idr_torch.rank)) + obss_preprocessor.vocab.save() + utils.save_model(acmodel, args.model, writer) + + if torch.cuda.is_available(): + acmodel.cuda() + else: + acmodel = None + + + # Set reward shaping function + def bonus_penalty(_0, _1, reward, _2, info): + if info[0] > 0: + return [args.reward_scale * reward + args.pi_l_scale * max(info[0], 1), args.pi_l_scale * max(info[0], 1)] + elif info[1] > 0: + return [args.reward_scale * reward - args.pi_l_scale_2 * max(info[1], 1), + -args.pi_l_scale_2 * max(info[1], 1)] + else: + return [args.reward_scale * reward, 0] + + + if args.reward_shaping == "multiply": + reshape_reward = lambda _0, _1, reward, _2, _3: [args.reward_scale * reward, 0] + + + def subtask_shaping(_0, _1, reward, _2, info): + if reward > 0: + return [args.reward_scale * reward + args.pi_l_scale * info[0] - args.pi_l_scale * info[1], + args.pi_l_scale * info[0] - args.pi_l_scale * info[1]] + else: + return [args.pi_l_scale * info[0], + args.pi_l_scale * info[0]] + + + def learn_baseline_shaping(_0, _1, reward, _2, info): + return [args.reward_scale * reward + args.pi_l_scale * (args.subtask_discount * info[1] - info[0]), + args.subtask_discount * info[1] - info[0]] + + + def Impact_shaping(_0, _1, reward, _2, info): + if reward > 0: + return [args.reward_scale * reward + args.pi_l_scale * info, + args.pi_l_scale * info] + else: + return [args.pi_l_scale * info, + args.pi_l_scale * info] + + + if args.reward_shaping in ["subtask_oracle_ordered", + "subtask_classifier_static", + "subtask_classifier_online", + "subtask_classifier_static_unclipped", + "subtask_classifier_online_unclipped", + "QG_QA"]: + reshape_reward = subtask_shaping + + elif args.reward_shaping in ["learn_baseline"]: + reshape_reward = learn_baseline_shaping + + elif args.reward_shaping in ["IC", + "RIDE"]: + reshape_reward = Impact_shaping + + # Define actor-critic algorithm + if args.algo == "ppo": + algo = babyai.rl.PPOAlgo_paral(envs, acmodel, args.frames_per_proc, args.discount, args.lr, args.beta1, + args.beta2, + args.gae_lambda, + args.entropy_coef, args.value_loss_coef, args.max_grad_norm, args.recurrence, + args.optim_eps, args.clip_eps, args.ppo_epochs, args.batch_size, + obss_preprocessor, + reshape_reward, reward_shaping=args.reward_shaping, use_penv=False, + sampling_temperature=args.sampling_temperature, + debug=args.debug, stateactionpredictor=stactpredictor) + else: + raise ValueError("Incorrect algorithm name: {}".format(args.algo)) + + # When using extra binary information, more tensors (model params) are initialized compared to when we don't use that. + # Thus, there starts to be a difference in the random state. If we want to avoid it, in order to make sure that + # the results of supervised-loss-coef=0. and extra-binary-info=0 match, we need to reseed here. + + utils.seed(args.seed) + + # Restore training status + if idr_torch.rank==0: + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + if os.path.exists(status_path): + with open(status_path, 'r') as src: + status = json.load(src) + else: + status = {'i': 0, + 'num_episodes': 0, + 'num_frames': 0} + + if args.saving_agent_traj is not None and args.saving_agent_traj != 0: + q = status['num_frames']//args.saving_agent_traj + if (status['num_frames'] % args.saving_agent_traj) == 0: + save_at_frame = status['num_frames'] + else: + save_at_frame = int((q+1)*args.saving_agent_traj) + + logger.info('COMMAND LINE ARGS:') + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + + # Train model + + total_start_time = time.time() + best_success_rate = 0 + best_mean_return = 0 + best_inverse_pred_error = 0 # do not mistake it for inverse_error, inverse_pred_error = 1/ pred_error + test_env_name = args.env + + logger.info("starting training") + # while status['num_frames'] < args.frames: + while True: + + # Update parameters + update_start_time = time.time() + logs = algo.update_parameters() + update_end_time = time.time() + + if idr_torch.rank==0: + status['num_frames'] += logs["num_frames"] + status['num_episodes'] += logs['episodes_done'] + status['i'] += 1 + + # Print logs + if status['i'] % args.log_interval == 0: + total_ellapsed_time = int(time.time() - total_start_time) + fps = logs["num_frames"] / (update_end_time - update_start_time) + duration = datetime.timedelta(seconds=total_ellapsed_time) + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + reshaped_return_per_episode = utils.synthesize(logs["reshaped_return_per_episode"]) + reshaped_return_bonus_per_episode = utils.synthesize(logs["reshaped_return_bonus_per_episode"]) + num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + if args.reward_shaping in ['IC', + 'RIDE']: + data = [status['i'], status['num_episodes'], status['num_frames'], + fps, total_ellapsed_time, + *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values(), + *num_frames_per_episode.values(), + logs["entropy"], logs["value"], logs["policy_loss"], logs["value_loss"], + logs["loss"], logs["grad_norm"], logs["error_forward_model"], + logs["error_inverse_model"], logs["error_pred"]] + + format_str = ("\nUpdate: {} | Episodes Done: {} | Frames Seen: {:06} | FPS: {:04.0f} | Ellapsed: {}\ + \nReward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Success Rate: {: .2f}\ + \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nFrames/Eps: {:.1f} +- {:.1f} (Min: {}, Max {})\ + \nEntropy: {: .3f} | Value: {: .3f} | Policy Loss: {: .3f} | Value Loss: {: .3f} | Loss: {: .3f} | Grad Norm: {: .3f}\ + \nError Forward Model: {} | Error Inverse Model: {} | Error Pred StateAction Model: {}") + + elif args.reward_shaping in ['QG_QA'] and not simple_header: + success_rate_QA_per_episode = utils.synthesize(logs["success_rate_QA"]) + data = [status['i'], status['num_episodes'], status['num_frames'], + fps, total_ellapsed_time, + *return_per_episode.values(), + success_per_episode['mean'], + *success_rate_QA_per_episode.values(), + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values(), + *num_frames_per_episode.values(), + logs["entropy"], logs["value"], logs["policy_loss"], logs["value_loss"], + logs["loss"], logs["grad_norm"]] + + format_str = ("\nUpdate: {} | Episodes Done: {} | Frames Seen: {:06} | FPS: {:04.0f} | Ellapsed: {}\ + \nReward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Success Rate: {: .2f} | Success Rate QA: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nFrames/Eps: {:.1f} +- {:.1f} (Min: {}, Max {})\ + \nEntropy: {: .3f} | Value: {: .3f} | Policy Loss: {: .3f} | Value Loss: {: .3f} | Loss: {: .3f} | Grad Norm: {: .3f}") + else: + data = [status['i'], status['num_episodes'], status['num_frames'], + fps, total_ellapsed_time, + *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values(), + *num_frames_per_episode.values(), + logs["entropy"], logs["value"], logs["policy_loss"], logs["value_loss"], + logs["loss"], logs["grad_norm"]] + + format_str = ("\nUpdate: {} | Episodes Done: {} | Frames Seen: {:06} | FPS: {:04.0f} | Ellapsed: {}\ + \nReward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Success Rate: {: .2f}\ + \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nFrames/Eps: {:.1f} +- {:.1f} (Min: {}, Max {})\ + \nEntropy: {: .3f} | Value: {: .3f} | Policy Loss: {: .3f} | Value Loss: {: .3f} | Loss: {: .3f} | Grad Norm: {: .3f}") + + logger.info(Fore.YELLOW + format_str.format(*data) + Fore.RESET) + if args.tb: + assert len(header) == len(data) + for key, value in zip(header, data): + writer.add_scalar(key, float(value), status['num_frames']) + if args.wb: + writer.log({key: float(value) for key, value in zip(header, data)}, \ + step=status['num_frames']) + + csv_writer.writerow(data) + + if args.reward_shaping in ["subtask_classifier_online", "subtask_classifier_online_unclipped"] and \ + status['i'] % args.subtask_update_rate == 0: + s_header = ['subtask_' + item for item in \ + ["update", "frames", "fps", "duration", "train_loss", "train_accuracy", "train_precision", + "train_recall"] + + ["validation_loss", "validation_accuracy"] + + ["ground_truth_validation_accuracy", "ground_truth_validation_precision", + "ground_truth_validation_recall"]] + subtask_log = subtask_prediction.online_update(subtask_dataset.get_demos(), s_header, writer) + if args.wb: + writer.log(subtask_log, step=status['num_frames']) + s_stats = subtask_dataset.get_stats() + s_header = ["subtask_dataset_" + item for item in ["len", "mean", "std", "min", "max"]] + if s_stats: + writer.log({key: val for key, val in zip(s_header, s_stats)}) + text = [[str(subtask_dataset.denoised_demos)]] + wandb.log({"subtask_dataset": wandb.Table(data=text, columns=["Contents"])}) + + # Save obss preprocessor vocabulary and model + if args.save_interval > 0 and status['i'] % args.save_interval == 0: + obss_preprocessor.vocab.save() + with open(status_path, 'w') as dst: + json.dump(status, dst) + utils.save_model(acmodel, args.model, writer) + utils.save_stactpredictor_model(stactpredictor, args.model, writer) + + save_model = False + mean_return = return_per_episode["mean"] + success_rate = success_per_episode["mean"] + if success_rate > best_success_rate: + best_success_rate = success_rate + save_model = True + elif (success_rate == best_success_rate) and (mean_return > best_mean_return): + best_mean_return = mean_return + save_model = True + if save_model: + utils.save_model(acmodel, args.model + '_best', writer) + obss_preprocessor.vocab.save(utils.get_vocab_path(args.model + '_best')) + logger.info("Return {: .2f}; best model is saved".format(mean_return)) + else: + logger.info("Return {: .2f}; not the best model; not saved".format(mean_return)) + + if args.saving_agent_traj is not None and args.saving_agent_traj != 0: + if status['num_frames'] >= save_at_frame: + utils.save_model(acmodel, args.model + '_frame_{}'.format(status['num_frames']), writer) + save_at_frame += args.saving_agent_traj + + if args.reward_shaping in ['IC', + 'RIDE']: + save_pred_model = False + inverse_pred_error = 1 / logs["error_pred"] + if inverse_pred_error > best_inverse_pred_error: + best_inverse_pred_error = inverse_pred_error + save_pred_model = True + if save_pred_model: + utils.save_model(acmodel, args.model + '_best', writer) + obss_preprocessor.vocab.save(utils.get_vocab_path(args.model + '_best')) + logger.info("Return {}; best state-action predictor model is saved".format(logs["error_pred"])) + else: + logger.info( + "Return {}; not the best state-action predictor model; not saved".format(logs["error_pred"])) diff --git a/babyai/scripts/train_subtask_prediction_model.py b/babyai/scripts/train_subtask_prediction_model.py new file mode 100644 index 0000000..160a144 --- /dev/null +++ b/babyai/scripts/train_subtask_prediction_model.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +""" +Pre-training code for the subtask prediction model (relevance classifier). +""" + +import os +import csv +import copy +import gym +import time +import datetime +import numpy as np +import sys +import logging +import torch +from babyai.arguments import ArgumentParser +import babyai.utils as utils + +from subtask_prediction import SubtaskPrediction +from babyai.arguments import ArgumentParser +import babyai.utils as utils + + +parser = ArgumentParser() + +parser.add_argument("--demos", default=None, + help="demos filename (REQUIRED or demos-origin or multi-demos required)") +parser.add_argument("--demos-origin", required=False, + help="origin of the demonstrations: human | agent (REQUIRED or demos or multi-demos required)") +parser.add_argument("--episodes", type=int, default=0, + help="number of high-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--low-level-demos", default=None, + help="low-level demos filename") +parser.add_argument("--ll-episodes", type=int, default=0, + help="number of low-level episodes of demonstrations to use" + "(default: 0, meaning all demos)") +parser.add_argument("--save-interval", type=int, default=1, + help="number of epochs between two saves (default: 1, 0 means no saving)") +parser.add_argument("--denoise", action="store_true", + help="whether or not to denoise the data") +parser.add_argument("--denoise-k", type=int, default=1, + help="how many examples of each instruction to use") +parser.add_argument("--denoise-total", type=int, default=100, + help="total number of instructions in the denoised dataset") +parser.add_argument("--augment", action="store_true", + help="whether or not to augment the data") +parser.add_argument("--augment-total", type=int, default=100, + help="total number of instructions in the augmented dataset") +parser.add_argument("--wait-finetune", type=int, default=50, + help="how long to wait to fine-tune") +parser.add_argument("--ones", action="store_true", default=False, + help="whether to ignore labels") + +def main(args): + + args.model = args.model or SubtaskPrediction.default_model_name(args) + utils.configure_logging(args.model) + logger = logging.getLogger(__name__) + + subtask_prediction = SubtaskPrediction(args) + + header = (["update", "frames", "fps", "duration", "train_loss", "train_accuracy", "train_precision", "train_recall"] + + ["validation_loss", "validation_accuracy"] + + ["ground_truth_validation_accuracy", "ground_truth_validation_precision", "ground_truth_validation_recall"]) + + writer = None + if args.wb: + import wandb + wandb.init(project="ella") + wandb.config.update(args) + writer = wandb + + # Define csv writer + csv_writer = None + csv_path = os.path.join(utils.get_log_dir(args.model), 'log.csv') + first_created = not os.path.exists(csv_path) + # we don't buffer data going in the csv log, cause we assume + # that one update will take much longer that one write to the log + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Get the status path + status_path = os.path.join(utils.get_log_dir(args.model), 'status.json') + + # Log command, availability of CUDA, and model + logger.info(args) + logger.info("CUDA available: {}".format(torch.cuda.is_available())) + logger.info(subtask_prediction.model) + + subtask_prediction.train(subtask_prediction.train_demos, writer, csv_writer, status_path, header) + + +if __name__ == "__main__": + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/babyai/setup.py b/babyai/setup.py new file mode 100644 index 0000000..0b4723b --- /dev/null +++ b/babyai/setup.py @@ -0,0 +1,16 @@ +from setuptools import setup + +setup( + name='babyai', + version='0.1.0', + license='BSD 3-clause', + keywords='memory, environment, agent, rl, openaigym, openai-gym, gym', + packages=['babyai', 'babyai.levels', 'babyai.utils'], + install_requires=[ + 'gym>=0.9.6', + 'numpy>=1.17.0', + "torch>=0.4.1", + 'blosc>=1.5.1', + # 'gym_minigrid @ https://github.com/maximecb/gym-minigrid/archive/master.zip' + ], +) diff --git a/experiments/__init__.py b/experiments/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/experiments/__pycache__/__init__.cpython-310.pyc b/experiments/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..826a49e56c9e76c8713b268aff38b76acec5b070 GIT binary patch literal 187 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 literal 0 HcmV?d00001 diff --git a/experiments/__pycache__/test_llm.cpython-310.pyc b/experiments/__pycache__/test_llm.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b22098d531bea89e57aa84dbd56793a39f9ebfbc GIT binary patch literal 10072 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 literal 0 HcmV?d00001 diff --git a/experiments/agents/bot/bot.py b/experiments/agents/bot/bot.py new file mode 100644 index 0000000..a89d832 --- /dev/null +++ b/experiments/agents/bot/bot.py @@ -0,0 +1,48 @@ +from babyai.bot import Bot +import numpy as np +from tqdm import tqdm + +class BotAgent: + def __init__(self, envs, nbr_envs, size_action_space, number_episodes): + """An agent based on a GOFAI bot.""" + self.envs = envs + self.nbr_envs = nbr_envs + self.size_action_space = size_action_space + self.number_episodes = number_episodes + self.returns = [0 for _ in range(self.nbr_envs)] + self.logs = { + "return_per_episode": [], + } + obs, infos = self.envs.reset() + self.bots = [Bot(env) for env in self.envs] + self.on_reset() + + def on_reset(self, env): + return Bot(env) + + def act(self, obs=None, action_choosen=None, update_internal_state=True, *args, **kwargs): + actions = [bot.replan(action_choosen) for bot in self.bots] + return actions + + def generate_trajectories(self, dict_modifier, language='english'): + episodes_done = 0 + + pbar = tqdm(range(self.number_episodes), ascii=" " * 9 + ">", ncols=100) + while episodes_done < self.number_episodes: + + actions = self.act(obs) + + obs, rewards, dones, infos = self.envs.step(actions) + + for j in range(self.nbr_envs): + self.returns[j] += rewards[j] + if dones[j]: + episodes_done += 1 + pbar.update(1) + self.logs["return_per_episode"].append(self.returns[j]) + self.returns[j] = 0 + self.bots[j] = self.on_reset(self.envs[j]) + pbar.close() + + self.logs["episodes_done"] = episodes_done + return None, self.logs diff --git a/experiments/agents/drrn/__init__.py b/experiments/agents/drrn/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/experiments/agents/drrn/__pycache__/__init__.cpython-310.pyc b/experiments/agents/drrn/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55b1ccc380f27cd6cb51393b3e5b2689b48a8692 GIT binary patch literal 199 zcmd1j<>g`k0%@r^$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o10NKO;XkRX@2X zKQ}R1-z7h}G&eP`q*y*%} literal 0 HcmV?d00001 diff --git a/experiments/agents/drrn/__pycache__/drrn.cpython-310.pyc b/experiments/agents/drrn/__pycache__/drrn.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f20437a76891b58580dadc47ac37be54a7d080e GIT binary patch literal 13165 zcmbtbdyHJyS--Ej^PZiZUGK|ld-7R!b*-qY zw^1}4qi;IaRlOJi#;Ds3yJ+hyW!9sOSTUy3dOco@s~U+$vX~s;QjMgc=~^RQ%m8DF zNPVJ_EoN2Pu1_{{#av^mIMtXgP7iAADbA=?W{b1xJy)E^J6d08>@DuqHD~XJR$O!z zYx`>Zi~FC_L`=jlY9hX26b}gfS*?(`ju~ht3wmIAYoc*Y4p0hSpou+x`t-?y z8O)xN)t0P!)vhB>JMDUT{XdSf%3B9a;8Tvce8V zf6>8*`%_3bYT=4T+>9IXn7I3rwycY|NL-8;O_3C-i(1hVX_3J@;@D!siHfWf6O&GK z*%mo5bk{ zBLpu4eB;pLi{Jd)cQ3r}I%%ge2{8OkBay;GvT;9)YM!>C_4TXRYG1#smki$kG<_4$ z@@>F~9|g3%Xg_vULn?k*uf_WbA7rI#Ueb^GaiL#ft(2btOnVt`f@L;zKk277%zoCJ zyvnw7-c)V6wg-8+{>)X)PYXlUoAoouode$J&tKJEFkaDmlb6}o0$S2GSa+{5g>_N$ z7Ex;NhJHN6?h}z+u=}@4oyqiasIkw_&1?Mw{v_YRp4T|`wbmu=lD=$+DB6f^)!EQ{ zQnKVarS!drjwSCbg$og%Tzh~5VJ**W^VL~0l8K_9DE zy4%kJ7W@d{Jt78puh2jV>5~N`h*iq%a;5662b1lP7uHM5vRonMgXE36tdJmvKLZIH z&$D=5p95IYeCa89+?l|p3r%xO?e&W;-QEwkXKAR9yHWfJB20tIIS6#2tYP27DCx^~?%xT?& zTdZ)nRH`qi095-)IxYar{Ic^T{l($nTa)-{W1yd#6Rt@89MR=5q< zj3C;mx-NIq3aph@xgNya&Jq)D5LZI6)LL?bbeIe`-n|wL?4|P3dbt`HvK}N(oqFb2 zeWi7x-UueJx)gy%SFRHGege{7kPO#cZI-0+m(LKLb}$@4@mvyE z-o$EE2&c)k+`~d2VWH{GK|>Tl^p!lv_2de(BGu+{%a!k7IvUCp7iuG3Dpl%b*DaMK zCAL&D^a-RWQQQ{*5~i&W{}Osiw+us%-L#DbeNMNH4003t4E{3u0&-)9{Z`7%=mtvh z&r&c(kyEmY%!sCr?!@DQ!`X(6%BuBBuIDUBKLCup5~j-_Yu5dz4dIN_oBXW zTssr*#r&u+`nn&xsz0dpqH8I9!*KplV;*0^LXLh_@5M!=m+%ZfLYw5wy}hKL5H|9X zs#d}`{p7r++Jki@qR2^wIcpE#J2p}>>Dy;Dc^cR_uomkLN*?s1etcH*6SK4c5+}R+ zPC;5#m+DSFq|$tAIq$9Fi%RsN8&>|M-hJ0^;@6$aC-P50ZH$*dexTi$Lf$h=t|QNt zsnCFYD1XC3)%=ZgB7aO-6Cu)gsaG)NDXdpuFGF0GJ;}W+q(fS~3+a#+?`EpNa%Nq$ z2+Bcn)q#`^X#^5sCD2zw{?w~5@Ttc_v8QAo2_~4`rmeunE70nzr;+L24iGb9Ae@+< z1&JgK3owHx3mDULy76*K@7_K_3b$x(j50{|6jF*ZKCJBG@0T)QliIHupo}PwI3n?? z*-P;Jz_Wvx5Lq$#s@+S9TrY(ujVI&B`^HsLNuoF5Px$&dO&<5-{sbs3wf2yo*pd6J zpHR8!wWs~$j@%{K-K?8g`>>euQ?r_w2KA%|@64>$%Zfdqu`K9!68+~qbCZ6j{G6CU z9&BGweGc?HHK5;VyZ4d&I(GMbEGOPS=S8dfDkBC|sEkmoxs_PW&z?2SkoOGa* ztR9=4ct)@26+=)?ioxy*m5pTD8!yL-S+k9EAfa5m=w?vdwE zPM#;YK(G!_uoN%JF4BR8fx00(?YSj8$(LByC+HFU5Nl3|YNb{3V8e7OCE<9%#!cd2W;;7Ui8U*$R15Bl z0E#)mh-6N~G<5rBD822s_%-~q->{+<lPEwc|q8 z=Gi*rW?8ONxXJ>f(G2#uyD+k6 z+lp2wbca8t$yaJS7Lo9^8k`dXs@6BS4SvM8uSV%_;$ijVlLbSbM6tkXcih!NRPhfi zT4m6g(2Zp2^FgBNT<`{FUR}JpmcL1Qy3Jf7$`IR zF>MZ>*K2yVFnMel;co&y%grcT|fHd~D{$d7e-r11=GL=H`yUu{*VZqrC3xHApkK;Gk%RLzBPHff<2amMd5_`9*xnKOh)a z#j4leCjNH;#`+^gk+KvIZS@DGruU4{7v9>4MK}P( z`t*#kTh%v~jWY|PI2|ZYLEOQjDvwhk7K)D&%l2oS6ec~45OskbG#+XFM zZZR6B29)w;HlVuxRiya1l(QMw{}~+rc#O=LGX{=+&WEst zuUe}aIDaLmT9DTJCNZ#(b0uxLkJQ=z=bJ$_rT& zMv3s&;hiFCY!`>xRt=FCov#3|q)kpMC+(xVAt(NL<4;_+lf_df2s{AlB<8W=YN_0^Mv88h5tl}%9iO^QZtHKXFK`)xh zS1!zwe4afh?~X-h*nshZB&_>ERLqs!kz!~Mtx*UEQ4d1K@!Vpv3Fi*{vtSsv7*Uz> zQMNd~aDg3e9z~Qoi)UfrWel9YtvO@S*so7p8JO-_GXb-n+z9h;a>v$>ZRR|hq9<8t z!LMU$1({Cs5ca7dtW+}>zy`vA?z66d$v&l@nScy~7o8q-Jhs4r`-=I3NrN3a631=? ziV(D_#o*L|Glz~Hk728rfZrW$#m`#uX)n=FGKd9dP8>QC@T_%|Uinl%?MJWbFIWge z#d`5xqKUAU!lLvR7NH{@!JZflyqM}EsYVQU5)SgO^irsk@lz3a{1GBc&1(;0f~x(A z0T#ir5o|WZiey+0$A9F?KZkM!rpL9I6u|Tu&O+HRge8c_muh!XqzC!vcO)NQgZ#`O zA0r6!RjY6ns8%U1uk2Q;aE!qwt-H^`nx`BZ zW0#?7r$icw=7p-A2c?~A{hFz4mtwp$j3UWDLhWs=t;~t95uXR>-oJxu;b0!R-*=PU z*Lj#38!E*#t)3}7uWwl)pk`R|G#jtrY&RV4H3P!`t0<|~1~Y#O>7m7_%iZkxe`IN8 zgs>O+UV?WMJV@{!g4+RhjEQ2MW0H3e+(~c`!P^PmNicqHcmpVxQFB;!=E9rwR3zRC zrQ;6(Tew|vrpk$NU`KctnGJDGW{4;`s1j>UPKGUwC$OjO-!6Gvk>C=l*K zkhCx#T4tPrd|4HN@P|hO)|VS3H`5nf$-N6`jv-fhQp)vGnK2M5B}7ecH&uY-IExhuws#QgMec_K<)=%c2A#5Jt?j-%MC2 zeRGbUD#RjKK4Hwj0iA<~YespnpyU?68@n(Vsa)7&-Y5E;(|DBPdkZAw8x&14dD*II zuNZ*(E0N}Hz#72bM+Hb#H}orS`IKKxy`rJC@rnTW6z`~9p?Aw9<}8GjJbg*OWL&Z?MV2kxTtRJBdU%M8T(hx*r{=-nf_Ix4_K{^t}Mp`(s|ZpP`C{Uwi>-0#K=5t2WWk z`U$0E&0eyX>ZPH2Lu{y!2UyHe$88#n(oZVYo7o!enNRj6P-oJgP^wpX!Uw9?s^tdQ z4E^Jq*r^aJ76+;~#ayh(URd$K!J4=F(_)c#M$qyeu@4Gy1}W4VsM%cj1%=7{{eygr zVI&`4gZu-7e2iwGhFL4W9V^%>%BWgUc*s|_J+SjzUu&;ze$Rw4gTXk%8c?h(D{dR8 z;nyx>&r1txw@tO*5!^o7zTa83-zq-fPjb(Pl;S>uwNOeEN|EDJ3KL3k9{LBW+1uw& zd;67AT=S=Kunkor)U;BGXM98vHq$0z1$P`p89%pdKrP;RQr-kRAjYIT%AHAkc!&$Y zOGhXBO1V>6b+%)LY~gs`&4#{s6o&_%s32DMVEN+o(BXNn{-xJY8FB62KLW1|klP3u!!uY&b>qCn2oER##S$ zUTNhA$KP(WU9FtWcOc<0mUdu!t(6so5ljb%gNW)6UdlSIz;qL$m2ct<08b1Ab_dx^ zpWUIdhHBK!V>0Trlj`XMlL`jS(91aVZS1H|-At9|jycryK5u>D>^OF)lk{W_{2eOP z0J~%?*Z@Vao0qYGbCE$wV#OBS@%)-wXT2=)*d^Y(UJxeo?o2 zOm&yXsKINCyFIw^GrZF?vb?l35d7ithCvqU^-!VH^uT4GvTYzenEKd`3-2`44PXwWxryrM5n)PnALVUM_r| zU*7;2YYrM~)4Y@a#3I)T{+ZyL1j;`;KIq5T-1lL!ZEnL+G_1A(m#Z$D;Wlh;LU^&t z47cU78EyugYu5HnFvCsQw*C>B8+XXsAWfZEB2;T_TT~e zG1gXl_8L=Msn9%JW=ffdFEXXfLuDwI`KfF~nuqdV3I2`XNrK(X!>=)8iQo)@n#;d4 zbw2^ePm{3)q4jAZ{*&N!fWjco$hiiw`rvk+8aV77wp+pTFi2}KaTv^fX0VW#O-hU zTXu?;*)*>M7_q4R?Nm%zea48@2ir~AfwbdpVfWdv?P8YwokYYo5?_hEJGAxCs)|;2 z^WRI_jIoJ@fs=e6$K%oi)IE&rCU7wd9U*yR!}w$x{tn#KRu@W)=OIrl{B4-J){MPf zbLY>)@ZjG^@E{JR;bN{*JU!)(#DZrY0rn0Y^~ z{fx1p@;`#sd*%2+(2NU2*&h+FbL%5sZQa|Ril3l&FQo6MhIg=+QWIic~x#JO;er zhwhtKxlI;Hh92AjKC+2726$VQ0znA4zCM`+Vd363aB&b9>WvZ?w-@B~&QbDGTOK(n z7s#sf1mwNIIKNa#sHKwsfl-Cd{)CFNhO4+rEZvq8H~k?oSjiHdMq4dCG`W(bw=qxY z0|nHYvAr(v>N4pZZh_@+bKv%yW9!6)FC-;T;F1R>nIS+WO->MGHvvt?u!zdd;j^GW z2gd>p%fd9TIr8d5sT3qi3|GSvL^@T%HP~`J%#ly9jgJw$1`s6GjW*mmTx|(lcl0DC zM#A|FOMH&tMS_nKC`tY`rrsi$QS&9>EQ9pmb{zg6p^h7JTMMzq!fG{=NG;%TX)44( zL;TCU6?-tY$GCq^k0oM}n3*tR=~zDTaP0YPO0q^F4~G#JdtIrGAc`A`D>NwM@a&#I z8l-v`MiJP|zz4|;^8$Cm9^;W-QbvWW5L5Rq4>z0gFIj48_<4A_(+uxB;A-(!I&@@5 z6f>$ToyC-LPah81L|yz;Zgds74$|)6rf8ctMdb(Bts<6qcysx%tjl}ZFM>mZf7@^* zg(v+HoBziVx(rUUGN(VXlAClD#EypB`v?g^d8%VjA5;UpR+v)EIZcDfz?W%5u;?}E6=t&`+teg9x z51x>2*30{0-_CckK|TzJoT=d@3rA`+-I(4AZ#`tvlie#OyNXT4bo0^)Z%h7!js4d+ zojrcd(T}+q&0-l<>RF?TL{(sPp44%zKn#A7Bq~!nu1lTJp0}H`98{lxP%PwI85cLs4>da zX$-A`$Eto_>ZieO@EaAVI*7AL@X?Qd+PAwCde&7Vnm$sm`U+jmYCdO|Vj-^asI{|j z=X@@%#hgVQjJ&y+J9gB)G4e6$Nj`UW*mAy4oVg?0y#vW`4d?M|fipC9^LJQ;^ELkK*FEiI3Ip@1SH>?LJTIlU*{{ z?!lwI{YRhg$!xZVc@iPDF7|R-H<`WAJv_x0zG{eWgWI38#kctRi0nUEJyNoACoE$l zeDsE&;j8YzO=~vg5>9o+=6s)Ba*RdoNav+<;ed8w6*!voUOHci3+KYMJaWG7O94*j z!ULxRTf5iX&Jyi`_Ui7OU-FA?%@+Q=d(9U;l8t{@8}t6$Uks#+eF8LF4Cg-PM$(7u z-nDbls}X9`&Bg6GJY%tS&9JTykLq7?oIAMaEa$i9gX<*+y83t7Vn_C+e=Qc@tMAO6 zOFkbgz7L5UoV${=9D;KXClA4S$8rYXkS-q101fXOoc}#IXo@PRPgF3|C7JY!ZACKUGzb#99UAQ80^>r!ebYQ!J@T8%V2AJo_}r(yFGVv;@8keD>f&5=N4D*!hRn-RQnb zMtGvh{S1MVRS!U{)d1AcwA&i@q#j*YX3lOfQu8kizb$P5~Y5Xr^oyLcNSBIwiM~KC!X!6+$<60d= zU7BH9NOcBu&JdNFV#suXFnLoeO{vConmWxYA|Ov4irf5IEHg+(_J#gBfU)v`I-KS)dr?Gu1~7aPbKuE zEAlAp(*Qy+4E?1-XQ6u*)wStZkTPDYjd9ARHV)SRj~(CG>IXQf3edgh?T9Tt#Lwq< z(eH>IF%(pAKy1LxQ;S>*3tJv`|IB^is6*e`52_kw7j4 z2aq#bY(Ua2f*k~W7xboupxY803q4x|Sd=YeWO}xa9E!PL#&vRnxJ0&m9&3r1uByq6 z6_i#|86DEXPlFU5L*8~Hs8_BKq_VoPmlDl)Y@|r3Zb*n_o>o;#f)R2#9LdVMA?z)9 zXlAVjZFm5Y%A$^uCX3_X+3snaH9#rcC{S^7LMrFL9gAdEnYGma3my6$n6>q!cR`JX zCf_kU{+4&?_rZQhYXfxWfpweZQ+^jR+&GZ@htd-Tf^|!aRYL$iJOwu9_t=8Xg+wxF zacj)m0)ZP(tC@=Hv9r`GHGKMthrNm_t_Y#<2FR?62Xq7>Sime6=^uh_QRhdX#@m`e z(>Ukp3|Ir}m>wCrE=zzyCpp2}nvq48mHqWTNw{Tq!9z64RHi?&!z9Lb1qh;wPZ|De z<7$;P`Zg`0B(Cq%x=uCA(t6ypKoAaE)vbL@Z|yf&MOO+fhjKv`c4-n<47=o+6!!eQ zEooZAw^#oyonwK#yR-)#THQf6>}`lmvB5Wm>jsGUP5k=eeE7EUP*|eyD&kzB@ajhq z3XvuwdKg8|nmAj|bfZX?Nfg=oqob=R zU4O9ozU7a%+Nbnw7MK)83)0)G;pC_(k~%GmI0N9XX-#I str: + """use a dictionary of equivalence to modify the prompt accordingly + ex: + prompt= 'green box red box', dict_changes={'box':'tree'} + promp_modifier(prompt, dict_changes)='green tree red tree' """ + + for key, value in dict_changes.items(): + prompt = prompt.replace(key, value) + return prompt + + def observe(self, state, act, rew, next_state, next_acts, done): + # self.memory.push(state, act, rew, next_state, next_acts, done) # When using ReplayMemory + self.memory.push(False, state, act, rew, next_state, next_acts, + done) # When using PrioritizedReplayMemory (? PJ) + + def build_state(self, obs): + return [State(self.sp.EncodeAsIds(o)) for o in obs] + + def encode_actions(self, acts): + return [self.sp.EncodeAsIds(a) for a in acts] + + def act(self, states, poss_acts, sample=True): + """ Returns a string action from poss_acts. """ + act_values = self.network.forward(states, poss_acts) + if sample: + act_probs = [F.softmax(vals, dim=0) for vals in act_values] + act_idxs = [torch.multinomial(probs, num_samples=1).item() \ + for probs in act_probs] + else: + act_idxs = [vals.argmax(dim=0).item() for vals in act_values] + + act_ids = [poss_acts[batch][idx] for batch, idx in enumerate(act_idxs)] + return act_ids, act_idxs, act_values + + def update(self): + if len(self.memory) < self.batch_size: + return + + transitions = self.memory.sample(self.batch_size) + batch = Transition(*zip(*transitions)) + + # Compute Q(s', a') for all a' + # TODO: Use a target network??? + next_qvals = self.network(batch.next_state, batch.next_acts) + # Take the max over next q-values + next_qvals = torch.tensor([vals.max() for vals in next_qvals], device=device) + # Zero all the next_qvals that are done + next_qvals = next_qvals * (1 - torch.tensor(batch.done, dtype=torch.float, device=device)) + targets = torch.tensor(batch.reward, dtype=torch.float, device=device) + self.gamma * next_qvals + + # Next compute Q(s, a) + # Nest each action in a list - so that it becomes the only admissible cmd + nested_acts = tuple([[a] for a in batch.act]) + qvals = self.network(batch.state, nested_acts) + # Combine the qvals: Maybe just do a greedy max for generality + qvals = torch.cat(qvals) + + # Compute Huber loss + loss = F.smooth_l1_loss(qvals, targets.detach()) + self.optimizer.zero_grad() + loss.backward() + # loss.backward() + nn.utils.clip_grad_norm_(self.network.parameters(), self.clip) + self.optimizer.step() + return loss + + def update_parameters(self): + episodes_done = 0 + for i in tqdm(range(self.max_steps // self.n_envs), ascii=" " * 9 + ">", ncols=100): + action_ids, action_idxs, _ = self.act(self.states, self.encoded_actions, sample=True) + actions = [_subgoals[idx] for _subgoals, idx in zip(self.subgoals, action_idxs)] + if len(self.subgoals[0]) > 6: + # only useful when we test the impact of the number of actions + real_a = np.copy(action_idxs) + real_a[real_a > 6] = 6 + obs, rewards, dones, infos = self.envs.step(real_a) + else: + obs, rewards, dones, infos = self.envs.step(action_idxs) + reshaped_rewards = [self.reshape_reward(reward=r)[0] for r in rewards] + for j in range(self.n_envs): + self.returns[j] += rewards[j] + self.reshaped_returns[j] += reshaped_rewards[j] + self.frames_per_episode[j] += 1 + if dones[j]: + episodes_done += 1 + self.logs["num_frames_per_episode"].append(self.frames_per_episode[j]) + self.frames_per_episode[j] = 0 + self.logs["return_per_episode"].append(self.returns[j]) + self.returns[j] = 0 + self.logs["reshaped_return_per_episode"].append(self.reshaped_returns[j]) + self.logs["reshaped_return_bonus_per_episode"].append(self.reshaped_returns[j]) + self.reshaped_returns[j] = 0 + # reinitialise memory of past observations and actions + self.obs_queue[j].clear() + self.acts_queue[j].clear() + else: + self.acts_queue[j].append(actions[j]) + self.obs_queue[j].append(infos[j]['descriptions']) + + next_prompts = [babyai.rl.PPOAlgoLlm.generate_prompt(goal=obs[j]['mission'], subgoals=self.subgoals[j], + deque_obs=self.obs_queue[j], + deque_actions=self.acts_queue[j]) + for j in range(self.n_envs)] + next_states = self.build_state(next_prompts) + for state, act, rew, next_state, next_poss_acts, done in \ + zip(self.states, action_ids, reshaped_rewards, next_states, self.encoded_actions, dones): + self.observe(state, act, rew, next_state, next_poss_acts, done) + self.states = next_states + # self.logs["num_frames"] += self.n_envs + + loss = self.update() + self.__inner_counter += 1 + if self.__inner_counter % self.save_frequency == 0: + self.save() + + if loss is not None: + self.logs["loss"] = loss.detach().cpu().item() + + logs = {} + for k, v in self.logs.items(): + if isinstance(v, list): + logs[k] = v[:-episodes_done] + else: + logs[k] = v + logs["episodes_done"] = episodes_done + return logs + + def generate_trajectories(self, dict_modifier, language='english'): + if language == "english": + generate_prompt = self.generate_prompt_english + subgoals = self.subgoals + elif language == "french": + dico_traduc_act = {'turn left': "tourner à gauche", + "turn right": "tourner à droite", + "go forward": "aller tout droit", + "pick up": "attraper", + "drop": "lâcher", + "toggle": "basculer", + "eat": "manger", + "dance": "dancer", + "sleep": "dormir", + "do nothing": "ne rien faire", + "cut": "couper", + "think": "penser"} + generate_prompt = self.generate_prompt_french + subgoals = [[self.prompt_modifier(sg, dico_traduc_act) for sg in sgs] for sgs in self.subgoals] + + episodes_done = 0 + pbar = tqdm(range(self.number_episodes), ascii=" " * 9 + ">", ncols=100) + while episodes_done < self.number_episodes: + # Do one agent-environment interaction + prompts = [ + self.prompt_modifier( + generate_prompt(goal=self.obs[j]['mission'], + subgoals=subgoals[j], + deque_obs=self.obs_queue[j], + deque_actions=self.acts_queue[j]), + dict_modifier) + for j in range(self.n_envs)] + self.states = self.build_state(prompts) + action_ids, action_idxs, _ = self.act(self.states, self.encoded_actions, sample=True) + actions = [_subgoals[idx] for _subgoals, idx in zip(self.subgoals, action_idxs)] + + if len(self.subgoals[0]) > 6: + # only useful when we test the impact of the number of actions + real_a = np.copy(action_idxs) + real_a[real_a > 6] = 6 + obs, rewards, dones, infos = self.envs.step(real_a) + else: + obs, rewards, dones, infos = self.envs.step(action_idxs) + reshaped_rewards = [self.reshape_reward(reward=r)[0] for r in rewards] + + for j in range(self.n_envs): + self.returns[j] += rewards[j] + self.reshaped_returns[j] += reshaped_rewards[j] + self.frames_per_episode[j] += 1 + if dones[j]: + episodes_done += 1 + pbar.update(1) + self.logs["num_frames_per_episode"].append(self.frames_per_episode[j]) + self.frames_per_episode[j] = 0 + self.logs["return_per_episode"].append(self.returns[j]) + self.returns[j] = 0 + self.logs["reshaped_return_per_episode"].append(self.reshaped_returns[j]) + self.logs["reshaped_return_bonus_per_episode"].append(self.reshaped_returns[j]) + self.reshaped_returns[j] = 0 + # reinitialise memory of past observations and actions + self.obs_queue[j].clear() + self.acts_queue[j].clear() + else: + self.acts_queue[j].append(actions[j]) + self.obs_queue[j].append(infos[j]['descriptions']) + + self.obs = obs + next_prompts = [self.prompt_modifier(generate_prompt(goal=obs[j]['mission'], subgoals=subgoals[j], + deque_obs=self.obs_queue[j], + deque_actions=self.acts_queue[j]), + dict_modifier) + for j in range(self.n_envs)] + next_states = self.build_state(next_prompts) + + self.states = next_states + # self.logs["num_frames"] += self.n_envs + pbar.close() + + logs = {} + for k, v in self.logs.items(): + if isinstance(v, list): + logs[k] = v[:] + else: + logs[k] = v + logs["episodes_done"] = episodes_done + return None, logs + + def load(self): + try: + with open(self.saving_path + "/memory.pkl", 'rb') as _file: + saved_memory = pickle.load(_file) + self.memory = saved_memory + self.optimizer.load_state_dict(torch.load(self.saving_path + "/optimizer.checkpoint")) + except Exception as err: + print(f"Encountered the following exception when trying to load the memory, an empty memory will be used instead: {err}") + + self.network.load_state_dict(torch.load(self.saving_path + "/model.checkpoint")) + + + def save(self): + torch.save(self.network.state_dict(), self.saving_path + "/model.checkpoint") + torch.save(self.optimizer.state_dict(), self.saving_path + "/optimizer.checkpoint") + with open(self.saving_path + "/memory.pkl", 'wb') as _file: + pickle.dump(self.memory, _file) \ No newline at end of file diff --git a/experiments/agents/drrn/model.py b/experiments/agents/drrn/model.py new file mode 100644 index 0000000..45532d9 --- /dev/null +++ b/experiments/agents/drrn/model.py @@ -0,0 +1,87 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +import itertools +from .utils.pad_sequences import pad_sequences +from .utils.memory import State + +from accelerate import Accelerator + +accelerator = Accelerator() +device = accelerator.state.device + +class DRRN(torch.nn.Module): + """ + Deep Reinforcement Relevance Network - He et al. '16 + + """ + def __init__(self, vocab_size, embedding_dim, hidden_dim): + super(DRRN, self).__init__() + self.embedding = nn.Embedding(vocab_size, embedding_dim) + self.obs_encoder = nn.GRU(embedding_dim, hidden_dim) + # self.look_encoder = nn.GRU(embedding_dim, hidden_dim) + # self.inv_encoder = nn.GRU(embedding_dim, hidden_dim) + self.act_encoder = nn.GRU(embedding_dim, hidden_dim) + self.hidden = nn.Linear(2*hidden_dim, hidden_dim) + self.act_scorer = nn.Linear(hidden_dim, 1) + + + def packed_rnn(self, x, rnn): + """ Runs the provided rnn on the input x. Takes care of packing/unpacking. + + x: list of unpadded input sequences + Returns a tensor of size: len(x) x hidden_dim + """ + lengths = torch.tensor([len(n) for n in x], dtype=torch.long, device=device) + # Sort this batch in descending order by seq length + lengths, idx_sort = torch.sort(lengths, dim=0, descending=True) + _, idx_unsort = torch.sort(idx_sort, dim=0) + idx_sort = torch.autograd.Variable(idx_sort) + idx_unsort = torch.autograd.Variable(idx_unsort) + padded_x = pad_sequences(x) + x_tt = torch.from_numpy(padded_x).type(torch.long).to(device) + x_tt = x_tt.index_select(0, idx_sort) + # Run the embedding layer + embed = self.embedding(x_tt).permute(1,0,2) # Time x Batch x EncDim + # Pack padded batch of sequences for RNN module + packed = nn.utils.rnn.pack_padded_sequence(embed, lengths.cpu()) + # Run the RNN + out, _ = rnn(packed) + # Unpack + out, _ = nn.utils.rnn.pad_packed_sequence(out) + # Get the last step of each sequence + idx = (lengths-1).view(-1,1).expand(len(lengths), out.size(2)).unsqueeze(0) + out = out.gather(0, idx).squeeze(0) + # Unsort + out = out.index_select(0, idx_unsort) + return out + + + def forward(self, state_batch, act_batch): + """ + Batched forward pass. + obs_id_batch: iterable of unpadded sequence ids + act_batch: iterable of lists of unpadded admissible command ids + + Returns a tuple of tensors containing q-values for each item in the batch + """ + # Zip the state_batch into an easy access format + state = State(*zip(*state_batch)) + # This is number of admissible commands in each element of the batch + act_sizes = [len(a) for a in act_batch] + # Combine next actions into one long list + act_batch = list(itertools.chain.from_iterable(act_batch)) + act_out = self.packed_rnn(act_batch, self.act_encoder) + # Encode the various aspects of the state + obs_out = self.packed_rnn(state.obs, self.obs_encoder) + # look_out = self.packed_rnn(state.description, self.look_encoder) + # inv_out = self.packed_rnn(state.inventory, self.inv_encoder) + # state_out = torch.cat((obs_out, look_out, inv_out), dim=1) + state_out = obs_out + # Expand the state to match the batches of actions + state_out = torch.cat([state_out[i].repeat(j,1) for i,j in enumerate(act_sizes)], dim=0) + z = torch.cat((state_out, act_out), dim=1) # Concat along hidden_dim + z = F.relu(self.hidden(z)) + act_values = self.act_scorer(z).squeeze(-1) + # Split up the q-values by batch + return act_values.split(act_sizes) \ No newline at end of file diff --git a/experiments/agents/drrn/spm_models/unigram_8k.model b/experiments/agents/drrn/spm_models/unigram_8k.model new file mode 100644 index 0000000000000000000000000000000000000000..7609939ce920930b853b1a6df9a4ee0f4a5d57ab GIT binary patch literal 372213 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𝔫2J5HVCADriFG@=6UV3dyFU+_#c)xxIlyoHFcEM5W^ip&gBITC#K^W0P^ zLs@(&9kDJtwI&LG5V-3!h6{cPup<*Gh2*|LjclGVQX`zu{xOdBlPkak~R2m0AZLbV(tm5MA@zUsL8 z;qC7GptyXj$n@u%u8{13Go6RhjEuSuWMW1*f0PU7ILr}HOn$i^j98&^Own*!Tsr#b zIQYjS_O*=dqNi{Ml9aOY&Pw-ZVXWZ&^K=cc@g)nuYx)~r#%U?*y+PUgio-k@kd+4) zn%A;2S-Kdf>75COL|(7)sRjP^GV{rg{j`45ebS#kl0Q~~O=fOU`5U~)y=%TP61rWT zbWJ@NF#c7yN!ue4yrqfD=IT)8cMzrz-b<{Osk@zrQtY~_MSg{_TFmwObQwlP zyyu~$8RF#BWD}DmyO~$@Hy@}pzJc|(`vDd=zgATttq(XhAC;ZwYBnBF5^d-__QYDa zUEyTq`~$&Oy38YU$&~!BHjI^tKKC&4V4xXZFi&Dp?%AGr;o&YKeR4)tD-Ki|E5lUe z`i2muC2|$h@g>~|iYiVFplcNc39*wks)_Tj9j^-hNeiezSQb2TSWB?>)OrA!X$_!2 zn5bOY2B&3$jS&5jxOJz(m^50YJ-Mqrgy}eV#FYirOJ@dA@Vhh}T@+^GC}-C&Ls()E z=|7$DgZO5fw&!e+ z+dv4bsM?!O(us5Bsw+0N;U7~9>nD>DDZ_19^`9@%!alMB&f;d%nfY;(q$7C20^9v96DHCdp5s=#Dzbrz=ythI7i&VuOFrNJZ%;!p9$Oa@qLJeNbx&z%NgIcHr% zi@wTy`{(7?T>~J2L4BmP0_t?|2*pTjn;x}408w83>5H#YcTnHcEHxq@I?S@I zLY`G@)kI$}zmPyI87}T!3#-e zZF0W3^_P%qH-jx|9Ve+1w{3$#Qne>~_G{dhdG49ze>+X4{|`E-$7%s8$L)YHW%F!` z4A=>@bp4+-L0_YOfYOe$OvdlVNdme%@abOM7E`hRwDYUKJ3=ov@k23xI6|$5n3B{w zE-$gZ@=DzI)P}K0bj+%j+I1jI9J*#1atP4GiDbCkLbeY*)J4KW+)1+f!{IPUrQ`gl zBU}L97V;b8DaSw|e_@f-IToiCAC_-fnV^_YeR|8g$GcCwZO2n;CxER=QIFLsNUPMS zlbo+I&EjaqL=c)HSE$pnLe`iz_B{DNewhZWZtXCpdX;kEDPY9b>zYg2;wGLRL*z|$ znvBDS4=9nTr-H4`73UuTsC6csH7V}R^-^RhNBv!#`#V7dN+h9=6$VQ7kCn!s

_( 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

Ay#r;4*nhp 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%0D|smd+5cT%o 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Ƚv)0J3(z>%`~x&E_d9+sTI-*gf3Vo^ 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%0Dt6eZfJ>KV`89S&UwXc?tHV$TIZ$O_YD0 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 z;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K; z`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{ z{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K z{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665 z|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&% z|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe` zfB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yK zAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSm zhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y z;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K; z`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{ z{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K z{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665 z|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&% z|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe` zfB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yK zAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSm zhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y z;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K; z`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{ z{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K z{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665 z|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&% z|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe` zfB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yK zAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSm zhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y z;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K; z`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{ z{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K z{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665 z|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&% z|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe` zfB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yK zAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSm zhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y z;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K; z`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{ z{(t!Y;s1yKAO3&%|Kb0K{~!K;`2XSmhyNe`fB665|A+q{{(t!Y;s1yKAO3&%|Kb0K z{~!K;`2XSmhyNe`fB66S|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s- z|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s-|M>s@M?e1`{~!M!{~!O~ z|LEucs*^zZ54)4!*m|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV z|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV|BwHV 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 z1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$ zhz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c z1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh z5Dg$2Ks1180MP)V0Yn3c2GAG!X#mjxq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4Immo zG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4 zfM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCF zXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks118 z0MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT z(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G z0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLaw zq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V z0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?W zL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz z1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$ zhz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c z1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh z5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC? z4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1 zAR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ( z8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2 zKs1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4Immo zG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4 zfM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCF zXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks118 z0MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT z(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G z0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLaw zq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V z0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?W zL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$hz1Z1AR0h4fM@{G0HOgz z1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c1`rJ(8bCCFXaLawq5(t$ zhz1Z1AR0h4fM@{G0HOgz1BeC?4ImmoG=OLT(Ey?WL<5Kh5Dg$2Ks1180MP)V0Yn3c z1`rJ(8bCCFXaLawq5;fj777jDJcjQL)_Dv+8qB^JmcjdY!|#vb4}+I>gRg!2@mKy_ zA2+`K-whWY=AWZ3 zH1lNt?L65aXgEHaXUjE)?+hlu=GimPJUh&8cw=y0XPzApn6st(IhzNavk9j;o24=M zS+z1qk9OFhJ%{bIbJ$NbhYciivw}M}(>!zYx;r<=&FAJY?%ZrapPRj1 zbF<-SUcA#Y_=UZA4w@I|E9S*c+qqjdoVzuhxm)a*yBU+Y`xrcT??vbS*1xk?tH$$c Vd39c`pUkU?^LaIMHm}}>{RsxrOX&ar literal 0 HcmV?d00001 diff --git a/experiments/agents/drrn/spm_models/unigram_8k.vocab b/experiments/agents/drrn/spm_models/unigram_8k.vocab new file mode 100644 index 0000000..8cdf2a0 --- /dev/null +++ b/experiments/agents/drrn/spm_models/unigram_8k.vocab @@ -0,0 +1,8000 @@ + 0 + 0 + 0 +. -3.05954 +▁the -3.353 +s -3.61877 +, -3.62029 +' -3.86991 +▁to -3.94688 +▁a -4.09624 +▁of -4.207 +▁you -4.23898 +t -4.26808 +▁and -4.52258 +▁You -4.53553 +▁is -4.58391 +▁in -4.67869 +▁" -4.82681 +▁it -4.89784 +ing -5.00922 +▁The -5.02109 +▁ -5.04235 +▁rulebook -5.04994 +▁can -5.07636 +▁rule -5.08281 +▁on -5.19587 +▁that -5.22789 +▁not -5.30746 +▁your -5.32662 +▁I -5.40247 +▁for -5.48203 +▁( -5.51602 +▁out -5.5289 +▁with -5.58302 +ed -5.58394 +▁are -5.59067 +- -5.61281 +▁have -5.62748 +▁be -5.6884 +d -5.7431 +▁from -5.80837 +re -5.81477 +▁at -5.82629 +) -5.84341 +: -5.90901 +▁but -5.96049 +▁A -5.96861 +▁It -5.97072 +! -6.02832 +." -6.04905 +▁this -6.05678 +▁into -6.07903 +▁as -6.08989 +y -6.10537 +▁report -6.14695 +? -6.14954 +▁up -6.15542 +▁off -6.16575 +▁room -6.2146 +ly -6.21611 +▁something -6.23732 +▁has -6.24339 +▁no -6.24566 +▁do -6.25454 +▁by -6.28105 +▁see -6.32685 +▁an -6.33113 +▁or -6.33989 +" -6.34341 +er -6.3586 +▁he -6.38923 +▁one -6.39721 +▁carry -6.41967 +▁here -6.42114 +▁check -6.43043 +e -6.44758 +▁about -6.45428 +▁nothing -6.45771 +▁what -6.46986 +▁all -6.4756 +▁his -6.47939 +▁There -6.51304 +m -6.52088 +n -6.5237 +▁don -6.55702 +▁which -6.55856 +▁[ -6.57382 +▁like -6.57419 +▁would -6.59352 +▁That -6.59703 +▁her -6.60521 +▁was -6.62248 +▁game -6.62366 +I -6.62851 +▁before -6.63056 +ll -6.64254 +▁if -6.65091 +▁already -6.65321 +▁only -6.65897 +▁Pass -6.66125 +▁get -6.66161 +▁there -6.68358 +▁down -6.70519 +▁so -6.72178 +▁, -6.7304 +▁now -6.73369 +▁me -6.75387 +▁just -6.75666 +▁open -6.7584 +▁back -6.76317 +▁door -6.77582 +ve -6.80839 +r -6.821 +▁some -6.82235 +▁way -6.83404 +▁when -6.84962 +o -6.85133 +▁will -6.85755 +▁through -6.86346 +▁been -6.87022 +▁Instead -6.8755 +▁He -6.87727 +] -6.88139 +▁light -6.88265 +g -6.88268 +," -6.88613 +▁too -6.88654 +▁more -6.90742 +▁say -6.91953 +A -6.9261 +a -6.92772 +▁go -6.92875 +in -6.93636 +▁time -6.95186 +▁standard -6.95662 +▁says -6.96262 +... -6.97104 +▁closed -6.98521 +▁take -7.00989 +▁' -7.01472 +▁But -7.01979 +▁she -7.021 +▁around -7.03417 +▁This -7.04941 +on -7.05406 +▁things -7.05646 +▁other -7.05929 +▁after -7.06977 +es -7.07137 +▁look -7.07793 +▁over -7.08586 +?" -7.08601 +▁seem -7.08681 +▁< -7.11609 +▁my -7.13509 +▁want -7.13547 +▁yourself -7.14267 +▁put -7.16625 +▁need -7.17446 +▁any -7.18535 +or -7.18796 +al -7.20294 +▁find -7.21133 +▁know -7.21265 +▁player -7.21414 +▁him -7.21428 +▁little -7.21513 +▁un -7.21587 +▁s -7.21656 +!" -7.21671 +▁first -7.21755 +▁response -7.24065 +▁them -7.242 +; -7.25824 +▁She -7.25909 +▁moment -7.26253 +▁seems -7.26299 +▁they -7.26404 +▁They -7.26497 +▁looks -7.26817 +▁table -7.28407 +▁had -7.28954 +▁taking -7.29029 +▁descriptions -7.29165 +▁its -7.29293 +▁think -7.30521 +p -7.30769 +▁block -7.3136 +▁S -7.3149 +▁dark -7.32036 +▁use -7.32757 +▁than -7.32846 +▁place -7.32925 +▁doesn -7.34109 +▁make -7.34334 +▁could -7.34481 +▁Printing -7.34502 +▁must -7.36777 +▁- -7.36898 +▁number -7.36941 +▁going -7.37446 +▁then -7.37731 +▁empty -7.37901 +▁away -7.38092 +> -7.39017 +▁much -7.39405 +▁small -7.40927 +▁object -7.41153 +▁inside -7.41353 +▁Your -7.41508 +▁score -7.42332 +le -7.44914 +▁wall -7.45474 +▁In -7.46666 +▁very -7.46839 +▁*** -7.48143 +▁anything -7.48407 +▁name -7.48997 +▁turn -7.50187 +▁long -7.50199 +▁may -7.50239 +▁good -7.50923 +▁water -7.51178 +▁thing -7.51774 +▁man -7.52095 +▁story -7.53714 +▁north -7.54519 +▁head -7.55775 +▁aren -7.56325 +▁hear -7.56743 +▁again -7.56777 +▁east -7.57223 +▁where -7.57322 +▁2: -7.57451 +▁people -7.57459 +▁1: -7.57658 +S -7.5818 +▁right -7.58543 +▁we -7.58872 +▁-- -7.58955 +▁under -7.591 +▁give -7.59335 +c -7.59567 +You -7.59649 +▁floor -7.60016 +▁might -7.60628 +▁while -7.60874 +▁south -7.61196 +▁were -7.61426 +▁west -7.61598 +▁does -7.61707 +▁end -7.63036 +▁= -7.64326 +▁holding -7.64581 +▁try -7.65601 +▁switch -7.65866 +▁hand -7.65931 +▁Attempt -7.66017 +▁To -7.66637 +▁side -7.67356 +▁enough -7.67399 +▁far -7.67733 +▁set -7.67796 +▁should -7.68753 +▁feel -7.69287 +▁even -7.69879 +▁No -7.702 +▁their -7.71677 +▁still -7.71726 +▁hands -7.72341 +▁lock -7.72935 +▁who -7.73284 +th -7.73684 +l -7.73702 +▁move -7.73726 +i -7.74144 +� -7.74387 +b -7.75854 +▁did -7.75988 +▁such -7.7638 +▁re -7.76397 +▁two -7.76929 +▁close -7.7699 +▁didn -7.775 +able -7.77513 +▁sure -7.7787 +▁really -7.77895 +▁large -7.77956 +ri -7.77966 +▁eyes -7.78382 +▁If -7.79079 +▁C -7.79218 +h -7.79352 +▁As -7.79707 +▁never -7.80519 +▁many -7.80933 +▁being -7.83334 +▁noun -7.83705 +▁error -7.83734 +▁well -7.84448 +▁file -7.84686 +▁reach -7.84756 +▁achieve -7.85385 +ur -7.85496 +▁top -7.85555 +w -7.8605 +▁[1 -7.8609 +▁help -7.86556 +▁And -7.8664 +▁What -7.8665 +▁how -7.87284 +▁isn -7.87762 +ic -7.88102 +▁direction -7.88422 +▁few -7.88774 +▁carrying -7.89163 +ar -7.89205 +to -7.90126 +▁read -7.90158 +▁those -7.90191 +▁de -7.903 +▁old -7.90726 +f -7.91477 +▁P -7.91521 +▁face -7.91567 +el -7.91654 +▁print -7.91857 +il -7.92139 +C -7.92295 +▁once -7.92535 +B -7.93246 +▁work -7.93426 +▁objects -7.93751 +▁B -7.94332 +▁mean -7.94526 +▁play -7.9489 +▁black -7.95 +ter -7.95123 +▁Nothing -7.95285 +▁talk -7.96294 +▁looking -7.96947 +.] -7.97595 +▁line -7.97803 +_ -7.97904 +▁got -7.98076 +▁e -7.98949 +▁E -7.99095 +▁F -7.99161 +▁transcript -7.99244 +▁won -7.99252 +en -7.99506 +u -7.99604 +▁key -7.99681 +▁without -8.00229 +▁notification -8.00289 +k -8.00796 +▁enter -8.00816 +E -8.00976 +▁last -8.01033 +▁After -8.02075 +▁always -8.02915 +an -8.02978 +us -8.03029 +▁failed -8.03245 +The -8.03514 +ro -8.03842 +▁left -8.03974 +▁above -8.04334 +▁non -8.04542 +▁ground -8.04885 +▁though -8.05099 +▁change -8.05595 +ation -8.05815 +▁final -8.05862 +▁onto -8.05999 +▁understand -8.06355 +▁description -8.06483 +▁red -8.06503 +▁second -8.06961 +▁An -8.07808 +▁action -8.0807 +▁short -8.08503 +▁part -8.08742 +▁made -8.09481 +▁kind -8.09837 +P -8.10382 +▁front -8.10753 +▁air -8.10929 +D -8.11855 +▁di -8.1189 +R -8.11966 +▁begin -8.12039 +▁locked -8.12063 +▁behind -8.12174 +▁text -8.12931 +▁also -8.13046 +▁itself -8.13245 +▁bit -8.13254 +▁come -8.13491 +no -8.1364 +▁quite -8.13789 +▁outside -8.13842 +▁Switch -8.14026 +▁cannot -8.14177 +is -8.14511 +lo -8.14816 +it -8.15161 +as -8.15381 +▁better -8.15427 +▁able -8.15759 +▁else -8.15794 +▁command -8.16165 +▁window -8.16335 +▁since -8.1637 +M -8.16401 +▁someone -8.16697 +▁gives -8.16791 +▁fit -8.17373 +▁Those -8.17601 +▁exit -8.18081 +▁Not -8.18084 +▁list -8.18127 +▁wearing -8.18221 +ling -8.1835 +T -8.18673 +▁undefined -8.18762 +▁Lib -8.19517 +▁la -8.20229 +▁against -8.20429 +▁new -8.20549 +▁stone -8.21218 +la -8.21348 +▁tell -8.21378 +▁**] -8.21574 +▁ask -8.2217 +▁tried -8.22257 +ment -8.22267 +Ms -8.22399 +▁another -8.22799 +at -8.23322 +▁On -8.23406 +/ -8.2343 +▁most -8.24141 +▁leads -8.24298 +O -8.2443 +▁white -8.24979 +first -8.24991 +▁ever -8.25072 +▁begins -8.25151 +U -8.25993 +▁question -8.26323 +▁option -8.26528 +▁point -8.26543 +▁T -8.27051 +ra -8.27386 +▁life -8.27405 +▁fixed -8.27819 +▁3: -8.28113 +▁remove -8.28243 +▁worn -8.28333 +▁body -8.28416 +▁used -8.29341 +▁sound -8.29381 +▁probably -8.29403 +▁switching -8.29819 +▁property -8.3014 +▁items -8.30642 +▁am -8.30651 +▁next -8.30827 +▁available -8.30828 +▁glass -8.30954 +▁abbreviated -8.31097 +ul -8.31191 +est -8.3124 +less -8.31403 +▁feet -8.31424 +# -8.31507 +ion -8.31564 +▁unexpected -8.31667 +▁When -8.32202 +▁n -8.32269 +▁leave -8.32421 +▁instead -8.32693 +▁drop -8.32858 +ry -8.33134 +me -8.33171 +▁house -8.33521 +▁mind -8.3395 +▁We -8.3398 +▁con -8.34219 +▁haven -8.34323 +▁fire -8.34721 +▁high -8.35062 +x -8.35078 +▁machine -8.3541 +li -8.35514 +ers -8.35784 +ive -8.35804 +▁metal -8.35854 +▁almost -8.35963 +▁1 -8.36065 +▁voice -8.36848 +▁idea -8.37055 +▁own -8.37093 +."] -8.37136 +▁type -8.37534 +▁M -8.37613 +ent -8.37641 +▁found -8.38144 +▁car -8.38411 +▁push -8.38541 +▁along -8.38644 +▁smell -8.39149 +▁across -8.39644 +ma -8.39979 +▁world -8.40203 +▁interest -8.40341 +▁H -8.40492 +and -8.41018 +▁these -8.41199 +▁answer -8.41263 +▁walls -8.41432 +▁three -8.41438 +▁D -8.41547 +▁Sorry -8.41806 +ine -8.41944 +te -8.41993 +▁W -8.42099 +▁let -8.42268 +▁opening -8.42344 +▁day -8.42499 +▁class -8.4254 +▁N -8.42543 +▁course -8.4266 +ad -8.43127 +▁rest -8.43133 +▁stand -8.43605 +ity -8.43655 +▁multiple -8.43826 +▁word -8.4396 +am -8.44136 +ir -8.44255 +ia -8.444 +▁getting -8.44457 +▁hard -8.44699 +▁path -8.44712 +▁green -8.44967 +▁wouldn -8.4501 +G -8.45024 +▁pull -8.45571 +▁display -8.45905 +▁comes -8.45983 +ge -8.4621 +▁unlock -8.46966 +▁dead -8.4705 +ci -8.47053 +co -8.47631 +ch -8.47839 +▁because -8.48489 +▁version -8.48668 +ted -8.48681 +▁R -8.48743 +▁said -8.48939 +▁o -8.48959 +▁value -8.49082 +▁between -8.49314 +▁notice -8.49608 +▁hole -8.49661 +ate -8.49676 +the -8.5023 +▁done -8.50356 +▁trying -8.5039 +▁co -8.5059 +▁rather -8.50647 +▁examine -8.50806 +▁K -8.50955 +▁inventory -8.50962 +▁G -8.51016 +▁feeling -8.51128 +z -8.51138 +F -8.51209 +▁goes -8.51714 +▁pushing -8.51743 +▁until -8.51947 +▁asking -8.52014 +▁wait -8.52233 +ness -8.52265 +▁run -8.52417 +▁O -8.5295 +um -8.531 +sh -8.53129 +▁ends -8.53153 +▁stage -8.53167 +id -8.53209 +▁mode -8.53547 +▁dis -8.53736 +▁giving -8.53828 +▁currently -8.53862 +▁best -8.54227 +▁start -8.54263 +▁sort -8.54287 +line -8.54508 +▁For -8.54891 +▁yes -8.54984 +▁wear -8.55072 +▁blue -8.55219 +▁cut -8.55643 +▁break -8.55652 +▁below -8.55691 +▁doing -8.55839 +▁gone -8.55927 +de -8.56036 +▁Tried -8.56125 +se -8.56349 +ist -8.56456 +▁big -8.56598 +ta -8.56827 +▁possible -8.57062 +▁So -8.57112 +▁bed -8.57603 +▁seen -8.57643 +▁Before -8.57815 +▁L -8.58069 +▁... -8.58192 +▁d -8.58548 +▁turns -8.58969 +▁full -8.59069 +▁examining -8.59288 +▁Ask -8.59327 +▁> -8.5939 +▁person -8.5941 +▁us -8.59427 +ver -8.59429 +▁access -8.59535 +un -8.59875 +▁saying -8.59947 +▁appears -8.59972 +▁At -8.60136 +▁guard -8.60197 +▁great -8.60408 +▁jump -8.60552 +Y -8.60556 +▁keep -8.60701 +▁Re -8.60845 +L -8.60863 +▁unable -8.60907 +ant -8.60911 +ne -8.61071 +▁climb -8.61378 +▁lead -8.61674 +▁hold -8.61724 +-- -8.61792 +▁With -8.62009 +▁ceiling -8.62047 +age -8.62143 +▁yet -8.62163 +▁bad -8.62166 +▁thought -8.62189 +ol -8.62291 +▁book -8.62449 +▁every -8.62629 +▁each -8.62672 +mo -8.62704 +▁box -8.62835 +4 -8.62924 +▁space -8.62931 +▁lies -8.62936 +which -8.63142 +▁standing -8.63193 +▁past -8.63257 +ian -8.63383 +ie -8.63831 +▁heavy -8.63843 +▁locale -8.6385 +It -8.6397 +▁care -8.63986 +▁walk -8.6448 +▁night -8.64848 +▁sense -8.65502 +▁act -8.65524 +▁words -8.65618 +up -8.66229 +▁touch -8.66255 +▁relation -8.66467 +H -8.66472 +▁deep -8.6651 +▁same -8.6658 +▁remember -8.66715 +▁wooden -8.66757 +▁p -8.6717 +▁button -8.67299 +▁doors -8.67299 +▁our -8.67466 +▁eat -8.67474 +▁V -8.67474 +▁test -8.67581 +..." -8.67726 +led -8.67756 +ti -8.67764 +▁2 -8.67798 +▁desk -8.67825 +ut -8.67986 +▁free -8.68195 +ous -8.68255 +▁sign -8.68325 +▁Table -8.68491 +▁woman -8.68618 +What -8.6862 +▁containers -8.68709 +3 -8.68856 +▁corner -8.68862 +▁darkness -8.68966 +v -8.68986 +▁cold -8.69168 +▁One -8.69217 +▁happens -8.69431 +▁single -8.69584 +▁Then -8.69658 +▁lot -8.69905 +▁/ -8.69939 +". -8.70074 +▁Please -8.70087 +▁broken -8.702 +▁write -8.70272 +▁paper -8.70341 +▁g -8.70453 +W -8.70538 +▁printing -8.70615 +2 -8.7093 +▁lack -8.71064 +▁less -8.71151 +▁string -8.71176 +▁home -8.71279 +ish -8.71374 +ies -8.71427 +▁takes -8.71743 +ce -8.72219 +( -8.72266 +▁show -8.72428 +▁c -8.72484 +na -8.7258 +▁near -8.72584 +▁years -8.72949 +▁Just -8.7308 +▁creature -8.73295 +▁provide -8.73306 +▁location -8.73318 +▁# -8.73328 +▁verb -8.73357 +▁makes -8.73514 +▁towards -8.73528 +op -8.73562 +per -8.73625 +1 -8.73675 +les -8.73711 +▁pass -8.73816 +▁half -8.73932 +▁area -8.73983 +▁self -8.74158 +▁status -8.74372 +▁providing -8.74764 +▁form -8.74896 +▁stands -8.74959 +▁various -8.75087 +man -8.75277 +N -8.75287 +▁sometimes -8.75327 +▁bar -8.75688 +illegal -8.75762 +▁wind -8.75889 +▁quickly -8.75934 +▁How -8.75983 +▁power -8.76002 +▁tree -8.76027 +▁Taking -8.76028 +▁en -8.76227 +▁Request -8.76965 +▁All -8.77116 +▁size -8.77125 +▁sc -8.77201 +▁sp -8.77879 +▁Now -8.77933 +▁missing -8.78112 +go -8.78197 +undo -8.78479 +▁sorry -8.78572 +▁hardly -8.79275 +", -8.79399 +▁per -8.79642 +▁nowhere -8.79825 +▁Score -8.79901 +▁Oh -8.79933 +▁together -8.79992 +▁press -8.80015 +▁mouth -8.80205 +▁3 -8.80414 +▁pro -8.80545 +▁Saying -8.80685 +▁four -8.80729 +▁Are -8.80929 +▁both -8.81112 +▁scene -8.81137 +▁Decid -8.81494 +▁Keep -8.81684 +▁repeat -8.81834 +▁drink -8.81851 +pe -8.81884 +▁surface -8.82177 +▁thick -8.82524 +▁girl -8.8255 +▁row -8.82644 +tic -8.82771 +▁spot -8.82835 +▁case -8.82857 +▁memory -8.82896 +▁De -8.83209 +That -8.83414 +he -8.83643 +▁least -8.83651 +▁why -8.83722 +ck -8.83858 +▁dream -8.84028 +▁special -8.84086 +▁specific -8.84106 +▁Be -8.84401 +▁Preferr -8.84504 +▁pick -8.84508 +▁contain -8.84555 +▁stop -8.84669 +▁Do -8.8479 +▁0 -8.85026 +▁ship -8.85128 +▁rock -8.85229 +▁step -8.8544 +▁wide -8.85482 +▁everything -8.85501 +▁insert -8.85509 +▁clothes -8.8555 +▁places -8.85602 +▁held -8.85696 +getting -8.8575 +▁unless -8.8598 +ful -8.86201 +be -8.86454 +▁correct -8.86562 +▁clear -8.86803 +mb -8.86898 +▁ha -8.86975 +No -8.87122 +▁Looking -8.87148 +ated -8.87224 +▁love -8.87433 +▁subject -8.87509 +out -8.87542 +one -8.87618 +▁pretty -8.8764 +▁** -8.8783 +!] -8.88021 +▁strange -8.88041 +providing -8.88081 +▁reason -8.88458 +▁eye -8.88748 +▁sky -8.89235 +▁piece -8.8924 +▁soon -8.89459 +▁Time -8.89487 +ward -8.8962 +▁His -8.89756 +▁blood -8.89913 +bo -8.89983 +▁Library -8.90067 +▁convert -8.90338 +di -8.9051 +ary -8.90553 +▁wave -8.90554 +▁wrong -8.90607 +▁slightly -8.90631 +▁hair -8.90644 +▁THE -8.9066 +▁using -8.91435 +▁taste -8.91517 +▁fall -8.919 +▁pronoun -8.92048 +▁return -8.92272 +▁visible -8.92417 +ance -8.92542 +▁northeast -8.92706 +▁entry -8.92801 +▁paragraph -8.93126 +▁view -8.93567 +▁f -8.9362 +▁ten -8.9392 +▁figure -8.9402 +way -8.94108 +mp -8.94157 +▁chair -8.9419 +▁b -8.944 +▁mo -8.94414 +▁interpreter -8.94846 +▁che -8.94885 +▁parser -8.95277 +po -8.95313 +▁actions -8.95347 +▁search -8.9549 +▁building -8.95674 +closed -8.95688 +▁v -8.95698 +▁� -8.95751 +▁waving -8.95856 +▁rope -8.9587 +▁anyway -8.9593 +▁Y -8.95943 +▁attempt -8.96245 +▁wood -8.96268 +▁plural -8.96711 +5 -8.96815 +▁road -8.97117 +▁sit -8.97342 +▁sun -8.97364 +▁within -8.97428 +▁bottle -8.97469 +▁control -8.97489 +▁scenery -8.97679 +▁gate -8.9782 +▁nice -8.97871 +▁code -8.97877 +▁whom -8.98207 +▁street -8.98416 +ring -8.98452 +▁Ma -8.98644 +▁northwest -8.98761 +looking -8.98807 +▁tall -8.98923 +▁southeast -8.99163 +▁real -8.99195 +▁making -8.99196 +ha -8.9938 +▁announce -8.99454 +▁forest -8.99472 +▁slowly -8.99473 +▁later -8.99508 +▁previous -8.99541 +▁computer -8.99556 +pi -8.99659 +K -8.99663 +▁arrives -8.99681 +▁couldn -8.99705 +▁Q -8.99725 +▁southwest -8.99867 +▁contents -9.00032 +fi -9.00098 +▁ne -9.00466 +▁da -9.00766 +ard -9.00803 +▁Which -9.00896 +▁Start -9.01038 +existent -9.01137 +abbreviated -9.01152 +▁) -9.01239 +▁main -9.01516 +▁suddenly -9.01767 +▁several -9.0184 +object -9.01912 +ph -9.01969 +▁upon -9.0211 +▁talking -9.02128 +▁exactly -9.02165 +▁le -9.02221 +▁arm -9.02223 +▁immediately -9.02239 +ag -9.02279 +▁ho -9.02302 +▁foot -9.0241 +▁lost -9.0244 +ster -9.0257 +▁touching -9.02613 +▁Well -9.02658 +▁capacity -9.0279 +* -9.02922 +ke -9.03093 +ping -9.03202 +▁means -9.03378 +▁[2 -9.03383 +▁preferring -9.03494 +end -9.03567 +▁trees -9.03754 +▁continues -9.03769 +ny -9.03845 +▁whole -9.0436 +▁se -9.04425 +0 -9.04541 +▁happened -9.04543 +vi -9.04661 +▁perhaps -9.0472 +even -9.04824 +ving -9.04936 +▁tiny -9.04972 +▁prefer -9.05022 +ick -9.05076 +▁waiting -9.05146 +▁strong -9.05172 +tro -9.05215 +▁entering -9.05222 +ating -9.05367 +▁called -9.05379 +Oh -9.05425 +▁putting -9.05643 +▁Can -9.05644 +▁character -9.05755 +▁runs -9.05784 +▁edge -9.05795 +em -9.05915 +▁office -9.06213 +ow -9.06229 +▁item -9.06258 +do -9.06261 +▁attribute -9.0627 +mon -9.06463 +▁panel -9.06468 +▁watch -9.06788 +▁ma -9.0697 +▁five -9.07005 +▁coming -9.07012 +▁hope -9.07077 +▁commands -9.0709 +▁shut -9.07182 +▁From -9.07208 +▁l -9.07532 +▁ba -9.07559 +ally -9.07609 +om -9.07725 +gu -9.07745 +io -9.07783 +▁Or -9.07977 +▁lie -9.08096 +▁message -9.081 +▁narrow -9.08249 +▁Mr -9.08308 +▁sea -9.08327 +▁covered -9.08611 +▁Too -9.08645 +9 -9.08653 +▁order -9.08706 +▁call -9.0875 +▁Me -9.08758 +▁stuff -9.08817 +▁saved -9.0903 +▁asks -9.09161 +▁note -9.09182 +ni -9.09201 +▁himself -9.09366 +▁longer -9.09706 +ac -9.09772 +▁fact -9.09774 +▁switched -9.0986 +▁Only -9.09901 +▁important -9.09959 +▁Some -9.10113 +com -9.10174 +▁bright -9.10588 +▁death -9.10622 +▁intact -9.10666 +▁hasn -9.10748 +▁lu -9.10826 +ee -9.10886 +▁wish -9.10915 +▁passage -9.10921 +▁cat -9.11098 +▁clean -9.1128 +▁different -9.11365 +im -9.1171 +▁details -9.11712 +ens -9.11866 +▁Who -9.11867 +▁actually -9.11936 +os -9.1201 +ure -9.12032 +▁middle -9.12161 +▁tower -9.12184 +▁Done -9.1224 +▁hundred -9.12243 +▁fine -9.12261 +▁bottom -9.12285 +▁Maybe -9.12691 +▁sh -9.12943 +▁descend -9.1296 +ng -9.13057 +▁pre -9.13131 +▁none -9.13236 +▁i -9.13263 +▁noise -9.13278 +▁further -9.1343 +▁sits -9.13544 +▁wasn -9.13555 +▁heard -9.13564 +▁Her -9.1362 +oo -9.13645 +▁center -9.13674 +▁gets -9.13688 +▁came -9.13692 +▁La -9.13913 +▁square -9.13981 +ff -9.13981 +▁river -9.14005 +if -9.14019 +ho -9.14118 +cu -9.14189 +▁entrance -9.14238 +dy -9.14301 +▁Dr -9.14353 +▁comp -9.14619 +vo -9.14787 +▁zero -9.14841 +▁current -9.15028 +processing -9.15073 +▁Putting -9.151 +▁dog -9.15277 +▁somewhere -9.1537 +▁Don -9.1547 +▁Check -9.1558 +▁food -9.15792 +string -9.15918 +▁sand -9.15928 +▁Ok -9.16267 +▁Un -9.16317 +▁escape -9.1636 +▁running -9.16373 +▁toward -9.16409 +▁six -9.16506 +▁leading -9.1668 +▁ca -9.16698 +▁pitch -9.167 +▁locations -9.16703 +▁carried -9.16755 +▁bring -9.16777 +▁either -9.16798 +ite -9.16886 +▁whether -9.1693 +▁quit -9.17004 +▁compass -9.17019 +▁save -9.17038 +▁dangerous -9.17175 +▁bo -9.17219 +▁died -9.174 +Well -9.17412 +▁human -9.17445 +▁lo -9.1748 +ec -9.1751 +▁obvious -9.17614 +▁taken -9.17628 +frog -9.17715 +▁position -9.17831 +▁leaves -9.17867 +▁listing -9.17889 +▁steps -9.18001 +▁h -9.18002 +▁puts -9.181 +▁system -9.18112 +▁Pushing -9.18172 +▁spell -9.18217 +▁vi -9.18234 +▁falls -9.18262 +▁Ca -9.18297 +▁inserting -9.18343 +ble -9.18427 +▁decide -9.18448 +va -9.18609 +▁dust -9.18655 +▁directions -9.18662 +▁stairs -9.18662 +▁interested -9.18722 +▁discover -9.18961 +▁U -9.19008 +▁manage -9.19214 +▁unlocked -9.19253 +▁random -9.19291 +▁pile -9.19817 +▁Mi -9.19893 +▁known -9.1999 +▁blow -9.20032 +▁smoke -9.20106 +▁imp -9.20213 +▁during -9.20351 +▁simple -9.2047 +▁blank -9.20514 +▁wonder -9.20519 +▁belong -9.20564 +▁obituary -9.20607 +▁fingers -9.20641 +▁die -9.2076 +ip -9.20851 +▁dragon -9.20858 +▁Inform -9.20859 +He -9.20921 +▁Carry -9.20941 +▁beyond -9.20973 +▁low -9.20999 +▁guess -9.21203 +"] -9.21211 +▁stay -9.21254 +▁Listing -9.21291 +▁sharp -9.21371 +uck -9.21561 +▁young -9.21675 +▁sitting -9.2168 +ical -9.21745 +▁describe -9.21761 +▁Cutting -9.21801 +▁hall -9.21844 +▁garden -9.2222 +▁Waving -9.2223 +ap -9.2225 +▁mirror -9.22265 +▁Supply -9.22311 +ily -9.22455 +▁child -9.2264 +▁None -9.2267 +▁stuck -9.22685 +▁Perhaps -9.22701 +▁: -9.22926 +▁Co -9.22946 +ile -9.2295 +da -9.22997 +min -9.23113 +▁matter -9.23123 +▁completely -9.23263 +▁maybe -9.23325 +▁force -9.23358 +▁revealing -9.23428 +▁round -9.23507 +▁scored -9.2351 +▁Le -9.23526 +▁having -9.24017 +▁Waking -9.2405 +▁likely -9.24082 +ud -9.24173 +▁playing -9.24203 +▁catch -9.24228 +▁corridor -9.24282 +▁sixteen -9.24329 +▁sight -9.24354 +▁believe -9.24377 +▁suppose -9.24388 +▁language -9.24471 +▁Why -9.2452 +red -9.24535 +mi -9.24625 +▁listening -9.24657 +▁loop -9.24682 +▁My -9.24756 +▁lift -9.24805 +▁except -9.24865 +▁cr -9.24877 +▁secret -9.24886 +▁silver -9.24995 +we -9.25021 +▁yellow -9.25046 +▁si -9.25048 +▁cover -9.25088 +▁cave -9.25154 +▁huge -9.25188 +▁ball -9.25249 +▁told -9.2546 +▁card -9.25488 +▁eating -9.25508 +▁board -9.25567 +▁realize -9.25577 +▁hot -9.25681 +▁TO -9.25699 +▁appear -9.25774 +ex -9.25798 +▁tunnel -9.2581 +▁allow -9.25892 +▁send -9.25906 +▁continue -9.25931 +▁finished -9.25982 +▁base -9.25991 +king -9.26075 +ca -9.26331 +▁Bo -9.26355 +▁mu -9.26477 +▁gold -9.26538 +▁complex -9.26631 +▁Every -9.26667 +▁thinking -9.26671 +▁thousand -9.26728 +▁al -9.26729 +▁* -9.26761 +▁ago -9.26795 +▁Transcripting -9.26825 +▁given -9.27026 +▁singing -9.27032 +▁menu -9.27061 +side -9.27129 +▁seat -9.27221 +▁arms -9.27244 +▁Ha -9.27256 +▁pronouns -9.27303 +▁starts -9.27311 +▁meanings -9.27467 +▁container -9.27592 +▁safe -9.27719 +▁restart -9.27782 +▁breath -9.27822 +ber -9.27831 +▁soft -9.27857 +▁reply -9.28045 +▁sleep -9.28218 +▁First -9.28293 +▁visited -9.28298 +RE -9.28643 +▁St -9.28702 +▁ti -9.28721 +▁leaving -9.28841 +▁otherwise -9.28894 +▁attention -9.28937 +▁Go -9.29006 +▁heart -9.2902 +▁supply -9.29335 +▁Ba -9.29594 +▁ex -9.29824 +▁kitchen -9.29885 +▁thin -9.2997 +ible -9.30024 +▁ri -9.30105 +ue -9.30149 +▁gr -9.30165 +Not -9.30216 +▁understood -9.30236 +▁announcement -9.30275 +light -9.30343 +▁impossible -9.30387 +▁throw -9.30437 +▁solid -9.30439 +V -9.30633 +ugh -9.30721 +ner -9.30825 +▁range -9.30849 +▁hint -9.30864 +ear -9.30902 +zz -9.31131 +▁swing -9.31151 +▁alone -9.31215 +▁po -9.31353 +▁shouldn -9.31605 +▁choice -9.31638 +▁bag -9.31671 +▁possessions -9.31894 +▁k -9.31953 +▁Mo -9.32041 +▁magic -9.32127 +▁Standard -9.32268 +▁smiles -9.32339 +We -9.32388 +nd -9.32394 +▁crack -9.32422 +▁pain -9.32468 +▁Grunk -9.32631 +rr -9.32695 +▁interesting -9.32699 +▁attached -9.32703 +▁gun -9.32792 +▁job -9.32852 +empty -9.32858 +▁train -9.32892 +ten -9.32977 +▁el -9.32989 +▁passes -9.33099 +▁men -9.331 +hi -9.33117 +▁group -9.33196 +lic -9.33216 +fully -9.33282 +▁points -9.33339 +▁entries -9.33352 +▁barely -9.33355 +ub -9.33394 +▁Swearing -9.33404 +8 -9.33453 +▁smile -9.33593 +▁distance -9.33612 +▁warm -9.3362 +▁moved -9.33686 +▁follow -9.33702 +▁Ho -9.33704 +▁especially -9.33768 +▁burning -9.33813 +▁source -9.3382 +▁opens -9.33846 +con -9.33852 +▁iron -9.33907 +ence -9.34109 +▁hallway -9.34253 +ped -9.34312 +▁Po -9.3446 +▁screen -9.34575 +▁address -9.34602 +▁normal -9.34616 +▁doorway -9.34671 +▁snow -9.34745 +▁respond -9.34815 +▁ch -9.34931 +▁land -9.34956 +▁saw -9.35009 +der -9.35102 +▁handle -9.35237 +▁city -9.35281 +▁grass -9.35322 +▁stick -9.35331 +▁map -9.35339 +uff -9.35409 +ig -9.3545 +▁closer -9.3561 +▁turning -9.35724 +▁cross -9.35761 +▁nor -9.36316 +▁closing -9.36359 +▁Room -9.36365 +▁dropping -9.36389 +▁J -9.36441 +ple -9.36547 +▁sentence -9.36571 +mm -9.36636 +▁Setting -9.36726 +▁late -9.36973 +▁una -9.37035 +ru -9.37616 +▁consider -9.37632 +▁Lo -9.37897 +▁suit -9.38036 +▁initial -9.38037 +▁written -9.38079 +▁support -9.3816 +lu -9.38349 +▁writing -9.38515 +▁forward -9.38539 +by -9.38581 +▁today -9.38631 +▁glow -9.3867 +▁w -9.38673 +▁Try -9.38719 +▁reading -9.38778 +▁pulling -9.38784 +▁4 -9.3882 +time -9.38932 +▁living -9.39015 +▁finally -9.39051 +▁travel -9.39064 +ice -9.39076 +▁twenty -9.39283 +▁match -9.39432 +▁carefully -9.39439 +▁beautiful -9.39448 +int -9.39851 +▁eight -9.39977 +▁information -9.40354 +▁scope -9.40478 +▁attacking -9.40487 +▁beneath -9.40502 +▁present -9.40563 +▁searching -9.40621 +▁banner -9.40782 +j -9.40803 +que -9.40927 +rs -9.40964 +▁fast -9.4106 +▁shape -9.41159 +▁ring -9.4116 +▁town -9.41183 +▁telling -9.41259 +▁stops -9.41387 +▁y -9.41514 +[ -9.41552 +▁virtual -9.41622 +▁chamber -9.41628 +▁crowd -9.41688 +▁Ro -9.41747 +top -9.41792 +▁moving -9.41867 +▁fear -9.41954 +▁Lock -9.41989 +▁sounds -9.41992 +▁offer -9.42094 +▁mildly -9.42155 +▁su -9.42312 +▁fish -9.42355 +▁refer -9.42359 +▁attack -9.42376 +Your -9.42402 +ight -9.42574 +ER -9.42838 +▁effect -9.42846 +let -9.42993 +▁chest -9.43192 +cl -9.43201 +▁station -9.43226 +▁guy -9.43272 +▁anyone -9.43348 +si -9.43436 +▁answers -9.43567 +▁reads -9.43571 +▁copy -9.4359 +▁lying -9.4361 +▁filled -9.43717 +▁pocket -9.43729 +▁smooth -9.44018 +like -9.44102 +▁windows -9.44152 +▁asked -9.44267 +▁sink -9.44277 +▁wheel -9.44421 +▁true -9.44544 +▁minutes -9.44567 +▁nearby -9.44614 +▁legs -9.44842 +Can -9.44985 +▁remains -9.44988 +▁roof -9.45124 +▁Even -9.45214 +sion -9.45215 +▁obscenely -9.45237 +▁useful -9.45273 +mit -9.45331 +▁skin -9.45369 +▁mention -9.45458 +▁smells -9.45467 +▁hit -9.45587 +but -9.45778 +▁finding -9.45824 +▁apply -9.45845 +▁boy -9.45886 +▁friend -9.45898 +▁[3 -9.45927 +▁robot -9.46178 +▁Would -9.46199 +▁fi -9.46229 +▁lower -9.46241 +▁seven -9.46253 +▁cool -9.46288 +qui -9.46303 +▁chance -9.46372 +▁mess -9.46526 +▁plastic -9.46531 +hasnt -9.46581 +▁brown -9.46704 +▁cabinet -9.46776 +▁count -9.46827 +▁former -9.46863 +▁tu -9.46901 +ave -9.46913 +▁exceed -9.4702 +▁John -9.47125 +▁objectloop -9.47153 +▁music -9.47169 +▁children -9.47364 +▁money -9.47368 +▁supporter -9.47384 +▁clothing -9.4761 +ial -9.47661 +▁sword -9.47698 +▁fun -9.47699 +▁sequence -9.47902 +▁earth -9.48068 +tion -9.48132 +▁verify -9.48199 +▁level -9.48328 +▁array -9.48444 += -9.4854 +▁swim -9.48569 +▁worth -9.48624 +▁stream -9.48703 +▁r -9.48758 +▁trail -9.48831 +our -9.48914 +▁twice -9.48927 +▁author -9.48927 +▁ready -9.48982 +▁Con -9.49013 +cannot -9.49073 +▁device -9.4936 +▁times -9.49369 +▁state -9.49383 +for -9.49474 +▁Da -9.4949 +▁aware -9.49611 +ew -9.49657 +▁sir -9.49934 +▁turned -9.50093 +▁hatch -9.50194 +▁truth -9.50208 +pp -9.50386 +▁pattern -9.50393 +▁passed -9.50405 +ING -9.50405 +▁working -9.50459 +▁counter -9.50552 +▁smelling -9.50628 +▁pit -9.51011 +▁loose -9.51021 +▁parts -9.51033 +▁ladder -9.51196 +▁hat -9.51269 +▁whose -9.51275 +▁faint -9.51503 +▁become -9.51511 +▁waking -9.51573 +▁Br -9.51624 +pa -9.51763 +▁pulls -9.51865 +▁coat -9.51946 +▁finger -9.52024 +bi -9.52101 +▁however -9.52226 +▁pi -9.52247 +▁Mar -9.52253 +AR -9.52288 +▁basic -9.52434 +▁du -9.52437 +▁5 -9.5253 +che -9.52538 +▁lit -9.52581 +Yes -9.52774 +There -9.52801 +▁doubt -9.52825 +▁climbing -9.52846 +▁library -9.52884 +▁concealed -9.52898 +▁neck -9.52916 +▁IF -9.53009 +▁simply -9.53011 +ld -9.53049 +▁lamp -9.53378 +▁field -9.53389 +▁vehicle -9.5339 +This -9.53397 +▁leg -9.53419 +▁statue -9.53456 +▁fa -9.53584 +▁war -9.53767 +▁pen -9.53797 +▁These -9.53883 +▁il -9.53898 +▁father -9.53972 +▁ra -9.54017 +▁days -9.54124 +J -9.54215 +▁contains -9.54334 +▁remain -9.54401 +▁entire -9.54467 +▁mother -9.54488 +▁live -9.5475 +But -9.54813 +▁flat -9.54974 +▁Pa -9.54981 +▁coffee -9.54988 +▁store -9.54994 +▁Lornedei -9.55116 +▁Game -9.55324 +▁kill -9.55331 +use -9.55486 +▁que -9.55529 +▁inter -9.55616 +▁dry -9.55717 +▁started -9.55718 +tra -9.5576 +▁couple -9.55764 +mer -9.55765 +▁condition -9.55805 +▁exiting -9.55807 +▁suitable -9.56139 +▁slip -9.56175 +▁mountain -9.56205 +▁business -9.56284 +▁Report -9.56302 +▁nearly -9.56485 +▁Sp -9.56542 +▁choose -9.56546 +▁difficult -9.56808 +▁feels -9.56854 +og -9.56883 +▁avoid -9.56939 +ably -9.56962 +▁God -9.57082 +land -9.57199 +ron -9.57375 +▁bare -9.57582 +▁pour -9.57644 +▁backdrop -9.57748 +▁notable -9.57771 +▁steel -9.57796 +▁dial -9.57885 +▁bridge -9.57995 +▁shakes -9.58027 +▁sleeping -9.58031 +▁color -9.58062 +▁appearance -9.58147 +char -9.58244 +▁te -9.5825 +▁pair -9.58295 +▁showing -9.58303 +▁engine -9.58328 +▁please -9.5834 +▁hints -9.58381 +▁bl -9.58388 +ach -9.58408 +▁frame -9.58589 +ack -9.58807 +▁unlocking -9.58828 +▁YOU -9.58832 +▁pe -9.58865 +▁included -9.58922 +so -9.59046 +▁RESTORE -9.59063 +val -9.5925 +▁containing -9.59259 +▁swearing -9.59285 +▁problem -9.5937 +▁length -9.59544 +▁ta -9.59576 +▁school -9.59601 +▁animate -9.5967 +bb -9.59841 +▁hang -9.59861 +▁speak -9.60096 +▁beg -9.60102 +▁loud -9.60123 +▁m -9.60144 +vent -9.60287 +▁Al -9.60318 +▁mi -9.60331 +▁phone -9.60373 +▁rep -9.60397 +▁waves -9.60413 +▁stack -9.60465 +▁pool -9.60506 +ga -9.60664 +▁teeth -9.60757 +port -9.60918 +fl -9.60987 +▁easily -9.61028 +▁heat -9.61073 +ound -9.61105 +▁fe -9.61167 +▁Qu -9.61186 +▁snippet -9.61233 +▁listen -9.61265 +unknown -9.61272 +▁certain -9.61377 +▁IN -9.61387 +▁animal -9.6139 +▁shadow -9.61447 +▁chain -9.61453 +▁happen -9.61572 +▁Se -9.61649 +▁quick -9.61669 +den -9.61689 +routine -9.61965 +▁painting -9.62165 +ric -9.62287 +▁sale -9.62318 +▁setting -9.62341 +▁achieved -9.62411 +▁drive -9.62421 +▁pieces -9.62482 +▁Frank -9.6256 +ak -9.62603 +men -9.62766 +▁went -9.628 +▁includes -9.62811 +ious -9.62813 +▁Getting -9.629 +▁th -9.62908 +▁Ra -9.62936 +▁Th -9.62953 +▁Di -9.62962 +So -9.63059 +▁unlikely -9.63071 +▁knife -9.63102 +▁Have -9.63104 +ries -9.63213 +▁clock -9.63262 +▁cla -9.63273 +▁picture -9.63445 +▁nose -9.63558 +▁cable -9.63589 +▁letter -9.63644 +number -9.63649 +▁hidden -9.63714 +▁del -9.63735 +▁region -9.63744 +▁straight -9.63857 +▁thirty -9.63944 +▁myself -9.63982 +▁horse -9.64233 +▁disappears -9.6442 +▁somehow -9.64554 +▁ENTER -9.6458 +▁reaction -9.6468 +cr -9.64735 +▁ice -9.64807 +▁odd -9.64809 +▁foolish -9.64872 +▁model -9.64911 +▁Tell -9.6505 +▁minute -9.65115 +▁determine -9.6522 +▁meet -9.65286 +▁quiet -9.65525 +▁drawer -9.65571 +▁sta -9.65614 +iv -9.65741 +▁Failed -9.65793 +▁hurt -9.65793 +▁wanted -9.6587 +▁bi -9.659 +Do -9.65994 +▁wire -9.66017 +ever -9.66018 +▁"[ -9.66026 +▁events -9.6606 +▁Li -9.6606 +▁allowed -9.66065 +▁fr -9.66293 +▁coin -9.66316 +▁nine -9.66356 +ah -9.6642 +▁hanging -9.66503 +gi -9.6664 +▁effort -9.6673 +▁throwing -9.66891 +If -9.66915 +▁slow -9.66942 +▁cast -9.67007 +gg -9.67083 +▁win -9.67148 +▁cell -9.67185 +my -9.67264 +▁lose -9.67382 +▁perfect -9.6741 +ze -9.67421 +And -9.67432 +▁Although -9.67531 +▁rocks -9.67776 +▁requesting -9.67815 +ier -9.67868 +ab -9.67962 +▁clearly -9.67979 +fe -9.68025 +▁comma -9.68199 +▁grey -9.68347 +▁fifty -9.68483 +▁recognise -9.68483 +▁unfortunately -9.68664 +ther -9.68723 +▁took -9.68754 +▁following -9.68765 +are -9.68778 +▁slot -9.68805 +▁column -9.68845 +▁pot -9.68905 +▁conversation -9.69075 +▁year -9.69087 +▁regex -9.69227 +▁receive -9.69298 +ative -9.693 +▁pay -9.69369 +▁locking -9.69576 +▁star -9.69581 +room -9.69713 +ep -9.69739 +▁pardon -9.69819 +▁hangs -9.69936 +▁machinery -9.69988 +ey -9.69997 +▁reveal -9.7 +▁Nelson -9.70044 +board -9.70116 +▁fifteen -9.70119 +not -9.70317 +▁twelve -9.70344 +ations -9.70356 +▁image -9.70578 +▁activity -9.70644 +old -9.70693 +▁entered -9.70736 +▁trouble -9.70795 +▁fix -9.70833 +▁often -9.70894 +▁serial -9.70954 +gen -9.71021 +▁burn -9.71025 +▁Pro -9.71025 +▁books -9.71061 +▁certainly -9.71166 +▁ridiculous -9.71249 +ger -9.71267 +▁drinking -9.71364 +▁plate -9.71414 +▁hello -9.7153 +Don -9.71566 +work -9.71575 +IN -9.71601 +▁ear -9.71629 +ank -9.71633 +tain -9.71688 +▁Taken -9.71856 +▁easy -9.71934 +ning -9.71985 +LE -9.72025 +▁Trying -9.72025 +ual -9.72188 +ned -9.72448 +nes -9.72491 +▁pu -9.72536 +▁portable -9.72659 +▁Something -9.72707 +▁Of -9.72707 +lessly -9.72711 +▁bu -9.7278 +▁Release -9.72853 +▁hadn -9.7291 +▁Graham -9.72932 +▁although -9.72933 +▁rec -9.72957 +▁expect -9.73111 +▁va -9.73187 +▁draw -9.73303 +▁Turning -9.73373 +▁egg -9.73509 +▁Reading -9.73567 +▁Real -9.73577 +▁persuasion -9.73626 +▁undescribed -9.73704 +▁liquid -9.73782 +▁busy -9.73787 +ition -9.73828 +Hey -9.73841 +▁boat -9.73862 +▁hook -9.73869 +▁holds -9.73891 +▁resume -9.73937 +pl -9.74031 +▁poor -9.74053 +ba -9.74106 +▁kissing -9.74151 +▁deal -9.74183 +▁castle -9.74257 +lly -9.74308 +▁nondescript -9.74329 +▁Think -9.74368 +▁sub -9.7447 +▁printed -9.74545 +eg -9.74594 +har -9.74679 +▁Smell -9.74798 +▁strip -9.74822 +▁moves -9.75044 +▁pushed -9.75088 +▁forty -9.75098 +▁par -9.75178 +▁crystal -9.7527 +▁firmly -9.7534 +ose -9.7535 +▁morning -9.7559 +OR -9.7566 +▁post -9.75669 +ED -9.75727 +▁knew -9.75749 +▁expression -9.75912 +▁grip -9.75912 +az -9.75916 +▁sheet -9.75934 +▁grab -9.75972 +▁shop -9.76001 +act -9.76043 +AN -9.76044 +▁QUIT -9.76062 +▁Suddenly -9.76221 +▁cu -9.76227 +▁dance -9.76285 +▁pop -9.7629 +▁fence -9.76327 +▁cliff -9.7638 +▁shake -9.76434 +▁gi -9.76464 +▁platform -9.7654 +▁nerve -9.76542 +brief -9.76564 +▁tied -9.76638 +ign -9.76651 +▁Na -9.76692 +▁pa -9.76725 +▁mist -9.76767 +▁roll -9.76769 +▁afraid -9.7686 +▁Opening -9.76872 +▁pri -9.76872 +▁among -9.769 +▁explain -9.7694 +ingly -9.77017 +▁weight -9.77043 +bu -9.77101 +Oops -9.77127 +▁lab -9.77157 +lar -9.77174 +▁pm -9.77188 +▁herself -9.77256 +▁leather -9.77342 +▁unnecessary -9.77423 +ez -9.77487 +nce -9.7756 +▁Could -9.77596 +ments -9.77666 +▁Du -9.77703 +her -9.77704 +▁z -9.77705 +uc -9.77725 +za -9.77737 +▁rain -9.77803 +▁Here -9.77826 +▁fill -9.77861 +▁ABOUT -9.7797 +▁familiar -9.77989 +▁opened -9.78048 +▁fur -9.78102 +▁fly -9.78186 +▁cutting -9.78188 +ky -9.78341 +▁hum -9.78419 +▁anywhere -9.78492 +▁Let -9.78495 +▁replies -9.78558 +▁flowers -9.78638 +ise -9.78704 +ato -9.78706 +▁sniff -9.78721 +▁Darkness -9.78729 +▁entirely -9.78731 +▁Je -9.78744 +▁kid -9.78752 +▁Car -9.78774 +EN -9.78835 +▁drops -9.78922 +▁lever -9.78939 +row -9.78942 +▁topic -9.78948 +▁plan -9.78975 +▁cage -9.78989 +▁giant -9.7899 +▁fresh -9.7899 +▁cup -9.79111 +ib -9.79197 +▁finish -9.79251 +all -9.79263 +▁advance -9.79294 +▁Jumping -9.79377 +▁sweet -9.79459 +▁refers -9.7948 +ug -9.79529 +▁Vari -9.796 +▁art -9.79728 +▁Unfortunately -9.79815 +▁circle -9.79853 +ral -9.79934 +▁underneath -9.79953 +▁bird -9.80007 +of -9.80009 +▁painted -9.80208 +▁Going -9.80244 +verbose -9.80256 +▁Two -9.80285 +▁Save -9.80318 +▁dramatic -9.80368 +▁Captain -9.80419 +▁directly -9.80486 +▁North -9.80487 +▁grow -9.80508 +▁El -9.80552 +▁excepted -9.80607 +▁returned -9.80609 +ST -9.80612 +▁bedroom -9.8064 +▁plain -9.80711 +▁restore -9.80904 +▁gap -9.8091 +▁particular -9.80918 +▁security -9.81118 +▁blade -9.81149 +▁complete -9.81184 +▁wine -9.81256 +▁hill -9.81266 +▁owner -9.81366 +▁recognize -9.81454 +has -9.81485 +▁supposed -9.81516 +▁Ex -9.81566 +▁ancient -9.81621 +▁track -9.81661 +▁relates -9.81675 +▁Sh -9.81823 +▁wet -9.81849 +ade -9.8185 +▁na -9.81874 +▁holdall -9.81892 +In -9.819 +▁adventurers -9.81903 +▁tube -9.82035 +ev -9.82047 +nu -9.82059 +▁Throwing -9.82127 +▁However -9.82145 +▁rub -9.82153 +▁recorded -9.82168 +▁; -9.82247 +IT -9.82277 +▁sa -9.82384 +▁Attacking -9.8255 +▁suggestions -9.82591 +▁others -9.82596 +again -9.82668 +▁wanting -9.82685 +▁enjoy -9.8272 +ide -9.82748 +▁slide -9.8277 +▁require -9.82819 +▁jumping -9.82856 +▁section -9.82865 +▁thanks -9.82906 +▁unset -9.82951 +▁closes -9.83135 +▁Group -9.83146 +▁marked -9.83156 +superbrief -9.83198 +▁Quite -9.83415 +▁walking -9.83453 +▁Tast -9.83466 +▁eighteen -9.83663 +▁mar -9.83668 +cul -9.83714 +▁bug -9.83723 +▁click -9.83745 +▁dreadful -9.83782 +▁release -9.83917 +▁eleven -9.83937 +▁gas -9.83985 +▁Serial -9.84006 +▁join -9.84032 +▁cap -9.84047 +▁Most -9.84079 +▁crawl -9.84089 +▁route -9.84095 +▁minus -9.84108 +▁disc -9.84123 +▁dirt -9.84137 +▁looked -9.84164 +▁third -9.84262 +▁stares -9.84267 +▁En -9.84323 +▁gray -9.84342 +▁Climbing -9.84434 +▁absence -9.84434 +▁prompt -9.84435 +▁hours -9.84495 +▁bell -9.84559 +▁pet -9.84651 +▁approach -9.84719 +▁thirteen -9.84781 +▁Waiting -9.84794 +▁app -9.84801 +▁Giving -9.84811 +▁mine -9.8483 +▁bri -9.84874 +▁brass -9.84913 +▁Version -9.84955 +▁stare -9.84996 +▁suggest -9.85012 +▁Thinking -9.85088 +▁Dropped -9.85128 +▁Answer -9.85303 +▁spin -9.85381 +▁sensible -9.85393 +▁bowl -9.85399 +▁RESTART -9.85477 +▁purpose -9.85603 +Undo -9.85719 +Previous -9.8574 +▁silence -9.85828 +▁kick -9.85848 +▁fra -9.85902 +▁family -9.85915 +▁valid -9.85916 +▁page -9.85946 +▁Wa -9.85969 +▁plant -9.86067 +▁Ne -9.86085 +▁somewhat -9.86123 +ded -9.86221 +day -9.86221 +▁tight -9.86245 +▁x -9.8626 +▁fourteen -9.86267 +▁nods -9.86278 +▁Per -9.86329 +▁victorious -9.86355 +▁Burning -9.86357 +▁movement -9.86359 +▁twist -9.8642 +▁built -9.86444 +report -9.86446 +▁sixty -9.86449 +▁pause -9.86464 +▁oil -9.86519 +▁rhetorical -9.86531 +wi -9.86537 +▁Pulling -9.86621 +possessed -9.8665 +▁hide -9.86663 +▁Searching -9.8671 +▁happy -9.86803 +rd -9.86812 +▁requested -9.86853 +▁usually -9.8688 +▁add -9.86884 +▁stretch -9.86885 +▁squeezing -9.86974 +ress -9.87002 +▁everyone -9.87023 +▁shall -9.87063 +▁weapon -9.87145 +▁Violence -9.87151 +▁unimpressed -9.87151 +▁miss -9.87266 +nder -9.87315 +▁Entering -9.8733 +ions -9.87357 +▁lips -9.87363 +▁cause -9.8738 +▁tip -9.874 +▁Examining -9.87507 +▁Unlocking -9.87507 +▁hi -9.87546 +▁port -9.87575 +nn -9.87583 +▁seventy -9.87601 +▁prop -9.87616 +▁watching -9.87666 +ically -9.87732 +▁bank -9.87829 +How -9.87942 +▁divide -9.87958 +▁King -9.87982 +▁reaches -9.88003 +▁younger -9.8803 +▁evil -9.88053 +▁records -9.88097 +▁nineteen -9.88134 +▁wake -9.88165 +▁seventeen -9.88223 +▁Touching -9.88224 +▁touches -9.88257 +▁plainly -9.88259 +▁shows -9.88277 +▁Jo -9.88363 +▁crucial -9.88403 +▁undone -9.88426 +▁Gr -9.8843 +▁dexterity -9.88493 +lin -9.88625 +being -9.8871 +▁Removing -9.88764 +▁eighty -9.88764 +▁Wearing -9.88765 +▁protect -9.88824 +▁Writing -9.88854 +▁tail -9.88911 +▁ninety -9.88948 +gue -9.88977 +▁dropped -9.88988 +▁glance -9.88997 +▁Fa -9.89023 +▁lights -9.89024 +▁Consult -9.89035 +ces -9.89108 +▁RETURN -9.89126 +▁Closing -9.89131 +▁inedible -9.89222 +▁orange -9.89226 +▁ro -9.89238 +ock -9.89255 +ung -9.89349 +▁adventure -9.89367 +▁Showing -9.89371 +someone -9.89395 +▁toilet -9.8946 +cer -9.89498 +▁prayer -9.89525 +▁rat -9.89535 +▁apparently -9.89565 +BUG -9.8958 +▁bathroom -9.89584 +chi -9.89795 +▁age -9.89837 +▁Dropping -9.89853 +▁Sleeping -9.89853 +▁themselves -9.89853 +air -9.8988 +▁wash -9.89929 +▁guards -9.89939 +▁Through -9.89944 +▁dim -9.89947 +▁fills -9.8995 +▁Yes -9.90026 +▁Restore -9.90036 +▁colour -9.90097 +▁Eating -9.90117 +▁glowing -9.90149 +▁Since -9.90203 +▁cha -9.90219 +▁Saving -9.90353 +▁tie -9.90384 +▁picks -9.90388 +ium -9.90398 +▁shoulder -9.90472 +▁9 -9.90489 +▁forth -9.905 +▁blind -9.90587 +▁Listening -9.90588 +▁hell -9.90588 +▁mark -9.90605 +sk -9.90653 +▁gently -9.90693 +▁Vi -9.90709 +Why -9.90768 +qu -9.90802 +ration -9.90807 +gr -9.90819 +▁ears -9.90836 +▁fairly -9.90836 +▁carved -9.90864 +▁elder -9.90879 +▁chi -9.90926 +▁invalid -9.90933 +▁serve -9.90948 +▁Drinking -9.90955 +▁Jack -9.90979 +▁str -9.90987 +▁worry -9.91047 +▁murder -9.91047 +▁cloud -9.91154 +▁rod -9.91214 +lan -9.91224 +▁Rubbing -9.91234 +▁needed -9.91284 +▁token -9.91323 +▁situation -9.91324 +▁Cl -9.91417 +▁refusal -9.91417 +▁pan -9.91431 +▁Whom -9.91467 +lor -9.91546 +▁moon -9.91554 +▁Kissing -9.91603 +▁Tying -9.9161 +▁dig -9.91611 +▁Squeez -9.91695 +▁Amusing -9.91789 +▁Verifying -9.91882 +AL -9.91898 +▁qua -9.91899 +▁Like -9.91918 +putting -9.91987 +▁branches -9.92051 +uch -9.92055 +▁Interpreter -9.92068 +▁Good -9.92083 +▁Ta -9.92109 +▁soul -9.92116 +ON -9.92215 +▁ge -9.92215 +ory -9.9222 +▁Restarting -9.92255 +▁Futile -9.92349 +▁verified -9.92352 +▁bear -9.92387 +▁stupid -9.92442 +▁routine -9.92477 +▁wi -9.92498 +CH -9.92515 +▁Swinging -9.92536 +▁drowsy -9.92536 +▁walks -9.9267 +▁NOT -9.92674 +nc -9.92699 +rk -9.92785 +▁knock -9.92811 +▁Exiting -9.92882 +▁dress -9.9293 +▁puzzle -9.93072 +▁scar -9.93174 +nserting -9.93185 +▁exist -9.93188 +▁inform -9.933 +▁whatever -9.93305 +▁total -9.93364 +▁waste -9.93384 +can -9.93531 +▁Starting -9.93555 +▁Buying -9.93573 +▁material -9.93573 +▁juggle -9.93575 +▁pin -9.93651 +▁remind -9.93669 +▁learn -9.93672 +▁Quittin -9.93674 +▁matching -9.93773 +▁mad -9.93776 +ches -9.93827 +du -9.93857 +▁AMUSING -9.93857 +▁Constructing -9.93858 +Command -9.93869 +▁Restoring -9.93952 +▁presence -9.93953 +▁trans -9.93965 +tting -9.94002 +▁thank -9.94101 +ef -9.94101 +▁golden -9.94114 +▁cur -9.94142 +▁strength -9.94143 +To -9.94223 +▁corrupt -9.94246 +▁spread -9.9425 +Since -9.94259 +▁corrected -9.94291 +▁elevator -9.94429 +▁son -9.94515 +▁shift -9.94525 +▁Moves -9.9453 +you -9.94575 +▁bolt -9.94625 +▁marble -9.94632 +▁closely -9.94657 +ized -9.94717 +▁lists -9.94771 +pro -9.94825 +▁brick -9.94828 +▁barriers -9.94888 +▁succession -9.9493 +▁falling -9.94954 +▁perfectly -9.94979 +▁village -9.95004 +▁ga -9.95257 +ship -9.95284 +▁sudden -9.95286 +▁brain -9.95287 +▁parameters -9.95293 +▁exits -9.95328 +▁ran -9.95342 +mplicitly -9.95378 +▁meant -9.95384 +▁By -9.95404 +vis -9.9545 +ken -9.95508 +▁data -9.95567 +▁variables -9.95641 +tes -9.95657 +▁throat -9.95679 +ook -9.95775 +▁results -9.95811 +well -9.95859 +ofclass -9.95906 +fo -9.95933 +▁killed -9.95951 +ters -9.95965 +▁Black -9.95974 +kin -9.96091 +▁torch -9.96111 +▁obviously -9.96116 +▁Sta -9.96132 +My -9.96153 +▁Miss -9.9621 +▁alive -9.96324 +▁courteous -9.96359 +▁adjust -9.9636 +▁j -9.96376 +▁parent -9.96447 +ball -9.96449 +▁works -9.96587 +▁result -9.96616 +▁fruitlessly -9.96656 +▁gaze -9.9676 +▁update -9.96774 +▁ni -9.96784 +▁Where -9.96836 +▁monster -9.96847 +▁changes -9.96858 +▁fight -9.96888 +2: -9.96902 +▁beside -9.96906 +tory -9.96961 +▁Removed -9.97043 +▁rises -9.9706 +create -9.97071 +▁[4 -9.97158 +▁Fe -9.97251 +▁arch -9.97316 +▁tra -9.97364 +▁weak -9.97428 +ened -9.97474 +▁equipment -9.97535 +▁master -9.9754 +ina -9.97819 +▁kiss -9.97958 +ea -9.97986 +raw -9.98086 +Using -9.98174 +Comment -9.98223 +▁accept -9.98228 +called -9.98331 +ob -9.98376 +▁recording -9.98489 +▁pushes -9.98566 +▁provokes -9.98571 +▁beat -9.98626 +▁lid -9.98652 +▁tongue -9.98728 +▁rough -9.98734 +entering -9.98781 +ran -9.98783 +00 -9.98811 +▁silent -9.98824 +▁es -9.98836 +▁shiny -9.98925 +▁speed -9.98927 +▁blink -9.98937 +▁super -9.9899 +▁apart -9.99041 +ake -9.99041 +▁Interactive -9.99225 +▁gather -9.99232 +unk -9.99235 +▁Singing -9.9929 +▁staircase -9.99425 +▁carpet -9.99527 +▁shadows -9.99615 +zy -9.99622 +▁felt -9.99629 +▁tin -9.99642 +▁dear -9.99642 +▁bother -9.9971 +▁drift -9.99732 +▁demon -9.99783 +▁deck -9.99827 +▁Holmes -9.99828 +▁answering -9.99955 +▁dirty -9.99987 +▁brief -10.0005 +▁seed -10.0005 +▁tr -10.0008 +▁abominable -10.0013 +▁ordinary -10.0013 +▁alarm -10.0014 +pu -10.0039 +▁shelves -10.0043 +▁interpreters -10.005 +▁ignore -10.0061 +▁experience -10.0064 +ler -10.0064 +▁link -10.0065 +house -10.0082 +nch -10.0091 +▁shaft -10.0094 +▁beginning -10.0099 +▁original -10.0103 +▁imagine -10.0105 +▁luck -10.0109 +▁returns -10.011 +▁Clarify -10.0125 +▁tasting -10.0125 +▁distant -10.0125 +fa -10.0125 +▁tank -10.0126 +▁dr -10.0129 +ki -10.0136 +▁staring -10.0157 +considering -10.0167 +▁removing -10.0176 +used -10.0181 +▁South -10.0187 +▁band -10.0192 +worn -10.0195 +▁usual -10.02 +standing -10.0203 +af -10.0204 +▁Pu -10.0212 +▁jar -10.0214 +▁timed -10.0215 +wn -10.0216 +▁component -10.0217 +▁term -10.0219 +▁roar -10.0222 +▁becomes -10.0227 +▁switches -10.0229 +ix -10.0237 +▁charge -10.0238 +▁ahead -10.0249 +head -10.0253 +ently -10.0256 +▁games -10.0257 +ism -10.0264 +▁calm -10.0267 +▁output -10.027 +CK -10.0272 +▁due -10.0278 +▁pipe -10.0282 +ail -10.0291 +rn -10.0292 +▁tells -10.0295 +▁mis -10.0303 +▁Man -10.031 +▁rubbing -10.0311 +▁symbol -10.0311 +ES -10.0311 +tive -10.0318 +lf -10.0321 +▁common -10.0326 +ities -10.0326 +▁massive -10.0334 +RO -10.0339 +▁li -10.034 +▁wander -10.0341 +▁harm -10.0348 +▁weren -10.035 +▁Rule -10.0352 +▁asleep -10.0353 +▁song -10.0353 +▁NON -10.0355 +▁visiting -10.0358 +▁floating -10.0359 +▁internal -10.0364 +▁implicitly -10.037 +▁redisplay -10.0374 +▁police -10.0393 +▁focus -10.0395 +▁Sam -10.0395 +▁anymore -10.0405 +▁paint -10.041 +▁study -10.0411 +▁success -10.0425 +ction -10.0426 +press -10.0429 +▁sw -10.0431 +cle -10.0438 +ize -10.0444 +▁visibility -10.0447 +▁followed -10.0449 +▁scream -10.0451 +▁pale -10.046 +ley -10.0468 +▁perform -10.0468 +▁breeze -10.0479 +▁generator -10.0479 +▁awareness -10.0483 +▁beach -10.0483 +▁oak -10.0483 +▁tea -10.0485 +▁Entire -10.049 +▁tries -10.049 +▁led -10.0496 +▁treasure -10.05 +hen -10.0503 +nel -10.0504 +▁shot -10.0506 +ome -10.0509 +OW -10.0519 +▁ocean -10.0521 +▁spider -10.0522 +aw -10.0526 +▁unknown -10.0526 +▁def -10.0533 +▁Once -10.0534 +▁damage -10.0543 +▁steep -10.0543 +ND -10.055 +▁purple -10.0565 +▁bay -10.0566 +▁Gra -10.058 +▁gave -10.059 +▁buy -10.0591 +▁Ja -10.0591 +▁seemed -10.0596 +▁stretches -10.0596 +▁Cr -10.06 +▁est -10.0604 +▁tired -10.0613 +▁tap -10.0617 +▁sides -10.0619 +▁park -10.0628 +▁everywhere -10.0629 +fitting -10.0636 +▁target -10.0638 +▁Type -10.0638 +▁comfortable -10.0642 +▁wings -10.0644 +▁Rules -10.0648 +au -10.0657 +▁hungry -10.0662 +▁lake -10.0681 +▁Sha -10.0681 +▁swinging -10.0684 +▁scratch -10.0685 +▁qui -10.0685 +▁Ru -10.069 +▁mask -10.0707 +▁Master -10.0708 +▁branch -10.0717 +▁reflect -10.0731 +▁War -10.0737 +net -10.0742 +▁build -10.0746 +▁Though -10.0748 +▁qu -10.0751 +▁bend -10.0755 +oon -10.0756 +▁hour -10.0765 +▁wolf -10.0768 +bed -10.0779 +▁powerful -10.0784 +▁friends -10.0784 +▁spend -10.0788 +▁candle -10.0801 +▁tend -10.0805 +ties -10.0806 +▁Bob -10.0809 +▁design -10.0812 +▁brush -10.0818 +▁10 -10.0818 +▁ghost -10.0824 +▁spirit -10.0824 +▁temp -10.0824 +▁bow -10.0827 +▁centre -10.0828 +▁8 -10.0832 +▁dull -10.0832 +address -10.0837 +▁doctor -10.0863 +▁nest -10.0865 +ang -10.0865 +▁named -10.0868 +▁cries -10.0871 +▁cube -10.0872 +▁slides -10.0873 +▁laughs -10.0873 +▁disturb -10.0879 +set -10.0879 +▁seconds -10.0886 +▁quantifi -10.089 +▁wound -10.0892 +▁ru -10.0896 +▁Street -10.0901 +Yeah -10.0903 +car -10.0903 +▁wild -10.0904 +gy -10.0908 +▁spring -10.0917 +▁practical -10.0925 +▁fo -10.0932 +▁Watson -10.0934 +ire -10.0938 +▁mud -10.0944 +▁See -10.0944 +▁indefinite -10.0945 +Please -10.0947 +▁flash -10.095 +mic -10.0952 +▁useless -10.0963 +▁stones -10.0964 +▁lady -10.0964 +▁energy -10.0968 +▁npc -10.0968 +▁James -10.0968 +▁knows -10.0969 +▁quant -10.097 +▁briefly -10.0979 +▁brother -10.0979 +jo -10.0999 +nar -10.1003 +▁Best -10.1003 +▁letters -10.1005 +▁catches -10.1012 +▁cor -10.1019 +oc -10.1028 +▁shelf -10.1033 +serv -10.1036 +▁acc -10.105 +tu -10.1051 +▁sick -10.1053 +▁Great -10.1056 +ified -10.1057 +▁corpse -10.1057 +▁interior -10.1057 +▁Lord -10.1058 +oth -10.1059 +▁blocks -10.1064 +▁Look -10.1064 +▁context -10.1068 +▁Handl -10.1069 +▁scent -10.1074 +▁bur -10.1081 +Choosing -10.1091 +▁quietly -10.11 +▁chronological -10.1102 +▁hits -10.1103 +▁duck -10.1121 +▁ledge -10.1124 +mate -10.1125 +▁planet -10.114 +cept -10.1145 +▁tear -10.1145 +▁possibly -10.1147 +▁uniform -10.1147 +▁task -10.1149 +▁Did -10.1151 +ane -10.1157 +stone -10.1163 +▁features -10.1169 +▁flame -10.1181 +▁keys -10.1182 +▁week -10.1188 +▁yard -10.12 +▁shock -10.1206 +▁provided -10.1207 +▁numbered -10.121 +▁sibling -10.1216 +ute -10.1217 +av -10.1218 +▁comment -10.1229 +▁melt -10.1242 +▁19 -10.1254 +▁youngest -10.1256 +▁peer -10.1259 +▁damp -10.1266 +hoo -10.127 +▁Digging -10.1273 +▁contact -10.1273 +▁cavern -10.1274 +through -10.1275 +low -10.1288 +lie -10.129 +▁hate -10.1291 +▁boss -10.1292 +SCII -10.1296 +▁apologise -10.1307 +pen -10.1318 +▁evidence -10.1319 +▁thrown -10.1329 +▁preposition -10.1331 +▁fan -10.1341 +▁surrounded -10.1347 +▁rip -10.1348 +▁papers -10.1349 +right -10.1351 +▁While -10.1356 +▁particularly -10.1358 +▁Mon -10.1364 +▁cry -10.1364 +▁angry -10.1365 +▁general -10.138 +▁tying -10.1389 +▁rise -10.1391 +][ -10.1398 +▁party -10.1399 +▁project -10.14 +▁Fi -10.1415 +▁eldest -10.1423 +▁ver -10.1424 +▁undo -10.1431 +ork -10.1432 +▁mass -10.1433 +▁dec -10.1438 +▁early -10.1442 +▁scoring -10.1447 +held -10.1449 +mar -10.145 +ker -10.1451 +ls -10.1455 +▁fair -10.1457 +▁camp -10.1462 +▁sweat -10.147 +▁slight -10.1471 +▁Hall -10.1474 +▁tonight -10.1476 +▁byte -10.1479 +▁dressed -10.1481 +van -10.1486 +Read -10.1489 +▁sur -10.1493 +▁caught -10.1493 +▁heap -10.15 +paragraph -10.1511 +▁met -10.1511 +▁spill -10.1517 +▁silently -10.1529 +thing -10.153 +▁grabs -10.1536 +rm -10.1539 +▁pack -10.154 +▁tape -10.154 +▁gnome -10.154 +▁pleasant -10.154 +They -10.1541 +▁rid -10.1547 +▁cons -10.1552 +attribute -10.1558 +▁fla -10.1559 +▁western -10.1564 +objectloop -10.157 +▁service -10.1576 +▁Does -10.1597 +▁worse -10.16 +▁pulled -10.1604 +▁[5 -10.1605 +med -10.1606 +▁shouts -10.1612 +ient -10.1618 +▁tri -10.1618 +▁photo -10.1635 +ockclimbing -10.1635 +notin -10.1636 +cy -10.1654 +▁natural -10.1655 +▁brought -10.1659 +▁Ti -10.1661 +▁beast -10.1664 +▁starting -10.1664 +des -10.1672 +▁sighs -10.1704 +▁cock -10.1704 +▁example -10.1707 +rate -10.171 +▁sad -10.1711 +▁mostly -10.1713 +▁End -10.1713 +off -10.1717 +▁squeeze -10.1719 +gli -10.1725 +q -10.1725 +▁process -10.1726 +▁cord -10.1731 +cade -10.1732 +▁upper -10.1732 +ink -10.1735 +▁Mu -10.1739 +▁grand -10.1744 +▁Action -10.1746 +▁tre -10.1752 +▁closet -10.1753 +▁col -10.1755 +Ah -10.1756 +▁forever -10.1765 +▁investigate -10.1767 +▁leap -10.1768 +▁designed -10.1772 +▁forget -10.1775 +▁OF -10.1775 +▁Su -10.1788 +▁Ri -10.1788 +▁curious -10.1791 +ja -10.18 +▁future -10.1803 +▁collect -10.1804 +▁lay -10.1806 +▁questions -10.1812 +▁unusual -10.1815 +▁motion -10.1821 +▁baby -10.183 +▁fu -10.1833 +ero -10.1837 +▁storm -10.1839 +▁amount -10.1841 +ando -10.1843 +Sub -10.1852 +▁indicate -10.1852 +▁visit -10.1859 +▁regular -10.1864 +▁supporters -10.1867 +▁shore -10.1876 +▁screams -10.1879 +▁surprise -10.188 +▁flesh -10.1888 +▁switchable -10.1892 +▁inches -10.1896 +▁double -10.19 +▁bound -10.1904 +▁nu -10.1904 +cia -10.1905 +lit -10.1909 +▁downward -10.1921 +▁wife -10.1926 +▁connect -10.1931 +▁lines -10.1932 +▁openable -10.1932 +▁height -10.1937 +▁flower -10.1937 +▁Error -10.1947 +▁cook -10.1947 +▁snake -10.1949 +ctor -10.195 +block -10.1951 +ay -10.1955 +pped -10.1956 +shing -10.1959 +▁clouds -10.196 +ET -10.1965 +▁Sir -10.1967 +▁smaller -10.1972 +bs -10.1973 +mark -10.1979 +▁snaps -10.1982 +▁trust -10.1986 +▁cart -10.1991 +dic -10.1995 +▁New -10.1997 +▁typing -10.1998 +AS -10.1999 +▁spit -10.2001 +atch -10.2003 +▁extend -10.2003 +▁destroy -10.201 +▁battle -10.2011 +▁trunk -10.2011 +▁ride -10.2014 +▁vision -10.2014 +▁produce -10.2018 +▁stomach -10.2023 +▁para -10.2028 +▁FULL -10.2036 +▁fat -10.2039 +▁trip -10.2041 +▁Sa -10.205 +▁spa -10.206 +▁vine -10.2069 +▁patch -10.2074 +▁initialise -10.2074 +UN -10.2081 +▁terrible -10.2085 +rus -10.2086 +▁Play -10.2088 +▁laugh -10.2088 +▁Pi -10.2094 +ump -10.21 +▁aside -10.2103 +bra -10.2109 +▁sturdy -10.2123 +▁bars -10.2123 +read -10.2124 +▁flying -10.2126 +▁shirt -10.213 +▁pink -10.2131 +ors -10.2136 +▁rich -10.2139 +LO -10.2139 +▁Pe -10.2149 +ene -10.2151 +rri -10.2154 +▁GO -10.2156 +▁detail -10.2156 +▁vaguely -10.2157 +▁Ed -10.2157 +▁vast -10.2174 +ka -10.2175 +▁flight -10.2176 +▁apartment -10.2177 +ash -10.2184 +▁ON -10.2189 +▁rolls -10.219 +▁evening -10.2197 +▁East -10.22 +▁pole -10.2216 +▁tent -10.2218 +eep -10.2219 +▁program -10.2224 +▁flip -10.2226 +Now -10.223 +▁growing -10.2235 +▁sail -10.2241 +▁landing -10.2245 +member -10.2254 +▁aim -10.2256 +▁quarter -10.226 +▁rank -10.2262 +form -10.2267 +▁clearing -10.2267 +▁connection -10.2267 +▁Get -10.2269 +ette -10.2276 +▁RE -10.2276 +▁Someone -10.2278 +given -10.228 +ture -10.2282 +▁unit -10.2284 +wood -10.2285 +▁trap -10.2288 +▁sal -10.2292 +She -10.2294 +▁indeed -10.2301 +▁feed -10.2305 +▁prevent -10.2311 +▁Professor -10.2312 +10 -10.2315 +▁necessary -10.2325 +▁awake -10.2331 +▁surprised -10.2332 +▁opposite -10.2338 +▁knob -10.2338 +▁fiction -10.236 +▁Glulx -10.2376 +▁local -10.2398 +▁structure -10.2401 +▁keeps -10.2404 +▁gl -10.2405 +▁des -10.2407 +▁Bar -10.2411 +▁article -10.2414 +▁eastern -10.2415 +▁pirate -10.2416 +▁20 -10.2424 +▁created -10.2425 +▁troll -10.2427 +▁furniture -10.2427 +▁Better -10.2427 +▁ski -10.2434 +rous -10.2434 +▁heading -10.2438 +▁grave -10.2442 +▁extends -10.2448 +west -10.2449 +▁settle -10.2455 +bl -10.2459 +▁crate -10.2461 +▁nail -10.2462 +▁LOOK -10.2466 +▁actor -10.2474 +▁devices -10.2477 +▁glances -10.2485 +▁Cha -10.2489 +▁Inside -10.2507 +▁extremely -10.251 +▁buttons -10.2511 +▁stars -10.2517 +ery -10.2519 +▁buying -10.2521 +zi -10.2521 +▁mix -10.2523 +▁fruit -10.2543 +▁UNDO -10.2544 +▁poison -10.2544 +▁Dis -10.2545 +▁calls -10.255 +▁appreciate -10.2551 +▁bench -10.2556 +▁blast -10.2559 +lost -10.256 +▁shrugs -10.2562 +▁cabin -10.2563 +▁gra -10.2564 +▁alien -10.2571 +▁cloth -10.2572 +▁beam -10.2572 +han -10.258 +▁fallen -10.2583 +▁compartment -10.2583 +uring -10.2606 +▁skull -10.2609 +▁arrive -10.2613 +▁discovered -10.2614 +▁Non -10.2617 +cc -10.2623 +▁swings -10.2623 +gar -10.2624 +▁trick -10.2627 +▁camera -10.2628 +▁struggle -10.2635 +▁torn -10.2636 +illa -10.2644 +▁powder -10.2648 +▁flies -10.2648 +ov -10.265 +Reaching -10.2652 +▁ID -10.2654 +▁Ju -10.2658 +rse -10.2663 +▁200 -10.2676 +▁Other -10.2678 +ark -10.2689 +▁suck -10.2691 +▁Gu -10.2695 +hold -10.2698 +▁drain -10.2703 +▁ju -10.2706 +▁West -10.2709 +Setting -10.2716 +▁File -10.2719 +lock -10.2723 +inside -10.2728 +▁Fiction -10.2728 +▁sent -10.2745 +▁needs -10.2751 +art -10.2764 +▁Another -10.277 +▁implicit -10.2774 +▁bubble -10.2781 +▁bath -10.2789 +▁public -10.2795 +▁personal -10.2806 +▁careful -10.2808 +.[ -10.2816 +elle -10.2821 +▁mid -10.2823 +und -10.2824 +▁Hints -10.2833 +▁hollow -10.2835 +bit -10.2839 +▁hiding -10.2848 +▁consulting -10.285 +▁definitely -10.285 +ggle -10.2856 +▁Fl -10.2863 +Go -10.2872 +▁chairs -10.2879 +▁mor -10.2885 +▁tool -10.2902 +!!! -10.2904 +▁Inspector -10.2908 +▁kept -10.2915 +▁sundry -10.2915 +▁disappear -10.2922 +▁rows -10.2923 +▁collapse -10.2924 +▁slam -10.2929 +ease -10.2931 +▁chip -10.2932 +▁belt -10.2936 +▁enormous -10.2942 +▁simultaneous -10.2942 +▁silly -10.2958 +ray -10.2961 +▁react -10.2968 +AT -10.2969 +▁church -10.2969 +Sorry -10.2973 +CE -10.2997 +▁DO -10.3019 +Co -10.3021 +▁extra -10.3022 +▁larger -10.3023 +now -10.3031 +▁sat -10.3034 +▁pig -10.3037 +▁dusty -10.3037 +▁tightly -10.3041 +sta -10.3045 +▁bra -10.3047 +▁agree -10.305 +▁proper -10.3051 +ied -10.3057 +▁usefully -10.3061 +▁Che -10.3062 +▁characters -10.3063 +iz -10.307 +itch -10.3075 +▁animals -10.3089 +▁jewel -10.31 +▁hero -10.3102 +▁steam -10.3106 +▁meat -10.3108 +▁alley -10.3109 +▁Wi -10.3111 +bble -10.3112 +▁pos -10.3115 +▁bite -10.312 +▁respect -10.312 +▁overhead -10.3131 +qua -10.3136 +ura -10.3139 +▁Mark -10.314 +▁matches -10.3143 +▁? -10.3143 +▁quest -10.3144 +▁basket -10.3148 +▁soldier -10.3148 +ou -10.3152 +▁weird -10.3162 +angle -10.3167 +len -10.3167 +▁arrived -10.3168 +▁confused -10.3176 +▁helmet -10.3176 +▁fireplace -10.3177 +▁load -10.3177 +▁mission -10.3185 +▁spent -10.3191 +▁rubber -10.3191 +▁photograph -10.3203 +▁cheese -10.3204 +▁log -10.3206 +▁mentioned -10.3209 +▁Object -10.3223 +tan -10.3225 +--> -10.3236 +▁prove -10.3237 +▁Deep -10.3237 +▁chicken -10.3245 +▁scarcely -10.3245 +point -10.3246 +▁dish -10.3259 +fer -10.3264 +TH -10.3264 +cent -10.3269 +▁Earth -10.3273 +▁changing -10.3273 +▁flo -10.3273 +▁recently -10.3275 +▁solve -10.3276 +ati -10.3285 +▁organ -10.3289 +cap -10.3298 +▁Michael -10.3301 +▁! -10.3312 +▁monitor -10.3315 +▁shade -10.3318 +Hello -10.332 +zzle -10.3326 +--- -10.3329 +▁shoot -10.3334 +▁king -10.3337 +ific -10.3338 +▁label -10.3341 +▁circular -10.3343 +▁stood -10.3343 +▁ambient -10.3344 +▁ce -10.3349 +▁surrounding -10.3351 +bar -10.3352 +▁direct -10.3353 +▁progress -10.3358 +▁couch -10.3361 +▁rose -10.3363 +▁pound -10.3363 +▁flames -10.3363 +▁Prince -10.3364 +▁picked -10.3369 +▁Gnome -10.3372 +fold -10.3372 +▁booth -10.3373 +▁cri -10.3374 +▁magical -10.3375 +▁stain -10.3384 +▁constant -10.3387 +▁Ch -10.34 +▁Inter -10.3402 +SE -10.3406 +▁English -10.3414 +▁balance -10.3414 +▁damn -10.3415 +▁Sc -10.3425 +▁described -10.3428 +▁grasp -10.343 +▁heads -10.3432 +▁glad -10.3441 +repetition -10.3443 +▁buildings -10.3445 +ale -10.3446 +▁bark -10.3449 +ature -10.3449 +UT -10.3451 +▁More -10.3458 +east -10.3459 +back -10.3461 +TER -10.3465 +par -10.3466 +ify -10.3468 +▁relax -10.3471 +ante -10.3482 +▁wrap -10.3486 +▁interactive -10.3487 +▁ya -10.3492 +▁Par -10.3498 +▁Tra -10.3498 +▁okay -10.35 +▁Joe -10.3503 +▁sunlight -10.3504 +▁grows -10.3509 +▁parse -10.3511 +▁Ah -10.3511 +▁noticed -10.3521 +▁tick -10.3522 +▁fer -10.3529 +▁Short -10.3529 +Just -10.3536 +ddle -10.3536 +stage -10.3546 +▁Block -10.3547 +▁moments -10.3555 +ado -10.3562 +key -10.3566 +▁serious -10.3567 +▁Tr -10.3569 +ware -10.357 +▁fades -10.3571 +▁suspect -10.3572 +▁scattered -10.3573 +wa -10.3575 +▁fails -10.36 +▁boulder -10.3601 +▁weather -10.3601 +▁changed -10.3602 +...) -10.3602 +▁crew -10.3603 +▁lick -10.3608 +▁Right -10.3621 +▁tears -10.3626 +Look -10.3626 +▁radio -10.363 +ending -10.3637 +▁poke -10.364 +▁blows -10.3642 +▁surely -10.3648 +▁Pr -10.3651 +▁tile -10.3651 +▁plants -10.3657 +▁gentle -10.3657 +▁screw -10.3674 +Re -10.3675 +▁covers -10.3676 +▁nature -10.3677 +▁headline -10.3677 +▁ob -10.3685 +self -10.3689 +▁detect -10.3699 +▁whisper -10.3699 +▁scrap -10.3699 +▁bones -10.3704 +ime -10.3708 +▁fist -10.3717 +▁similar -10.3717 +ada -10.3721 +▁ended -10.3731 +▁Emily -10.3733 +▁cop -10.3746 +▁General -10.3747 +▁managed -10.3748 +▁pod -10.3754 +▁happening -10.3757 +▁rusty -10.376 +▁pedestal -10.3761 +▁offset -10.3763 +▁woods -10.3769 +▁history -10.377 +▁northern -10.3777 +▁ill -10.3787 +▁worked -10.3795 +▁vent -10.3799 +▁guest -10.3806 +▁connected -10.3807 +▁paw -10.3809 +eek -10.3814 +▁rack -10.3822 +▁ticket -10.3822 +▁frozen -10.385 +Who -10.3858 +▁notes -10.386 +mid -10.3864 +gh -10.3864 +▁ruin -10.3879 +▁eventually -10.388 +aunt -10.3888 +▁budge -10.3895 +▁CO -10.3907 +ude -10.3909 +▁wa -10.3909 +▁barrel -10.391 +some -10.3929 +▁fell -10.3931 +word -10.394 +▁external -10.394 +▁credit -10.394 +▁accessibility -10.394 +▁desire -10.3941 +▁thoughts -10.3945 +▁angle -10.3959 +ection -10.3969 +▁blanket -10.3976 +AM -10.3982 +▁meaning -10.399 +▁dome -10.399 +nish -10.3997 +▁multi -10.4006 +▁rear -10.4013 +pect -10.4014 +▁misplaced -10.4015 +▁Still -10.4015 +▁sister -10.4019 +try -10.4021 +▁ref -10.4027 +▁root -10.4035 +▁dinner -10.4045 +▁women -10.4046 +▁spark -10.4048 +EL -10.4052 +▁Use -10.4052 +▁exclude -10.406 +▁steal -10.406 +▁Scene -10.4061 +▁tense -10.4065 +▁pointing -10.4066 +VER -10.4072 +▁filter -10.4075 +▁Besides -10.4075 +▁maze -10.4078 +Be -10.4083 +▁cow -10.4085 +▁Ga -10.4089 +▁generate -10.4091 +▁pat -10.4091 +▁Everything -10.4092 +Ma -10.4103 +gged -10.4103 +▁southern -10.4106 +pr -10.4109 +mbling -10.412 +▁mechanism -10.4121 +▁gain -10.4122 +▁wires -10.4125 +cro -10.4125 +__ -10.4132 +hole -10.4135 +▁Thanks -10.4141 +▁Their -10.4146 +▁fool -10.4153 +▁Wo -10.416 +▁island -10.4161 +▁scan -10.4165 +fu -10.4173 +▁Finally -10.4181 +ica -10.4192 +book -10.4201 +▁Bi -10.4203 +▁web -10.4208 +▁accomplish -10.4213 +▁zombie -10.4213 +▁sphere -10.4213 +▁false -10.4213 +▁metallic -10.422 +▁sing -10.4224 +▁bill -10.4228 +▁shed -10.423 +▁plane -10.4234 +▁vol -10.4239 +▁pad -10.4239 +▁swallow -10.4244 +▁mistake -10.4245 +▁199 -10.4245 +ai -10.425 +▁shell -10.426 +▁safety -10.426 +door -10.427 +▁Work -10.4278 +▁date -10.429 +▁knowledge -10.429 +▁increase -10.429 +▁skill -10.4291 +▁chill -10.4302 +UR -10.4313 +▁exp -10.4326 +▁seeing -10.4333 +Good -10.4335 +▁shield -10.4337 +▁American -10.4341 +▁Each -10.4345 +▁lands -10.4351 +▁slab -10.4353 +▁repair -10.4354 +▁country -10.4359 +▁grin -10.4369 +▁manner -10.437 +vid -10.4379 +▁bat -10.4379 +▁requirements -10.4385 +▁Take -10.4386 +own -10.4396 +▁flow -10.4397 +▁favorite -10.44 +▁shower -10.4402 +▁split -10.4403 +turn -10.4403 +▁series -10.4404 +▁wonderful -10.4404 +▁miles -10.4406 +die -10.4425 +▁strap -10.4429 +CASE -10.4431 +▁layer -10.4432 +▁u -10.4436 +▁desert -10.4441 +▁lean -10.4445 +▁broad -10.4447 +▁horrible -10.4447 +▁fail -10.4451 +ously -10.4452 +▁min -10.4454 +sign -10.4459 +▁palm -10.4459 +OP -10.4462 +▁fellow -10.4464 +▁crash -10.4467 +uce -10.4471 +▁wo -10.4471 +▁driver -10.4476 +▁rush -10.4477 +▁survive -10.4478 +▁pas -10.4478 +▁pillar -10.4481 +▁fog -10.4489 +▁hop -10.4493 +arf -10.4497 +hand -10.4502 +▁delicate -10.451 +▁concern -10.452 +clock -10.4524 +▁flu -10.4531 +▁parents -10.4532 +down -10.4534 +▁lives -10.4535 +sized -10.4537 +▁ST -10.4539 +▁drawn -10.454 +▁trace -10.4546 +▁carries -10.4547 +▁sigh -10.4552 +▁months -10.4556 +▁About -10.4558 +ui -10.4559 +▁ME -10.4561 +▁style -10.4561 +▁scenes -10.4568 +▁emb -10.4571 +▁assume -10.4575 +▁consist -10.4577 +LA -10.4579 +▁previously -10.458 +88 -10.4581 +▁gesture -10.4589 +▁club -10.459 +▁pur -10.4604 +▁glove -10.4606 +urs -10.4606 +▁forgotten -10.4606 +▁underground -10.4608 +▁sufficient -10.4621 +▁shaking -10.4622 +▁Ka -10.4636 +ace -10.4637 +▁Bl -10.4646 +Scene -10.4653 +▁decided -10.4656 +▁sell -10.4661 +▁variable -10.4662 +▁treat -10.4664 +▁Sometimes -10.4686 +istic -10.4691 +▁crush -10.47 +AMINE -10.4702 +▁bulb -10.4702 +print -10.4708 +ham -10.471 +▁saving -10.4712 +▁placed -10.4713 +▁physical -10.4734 +▁Also -10.4737 +▁Queen -10.4751 +▁David -10.4751 +▁creak -10.4754 +▁Ph -10.4757 +▁Any -10.4762 +▁substantial -10.4783 +▁nod -10.4786 +▁Star -10.4788 +▁oh -10.4791 +▁Mary -10.4798 +▁company -10.48 +ening -10.4803 +▁pure -10.4807 +▁function -10.4813 +▁cylinder -10.4816 +▁explore -10.4816 +▁truck -10.4817 +▁spray -10.4818 +▁Ge -10.4819 +▁greater -10.4831 +▁acquisitions -10.4832 +▁wrist -10.4832 +▁softly -10.4833 +▁TV -10.484 +▁ending -10.485 +▁je -10.4851 +▁issue -10.4861 +▁clo -10.4862 +▁upward -10.4863 +nal -10.4864 +▁concise -10.4865 +▁separate -10.4865 +▁Light -10.4871 +▁drawing -10.4875 +▁Vous -10.4875 +▁shudder -10.4881 +▁stories -10.4881 +amente -10.4885 +▁raised -10.4897 +▁Melvin -10.4898 +▁programming -10.4898 +win -10.4898 +Okay -10.4899 +▁marks -10.492 +▁City -10.493 +▁breathe -10.4931 +Consider -10.4933 +ology -10.4934 +▁Come -10.4936 +long -10.4937 +▁edges -10.4943 +EE -10.495 +▁whispers -10.4952 +▁mysterious -10.4964 +▁deliver -10.4964 +▁occurs -10.4967 +OO -10.4971 +▁dining -10.4972 +▁tracks -10.4977 +▁slope -10.4981 +ney -10.4984 +▁Leo -10.4984 +▁sealed -10.4986 +oh -10.4989 +ax -10.4992 +▁destination -10.4999 +▁gasp -10.5 +▁subexpression -10.5014 +▁Paul -10.502 +Let -10.5021 +▁pages -10.5022 +▁etc -10.5025 +▁Out -10.5026 +▁im -10.5027 +▁junk -10.5032 +▁cheek -10.5032 +▁archway -10.5033 +▁rising -10.5037 +▁Si -10.5038 +▁hut -10.5038 +▁Red -10.5039 +ech -10.504 +▁width -10.5047 +▁stock -10.5048 +▁pun -10.505 +▁Old -10.5053 +▁enable -10.5055 +▁higher -10.5063 +▁dense -10.5065 +▁element -10.5067 +▁played -10.5079 +▁paragraphs -10.5081 +▁Okay -10.5081 +▁mouse -10.5084 +▁stopped -10.5086 +▁und -10.5089 +▁wh -10.5094 +▁monkey -10.5098 +▁vault -10.5098 +▁odor -10.5099 +▁race -10.5107 +▁sul -10.5108 +xi -10.5119 +▁raise -10.512 +▁properly -10.5122 +▁Ben -10.5124 +iously -10.5127 +▁Dan -10.5129 +▁fountain -10.5131 +▁Chris -10.5132 +shaped -10.5134 +gan -10.5135 +▁include -10.5136 +▁upwards -10.5139 +▁trade -10.5146 +▁lib -10.5147 +▁lets -10.5147 +▁default -10.5148 +▁inanimate -10.5148 +▁watches -10.5152 +▁eaten -10.5153 +▁conceal -10.5162 +▁mutters -10.5162 +▁health -10.5194 +▁blocked -10.5203 +hal -10.5203 +rupt -10.5212 +▁bucket -10.5217 +▁strike -10.5222 +ATION -10.5228 +tell -10.5229 +▁Il -10.523 +▁appropriate -10.5233 +▁nasty -10.5233 +▁burst -10.5245 +▁pants -10.5248 +▁horror -10.525 +▁neither -10.525 +▁tumble -10.525 +▁VM -10.5251 +▁dart -10.5255 +▁screaming -10.5257 +box -10.5266 +▁feather -10.5267 +▁mounted -10.5268 +with -10.5271 +ata -10.5275 +IS -10.5277 +▁male -10.5285 +▁holes -10.5286 +know -10.5287 +wait -10.5289 +▁curtains -10.529 +over -10.5296 +▁stumble -10.5302 +▁depict -10.5302 +▁swimming -10.5302 +▁flicker -10.5302 +fect -10.5312 +▁rot -10.5314 +▁disk -10.5315 +ID -10.5316 +▁futile -10.5319 +▁rug -10.5319 +▁leaps -10.5322 +Are -10.5323 +▁Main -10.5324 +cho -10.5328 +▁solution -10.5336 +▁abandon -10.535 +▁jo -10.5353 +▁hammer -10.5353 +▁newspaper -10.5353 +▁Strange -10.5354 +▁wise -10.5358 +lish -10.536 +▁mag -10.5361 +how -10.5361 +▁flag -10.5362 +▁slips -10.537 +▁jacket -10.5371 +▁arrival -10.5371 +▁Next -10.5371 +▁title -10.5375 +▁curve -10.5376 +▁bomb -10.5376 +An -10.538 +▁newly -10.5386 +▁teller -10.5387 +▁maximum -10.5388 +▁professor -10.5388 +▁follows -10.5392 +50 -10.5395 +ME -10.5395 +▁reveals -10.54 +ella -10.5401 +▁invisible -10.5405 +▁buffer -10.5406 +▁cloak -10.5406 +▁proud -10.5411 +card -10.5413 +ula -10.5418 +▁glasses -10.5418 +▁negative -10.5423 +▁columns -10.5424 +▁leaf -10.5425 +▁bushes -10.543 +▁robe -10.5434 +ano -10.5436 +▁potion -10.5438 +▁earlier -10.544 +▁vial -10.5442 +ich -10.5446 +▁Many -10.5448 +▁fashion -10.5452 +▁nobody -10.5454 +ants -10.5455 +▁throws -10.5457 +▁guide -10.5457 +▁milk -10.5458 +▁salt -10.5458 +▁collection -10.5462 +▁replace -10.5464 +▁boxes -10.5465 +▁curtain -10.547 +▁SE -10.5475 +dra -10.5476 +▁staff -10.5478 +writer -10.5483 +rl -10.5492 +▁creep -10.5494 +person -10.5501 +▁whip -10.5503 +▁cab -10.5504 +▁claws -10.5506 +▁rail -10.5507 +▁reached -10.5509 +ux -10.5509 +▁resurrect -10.551 +▁storage -10.551 +▁scroll -10.551 +▁specify -10.551 +▁admit -10.5512 +▁funny -10.5513 +▁ignores -10.5515 +▁MA -10.5518 +▁Press -10.552 +▁dozen -10.5525 +▁breaking -10.5526 +▁hedge -10.5528 +▁failure -10.5529 +▁merely -10.553 +lac -10.553 +LL -10.5533 +▁totally -10.5542 +▁shimmer -10.5545 +---------- -10.5545 +▁battery -10.5545 +▁resiz -10.5546 +▁chew -10.555 +▁passing -10.5553 +▁rag -10.556 +▁TAKE -10.5563 +▁pressure -10.5569 +oe -10.5571 +▁index -10.5579 +▁awkward -10.558 +▁edible -10.5581 +▁Angela -10.5598 +▁forms -10.5601 +late -10.5605 +gram -10.5606 +▁Lu -10.561 +-1 -10.5612 +▁vanishes -10.5622 +enti -10.5623 +▁creatures -10.5627 +▁curl -10.5632 +▁wrote -10.5633 +▁blur -10.5634 +wl -10.5638 +ana -10.5644 +round -10.5645 +▁skeleton -10.5651 +▁scr -10.5651 +▁filling -10.5656 +▁keeping -10.5661 +suit -10.5665 +▁memories -10.5669 +▁ja -10.567 +noun -10.5673 +▁cheap -10.5674 +▁Under -10.5675 +▁shoes -10.5678 +▁imm -10.5681 +hu -10.5684 +▁gleam -10.5687 +▁discuss -10.5687 +▁Turn -10.5692 +▁warning -10.5693 +▁drag -10.5698 +▁dare -10.571 +▁Hi -10.5714 +▁mom -10.5714 +▁controls -10.5715 +▁Match -10.5728 +30 -10.5738 +comp -10.5745 +▁Pre -10.5757 +▁allocation -10.5758 +▁socket -10.5758 +▁expected -10.5774 +ised -10.5775 +▁surroundings -10.5776 +▁television -10.5776 +▁naked -10.5777 +▁bunch -10.5777 +see -10.5779 +US -10.5786 +▁Hmm -10.5786 +Q -10.5794 +▁heavily -10.5794 +ggi -10.5801 +▁shove -10.5801 +sol -10.5802 +▁gotten -10.5807 +▁debris -10.5813 +▁axe -10.582 +▁awful -10.5824 +▁realise -10.5826 +▁Comp -10.5828 +▁concrete -10.583 +▁opaque -10.583 +▁exclaims -10.583 +▁arrow -10.5831 +▁create -10.5834 +▁Free -10.5837 +▁Sun -10.5841 +▁auto -10.585 +izing -10.5854 +▁Thank -10.5855 +For -10.5863 +▁pr -10.587 +bur -10.5871 +▁needle -10.5872 +▁breaks -10.5878 +mount -10.5879 +▁shoulders -10.5884 +▁prevents -10.5885 +▁demand -10.5885 +▁comb -10.5886 +▁snap -10.5896 +▁pal -10.5898 +All -10.5899 +▁wizard -10.5903 +▁Without -10.5913 +▁cupboard -10.5923 +▁apple -10.5926 +▁lap -10.5934 +▁whi -10.5939 +▁cream -10.5946 +▁tough -10.5946 +▁scale -10.5966 +play -10.5966 +▁ir -10.5969 +▁plug -10.5971 +▁High -10.5978 +iness -10.5979 +▁breathing -10.5987 +▁tug -10.599 +▁neatly -10.599 +iff -10.5991 +▁IT -10.5992 +▁gonna -10.5995 +lay -10.6001 +▁basement -10.6008 +▁farm -10.6017 +cha -10.602 +▁meal -10.603 +▁private -10.6032 +▁central -10.6032 +▁cough -10.6039 +▁Up -10.6044 +▁Peter -10.6045 +▁horizon -10.6047 +▁lantern -10.605 +▁movie -10.605 +▁modern -10.6055 +▁bytes -10.606 +▁grim -10.6063 +▁resist -10.6068 +▁Options -10.6069 +▁daughter -10.6069 +▁smart -10.6069 +▁Menu -10.6071 +▁faded -10.6072 +▁tray -10.6076 +▁swirl -10.6076 +▁ci -10.608 +▁mini -10.608 +▁including -10.6087 +▁phrase -10.6087 +▁border -10.6087 +▁odour -10.6087 +▁violat -10.6089 +▁SH -10.6093 +▁sheep -10.6093 +▁arc -10.6098 +ENT -10.6103 +▁threaten -10.6104 +▁relief -10.6106 +▁regard -10.6107 +▁mountains -10.611 +▁gar -10.6112 +▁burns -10.6112 +▁bin -10.6116 +▁reality -10.6117 +▁recall -10.6117 +▁removed -10.6118 +▁cru -10.612 +▁husband -10.6124 +▁SPACE -10.6125 +▁limit -10.6126 +▁meeting -10.6131 +▁notify -10.6134 +▁poster -10.6139 +▁brightly -10.614 +▁learned -10.6142 +▁welcome -10.6143 +ique -10.6145 +▁lovely -10.6145 +▁mayor -10.6146 +▁trash -10.6151 +▁tools -10.6156 +water -10.6158 +▁keyhole -10.6166 +▁passageway -10.6168 +▁Col -10.6173 +hot -10.6174 +▁upstairs -10.618 +▁temple -10.6186 +▁customer -10.6197 +▁experiment -10.6199 +▁Very -10.6201 +▁White -10.6201 +▁acting -10.6207 +▁bump -10.6215 +▁plot -10.6219 +▁fate -10.6224 +▁Dragon -10.6237 +▁forbidden -10.6237 +▁boots -10.6237 +▁enemy -10.6237 +▁oven -10.6237 +▁plaque -10.6238 +▁silk -10.624 +▁Soon -10.6241 +▁timer -10.6241 +▁succeeds -10.6244 +▁recover -10.6245 +ency -10.6254 +▁officer -10.6255 +▁Memory -10.6256 +cut -10.6257 +▁trapped -10.6258 +▁god -10.6259 +▁curse -10.6262 +ola -10.6264 +▁price -10.6269 +ima -10.6275 +▁destroyed -10.6275 +aving -10.6277 +▁stained -10.6287 +rai -10.6289 +▁flows -10.629 +▁coffin -10.6293 +▁smiling -10.6293 +▁pump -10.63 +ets -10.6308 +▁shoots -10.6312 +▁Fr -10.6314 +▁soil -10.6325 +▁colon -10.6329 +▁Impossible -10.6331 +▁hunt -10.6332 +▁eats -10.6336 +▁recent -10.6346 +▁restaurant -10.6351 +▁interrupt -10.6351 +▁Pig -10.6357 +phone -10.636 +cal -10.6369 +▁landscape -10.637 +▁summer -10.637 +▁translate -10.637 +▁transport -10.6371 +▁strangely -10.639 +abb -10.6392 +▁Over -10.6396 +tron -10.6396 +▁Water -10.6398 +▁mal -10.6403 +▁startup -10.6403 +▁activities -10.6408 +▁distinct -10.6408 +▁depth -10.6408 +▁limited -10.6408 +py -10.6412 +▁pauses -10.6413 +▁shaped -10.6418 +▁knees -10.6419 +▁research -10.6427 +▁truly -10.6427 +▁speaks -10.6435 +▁NORTH -10.6446 +ching -10.6459 +Glu -10.646 +▁joke -10.6464 +▁thorn -10.6466 +IB -10.6476 +▁pray -10.648 +▁film -10.6485 +▁servant -10.6485 +▁slice -10.6494 +▁emp -10.6497 +ppy -10.6498 +▁share -10.6498 +▁touched -10.6509 +11 -10.6522 +▁video -10.6524 +▁Luc -10.6524 +specific -10.6537 +▁flap -10.6538 +▁tan -10.654 +▁female -10.6543 +▁facing -10.6543 +▁Gi -10.6544 +war -10.6548 +▁risk -10.6549 +Hi -10.6557 +▁cargo -10.6558 +▁portal -10.656 +▁orders -10.656 +▁Looks -10.6561 +▁Overflow -10.6562 +▁despite -10.6562 +▁gift -10.6563 +▁pla -10.6565 +Come -10.6566 +▁adds -10.6567 +▁peace -10.657 +▁comfort -10.6577 +ini -10.6578 +▁circ -10.6579 +▁rocky -10.658 +▁Charles -10.6582 +▁Adam -10.6583 +▁Fu -10.6584 +▁hoping -10.6593 +▁bush -10.6598 +verse -10.6599 +PrintToBuffer -10.6601 +▁rubble -10.6605 +▁fully -10.6611 +▁crazy -10.6621 +▁killing -10.6627 +▁laser -10.663 +ATE -10.6632 +▁William -10.6641 +▁represent -10.6641 +▁spinning -10.6642 +▁construct -10.6657 +▁loudly -10.6659 +▁valuable -10.666 +▁stiff -10.666 +▁trapdoor -10.6661 +▁electric -10.667 +▁punch -10.6672 +▁Mrs -10.6672 +▁lawn -10.6679 +▁covering -10.6679 +antly -10.6682 +▁knot -10.6683 +▁Far -10.6689 +▁document -10.67 +▁seal -10.67 +▁drunk -10.6701 +▁comm -10.6706 +ched -10.6707 +▁wipe -10.6712 +▁reaching -10.6714 +▁mat -10.6719 +▁account -10.672 +▁limb -10.6722 +▁product -10.6723 +▁BO -10.6727 +ndo -10.6739 +▁knight -10.6741 +▁grins -10.6742 +▁bored -10.6745 +▁faster -10.6745 +HO -10.6747 +▁por -10.6747 +cchi -10.6753 +▁Rob -10.6755 +urb -10.6756 +▁inner -10.6759 +▁Behind -10.6759 +▁develop -10.6759 +▁explosion -10.6759 +▁clutch -10.6759 +▁Tower -10.6759 +▁rings -10.6764 +▁verbs -10.6772 +NO -10.6772 +▁emergency -10.6779 +▁major -10.6779 +▁telephone -10.6779 +▁defeat -10.678 +org -10.6787 +▁Sch -10.6791 +vy -10.6795 +▁slave -10.6799 +▁cleaning -10.68 +▁parking -10.6805 +▁hose -10.6807 +▁remaining -10.6807 +▁succeed -10.6811 +▁ser -10.6812 +▁student -10.6814 +ident -10.6817 +▁World -10.6819 +▁altar -10.6819 +▁mighty -10.682 +▁sweep -10.682 +ius -10.6822 +▁twisted -10.6824 +TI -10.6825 +▁puzzles -10.6826 +▁bears -10.6827 +▁joy -10.683 +▁jumps -10.6835 +▁polished -10.6836 +▁inference -10.6839 +iti -10.6845 +part -10.6847 +▁somebody -10.6848 +▁Wall -10.6849 +▁names -10.6849 +▁lightning -10.685 +OT -10.6853 +riv -10.6859 +▁buried -10.686 +lation -10.6861 +▁sex -10.6891 +▁buzz -10.6895 +▁balcony -10.6899 +▁thunder -10.69 +▁stir -10.6901 +je -10.6901 +▁danger -10.6908 +▁deeply -10.691 +bor -10.6915 +look -10.6923 +▁Hey -10.6925 +▁IS -10.6929 +arch -10.6939 +www -10.6943 +▁Door -10.6944 +▁proceed -10.696 +▁secure -10.696 +▁flask -10.6961 +roman -10.6974 +▁quality -10.698 +▁instant -10.6981 +minate -10.6983 +▁OK -10.6989 +▁dive -10.6991 +night -10.6992 +game -10.6993 +▁hurry -10.7 +matic -10.7008 +▁spec -10.701 +▁splash -10.7012 +▁dash -10.7018 +▁perch -10.702 +DE -10.7022 +▁Three -10.7022 +▁instructions -10.7025 +▁humans -10.7027 +▁friendly -10.7029 +▁talked -10.703 +after -10.7034 +▁ven -10.7036 +▁corrupted -10.704 +▁inch -10.7048 +▁vous -10.7051 +▁spiral -10.7062 +▁shout -10.7062 +▁nut -10.7063 +MM -10.7074 +--" -10.7077 +▁UP -10.7081 +▁courtyard -10.7082 +▁envelope -10.7088 +stra -10.7089 +▁craft -10.7094 +▁lived -10.7102 +▁throne -10.7103 +▁Uncle -10.7105 +▁[8 -10.7105 +▁Anna -10.7105 +▁rushes -10.7114 +▁doll -10.7115 +VE -10.712 +▁environment -10.7123 +▁lookahead -10.7123 +▁Talking -10.7124 +▁Count -10.7124 +name -10.7124 +▁sofa -10.7127 +itive -10.7137 +▁acceleration -10.7144 +▁bronze -10.7144 +▁trigger -10.7144 +▁grace -10.715 +arm -10.7158 +▁mood -10.7165 +▁Green -10.7165 +▁captain -10.7166 +▁brand -10.7166 +▁jerk -10.7186 +▁reference -10.7188 +▁unconscious -10.7189 +▁circles -10.7194 +▁raises -10.7203 +pon -10.7205 +▁valley -10.7206 +▁terror -10.7206 +mail -10.721 +▁River -10.7211 +▁birds -10.7215 +▁reflection -10.7216 +▁problems -10.722 +rain -10.7224 +▁anonymous -10.7227 +▁rifle -10.7227 +▁WEST -10.7228 +▁Dark -10.723 +▁active -10.7237 +▁Hell -10.7237 +:// -10.7248 +▁copper -10.725 +imp -10.7257 +Thank -10.7257 +▁inappropriate -10.7268 +▁portrait -10.7268 +osa -10.7269 +▁deny -10.727 +▁million -10.7277 +▁stranger -10.7284 +▁claw -10.7286 +▁mill -10.7287 +▁boil -10.7287 +▁shriek -10.7289 +▁dancing -10.7289 +▁stool -10.7289 +▁amazing -10.7289 +▁bread -10.7292 +▁cost -10.7294 +cted -10.7295 +▁squeezes -10.7295 +▁moss -10.7296 +▁soak -10.7297 +vision -10.7304 +▁railing -10.7306 +▁rewind -10.731 +▁Leading -10.731 +▁warn -10.7311 +open -10.7316 +▁reg -10.7318 +▁puff -10.7321 +▁shapes -10.7322 +▁speaking -10.7328 +▁instrument -10.7331 +▁thumb -10.7331 +▁remote -10.7331 +oid -10.7332 +▁forced -10.7332 +▁stamp -10.7336 +shed -10.7339 +▁exceeding -10.7347 +▁People -10.7352 +▁groan -10.7352 +▁console -10.7352 +▁patient -10.7353 +▁cling -10.7355 +▁effective -10.7361 +▁tub -10.7363 +▁mug -10.7366 +ici -10.7373 +2/09 -10.7373 +▁shiver -10.7374 +▁grue -10.7378 +▁den -10.7389 +▁contained -10.739 +▁tomorrow -10.7395 +▁Above -10.7395 +▁team -10.7397 +▁dying -10.7398 +nothing -10.74 +▁Ve -10.7408 +eth -10.7415 +▁instantly -10.7416 +▁substance -10.7416 +▁Small -10.7416 +▁Open -10.7417 +▁BE -10.742 +wise -10.7421 +▁dump -10.7424 +▁Va -10.7425 +bel -10.7428 +▁litter -10.7431 +stick -10.7434 +▁Question -10.7437 +▁Wait -10.7439 +uv -10.7441 +LY -10.7448 +▁flashes -10.7454 +nne -10.7462 +lv -10.7463 +▁bigger -10.7464 +ffer -10.7469 +▁sticks -10.7469 +▁AT -10.7472 +▁Gl -10.7475 +ule -10.7475 +▁flee -10.748 +▁bullet -10.7482 +dentification -10.7482 +ote -10.7484 +▁absolutely -10.7487 +▁Apparently -10.7501 +▁Fortunately -10.7501 +▁museum -10.7501 +▁promise -10.7501 +▁fluid -10.7504 +▁foul -10.7506 +other -10.751 +▁artist -10.7513 +▁degree -10.7522 +▁claim -10.7522 +▁strain -10.7523 +▁panic -10.7526 +Did -10.7527 +yn -10.7535 +▁leans -10.7544 +▁easier -10.7544 +▁cigarette -10.7544 +▁nervous -10.7545 +13 -10.7557 +▁shooting -10.756 +▁hotel -10.7561 +▁older -10.7564 +▁stove -10.7566 +foot -10.7566 +▁thread -10.7567 +▁leader -10.7576 +0402 -10.7587 +▁beauty -10.7587 +▁intended -10.7587 +▁Tim -10.7588 +▁throughout -10.7591 +▁colors -10.7592 +▁forcing -10.7594 +▁searches -10.7598 +▁gear -10.7605 +▁cracks -10.7607 +lement -10.7607 +▁journey -10.7608 +nie -10.7614 +▁law -10.7625 +▁obscure -10.763 +▁burned -10.7631 +▁strikes -10.7645 +under -10.7647 +rial -10.7651 +▁GET -10.7655 +count -10.7656 +▁shatter -10.7658 +range -10.7666 +▁bust -10.7666 +▁manual -10.7668 +▁delight -10.767 +▁Sarah -10.7674 +Mo -10.7682 +▁laughing -10.7685 +▁enclosed -10.7685 +000 -10.769 +▁uncle -10.7691 +▁Help -10.7697 +link -10.7705 +▁interact -10.7712 +▁adventurer -10.7717 +▁unpleasant -10.7717 +▁shining -10.7718 +▁drown -10.7718 +▁abandoned -10.7721 +place -10.7723 +▁jaw -10.7724 +▁choices -10.7724 +rap -10.7727 +▁pipes -10.7734 +▁chimney -10.7739 +▁stairway -10.7739 +▁dagger -10.7739 +▁ASK -10.7739 +▁launch -10.7739 +▁suffer -10.774 +▁NO -10.7742 +▁gum -10.7748 +▁della -10.775 +▁pie -10.7755 +proof -10.7756 +▁sticky -10.7765 +▁flowing -10.7767 +▁ordering -10.7771 +▁Give -10.7779 +▁smash -10.7781 +▁uncomfortable -10.7783 +▁complain -10.7783 +▁18 -10.7784 +▁practice -10.7785 +uni -10.7786 +▁Leave -10.7787 +▁difference -10.7805 +▁growls -10.7809 +▁faintly -10.781 +▁cracked -10.7812 +▁tune -10.7813 +ability -10.7818 +▁Copyright -10.7827 +Ha -10.7828 +▁charm -10.783 +▁cellar -10.7839 +▁bloody -10.7841 +ita -10.7844 +▁footsteps -10.7849 +▁digging -10.7849 +▁lookbehind -10.7853 +▁chin -10.7856 +▁cal -10.7857 +▁FOR -10.7859 +▁waiter -10.7862 +eck -10.7868 +▁chasm -10.7872 +▁lunch -10.7874 +ipping -10.7879 +▁flush -10.788 +▁wing -10.7889 +▁Tu -10.7892 +rise -10.7892 +▁pretend -10.7895 +▁piano -10.7895 +12 -10.7897 +eath -10.7898 +▁goat -10.7908 +een -10.7909 +stand -10.7909 +▁excited -10.7916 +▁impression -10.7916 +▁pointed -10.7917 +20 -10.7918 +▁born -10.7929 +Some -10.7938 +▁intense -10.7938 +▁yells -10.794 +▁pictures -10.794 +< -10.794 +▁exhausted -10.7951 +▁ye -10.7953 +OK -10.7955 +▁bang -10.7958 +▁license -10.7961 +▁hesitate -10.7961 +▁ugly -10.7961 +bbing -10.7962 +▁firm -10.7965 +▁quitting -10.7966 +lon -10.7969 +▁bone -10.7972 +▁Final -10.7989 +mente -10.7991 +▁surprisingly -10.7993 +▁dent -10.8001 +14 -10.8004 +▁glimpse -10.8005 +▁mismatch -10.8005 +▁lobby -10.8005 +▁cult -10.8006 +Where -10.8008 +▁Magic -10.801 +ili -10.8023 +▁hospital -10.8028 +▁illuminate -10.8028 +▁pillow -10.8029 +▁knocking -10.803 +8: -10.8039 +▁Chamber -10.8051 +▁flutter -10.8051 +▁yeah -10.8051 +▁mutter -10.8055 +Ch -10.8063 +▁anger -10.8064 +say -10.8068 +▁expensive -10.8073 +▁mumble -10.8073 +▁kn -10.8076 +zen -10.8079 +ograph -10.8082 +▁lump -10.8083 +▁maid -10.8088 +ELL -10.8092 +lower -10.8094 +▁Despite -10.8096 +▁Life -10.8098 +▁Doctor -10.8099 +claim -10.8104 +UL -10.8108 +▁straw -10.812 +▁insist -10.8121 +▁fields -10.8121 +▁House -10.8122 +▁Com -10.8122 +most -10.8129 +▁sending -10.813 +▁anti -10.8132 +▁hai -10.814 +cat -10.8159 +ugging -10.816 +▁stall -10.8161 +▁happily -10.8164 +▁impressive -10.8164 +▁afternoon -10.8164 +▁construction -10.8168 +▁possession -10.8173 +▁Mc -10.8182 +▁honest -10.8187 +rator -10.8188 +▁pill -10.8189 +▁besides -10.8198 +ara -10.8199 +▁Four -10.82 +▁Yeah -10.8207 +▁arrest -10.821 +▁backwards -10.8212 +▁lucky -10.8214 +▁quarters -10.8218 +▁wondering -10.8218 +▁eh -10.8219 +▁request -10.8221 +▁Rock -10.8221 +▁dai -10.823 +▁typical -10.8233 +▁fuck -10.8245 +berry -10.8248 +▁unstable -10.8256 +rob -10.8259 +▁casting -10.8261 +MP -10.8264 +ito -10.8264 +▁rapidly -10.8265 +NE -10.8275 +▁atmosphere -10.8279 +▁waist -10.8282 +finding -10.8284 +▁dock -10.8287 +▁pace -10.8289 +▁deeper -10.8291 +bri -10.8292 +▁whistle -10.8302 +▁bought -10.8302 +▁causing -10.8302 +▁combination -10.8303 +▁weapons -10.8304 +▁bounces -10.8311 +▁approaching -10.8318 +▁normally -10.8321 +▁decision -10.8326 +▁priest -10.8333 +Qu -10.8343 +Of -10.8344 +▁May -10.8344 +▁plank -10.8345 +Routine -10.8349 +▁signal -10.8349 +▁enterable -10.835 +▁earning -10.8351 +ik -10.8361 +▁AND -10.8368 +▁plenty -10.8372 +▁retrieve -10.8372 +▁cheer -10.8378 +lum -10.8379 +▁lion -10.8387 +▁Persuasion -10.8395 +▁passenger -10.8395 +▁intention -10.8396 +▁related -10.8396 +▁Class -10.8402 +rum -10.8408 +▁mental -10.8412 +▁crying -10.8414 +▁individual -10.8419 +▁pistol -10.8419 +▁twin -10.8421 +▁successful -10.844 +▁disappoint -10.8442 +▁WITH -10.8442 +▁royal -10.8442 +▁ought -10.8443 +▁wedge -10.8443 +▁honey -10.8444 +AP -10.8457 +▁vanish -10.8459 +▁insufficient -10.8466 +▁thrust -10.8466 +▁procedural -10.8468 +▁null -10.8472 +▁echoes -10.8473 +▁slap -10.8478 +cher -10.8487 +that -10.8488 +▁convince -10.8489 +▁gloom -10.8489 +▁Office -10.8491 +TY -10.8494 +▁rolling -10.8497 +Press -10.8504 +▁12 -10.8515 +▁safely -10.8515 +▁apparent -10.8517 +taking -10.8518 +▁Str -10.8523 +25 -10.8525 +▁urge -10.8535 +▁French -10.8537 +▁Status -10.8537 +▁correspondence -10.8537 +▁attract -10.8538 +▁electrical -10.8547 +▁began -10.855 +▁bitter -10.8555 +▁Floyd -10.8561 +▁palace -10.8561 +▁lined -10.8563 +▁spare -10.8568 +ked -10.8575 +▁endless -10.8581 +▁pond -10.8581 +▁accident -10.8584 +▁delicious -10.8584 +▁terminal -10.8584 +▁activate -10.8584 +▁rattle -10.8586 +▁market -10.8588 +▁greet -10.8589 +rant -10.859 +various -10.8591 +▁emerge -10.8595 +acy -10.8606 +▁docking -10.8607 +▁guilt -10.8608 +▁variety -10.8608 +▁decorated -10.861 +face -10.8611 +▁consume -10.8612 +▁clues -10.8615 +before -10.8615 +▁initially -10.8624 +▁occasionally -10.8626 +▁occur -10.8627 +▁murmur -10.8632 +▁shame -10.8633 +rack -10.8634 +▁contemplate -10.8635 +▁members -10.8649 +▁transform -10.8657 +▁toss -10.8659 +▁labeled -10.8672 +▁badly -10.8677 +▁bodies -10.868 +▁equal -10.868 +▁restoring -10.8681 +▁waterfall -10.8685 +▁Val -10.8687 +▁proved -10.8688 +▁ARE -10.8689 +.?? -10.8693 +▁cute -10.8703 +▁worried -10.8704 +▁century -10.8704 +▁Er -10.8705 +▁yell -10.8718 +▁nervously -10.8727 +▁speech -10.8728 +▁muscle -10.8728 +▁eager -10.8728 +▁summon -10.8729 +▁Art -10.8734 +▁weeks -10.874 +▁sticking -10.8743 +▁select -10.8749 +▁SOUTH -10.8753 +▁clerk -10.8753 +▁splinter -10.8753 +▁universe -10.8753 +▁applies -10.8753 +▁steady -10.8753 +▁flashlight -10.8755 +▁rust -10.8768 +▁sway -10.8768 +▁scratches -10.8772 +▁fabric -10.8777 +▁measure -10.8777 +▁period -10.8777 +▁Big -10.878 +▁plum -10.8782 +▁Sand -10.8783 +▁beep -10.8783 +Get -10.8792 +▁Odd -10.8796 +▁goal -10.8798 +▁fucking -10.8799 +▁yawn -10.8802 +▁Anyway -10.8803 +▁mail -10.8804 +De -10.8806 +ente -10.8815 +▁restarting -10.8816 +clo -10.882 +▁beams -10.8823 +▁rabbit -10.8826 +▁horn -10.8835 +▁clip -10.8837 +▁butler -10.8841 +action -10.8843 +▁refuses -10.8845 +ju -10.8848 +▁drug -10.8856 +otto -10.8864 +▁picking -10.8873 +▁Such -10.8873 +▁sliding -10.8875 +▁applied -10.8875 +value -10.8887 +▁latest -10.8892 +▁electronic -10.8899 +▁court -10.89 +▁Blue -10.8901 +▁feature -10.8901 +▁sensation -10.8904 +▁halfway -10.891 +▁Whatever -10.8912 +▁Em -10.8913 +body -10.8923 +WORD -10.8924 +▁balloon -10.8926 +▁content -10.893 +▁bearing -10.8932 +Me -10.8935 +▁letting -10.8938 +▁peel -10.8939 +▁gran -10.8943 +rocedural -10.8947 +▁gut -10.8948 +▁chemical -10.8949 +▁damaged -10.8949 +type -10.8949 +▁Tom -10.895 +▁witch -10.8953 +▁floats -10.8954 +▁reverse -10.8955 +▁decor -10.8958 +▁louder -10.8962 +▁calling -10.8963 +▁TR -10.8968 +▁securely -10.8973 +▁pleasure -10.8973 +▁became -10.8973 +▁roughly -10.8973 +▁stroke -10.8974 +▁literal -10.8976 +Have -10.8978 +▁boring -10.8982 +▁background -10.8983 +▁painful -10.8985 +corn -10.899 +▁supported -10.8996 +▁pushable -10.8998 +▁Several -10.8998 +▁singularity -10.8999 +ABLE -10.9 +▁existence -10.9 +chan -10.9011 +▁considering -10.9014 +▁outline -10.9015 +SS -10.9019 +▁gods -10.9024 +▁becoming -10.9024 +cious -10.9026 +▁shit -10.9027 +▁Jane -10.9027 +▁unlit -10.9039 +▁pleased -10.9043 +▁volume -10.9048 +▁granite -10.9049 +▁wrapped -10.9049 +▁harder -10.9051 +▁Remember -10.9051 +▁airlock -10.9054 +▁crime -10.9054 +rating -10.9055 +▁Bra -10.9064 +▁bursts -10.9065 +▁fancy -10.9074 +▁CH -10.9083 +▁member -10.9084 +escent -10.9095 +▁Moon -10.9096 +▁Little -10.9098 +▁Ninario -10.9098 +ination -10.9101 +rip -10.9112 +▁reactor -10.9112 +ith -10.9117 +▁oddly -10.9118 +▁HA -10.912 +▁severe -10.9122 +Th -10.9123 +▁Unsuccessful -10.9123 +▁eyebrow -10.9123 +▁flood -10.9123 +▁shred -10.913 +▁students -10.9133 +▁Mor -10.9133 +▁YOUR -10.9135 +ARD -10.9136 +gling -10.9136 +▁roots -10.914 +▁Never -10.9145 +▁bracket -10.9148 +▁encounter -10.9148 +▁emerged -10.9157 +▁glares -10.9159 +▁buck -10.9159 +▁record -10.916 +▁Princess -10.9161 +▁grate -10.9161 +▁Mom -10.9163 +rav -10.9165 +▁locker -10.9166 +▁tire -10.9171 +▁argument -10.9173 +▁Park -10.9174 +▁pouring -10.9175 +▁Mother -10.9179 +ification -10.9181 +▁Chi -10.9183 +▁Christmas -10.9199 +▁Minister -10.9199 +▁retreat -10.9199 +▁bookcase -10.92 +▁beta -10.92 +▁Will -10.9211 +SH -10.9216 +▁Path -10.9218 +cross -10.9224 +▁Andrew -10.9224 +zo -10.9229 +ALL -10.9233 +▁frowns -10.9245 +▁considered -10.9248 +load -10.9248 +Here -10.9249 +yntax -10.925 +▁apologize -10.925 +▁supplies -10.925 +▁circuit -10.925 +pass -10.9258 +bber -10.927 +▁rage -10.927 +power -10.9272 +▁Thomas -10.9275 +▁cottage -10.9275 +▁pyramid -10.9275 +▁capture -10.9276 +▁angel -10.9276 +▁crude -10.9287 +stack -10.9292 +▁clue -10.9294 +▁Using -10.9299 +▁audience -10.9301 +▁occupied -10.9301 +▁carriage -10.9301 +▁emits -10.9301 +▁teach -10.931 +▁Our -10.9318 +▁Exits -10.932 +guard -10.9322 +▁rev -10.9323 +▁receptionist -10.9327 +▁lip -10.9333 +▁gem -10.9334 +▁lava -10.9342 +pli -10.9346 +Thanks -10.935 +▁presumably -10.9352 +▁channel -10.9352 +▁sneak -10.9352 +▁jagged -10.9352 +▁whirl -10.9353 +▁deserve -10.9354 +▁cent -10.9356 +▁desperate -10.9358 +▁bounce -10.9368 +▁attach -10.9377 +▁crumble -10.9378 +▁wax -10.9383 +▁van -10.9384 +▁acid -10.9387 +hon -10.9387 +▁via -10.9392 +▁temperature -10.9404 +▁Guard -10.9406 +▁commit -10.9408 +▁Down -10.9411 +▁sharply -10.9413 +▁porch -10.9415 +ppe -10.9428 +▁psych -10.943 +▁surrounds -10.9433 +smith -10.9442 +▁San -10.9442 +▁site -10.9442 +▁excellent -10.9456 +▁magazine -10.9456 +▁unavailable -10.9456 +▁EAST -10.9456 +▁foyer -10.9456 +▁maintain -10.946 +▁Basic -10.946 +▁Canno -10.947 +pan -10.9474 +▁Invalid -10.9482 +▁brilliant -10.9482 +del -10.9482 +▁Inf -10.9487 +▁Things -10.9488 +▁ashes -10.949 +ummy -10.9497 +list -10.9498 +Lo -10.9502 +▁shelter -10.9508 +▁pry -10.9514 +take -10.9515 +▁highly -10.9516 +craft -10.9521 +▁addition -10.9523 +post -10.9527 +▁float -10.953 +▁fuse -10.9533 +▁mushroom -10.9534 +▁verifying -10.9536 +▁sono -10.9537 +▁emerges -10.9539 +uk -10.9548 +▁sin -10.955 +▁jungle -10.956 +▁chunk -10.9562 +▁drip -10.9566 +▁chop -10.9568 +▁em -10.957 +21 -10.9574 +▁Much -10.9576 +ello -10.9579 +▁meters -10.9581 +▁Probably -10.9586 +▁wardrobe -10.9586 +▁dollar -10.9592 +▁echoing -10.9593 +▁handful -10.9599 +▁corn -10.9606 +▁Near -10.9609 +▁surround -10.9612 +▁breast -10.9613 +▁explodes -10.9615 +ization -10.9626 +▁rude -10.9629 +▁fighting -10.9634 +▁laboratory -10.9639 +llowing -10.9641 +▁impact -10.9643 +▁email -10.9644 +uous -10.9645 +rated -10.9654 +▁mono -10.9662 +▁swift -10.9666 +▁paid -10.9672 +ete -10.9681 +▁carving -10.9681 +star -10.9687 +▁wildly -10.9687 +▁shines -10.9688 +▁chant -10.969 +▁army -10.969 +▁vegetable -10.9692 +▁costume -10.9692 +▁judge -10.9693 +▁approaches -10.9693 +AND -10.9695 +▁shallow -10.9696 +▁lens -10.9707 +Rule -10.9712 +▁SO -10.9718 +▁resize -10.9718 +▁Colonel -10.9719 +▁swamp -10.9719 +italic -10.9732 +keeper -10.9734 +▁Entry -10.9747 +ANT -10.9759 +▁neat -10.977 +▁exhibit -10.9773 +▁Fatal -10.9773 +▁detective -10.9777 +cie -10.9786 +phy -10.9788 +▁11 -10.9793 +mebeira -10.9799 +▁famous -10.98 +▁magnet -10.9801 +▁Find -10.9803 +IF -10.9804 +▁cannon -10.9806 +▁brow -10.9806 +une -10.9822 +▁hinges -10.9824 +▁alter -10.9826 +▁abruptly -10.9826 +▁bartender -10.9826 +▁innuendo -10.9826 +▁method -10.9826 +▁German -10.9826 +▁heaven -10.9827 +▁ringing -10.9829 +▁cruel -10.9832 +▁generally -10.9846 +▁driving -10.9853 +▁install -10.9854 +▁month -10.9857 +corp -10.986 +▁Alley -10.9861 +▁Whi -10.9863 +etto -10.9864 +trace -10.9868 +Welcome -10.9881 +▁Beyond -10.9881 +▁helpful -10.9884 +▁fuel -10.9889 +colored -10.9897 +Perhaps -10.9897 +ask -10.9901 +▁jumped -10.9907 +▁Both -10.9908 +▁statement -10.9909 +▁frown -10.9914 +▁stalk -10.9915 +▁rare -10.9916 +ko -10.992 +▁jet -10.992 +▁Nor -10.9925 +▁rob -10.9933 +▁ability -10.9933 +▁diamond -10.9935 +▁permanent -10.9935 +▁puddle -10.9936 +▁prison -10.994 +▁hitting -10.9941 +▁dumb -10.9941 +▁leaning -10.9942 +▁stab -10.9942 +▁vague -10.9944 +▁thus -10.9949 +while -10.9952 +space -10.9954 +▁TH -10.9958 +▁bru -10.9959 +elli -10.996 +▁flickering -10.9961 +▁incompatible -10.9962 +▁Aunt -10.9966 +▁loom -10.997 +▁END -10.9971 +▁thoroughly -10.9973 +lk -10.9974 +▁visitor -10.9985 +▁momentarily -10.999 +▁casual -10.999 +▁ornate -10.999 +Visibility -10.9991 +▁spacesuit -10.9992 +▁dodge -10.9993 +▁worm -10.9993 +▁wink -11.0002 +▁violently -11.0009 +▁howl -11.0018 +▁laughter -11.0026 +▁bla -11.003 +▁beard -11.0033 +decide -11.0035 +▁pine -11.0041 +▁elegant -11.0045 +▁clever -11.0045 +▁forehead -11.0045 +▁grunt -11.0045 +▁automatically -11.0045 +▁spike -11.0046 +▁sake -11.005 +▁rushing -11.0052 +▁missed -11.0053 +▁terra -11.0057 +▁ruined -11.0059 +▁swirling -11.0061 +▁License -11.0072 +▁wreck -11.0072 +▁Fred -11.0074 +▁Outside -11.0075 +▁towel -11.0075 +▁untie -11.0078 +▁hung -11.0083 +▁obj -11.0087 +▁sack -11.0087 +▁agent -11.0096 +digit -11.0099 +▁15 -11.0099 +▁dissolve -11.01 +▁insect -11.0101 +▁legend -11.0105 +▁distracted -11.0108 +▁gall -11.0111 +cord -11.0113 +run -11.0115 +though -11.0119 +intent -11.0124 +▁fake -11.0125 +▁cash -11.0126 +yard -11.0126 +▁tuo -11.0127 +▁http -11.0128 +▁rescue -11.0128 +▁Except -11.0129 +▁cake -11.013 +Talk -11.0136 +▁mechanical -11.0137 +▁hip -11.0145 +▁paying -11.0156 +▁government -11.0156 +▁Second -11.0156 +▁official -11.0156 +▁glue -11.0164 +▁teacher -11.0165 +▁warmth -11.0179 +▁Bur -11.0183 +▁THAT -11.0184 +▁Walk -11.0185 +▁labelled -11.0187 +▁leak -11.0189 +▁bent -11.0192 +▁deb -11.0193 +▁latch -11.0202 +▁expecting -11.0207 +▁science -11.0212 +▁script -11.0212 +▁fault -11.0212 +▁predictable -11.0213 +▁spoke -11.0216 +▁armor -11.023 +▁Trans -11.0236 +23 -11.0237 +▁behavior -11.024 +▁OPEN -11.024 +ground -11.024 +▁creation -11.024 +▁duty -11.0241 +▁software -11.0242 +▁shouting -11.0247 +▁seemingly -11.0248 +piece -11.026 +▁required -11.0261 +▁muffled -11.0268 +▁plunge -11.0268 +▁glint -11.027 +ONE -11.0272 +▁occasional -11.028 +▁bull -11.0289 +blank -11.0289 +La -11.0292 +▁military -11.0296 +▁annoying -11.0296 +▁Anton -11.0299 +▁gli -11.0299 +CO -11.0299 +▁glare -11.0314 +▁scramble -11.0324 +▁twitch -11.0324 +▁Accessibility -11.0324 +▁gust -11.0327 +▁aisle -11.033 +▁ray -11.0333 +▁fourth -11.0337 +▁DE -11.0339 +ani -11.0347 +▁Back -11.0348 +▁Stu -11.0349 +ility -11.0351 +▁scared -11.0352 +▁distribute -11.0353 +ological -11.0353 +▁keypad -11.0353 +▁exposed -11.0359 +cca -11.0362 +LD -11.0364 +have -11.0367 +amongst -11.0369 +▁Last -11.0369 +▁searched -11.0369 +character -11.0374 +▁overwhelm -11.0381 +▁fierce -11.0381 +▁shards -11.0382 +▁concept -11.0387 +▁fond -11.0388 +▁spear -11.039 +▁surge -11.0393 +kov -11.0394 +▁vertically -11.0399 +▁precious -11.0411 +▁Space -11.0411 +▁dripping -11.0441 +▁capable -11.0453 +▁afford -11.0467 +▁emotion -11.0467 +▁transparent -11.0467 +▁NE -11.0471 +▁package -11.0472 +▁buzzing -11.0476 +EAT -11.0478 +▁Cla -11.048 +▁Ter -11.0494 +▁colored -11.0497 +▁ascend -11.0497 +▁deadly -11.05 +▁excuse -11.0501 +Maybe -11.0505 +nameless -11.0505 +▁stronger -11.0509 +▁grown -11.0519 +south -11.052 +cast -11.0522 +▁concentrate -11.0525 +▁forgot -11.053 +▁actual -11.0541 +▁exc -11.0546 +hhh -11.0546 +▁swear -11.0548 +▁DOWN -11.0554 +▁depression -11.0554 +▁significant -11.0554 +▁pub -11.0558 +▁Nice -11.0575 +When -11.0581 +▁Character -11.0583 +▁creating -11.0584 +▁portion -11.0602 +▁completed -11.0607 +▁arranged -11.0612 +▁complicated -11.0612 +▁rectangular -11.0612 +▁Stephen -11.0613 +▁Almost -11.0613 +▁habit -11.0615 +▁violent -11.0621 +19 -11.0624 +▁pol -11.0629 +walk -11.0632 +▁Make -11.0639 +▁gravel -11.064 +▁confirm -11.0641 +▁precise -11.0641 +▁warrior -11.0642 +▁remarks -11.0642 +▁tilt -11.0643 +▁Direct -11.0647 +▁crown -11.0663 +▁based -11.0668 +▁Empire -11.0671 +▁Phrase -11.0671 +▁garbage -11.0671 +▁violence -11.0671 +▁spoil -11.0671 +▁convey -11.0671 +▁featureless -11.0674 +▁disgust -11.0679 +Ho -11.068 +▁host -11.069 +▁badge -11.069 +▁distract -11.0693 +▁tale -11.0696 +▁sens -11.0696 +▁cramped -11.07 +▁angrily -11.07 +▁capital -11.07 +▁US -11.0701 +▁shuttle -11.0701 +▁threat -11.0702 +▁motor -11.0706 +▁frost -11.0706 +ji -11.072 +fall -11.0727 +▁enclose -11.0727 +▁Sweet -11.073 +▁Long -11.0736 +▁Part -11.0747 +▁Because -11.0752 +▁rate -11.0755 +▁instance -11.076 +▁halt -11.0764 +▁added -11.0769 +▁ou -11.0773 +▁tar -11.0774 +▁Really -11.0775 +▁speaker -11.0775 +▁MO -11.0787 +▁globe -11.0789 +▁mystery -11.0789 +igh -11.0789 +▁fridge -11.079 +▁Verb -11.079 +▁2000 -11.0799 +what -11.0805 +zione -11.0817 +▁exception -11.0817 +▁Milverton -11.0819 +▁companion -11.0819 +▁brave -11.082 +mission -11.0825 +▁strand -11.0826 +▁suspicious -11.0829 +▁Road -11.083 +▁Actually -11.0836 +▁ease -11.0852 +▁canyon -11.0856 +▁wandering -11.086 +bell -11.0868 +▁echo -11.0869 +▁protest -11.0871 +▁diameter -11.0879 +▁scientist -11.0879 +▁expert -11.0879 +▁tuck -11.0892 +▁span -11.0896 +15 -11.0898 +▁inscription -11.0909 +▁suicide -11.0909 +▁thief -11.0909 +▁victim -11.0909 +▁stagger -11.0909 +▁HE -11.0911 +▁Forest -11.0912 +▁absent -11.0912 +▁packet -11.0913 +▁canvas -11.092 +▁deserted -11.092 +▁vari -11.0933 +length -11.0934 +▁Unicode -11.0939 +▁engage -11.0939 +bag -11.0939 +▁flick -11.0939 +▁regret -11.094 +▁tasted -11.0949 +▁spine -11.0954 +▁dispos -11.0955 +▁ram -11.0956 +oke -11.096 +▁fade -11.0961 +▁Within -11.0964 +state -11.0967 +▁London -11.0969 +▁slippery -11.0969 +▁ankle -11.0971 +also -11.0979 +▁Fire -11.0983 +▁shattered -11.0991 +▁prepared -11.0999 +▁symmetric -11.0999 +▁consciousness -11.0999 +▁worst -11.0999 +▁improve -11.0999 +▁express -11.0999 +▁Read -11.1006 +▁Night -11.1011 +▁Clo -11.1011 +▁keylessly -11.1013 +One -11.1027 +▁refuse -11.1028 +▁stink -11.103 +▁flashing -11.1031 +icle -11.1032 +▁Father -11.1032 +▁broke -11.1032 +▁memo -11.1036 +▁freezer -11.104 +blo -11.1045 +itude -11.1047 +▁advice -11.106 +▁harsh -11.106 +TO -11.1061 +▁hurl -11.1064 +▁coil -11.1066 +▁sip -11.1067 +glo -11.1077 +▁sadly -11.1081 +▁affect -11.1085 +▁screech -11.1091 +▁Arm -11.1092 +▁Hallway -11.1094 +▁quip -11.11 +▁void -11.1105 +▁expos -11.111 +▁loss -11.1111 +▁consult -11.1116 +CTE -11.1116 +▁beak -11.1117 +▁attend -11.1117 +▁imagination -11.1121 +▁mortal -11.1123 +▁yank -11.1125 +▁bunk -11.1126 +code -11.1131 +▁losing -11.1134 +PER -11.1144 +▁kneel -11.1149 +field -11.1149 +WHITE -11.1152 +▁Wizard -11.1152 +▁gravity -11.1152 +▁technology -11.1152 +▁cushion -11.1152 +▁Ralph -11.1152 +▁regain -11.1152 +▁reject -11.1152 +▁nurse -11.1153 +▁plaster -11.1154 +▁inspection -11.1154 +▁depart -11.1155 +See -11.1164 +▁winter -11.1174 +▁Made -11.1178 +▁oxygen -11.1183 +▁wrench -11.1183 +▁Figure -11.1183 +▁humming -11.1183 +▁clatter -11.1184 +▁rubbed -11.1185 +▁copyright -11.1185 +▁micro -11.1186 +▁relate -11.1201 +▁suspiciously -11.1204 +covered -11.1209 +▁opinion -11.1214 +▁smear -11.1214 +▁hood -11.1218 +▁Surely -11.1233 +▁listened -11.1238 +▁knocked -11.1245 +▁pizza -11.1245 +▁glitter -11.1245 +▁conduct -11.1245 +▁discern -11.1245 +▁Below -11.1249 +▁dimly -11.1252 +level -11.1254 +▁OR -11.1255 +▁widen -11.1259 +▁appreciated -11.1259 +RY -11.126 +▁theatre -11.1265 +▁downstairs -11.1276 +▁unseen -11.1276 +05 -11.1284 +▁toast -11.13 +▁absorb -11.1307 +▁potential -11.1307 +▁adorn -11.1308 +▁ALL -11.1319 +:00 -11.132 +Pa -11.1323 +arti -11.1332 +▁HELP -11.1339 +▁artifact -11.1339 +▁popular -11.1339 +▁goblin -11.1339 +▁menacing -11.1339 +▁Harold -11.1339 +▁Sitting -11.134 +▁boom -11.1348 +▁ridge -11.1348 +▁squeezed -11.136 +80 -11.1364 +▁Dead -11.1366 +cop -11.1367 +▁yesterday -11.137 +▁splice -11.137 +▁password -11.1374 +▁packed -11.1376 +▁Pan -11.1378 +▁CON -11.138 +▁ban -11.1386 +midst -11.1388 +ESS -11.1401 +▁resemble -11.1402 +▁Him -11.1404 +▁cardboard -11.1406 +▁dice -11.1407 +▁Sea -11.1407 +▁100 -11.1416 +▁Gar -11.1421 +▁Mike -11.1424 +▁handsome -11.1425 +▁embedded -11.1433 +▁pencil -11.1434 +▁social -11.1435 +▁decay -11.1435 +▁Sig -11.1435 +▁Simon -11.1437 +▁shack -11.1439 +ido -11.1445 +▁musical -11.1446 +▁rusted -11.1451 +▁pointless -11.146 +SPACE -11.1464 +▁torture -11.1466 +▁dried -11.1466 +▁Lookup -11.147 +▁sidewalk -11.147 +wash -11.1473 +▁alert -11.1476 +▁Book -11.1477 +▁seriously -11.1478 +▁located -11.1482 +▁Stop -11.1483 +▁tricky -11.1487 +▁Gate -11.1488 +▁refrigerator -11.1497 +▁squint -11.1497 +▁terribly -11.1497 +▁crouch -11.1497 +▁Wood -11.1499 +bli -11.1499 +▁peek -11.1501 +▁OUT -11.1501 +▁referred -11.1503 +▁OFF -11.1504 +eplaying -11.1524 +▁Duplicate -11.1529 +▁HINT -11.1529 +▁Sierra -11.1529 +▁Blood -11.1529 +▁innocent -11.1529 +▁network -11.1529 +▁Utopia -11.1529 +▁folk -11.1529 +view -11.153 +▁coal -11.1533 +▁shoe -11.1547 +base -11.1547 +▁equivalence -11.1561 +▁mattress -11.1561 +▁Initial -11.1561 +▁identical -11.1561 +▁xyzzy -11.1561 +▁Ya -11.1563 +▁caused -11.1584 +▁involved -11.1591 +▁senti -11.1591 +▁communication -11.1593 +▁anchor -11.1594 +oops -11.1595 +▁limp -11.16 +▁icy -11.16 +▁linger -11.1603 +▁operation -11.1625 +▁deciding -11.1625 +▁hull -11.1626 +▁collar -11.1627 +▁gender -11.1627 +▁blob -11.1628 +▁emanat -11.1629 +▁rotting -11.1629 +▁crashing -11.1633 +▁smashed -11.1648 +▁Day -11.1652 +Damn -11.1654 +DIGIT -11.1658 +▁Abbey -11.1658 +▁Control -11.1658 +▁Somehow -11.166 +99 -11.1661 +▁Lady -11.1667 +▁crosses -11.168 +▁freeze -11.1687 +▁college -11.169 +▁traffic -11.169 +▁laid -11.1695 +▁armour -11.1697 +▁Gold -11.1708 +▁deposit -11.171 +▁peaceful -11.1711 +▁negated -11.1722 +▁manipulat -11.1723 +▁lounge -11.1723 +▁affair -11.1723 +▁freedom -11.1723 +▁employee -11.1724 +▁thump -11.1725 +▁drape -11.1728 +Hmm -11.1738 +opera -11.1748 +▁[10 -11.1749 +▁hisses -11.1754 +▁queen -11.1755 +▁bastard -11.1755 +▁uncertain -11.1755 +▁rumble -11.1756 +▁parrot -11.1756 +▁prepare -11.1756 +▁Victor -11.1757 +▁concerned -11.1768 +▁Flo -11.1769 +▁yeti -11.1782 +▁exercise -11.1788 +▁recommend -11.1788 +▁partially -11.1788 +▁eerie -11.1788 +▁hug -11.1794 +▁filthy -11.1797 +Sure -11.1797 +▁conditional -11.18 +▁stun -11.181 +▁aroma -11.181 +lator -11.1811 +22 -11.1814 +▁citizen -11.1821 +▁disjuncti -11.1821 +▁grinding -11.1822 +▁dip -11.1826 +▁vertical -11.1834 +▁employ -11.1853 +▁purchase -11.1854 +▁Julia -11.1855 +▁Search -11.1855 +▁medical -11.1855 +this -11.1855 +BOU -11.1857 +▁Nobody -11.186 +GE -11.1868 +▁yo -11.1871 +▁sum -11.1881 +▁Love -11.1882 +▁nearest -11.1884 +▁idiot -11.1887 +▁sandwich -11.1887 +▁slash -11.1888 +directions -11.1889 +▁Mac -11.1895 +▁reward -11.1898 +▁prize -11.1903 +▁reset -11.1905 +▁tele -11.1916 +▁dall -11.1917 +NDARY -11.192 +PUNCTU -11.192 +▁engraved -11.192 +▁journal -11.192 +▁gentleman -11.1924 +▁Grand -11.1932 +▁grating -11.1933 +▁Sure -11.1936 +▁novel -11.1939 +▁satisfying -11.1944 +▁replaced -11.1948 +▁Eventually -11.1954 +▁Examine -11.1954 +▁armchair -11.1954 +▁centuries -11.1954 +▁incredibly -11.1954 +ordina -11.1954 +▁Smith -11.1954 +▁(?< -11.1954 +▁rumbling -11.1955 +▁stable -11.1956 +world -11.1956 +▁dresser -11.1958 +▁static -11.1962 +▁rim -11.1966 +▁PRO -11.1967 +▁till -11.1976 +▁fro -11.1982 +▁Shutdown -11.1987 +▁Austin -11.1987 +▁permit -11.1997 +45 -11.2003 +▁bum -11.2004 +▁aft -11.2011 +▁sailor -11.2018 +▁Madame -11.2021 +▁inhabit -11.2021 +▁ornament -11.2021 +▁cigar -11.2021 +▁incorporate -11.2022 +white -11.2023 +▁depend -11.2026 +▁jail -11.2029 +▁dei -11.2029 +TION -11.203 +▁grid -11.2038 +▁moist -11.2043 +▁startled -11.2046 +▁sensor -11.2053 +▁opportunity -11.2054 +▁catwalk -11.2056 +▁antique -11.2056 +▁semi -11.206 +▁blackness -11.2073 +▁greeting -11.2082 +bound -11.2083 +▁Alas -11.2088 +▁Scott -11.2088 +▁dizzy -11.2088 +itz -11.2093 +apping -11.2095 +Making -11.2103 +▁Port -11.2111 +▁stroll -11.2122 +▁puoi -11.2123 +▁operate -11.2124 +▁vicious -11.2124 +▁garage -11.2126 +▁peg -11.2126 +▁DIS -11.213 +▁dick -11.2138 +▁exact -11.214 +THER -11.2143 +▁Hint -11.2144 +▁sting -11.2151 +▁Locale -11.2156 +▁confusion -11.2156 +coat -11.2172 +▁upset -11.2174 +▁practically -11.2184 +▁shine -11.2184 +▁implement -11.2189 +▁incorporated -11.2189 +▁guitar -11.219 +▁honor -11.2191 +▁folded -11.2191 +▁Close -11.2197 +▁Dave -11.2197 +▁mock -11.2208 +▁rotate -11.2211 +udge -11.2212 +PL -11.2214 +▁weigh -11.2217 +▁BlkValue -11.2225 +▁Gilgamesh -11.2225 +▁Priorities -11.2225 +pushable -11.2228 +Huh -11.2229 +▁Har -11.2229 +▁barrier -11.2232 +▁Una -11.2233 +▁tag -11.2246 +NG -11.2248 +▁questo -11.2252 +▁chocolate -11.2259 +▁Mountain -11.2259 +▁medium -11.2259 +▁declare -11.2259 +▁choke -11.2261 +▁involve -11.2261 +break -11.2263 +▁Everyone -11.2269 +▁prisoner -11.2288 +▁magnificent -11.2293 +▁Castle -11.2293 +▁drill -11.2294 +▁ripped -11.2299 +▁classes -11.2302 +▁bulky -11.2305 +▁BLANK -11.2328 +▁INVENTORY -11.2328 +▁cluster -11.2328 +▁tracing -11.2328 +▁pilot -11.2328 +ike -11.233 +▁stem -11.233 +▁elsewhere -11.2331 +Wait -11.2333 +▁thud -11.2333 +▁Act -11.2343 +▁lonely -11.2347 +▁Call -11.2353 +▁ramp -11.2355 +▁grain -11.2358 +▁murky -11.2363 +▁lungs -11.2363 +▁fortune -11.2364 +▁sugar -11.2365 +▁chute -11.2365 +▁glide -11.2375 +▁polite -11.2379 +▁List -11.2385 +▁disgusting -11.2388 +▁disappeared -11.239 +▁invite -11.2391 +▁plus -11.2394 +▁exploring -11.2398 +▁alcove -11.2398 +▁nightmare -11.2398 +▁squat -11.2399 +▁attractive -11.2401 +▁Death -11.2401 +▁TELL -11.2402 +▁indexed -11.2402 +Ex -11.2402 +▁thirsty -11.2408 +▁stopping -11.2411 +▁keyboard -11.2413 +▁chase -11.2418 +▁march -11.2421 +Congratulations -11.2433 +▁advantage -11.2433 +▁sample -11.2433 +▁Louis -11.2433 +▁Baron -11.2441 +▁hack -11.2454 +lapping -11.2466 +▁farmer -11.2467 +▁screwdriver -11.2468 +▁huh -11.2468 +▁permission -11.2469 +▁Lab -11.247 +▁recess -11.2473 +▁trickle -11.2475 +▁collapsed -11.2481 +▁Thi -11.2482 +verb -11.2495 +▁Tri -11.2497 +▁sei -11.25 +endo -11.2503 +▁challenge -11.2503 +▁clutter -11.2503 +▁Human -11.2503 +▁Linda -11.2503 +▁Slowly -11.2503 +▁Off -11.2504 +▁suo -11.2505 +▁Mmm -11.2524 +▁knee -11.2525 +=... -11.2526 +found -11.2538 +avor -11.2538 +▁clamber -11.2538 +▁scowl -11.2538 +▁tourist -11.2539 +▁protection -11.255 +▁ponder -11.2553 +▁soap -11.2558 +▁politely -11.2559 +▁tua -11.2563 +▁Flathead -11.2574 +▁investigation -11.2574 +▁vapor -11.2574 +▁faith -11.2575 +▁muddy -11.2577 +▁peak -11.2578 +Very -11.2583 +▁scoop -11.2583 +▁mold -11.2586 +▁Ron -11.2588 +conscious -11.259 +▁relevant -11.2609 +▁smoking -11.2609 +▁stench -11.2609 +▁jam -11.2625 +▁unlike -11.2635 +▁snatch -11.2636 +▁velvet -11.2645 +▁[9: -11.2645 +▁observe -11.2645 +▁notebook -11.2648 +▁vein -11.2651 +▁scrape -11.2664 +▁provoke -11.2668 +ache -11.2672 +▁seeking -11.2675 +▁scatter -11.2679 +▁frustration -11.2681 +▁ingredient -11.2681 +▁triumph -11.2681 +▁dildo -11.2681 +▁favor -11.2682 +aria -11.2684 +idge -11.2693 +▁jug -11.2709 +▁curved -11.2712 +▁Valerie -11.2717 +▁texture -11.2717 +▁Hor -11.272 +▁intently -11.2722 +bili -11.2728 +▁whine -11.2751 +▁economy -11.2753 +▁helicopter -11.2753 +▁hologram -11.2753 +▁wrinkl -11.2753 +▁fragile -11.2753 +▁devour -11.2753 +▁ominous -11.2753 +▁berries -11.2753 +produc -11.2764 +▁killer -11.2773 +▁shrug -11.2775 +▁Cave -11.2779 +▁striking -11.2789 +▁streak -11.2789 +▁sculpture -11.2789 +▁Karl -11.279 +▁Display -11.279 +▁inspect -11.2793 +▁wand -11.2799 +left -11.2804 +talk -11.2819 +▁Computer -11.2825 +▁plugged -11.2826 +▁pulse -11.2826 +fact -11.2826 +▁disabled -11.2826 +▁cheerful -11.2838 +▁utter -11.2843 +esse -11.2851 +▁squeak -11.2862 +▁evident -11.2862 +▁withdraw -11.2863 +▁Year -11.2871 +▁chosen -11.2875 +▁crashes -11.2882 +IGHT -11.2899 +▁Should -11.2899 +▁Terrence -11.2899 +▁examination -11.2899 +▁excitement -11.2899 +▁generation -11.2899 +▁destruction -11.2899 +▁snarl -11.2899 +hang -11.2906 +scene -11.291 +▁provoked -11.2931 +▁folder -11.2936 +▁Hard -11.2939 +▁sauce -11.2939 +▁walkthrough -11.2941 +▁hideous -11.2943 +▁blown -11.2944 +▁relatively -11.2951 +case -11.2957 +▁Station -11.2967 +▁ribbon -11.2972 +▁intricate -11.2972 +▁sembra -11.2972 +▁WHAT -11.2972 +▁theirselves -11.2972 +▁distort -11.2972 +path -11.2975 +▁stolen -11.2981 +▁mast -11.2981 +▁Tree -11.2985 +▁Arch -11.2985 +▁tosses -11.2998 +▁uneven -11.3006 +▁determination -11.3009 +▁wallpaper -11.3014 +▁hopeless -11.3021 +▁Screen -11.3046 +▁Source -11.3046 +▁Santa -11.305 +▁Alice -11.3052 +▁custom -11.3052 +otherwise -11.3057 +▁Unit -11.3079 +MMM -11.3081 +▁George -11.3084 +▁communicate -11.3084 +▁squeal -11.3084 +▁birthday -11.3084 +▁sneer -11.3085 +▁juice -11.3087 +▁bind -11.3089 +▁lone -11.3106 +▁rap -11.3108 +▁extension -11.3121 +▁maintenance -11.3121 +▁Large -11.3122 +▁average -11.3122 +▁greatest -11.3122 +▁Robert -11.3123 +▁crumpled -11.3135 +▁tack -11.3135 +▁intend -11.3137 +▁immediate -11.3139 +▁soot -11.3148 +NounDomain -11.3159 +▁identify -11.3159 +▁sacrifice -11.3159 +▁dangling -11.3159 +▁planning -11.3162 +▁ripple -11.3162 +▁implemented -11.3163 +cco -11.3183 +▁Ten -11.3183 +▁rarely -11.3187 +▁explode -11.3194 +▁junction -11.3197 +▁wedding -11.3197 +▁enchant -11.3197 +▁stew -11.3203 +▁cease -11.3204 +▁shovel -11.322 +life -11.3229 +▁stride -11.3237 +▁gown -11.3237 +▁Sample -11.3238 +▁Order -11.3243 +▁growl -11.3244 +▁haze -11.3244 +▁healthy -11.3246 +▁utterly -11.3255 +▁wad -11.3257 +fiction -11.3258 +Man -11.326 +▁grandfather -11.3272 +▁ineffectual -11.3272 +▁sleeve -11.3272 +▁slender -11.3272 +▁blush -11.3273 +▁policeman -11.3278 +▁fatal -11.328 +▁snatches -11.3282 +▁stud -11.329 +itty -11.329 +▁Jim -11.3292 +odge -11.3303 +maker -11.3307 +▁Europe -11.3311 +▁grandmother -11.3311 +▁according -11.3311 +▁peculiar -11.3311 +▁contract -11.3311 +▁stern -11.3313 +▁insane -11.3319 +▁Pen -11.3328 +FF -11.3346 +▁Douglas -11.3349 +▁wealth -11.3349 +▁(1/ -11.3349 +▁server -11.3357 +▁wail -11.3362 +▁cookie -11.3363 +▁DROP -11.3387 +▁assorted -11.3387 +▁intersection -11.3387 +▁Again -11.3388 +▁overcome -11.3388 +IVE -11.3411 +where -11.3416 +▁desperately -11.3417 +▁primitive -11.3426 +▁ninja -11.3426 +▁NPC -11.3426 +▁exciting -11.3426 +▁Jill -11.3426 +Trace -11.3441 +▁possess -11.3446 +▁Unless -11.3448 +Take -11.3451 +▁irregular -11.3465 +▁register -11.3465 +▁season -11.3467 +▁verso -11.3468 +▁Ouch -11.3473 +▁blend -11.3474 +▁PUT -11.3475 +▁Crow -11.3477 +Listen -11.3484 +▁[11 -11.3493 +▁Bill -11.3501 +▁backpack -11.3504 +▁gallery -11.3504 +▁subtle -11.3505 +upper -11.3518 +▁dude -11.3526 +▁blame -11.3527 +▁TALK -11.353 +▁Show -11.3539 +▁confident -11.3543 +▁fortunate -11.3543 +▁intelligent -11.3543 +▁suspended -11.3543 +▁blonde -11.3543 +▁sketch -11.3543 +▁exchange -11.3543 +▁pigeon -11.3543 +▁flex -11.3543 +▁slump -11.3543 +NULL -11.3543 +▁anxious -11.3545 +▁dans -11.3548 +▁clasp -11.3551 +eau -11.3571 +▁abstract -11.3582 +▁snort -11.3582 +▁pussy -11.3582 +Wrong -11.3583 +▁insult -11.3583 +▁whirr -11.3584 +▁crisp -11.3584 +▁department -11.3587 +fashioned -11.3595 +new -11.3599 +▁DM -11.36 +▁decoration -11.3604 +▁gotta -11.3605 +stead -11.3608 +▁daemon -11.3609 +etti -11.3614 +▁umbrella -11.3621 +▁indicating -11.3621 +▁Standing -11.3621 +▁chatter -11.3622 +greedy -11.3622 +Action -11.3633 +▁Barb -11.3637 +▁Today -11.3643 +▁role -11.3644 +▁Say -11.3647 +▁reluctant -11.3661 +▁rainbow -11.3661 +▁squirrel -11.3661 +▁groove -11.3661 +▁padlock -11.3662 +▁drum -11.3672 +last -11.3683 +▁Fran -11.3695 +▁Exit -11.3698 +Message -11.3699 +▁delle -11.37 +▁Luckily -11.3701 +▁VERBOSE -11.3701 +▁immense -11.3701 +▁chapel -11.3701 +▁Alex -11.3707 +▁gang -11.3708 +▁Step -11.3708 +▁awaken -11.372 +▁partner -11.3726 +flag -11.3728 +destruct -11.3729 +▁tangled -11.373 +ulating -11.3735 +▁timber -11.374 +▁Saint -11.3744 +▁Giles -11.3745 +▁restrain -11.3745 +▁bike -11.3747 +▁driveway -11.3748 +▁bob -11.3763 +▁forgive -11.3765 +▁farther -11.3766 +agging -11.3773 +▁giggles -11.378 +▁mansion -11.3781 +▁coast -11.3787 +shirt -11.3796 +▁sold -11.3801 +▁marine -11.3813 +▁Geigner -11.3821 +▁exterior -11.3821 +▁Bridge -11.3821 +▁Martin -11.3823 +▁Having -11.3835 +▁lifeless -11.3853 +▁diary -11.3857 +▁BRIEF -11.3861 +▁elaborate -11.3861 +▁kitten -11.3861 +▁vegetation -11.3861 +▁perfume -11.3861 +▁Heaven -11.3861 +▁devil -11.3861 +▁obtain -11.3863 +▁wool -11.3867 +▁lord -11.3867 +▁decent -11.387 +glass -11.3882 +▁pride -11.3884 +▁chose -11.3891 +▁Matthew -11.3901 +▁System -11.3901 +▁suspicion -11.3901 +▁vampire -11.3901 +▁Super -11.3907 +▁finest -11.3913 +▁purse -11.3933 +▁Gabriel -11.3942 +▁assault -11.3942 +▁cubicle -11.3942 +▁squirm -11.3942 +▁technical -11.3942 +▁inviting -11.3942 +▁dialect -11.3942 +▁Deini -11.3945 +OUR -11.3947 +Scope -11.3952 +Mi -11.3958 +plate -11.3973 +▁slit -11.3979 +▁Conan -11.398 +▁annoyed -11.3983 +▁survey -11.3983 +▁slick -11.3983 +etta -11.3983 +▁DOOR -11.3985 +▁vital -11.3987 +▁struck -11.3987 +▁Emma -11.3987 +▁princess -11.3988 +▁madness -11.3992 +▁vase -11.4 +▁hunger -11.401 +▁traditional -11.4015 +help -11.4018 +▁assistant -11.4024 +▁segment -11.4024 +▁Garden -11.4025 +▁piss -11.4032 +▁grateful -11.4049 +active -11.406 +▁painfully -11.4064 +▁dynamic -11.4065 +▁vessel -11.4065 +▁Science -11.4065 +▁plummet -11.4065 +▁banana -11.4065 +▁digital -11.4066 +▁Irene -11.4067 +▁fastened -11.4069 +▁chaos -11.4071 +▁tramp -11.4073 +▁Key -11.4076 +▁assure -11.4085 +ctic -11.4088 +▁(2/ -11.4106 +▁inscribed -11.4106 +▁GNA -11.4107 +▁Chub -11.4109 +▁thou -11.411 +▁begun -11.4119 +▁minor -11.4127 +AGE -11.4133 +▁explanation -11.4148 +▁pavement -11.4148 +▁Harry -11.4151 +▁poem -11.4158 +EST -11.4167 +about -11.4174 +grade -11.4175 +▁uh -11.4182 +▁Infocom -11.4189 +▁married -11.419 +▁pierce -11.419 +▁steer -11.419 +▁Somewhere -11.4191 +▁Max -11.4191 +gress -11.4193 +▁weeds -11.4194 +▁demo -11.4211 +▁numb -11.4215 +▁community -11.4231 +▁refreshing -11.4231 +▁Larry -11.4231 +▁Break -11.4231 +▁telescope -11.4231 +▁crook -11.4235 +▁horizontal -11.4237 +▁Unlike -11.4239 +▁Must -11.4239 +▁Plan -11.4252 +▁surf -11.4252 +green -11.4253 +ancy -11.426 +▁sparkle -11.4265 +▁Egypt -11.4273 +▁SUPERBRIEF -11.4273 +▁razor -11.4273 +▁Spider -11.4273 +▁crunch -11.4275 +▁ragged -11.4275 +▁NEW -11.4276 +▁dawn -11.4279 +▁functional -11.4283 +▁Stone -11.4288 +▁Upon -11.4295 +▁stale -11.43 +▁School -11.4315 +▁lobster -11.4315 +▁medicine -11.4315 +▁battered -11.4316 +▁amulet -11.4316 +▁raven -11.4316 +▁fading -11.4317 +192 -11.4319 +▁moonlight -11.432 +▁crank -11.4321 +▁slimy -11.4328 +▁stake -11.4354 +▁Effects -11.4358 +▁bizarre -11.4358 +▁equipped -11.4358 +▁receptacle -11.4358 +▁society -11.4358 +▁Palace -11.4358 +▁bundle -11.4358 +▁tasty -11.4358 +▁ritual -11.4358 +▁snack -11.4358 +▁mailbox -11.4358 +▁qualc -11.4369 +▁Scan -11.438 +▁wallet -11.4383 +▁increasing -11.44 +▁associate -11.44 +▁elbow -11.44 +▁numerous -11.44 +ville -11.4401 +▁tel -11.4402 +▁pebble -11.4403 +▁sparkling -11.4408 +▁distinguish -11.4414 +▁introduce -11.4417 +drop -11.4419 +Tell -11.4422 +something -11.4422 +WALK -11.4443 +▁witness -11.4443 +▁Jesus -11.4444 +▁patron -11.4447 +▁impatiently -11.4457 +MMMM -11.4458 +▁render -11.4465 +Write -11.4473 +▁cautiously -11.4486 +▁circumstances -11.4486 +▁rhythm -11.4486 +▁species -11.449 +▁winning -11.449 +▁electricity -11.4491 +▁shopping -11.4493 +▁flail -11.4499 +rice -11.4508 +▁slime -11.451 +▁CAN -11.4511 +ngel -11.4528 +▁dungeon -11.4529 +▁swarm -11.453 +▁chief -11.4531 +▁hastily -11.4532 +isce -11.4539 +LINE -11.4555 +▁Hill -11.4565 +▁logo -11.4571 +▁Marshall -11.4572 +▁ambiguous -11.4572 +▁explosive -11.4572 +▁infinite -11.4572 +▁shuffle -11.4573 +▁Stairs -11.4573 +▁skirt -11.4573 +▁droid -11.4573 +▁rustling -11.4578 +voca -11.4589 +430 -11.4591 +▁surprising -11.4596 +With -11.4598 +▁Tea -11.4598 +▁Competition -11.4616 +▁chandelier -11.4616 +▁engulf -11.4616 +▁courage -11.4616 +▁positive -11.4617 +▁Pete -11.4617 +▁duct -11.4618 +▁walkway -11.4638 +▁Earl -11.4639 +scope -11.4644 +▁Steve -11.4655 +▁MY -11.4657 +▁rickety -11.466 +▁tangle -11.4674 +Really -11.4686 +▁combat -11.4692 +bug -11.4702 +▁neighbor -11.4703 +▁Jenny -11.4703 +▁sinister -11.4703 +front -11.4703 +▁gulp -11.4704 +▁Underground -11.4704 +▁talent -11.4704 +ECT -11.4707 +▁copies -11.4709 +rift -11.4726 +▁motionless -11.4738 +▁Aloysius -11.4748 +▁gigantic -11.4748 +▁impressed -11.4748 +▁serpent -11.4748 +▁modesty -11.4748 +▁valve -11.4748 +▁barren -11.4748 +▁betray -11.475 +▁sap -11.475 +TOR -11.4754 +▁headache -11.4754 +▁whisk -11.4756 +▁native -11.4765 +watch -11.4765 +▁tide -11.4766 +29 -11.4768 +from -11.4771 +cake -11.4784 +▁crater -11.479 +▁convention -11.4792 +▁extinguish -11.4792 +▁responsible -11.4792 +▁defense -11.4792 +▁Square -11.4792 +▁cotton -11.4792 +▁resident -11.4792 +▁therefore -11.4792 +▁zip -11.4793 +▁Court -11.4793 +▁sought -11.4793 +class -11.4802 +▁smashes -11.481 +▁Force -11.481 +frame -11.4816 +▁Roman -11.4816 +▁crow -11.4819 +▁billow -11.482 +zar -11.4821 +▁alcohol -11.4836 +▁elephant -11.4836 +▁professional -11.4836 +▁tattered -11.4836 +▁Richard -11.4836 +▁disguise -11.4836 +▁hovers -11.4837 +▁arising -11.4837 +▁polish -11.4848 +▁estate -11.485 +▁bruise -11.4857 +scen -11.486 +USE -11.4865 +▁singular -11.4879 +▁According -11.4881 +▁tremendous -11.4881 +▁vacuum -11.4881 +▁antenna -11.4881 +▁Royal -11.4881 +▁beetle -11.4881 +▁visual -11.4881 +▁classroom -11.4894 +▁frequent -11.4926 +▁influence -11.4926 +▁Muddy -11.4926 +▁Either -11.4926 +▁pathetic -11.4926 +▁Morgan -11.4926 +▁expectantly -11.4927 +▁furiously -11.4927 +▁transfer -11.4927 +▁trench -11.4928 +▁rotten -11.4928 +▁lurch -11.4931 +Parser -11.4932 +▁grew -11.4933 +▁fox -11.4935 +▁unfortunate -11.4951 +▁max -11.4955 +▁bicycle -11.4971 +▁despair -11.4971 +▁glancing -11.4971 +▁unfamiliar -11.4971 +▁Shadow -11.4971 +▁prominent -11.4971 +▁smack -11.4971 +▁stump -11.4971 +▁affection -11.4979 +▁THEN -11.4993 +▁Cru -11.5001 +just -11.5008 +▁reception -11.5014 +▁symbolic -11.5015 +▁illusion -11.5016 +▁necklace -11.5016 +▁patrol -11.5016 +▁Chief -11.5017 +▁vest -11.5019 +▁Judg -11.5031 +▁tab -11.5054 +▁Lestrade -11.5061 +▁arrangement -11.5061 +▁comparison -11.5061 +▁essential -11.5061 +▁mixture -11.5063 +▁GIVE -11.5064 +▁metres -11.5066 +▁folds -11.5067 +▁hinge -11.5072 +31 -11.5085 +▁dread -11.5095 +▁haul -11.5097 +▁Mariko -11.5107 +▁librarian -11.5107 +▁parchment -11.5107 +▁resolve -11.5107 +▁steadily -11.5107 +▁whimper -11.5107 +▁Phil -11.5107 +▁briefcase -11.5108 +▁jammed -11.5108 +▁review -11.5113 +▁elf -11.5122 +18 -11.5125 +▁splashes -11.5127 +▁relative -11.5133 +screen -11.5134 +▁Special -11.5153 +▁competition -11.5153 +▁crimson -11.5153 +▁merchant -11.5153 +▁smirk -11.5153 +▁admire -11.5153 +▁meadow -11.5153 +▁bellows -11.5153 +▁scorch -11.5154 +▁properties -11.5154 +▁crea -11.5172 +Object -11.518 +COM -11.5198 +▁instinct -11.5199 +▁overgrown -11.5199 +▁WAIT -11.5199 +▁preparing -11.5199 +▁ourselves -11.5199 +▁realizing -11.5202 +▁foam -11.5208 +▁prick -11.521 +▁basin -11.5217 +▁neighbour -11.5245 +▁parallel -11.5245 +▁sewer -11.5246 +Timers -11.5246 +▁crypt -11.5249 +▁Metal -11.525 +▁tighten -11.5252 +▁extreme -11.5272 +▁dimension -11.5276 +▁mild -11.5277 +▁scrub -11.5277 +▁civil -11.5292 +▁escort -11.5292 +▁vomit -11.5292 +▁incident -11.5292 +▁foreign -11.5292 +▁favourite -11.5292 +▁crumbling -11.5293 +▁critical -11.5294 +▁scanner -11.5295 +▁nella -11.5299 +▁outfit -11.5299 +▁cement -11.5302 +▁accent -11.5302 +▁rocket -11.5304 +▁cheat -11.5305 +▁Manag -11.5313 +▁additional -11.5314 +Would -11.5321 +LIC -11.5323 +plane -11.5325 +▁University -11.5339 +▁celebra -11.5339 +▁gradually -11.5339 +▁microwave -11.5339 +▁savage -11.5339 +▁graveyard -11.5339 +▁interface -11.534 +▁fangs -11.534 +▁socks -11.5345 +▁prevention -11.5348 +▁Thick -11.5349 +▁[102 -11.5349 +rimmed -11.5354 +▁bold -11.5355 +▁Coke -11.5357 +ifies -11.5376 +paper -11.5376 +▁studio -11.5378 +▁avail -11.5383 +▁embrace -11.5386 +▁rubbish -11.5386 +▁squawk -11.5386 +▁shroud -11.5386 +▁fifth -11.5386 +▁freak -11.5386 +▁goodbye -11.5386 +▁session -11.5386 +▁Brown -11.5388 +▁everybody -11.5389 +▁Half -11.539 +▁pouch -11.539 +100] -11.5407 +ACT -11.5416 +▁woke -11.5416 +▁convenient -11.5433 +▁Further -11.5433 +▁eternal -11.5433 +▁clump -11.5433 +▁pluck -11.5433 +▁niente -11.5434 +▁keen -11.5436 +▁Holly -11.5438 +▁selection -11.544 +▁secretary -11.5446 +born -11.5453 +vu -11.5465 +▁volcano -11.5477 +▁PUSH -11.548 +▁Plotkin -11.548 +▁bookshelf -11.548 +▁piercing -11.548 +▁Central -11.548 +▁Company -11.548 +▁deprecat -11.548 +▁Leonine -11.548 +▁Chuck -11.5484 +▁logical -11.5485 +▁niche -11.5489 +emetry -11.5491 +▁coach -11.5499 +▁Wind -11.5519 +▁strewn -11.5528 +▁pearl -11.5533 +▁origin -11.5536 +Nothing -11.5565 +Never -11.5569 +▁Ordinary -11.5576 +▁architect -11.5576 +▁conclude -11.5576 +▁contraption -11.5576 +▁perimeter -11.5576 +▁ultimate -11.5576 +▁acquire -11.5576 +▁randomisation -11.5576 +▁footprints -11.5576 +▁slack -11.5576 +▁NEVER -11.5576 +free -11.5577 +▁straighten -11.5587 +human -11.5622 +▁grammar -11.5624 +▁contrast -11.5624 +▁cui -11.5626 +▁broom -11.5632 +▁clamp -11.5633 +▁Eric -11.5635 +▁zoo -11.5642 +▁mechanic -11.5655 +▁encourage -11.5672 +▁ignoring -11.5672 +▁struggling -11.5672 +▁essence -11.5672 +▁introduction -11.5673 +▁Otherwise -11.5673 +▁quote -11.5674 +▁asshole -11.5674 +▁Adar -11.5676 +▁mound -11.5682 +▁anybody -11.5687 +position -11.5712 +▁Revolution -11.5721 +▁ancestor -11.5721 +▁gargoyle -11.5721 +▁nostrils -11.5721 +▁Choice -11.5721 +▁thrill -11.5721 +▁crowbar -11.5721 +▁adult -11.5721 +▁profit -11.5721 +▁Jason -11.5722 +▁fiddle -11.5723 +testers -11.5724 +▁potato -11.5724 +▁Kind -11.5725 +▁performance -11.5727 +▁basically -11.573 +▁tidy -11.5732 +▁Floor -11.5732 +▁crap -11.5761 +yzzy -11.5769 +▁triangular -11.5769 +▁freezing -11.577 +▁oblig -11.577 +▁strict -11.577 +▁thigh -11.5772 +▁Charlotte -11.5818 +▁consequence -11.5818 +▁goggles -11.5819 +▁Point -11.5828 +▁interaction -11.583 +step -11.5838 +▁suggestion -11.5861 +Nice -11.5866 +▁August -11.5868 +▁Emilia -11.5868 +▁unnoticed -11.5868 +▁victory -11.5868 +▁distress -11.5868 +▁midnight -11.5868 +▁goblet -11.5869 +▁Kill -11.587 +azione -11.5879 +graph -11.5897 +▁automatic -11.5917 +▁benefit -11.5917 +▁cobweb -11.5917 +▁Sterling -11.5917 +▁Stuart -11.5918 +▁rapid -11.5918 +▁studies -11.5919 +▁Edward -11.5923 +romance -11.5935 +stream -11.5952 +▁defend -11.5953 +▁rent -11.5957 +▁chime -11.596 +Comp -11.5961 +▁ceramic -11.5967 +▁furnace -11.5967 +▁intruder -11.5967 +▁attendant -11.5973 +▁relationship -11.5976 +▁icon -11.598 +▁incredible -11.6017 +▁stairwell -11.6017 +▁childhood -11.6017 +▁SAVE -11.6017 +▁module -11.6017 +▁trophy -11.6017 +▁Church -11.6017 +▁warrant -11.6019 +▁Dur -11.602 +▁bond -11.6039 +fresh -11.6043 +▁inhale -11.6046 +▁rustle -11.605 +Giving -11.6053 +▁bake -11.6064 +Estrange -11.6067 +▁accurate -11.6067 +▁dispenser -11.6067 +▁emerald -11.6067 +▁enemies -11.6067 +▁dissipate -11.6067 +▁escaping -11.6067 +▁senza -11.6067 +▁tremble -11.6067 +▁Select -11.6067 +▁jeans -11.6067 +▁Click -11.6073 +▁reasonably -11.6078 +▁thorough -11.6098 +▁British -11.6118 +▁Cheryl -11.6118 +▁batteries -11.6118 +▁criminal -11.6118 +Excuse -11.6118 +▁boyfriend -11.6118 +▁chirp -11.6118 +48 -11.6122 +▁hopefully -11.6129 +▁seize -11.6144 +▁Japanese -11.6168 +▁frightened -11.6168 +▁Already -11.6168 +▁crossbow -11.6168 +▁kingdom -11.6168 +Pretty -11.617 +▁comfortably -11.617 +▁thug -11.6173 +▁moose -11.6177 +▁agony -11.6181 +▁extract -11.6184 +▁faucet -11.6219 +▁vandal -11.6219 +▁cousin -11.6219 +▁footnote -11.622 +▁restricted -11.622 +▁HAVE -11.622 +▁dragging -11.622 +▁Soft -11.6221 +▁ivy -11.6223 +▁lining -11.6226 +compiled -11.6227 +▁poking -11.6229 +▁marvel -11.6233 +pipe -11.6234 +▁instruction -11.6263 +▁Number -11.6271 +▁breakfast -11.6271 +▁expanse -11.6271 +▁radiation -11.6271 +▁precarious -11.6271 +▁wagon -11.6271 +▁glisten -11.6271 +▁Daniel -11.6271 +▁Power -11.6271 +PAR -11.6271 +▁blaze -11.6274 +▁Flint -11.6275 +▁unnatural -11.6275 +▁entra -11.6284 +▁Mist -11.6291 +uoi -11.6295 +OOM -11.6314 +▁Author -11.6322 +▁Obviously -11.6322 +▁Toranaga -11.6322 +▁fantastic -11.6322 +▁overflow -11.6322 +▁pepper -11.6322 +▁taught -11.6322 +▁Italian -11.6323 +▁teleport -11.6323 +▁triangle -11.6324 +▁chalk -11.6324 +▁firing -11.6334 +▁198 -11.6339 +▁uncover -11.6352 +▁Base -11.6361 +black -11.6364 +▁sensitivity -11.6374 +▁universal -11.6374 +▁violet -11.6374 +▁ladies -11.6374 +▁THIS -11.6375 +▁superior -11.6375 +▁Beneath -11.6375 +▁Greek -11.6376 +▁hostile -11.6376 +▁copier -11.6376 +▁graphic -11.6377 +▁granted -11.638 +▁agreement -11.6392 +▁Eye -11.6412 +establish -11.6426 +▁Crusader -11.6426 +▁remarkable -11.6426 +▁chapter -11.6426 +▁fixture -11.6429 +▁Latin -11.6429 +▁Guide -11.643 +style -11.6431 +▁expand -11.6434 +▁Auto -11.6444 +second -11.6471 +▁gross -11.6474 +▁disambiguation -11.6478 +▁translucent -11.6478 +▁Instruction -11.6479 +▁appeal -11.6479 +▁Yabu -11.6479 +▁spire -11.6487 +invoke -11.6498 +quarters -11.6519 +▁prince -11.6528 +▁destin -11.6529 +▁CLOSE -11.6531 +▁stereo -11.6531 +▁bulkhead -11.6531 +▁flank -11.6531 +▁mould -11.6532 +▁colorful -11.6533 +▁alright -11.6536 +▁freestanding -11.654 +▁correspond -11.6583 +▁artificial -11.6584 +▁worship -11.6584 +▁vibrate -11.6584 +▁whilst -11.6584 +▁Jonas -11.6584 +▁amusing -11.6585 +Random -11.6585 +▁Extend -11.6588 +▁brace -11.6609 +Glass -11.6611 +▁conclusion -11.6637 +ambi -11.6639 +▁plush -11.6644 +▁Corridor -11.6691 +▁cemetery -11.6691 +▁undergrowth -11.6691 +▁frantically -11.6691 +▁Roger -11.6697 +▁Return -11.6697 +▁dinosaur -11.6744 +▁greasy -11.6744 +▁client -11.6745 +▁gym -11.6746 +▁crane -11.6752 +▁June -11.6754 +▁peck -11.6761 +▁patience -11.6798 +▁spectacular -11.6798 +▁scurry -11.6798 +▁radiate -11.6799 +▁(3/ -11.6799 +▁disconnect -11.68 +▁accidentally -11.6801 +▁fetch -11.6803 +Guess -11.685 +▁Entrance -11.6853 +▁NOTHING -11.6853 +▁gadget -11.6853 +▁intelligence -11.6853 +▁Enkidu -11.6853 +▁shrink -11.6853 +▁wanna -11.6853 +▁workshop -11.6853 +▁bathtub -11.6853 +define -11.6853 +▁twig -11.6853 +▁Jimmy -11.6854 +▁kidding -11.6854 +▁grinning -11.6855 +▁canopy -11.6856 +▁Common -11.6856 +▁resistance -11.6857 +▁oppos -11.6878 +collecting -11.6887 +▁Anthony -11.6907 +▁Chinese -11.6907 +▁appointment -11.6907 +▁impenetrable -11.6907 +▁Duncan -11.6907 +▁England -11.6907 +▁revenge -11.6907 +▁flaming -11.6908 +▁Wolf -11.6909 +▁burrow -11.691 +ossa -11.693 +▁unplug -11.6951 +examine -11.6953 +▁adjacent -11.6962 +▁commercial -11.6962 +▁threshold -11.6962 +▁grabbing -11.6964 +▁carrot -11.6964 +▁advise -11.6964 +▁confront -11.6965 +▁fiery -11.6966 +Warning -11.7008 +▁hunch -11.7018 +▁Among -11.7018 +▁beacon -11.7018 +Fool -11.7028 +▁cind -11.7051 +description -11.7065 +Like -11.7067 +▁relieved -11.7073 +▁reappear -11.7073 +▁Secret -11.7073 +▁dismiss -11.7073 +▁ooze -11.7073 +▁etched -11.7073 +▁miniature -11.7074 +▁occurred -11.7076 +▁nudge -11.7077 +▁riddle -11.7079 +▁Horse -11.7082 +▁START -11.7129 +▁acquaint -11.7129 +▁contempt -11.7129 +▁continuing -11.7129 +▁mahogany -11.7129 +▁tapestry -11.7129 +▁charred -11.7129 +▁dominated -11.7129 +▁attitude -11.713 +▁obey -11.7132 +▁taxi -11.7132 +▁mural -11.7136 +Speak -11.7136 +▁locket -11.7144 +▁snug -11.7169 +▁occasion -11.7177 +filled -11.7177 +▁ALWAYS -11.7185 +▁ANYTHING -11.7185 +▁deafening -11.7185 +▁diagram -11.7185 +▁denotes -11.7185 +▁descent -11.7192 +behind -11.7225 +Could -11.7234 +figure -11.7234 +Changes -11.7239 +ERROR -11.7242 +▁orevore -11.7242 +▁vibration -11.7242 +▁avenue -11.7242 +▁penetrate -11.7242 +▁Condition -11.7242 +▁Location -11.7242 +▁fumble -11.7242 +▁Guild -11.7242 +▁Margot -11.7242 +▁quipping -11.7245 +▁Lying -11.7245 +▁wisp -11.7249 +NK -11.7251 +▁Kincaid -11.7299 +▁Melanie -11.7299 +▁bubbling -11.7299 +▁curiosity -11.7299 +▁frightening -11.7299 +▁trousers -11.7299 +▁hrpl -11.7299 +▁ravine -11.7299 +▁Silver -11.7299 +▁Police -11.7299 +cogniz -11.7299 +▁glory -11.7301 +control -11.7353 +▁Arthur -11.7356 +▁Sylvester -11.7356 +▁alternative -11.7356 +▁crevice -11.7356 +▁Museum -11.7356 +▁clench -11.7356 +▁swipe -11.7356 +▁moans -11.7357 +▁latter -11.7358 +▁Word -11.7358 +aggio -11.7399 +▁birth -11.7413 +▁Mistletoe -11.7413 +▁silhouette -11.7413 +▁sprinkle -11.7413 +▁ELSE -11.7413 +▁pendant -11.7413 +▁Eastern -11.7413 +▁placing -11.7413 +▁Dream -11.7413 +▁churn -11.7414 +▁jolt -11.7414 +▁wobble -11.7414 +Every -11.7464 +speak -11.7465 +Those -11.7466 +▁assistance -11.7471 +▁monstrous -11.7471 +▁sediment -11.7471 +▁identity -11.7471 +▁cycle -11.7471 +▁gauge -11.7471 +▁asteroid -11.7471 +▁possessive -11.7475 +▁starboard -11.7476 +▁Rather -11.7476 +▁stub -11.7478 +▁lizard -11.7529 +▁draft -11.7529 +▁thrash -11.7529 +▁Field -11.7529 +▁Duffy -11.7529 +▁hovering -11.7529 +▁Western -11.753 +▁Sadly -11.753 +▁ensure -11.753 +▁smug -11.7532 +▁erase -11.7533 +▁feast -11.7535 +▁serving -11.7535 +▁disorient -11.7546 +direct -11.7566 +▁absolute -11.7568 +chamber -11.7582 +UNCTION -11.7588 +▁Cersei -11.7588 +▁McDonald -11.7588 +▁indicator -11.7588 +▁industrial -11.7588 +▁laundry -11.7588 +▁nonsense -11.7588 +▁marriage -11.7588 +▁nonetheless -11.7588 +▁glorious -11.7588 +UBE -11.7588 +▁threw -11.7588 +▁Indian -11.7588 +▁yarn -11.759 +▁plague -11.759 +▁rumor -11.7592 +▁snapping -11.7592 +.'?? -11.7599 +▁subsid -11.7642 +Hagerston -11.7646 +▁Hamilton -11.7646 +▁Occasionally -11.7646 +▁SAY -11.7647 +▁Text -11.7647 +▁loyal -11.7647 +▁hypo -11.7648 +▁stress -11.7651 +▁France -11.766 +▁Security -11.7706 +▁TURN -11.7706 +▁describing -11.7706 +▁lecture -11.7706 +Grammar -11.7706 +▁woven -11.7706 +▁Lower -11.7706 +▁plasma -11.7706 +▁audible -11.7706 +▁sideways -11.7708 +▁sopra -11.771 +▁locate -11.7733 +worm -11.7761 +▁importance -11.7765 +▁sneeze -11.7765 +▁specimen -11.7765 +▁wrought -11.7765 +▁rectangle -11.7765 +▁wicked -11.7765 +▁knives -11.7765 +▁mortar -11.7765 +▁hilt -11.7766 +▁swoop -11.7781 +archive -11.7817 +▁foliage -11.7825 +▁samurai -11.7825 +▁scribble -11.7825 +▁ventilation -11.7825 +▁exotic -11.7825 +▁indication -11.7826 +▁suitcase -11.7826 +▁Messages -11.7828 +▁stray -11.7829 +▁introduc -11.7862 +stitution -11.7885 +Combining -11.7885 +▁approximately -11.7885 +▁fantasy -11.7885 +▁fluorescent -11.7885 +▁wolves -11.7885 +▁beckons -11.7885 +▁feeble -11.7885 +▁editor -11.7885 +▁April -11.7885 +▁sacred -11.7885 +▁goddess -11.7885 +▁vacant -11.7885 +▁wield -11.7885 +▁divine -11.7885 +▁ANY -11.7885 +▁clauses -11.7885 +▁raising -11.7885 +▁Lisa -11.7888 +▁trolley -11.7888 +▁garlic -11.7888 +ologist -11.7889 +evolv -11.7911 +▁impatient -11.7926 +::::: -11.7938 +▁instruct -11.7943 +▁Hopefully -11.7946 +▁Jeffrey -11.7946 +▁Maartje -11.7946 +▁religious -11.7946 +▁unicorn -11.7946 +▁borrow -11.7946 +▁interroga -11.7946 +▁adapt -11.7947 +▁Front -11.7947 +▁excess -11.7947 +connect -11.7949 +Parsing -11.795 +scribe -11.7955 +daemons -11.7966 +▁reconsider -11.798 +▁POSI -11.8007 +▁UNDER -11.8007 +▁pouvez -11.8007 +▁wisdom -11.8007 +▁warehouse -11.8007 +▁sputter -11.8007 +▁disaster -11.8007 +▁SENS -11.8007 +▁Scoring -11.8007 +▁Indeed -11.8007 +hyp -11.8013 +Window -11.8033 +▁CONDITION -11.8068 +ccompanied -11.8068 +▁Attaching -11.8068 +▁Pattern -11.8068 +▁Regular -11.8068 +▁Successful -11.8068 +▁evaporate -11.8068 +▁monument -11.8068 +▁scissors -11.8068 +▁terrified -11.8068 +▁workbench -11.8068 +▁operating -11.8068 +▁miserable -11.8068 +▁imposing -11.8068 +▁fumes -11.8069 +▁bracelet -11.8069 +▁dominates -11.807 +▁Building -11.813 +▁happiness -11.813 +▁proprietor -11.813 +▁tranquil -11.813 +▁WEAR -11.813 +▁peanut -11.813 +▁smudge -11.813 +▁approve -11.813 +▁composed -11.813 +▁Hanging -11.813 +▁girlfriend -11.8131 +▁idol -11.8132 +▁plaza -11.8132 +▁envelop -11.8174 +▁America -11.8175 +▁Plat -11.8179 +Outside -11.8189 +▁Between -11.8192 +▁Keegan -11.8192 +▁damaging -11.8192 +▁decomposition -11.8192 +▁genuine -11.8192 +▁occupies -11.8192 +▁trumpet -11.8192 +▁university -11.8192 +▁possibility -11.8192 +▁reddish -11.8192 +▁creative -11.8193 +▁puppy -11.8194 +▁TAB -11.825 +Adjudicat -11.8255 +MERS -11.8255 +▁confusing -11.8255 +▁miracle -11.8255 +▁observation -11.8255 +▁scientific -11.8255 +▁splatter -11.8255 +▁hurrie -11.8255 +▁continua -11.8255 +▁reckon -11.8255 +▁invade -11.8277 +▁interpret -11.8298 +TAKE -11.8316 +After -11.8316 +▁reindeer -11.8317 +▁vulture -11.8317 +▁Swimming -11.8317 +▁handkerchief -11.8317 +▁revolver -11.8317 +▁ivory -11.8317 +▁flavor -11.8317 +▁recipe -11.8318 +▁glaring -11.8318 +▁mourn -11.8318 +ooooo -11.8318 +▁Esther -11.8318 +▁whiskey -11.8318 +▁grimace -11.8319 +▁trembling -11.8319 +▁tomato -11.8322 +▁Jewel -11.8333 +restrict -11.8352 +▁Empty -11.8381 +▁affixed -11.8381 +▁protrude -11.8381 +▁unsupported -11.8381 +▁yield -11.8381 +▁FISH -11.8381 +▁Verlac -11.8381 +▁ignition -11.8381 +▁choking -11.8381 +▁waft -11.8381 +▁pulp -11.8381 +▁Ingol -11.8393 +haired -11.8401 +command -11.8444 +▁UNLOCK -11.8444 +▁syringe -11.8444 +▁vortex -11.8444 +udolph -11.8444 +▁fidget -11.8444 +▁confess -11.8444 +▁compared -11.8445 +▁Susan -11.8445 +▁torso -11.845 +volt -11.8452 +NONL -11.8489 +▁stole -11.8494 +complete -11.8508 +▁Duggers -11.8509 +▁Kropkin -11.8509 +▁doorknob -11.8509 +▁napkin -11.8509 +▁wriggle -11.8509 +▁buddy -11.8509 +▁VARI -11.8509 +▁breach -11.8509 +▁sorrow -11.8509 +▁identifie -11.851 +▁retire -11.8511 +▁dingy -11.8513 +Shut -11.8515 +▁exhaust -11.8535 +Casting -11.8565 +friend -11.8571 +▁deliberate -11.8573 +▁alphabet -11.8573 +▁CHOICE -11.8573 +▁Cynthia -11.8573 +▁Nikolai -11.8573 +▁flimsy -11.8573 +▁makeshift -11.8573 +▁oblivious -11.8573 +▁Natural -11.8573 +▁sloping -11.8573 +▁assignment -11.8573 +▁mercy -11.8573 +FIER -11.8573 +▁Place -11.8574 +▁stunned -11.8574 +▁repeatedly -11.8575 +▁programmed -11.8575 +▁unsure -11.8576 +▁loot -11.8589 +pitched -11.8593 +▁janitor -11.8638 +▁cylindrical -11.8638 +▁deallocation -11.8638 +▁embarrassed -11.8638 +▁eternity -11.8638 +▁exquisite -11.8638 +▁neighborhood -11.8638 +▁scholar -11.8638 +Merging -11.8638 +▁LOCK -11.8638 +▁awesome -11.8638 +▁swept -11.8638 +▁Francis -11.8638 +▁crumbs -11.8638 +written -11.8638 +▁urgent -11.8639 +▁Planet -11.864 +TIVITY -11.8703 +▁calendar -11.8703 +▁handwriting -11.8703 +▁majestic -11.8703 +▁monorail -11.8703 +▁perspective -11.8703 +multiexcept -11.8703 +▁Rewind -11.8703 +▁trough -11.8703 +▁Level -11.8703 +▁ancora -11.8703 +▁essere -11.8704 +First -11.8704 +▁beige -11.8705 +▁detach -11.8705 +Humbaba -11.8769 +▁RANGE -11.8769 +▁THINK -11.8769 +▁altogether -11.8769 +▁concentration -11.8769 +▁facility -11.8769 +▁intensity -11.8769 +▁outstretched -11.8769 +▁recognition -11.8769 +▁furnished -11.8769 +▁generous -11.8769 +▁political -11.8769 +▁QUANTI -11.8769 +▁capsule -11.8769 +▁swivel -11.8769 +▁soggy -11.8769 +ibility -11.8833 +▁Galactic -11.8835 +▁Jonathan -11.8835 +▁LITERAL -11.8835 +▁galaxy -11.8835 +▁insensitivity -11.8835 +▁obelisk -11.8835 +▁satisfaction -11.8835 +▁sorcerer -11.8835 +▁spectacle -11.8835 +▁population -11.8835 +▁Brief -11.8835 +▁Quickly -11.8835 +▁scamper -11.8835 +▁teenage -11.8835 +▁bloom -11.8835 +▁spacious -11.8836 +negated -11.8837 +wheel -11.8837 +multiinside -11.8878 +▁bulk -11.8881 +multiheld -11.8901 +▁neglect -11.8902 +▁scrawled -11.8902 +▁survival -11.8902 +▁alternate -11.8902 +ubexp -11.8902 +▁romantic -11.8902 +▁tavern -11.8902 +▁Smoke -11.8902 +▁Alien -11.8903 +Allow -11.8958 +▁SOUTHEAST -11.8969 +▁conversions -11.8969 +▁inspired -11.8969 +▁Alexander -11.8969 +▁melody -11.8969 +▁Derek -11.8969 +▁salesman -11.897 +Enough -11.8971 +currently -11.8972 +▁rasp -11.8986 +▁Rebecca -11.9037 +▁fingertips -11.9037 +▁uncomfortably -11.9037 +▁assassin -11.9037 +▁utility -11.9037 +▁hamster -11.9037 +▁stomp -11.9037 +▁rattling -11.9037 +▁slither -11.9038 +▁Kweek -11.9105 +▁dwarf -11.9105 +▁newsgroup -11.9105 +▁territory -11.9105 +oncatenate -11.9105 +▁slept -11.9105 +▁Kevin -11.9105 +▁shotgun -11.9105 +▁soothing -11.9106 +▁Mount -11.9106 +storm -11.911 +▁holiday -11.9173 +▁opponent -11.9173 +▁fuzzy -11.9173 +▁Ancient -11.9173 +▁molto -11.9173 +▁Paddy -11.9173 +▁replied -11.9173 +▁Ethan -11.9174 +▁Jessica -11.9242 +▁NORTHEAST -11.9242 +▁billiard -11.9242 +▁moustache -11.9242 +▁protruding -11.9242 +▁turtle -11.9242 +▁tobacco -11.9242 +▁Carefully -11.9242 +▁biggest -11.9242 +▁generic -11.9243 +▁cauldron -11.9312 +▁handcuffs -11.9312 +▁unremarkable -11.9312 +▁gnaw -11.9312 +▁sprout -11.9312 +▁lawyer -11.9312 +▁saliva -11.9312 +▁confidence -11.9382 +▁porcelain -11.9382 +▁goddam -11.9382 +▁arriving -11.9382 +▁(4/ -11.9382 +DSA -11.9382 +Great -11.9387 +▁Conversation -11.9452 +▁Winston -11.9452 +▁insubstantial -11.9452 +▁reinforce -11.9452 +▁explicit -11.9452 +▁glimmer -11.9452 +▁shrine -11.9452 +▁votre -11.9452 +▁civilization -11.9452 +▁Trust -11.9452 +▁assigned -11.9452 +▁cancel -11.9453 +.......... -11.9463 +▁Malcolm -11.9523 +▁demonstration -11.9523 +▁disintegrate -11.9523 +▁fascinating -11.9523 +▁horribly -11.9523 +▁perceive -11.9523 +▁Spanish -11.9523 +▁inclined -11.9523 +▁hurriedly -11.9523 +▁recoil -11.9523 +▁belief -11.9523 +▁unmarked -11.9523 +▁racing -11.9523 +▁stoop -11.9524 +▁Irish -11.9525 +zioni -11.9526 +rselves -11.9553 +▁Property -11.9594 +▁Purpose -11.9594 +▁manufacture -11.9594 +▁schedule -11.9594 +▁Silence -11.9594 +▁blazing -11.9594 +▁Pratt -11.9595 +inspiring -11.9595 +▁pursue -11.9595 +▁teddy -11.9595 +▁temptation -11.9595 +▁Travel -11.9595 +Type -11.9602 +morph -11.9603 +▁conspir -11.9615 +▁slug -11.9637 +▁Matteo -11.9666 +▁NORTHWEST -11.9666 +▁financial -11.9666 +▁Charlie -11.9666 +▁huddle -11.9666 +▁clunk -11.9666 +▁stubborn -11.9666 +▁drool -11.9666 +▁prospect -11.9666 +▁resort -11.9666 +▁Wendy -11.9667 +▁Hunt -11.9674 +QUE -11.9676 +AIR -11.97 +▁Lalrry -11.9739 +▁Language -11.9739 +▁SpeedIF -11.9739 +▁Sylvia -11.9739 +▁advertise -11.9739 +▁bookshelves -11.9739 +▁comfy -11.9739 +▁privacy -11.9739 +▁thomas -11.9739 +▁fingernail -11.9739 +▁bulge -11.9739 +▁steak -11.9739 +▁Driving -11.9739 +▁Cross -11.9739 +▁Henry -11.9739 +▁practi -11.9743 +▁preserve -11.9744 +▁brutal -11.9745 +Which -11.9747 +wolf -11.9747 +Hurr -11.9782 +▁thirst -11.9789 +oriented -11.9806 +▁Dynamo -11.9812 +comprehensible -11.9812 +▁blossom -11.9812 +▁ceremony -11.9812 +▁unscrew -11.9812 +▁scurries -11.9812 +▁jealous -11.9812 +▁dragged -11.9812 +▁Credit -11.9812 +▁piccol -11.9812 +▁abuse -11.986 +▁education -11.9885 +▁Mycroft -11.9885 +▁enclosure -11.9885 +▁mosaic -11.9885 +Certainly -11.9885 +▁Gordon -11.9885 +▁Gunther -11.9885 +▁amusement -11.9885 +▁Modern -11.9885 +▁Sherlock -11.9885 +▁gossip -11.9885 +▁acrid -11.9886 +▁Visit -11.9886 +▁PRI -11.9904 +dependent -11.9949 +▁Kitchen -11.9959 +▁assortment -11.9959 +▁nymph -11.9959 +▁procedure -11.9959 +▁terrifying -11.9959 +▁turret -11.9959 +smelling -11.9969 +Advanced -12.0034 +Excellent -12.0034 +▁Industries -12.0034 +▁labyrinth -12.0034 +▁maneuver -12.0034 +▁application -12.0034 +▁fluffy -12.0034 +▁uneasy -12.0034 +▁whatsoever -12.0034 +▁tutto -12.0035 +Especially -12.0035 +Against -12.0109 +▁SOUTHWEST -12.0109 +▁judging -12.0109 +▁occupant -12.0109 +▁pendulum -12.0109 +▁picnic -12.0109 +▁temporarily -12.0109 +▁unbearable -12.0109 +▁storyteller -12.0109 +▁bramble -12.0109 +▁hush -12.011 +Will -12.0124 +▁libera -12.0176 +▁navigation -12.0185 +Detective -12.0185 +▁Priestess -12.0185 +▁Service -12.0185 +▁Underneath -12.0185 +▁autumn -12.0185 +▁bouncing -12.0185 +▁illuminating -12.0185 +▁scenario -12.0185 +▁velocity -12.0185 +▁FROM -12.0185 +▁lazily -12.0185 +▁cackle -12.0185 +PLAY -12.0185 +▁slim -12.0198 +▁inject -12.0224 +▁ParseNoun -12.0261 +▁Written -12.0261 +▁absurd -12.0261 +▁vodka -12.0261 +▁grief -12.0261 +▁violin -12.0261 +▁wicker -12.0261 +▁Pierre -12.0262 +Curse -12.0275 +ctivating -12.0288 +▁contempla -12.0327 +Abstract -12.0338 +OBJECT -12.0338 +▁AGAIN -12.0338 +▁Introduction -12.0338 +▁cafeteria -12.0338 +▁executive -12.0338 +▁feminine -12.0338 +▁furnishings -12.0338 +▁physics -12.0338 +▁portcullis -12.0338 +▁satchel -12.0338 +▁noisily -12.0338 +▁nausea -12.0351 +coloured -12.0369 +▁____ -12.0406 +unexplained -12.0416 +▁deputy -12.0416 +▁diagonal -12.0416 +▁frustrated -12.0416 +▁manuscript -12.0416 +▁Yellow -12.0416 +▁caretaker -12.0416 +▁genius -12.0416 +▁peasant -12.0416 +▁sleek -12.0416 +▁Project -12.0416 +▁policy -12.0416 +▁bleach -12.0416 +▁interfere -12.0418 +dimensional -12.0442 +▁snip -12.0444 +enthusiastic -12.0494 +▁dedicated -12.0494 +▁obstacle -12.0494 +▁reputation -12.0494 +▁celery -12.0494 +▁demonstrate -12.0494 +▁presume -12.0494 +▁auction -12.0494 +▁tunic -12.0495 +▁adequate -12.0573 +▁execution -12.0573 +▁gurgle -12.0573 +▁Sheppard -12.0573 +▁dazzling -12.0573 +▁occupy -12.0573 +▁widow -12.0573 +▁honour -12.0573 +▁vantage -12.0573 +▁sheriff -12.0573 +▁funeral -12.0573 +▁diploma -12.0573 +WAY -12.0578 +Error -12.0587 +▁1/0 -12.0643 +▁giraffe -12.0652 +▁significance -12.0652 +▁solemn -12.0652 +▁Ocean -12.0652 +▁Evil -12.0652 +clusive -12.0652 +▁hyper -12.0656 +▁colleague -12.0732 +▁commotion -12.0732 +▁grammatical -12.0732 +▁grenade -12.0732 +▁grotesque -12.0732 +▁liquor -12.0732 +▁quartz -12.0732 +▁vigorously -12.0732 +▁fissure -12.0732 +▁Chapter -12.0732 +▁emptiness -12.0732 +▁modified -12.0732 +▁cedar -12.0732 +▁anticipation -12.0813 +▁butterfly -12.0813 +▁flourish -12.0813 +▁parachute -12.0813 +▁peristylium -12.0813 +▁reassuring -12.0813 +▁College -12.0813 +▁Provider -12.0813 +▁WHY -12.0813 +▁preparation -12.0813 +▁horrid -12.0813 +▁depressed -12.0813 +▁clank -12.0814 +▁scoot -12.0816 +▁convict -12.0817 +special -12.0829 +hearted -12.0854 +▁Immediately -12.0894 +▁Sergeant -12.0894 +▁Symington -12.0894 +▁ashtray -12.0894 +▁disbelief -12.0894 +▁harvest -12.0894 +▁proportion -12.0894 +▁enhance -12.0894 +▁dunno -12.0894 +▁Steel -12.0895 +▁erect -12.0906 +Alright -12.096 +WARNING -12.0976 +▁Usually -12.0976 +▁protagonist -12.0976 +▁revolution -12.0976 +▁brittle -12.0976 +▁whistling -12.0976 +▁cherub -12.0976 +▁chorus -12.0976 +▁coarse -12.0976 +▁fulfill -12.0977 +▁voi -12.1013 +▁predict -12.1055 +▁definition -12.1058 +▁embarrassing -12.1058 +▁religion -12.1058 +▁Normally -12.1058 +▁cavity -12.1058 +▁imperative -12.1058 +▁injured -12.1058 diff --git a/experiments/agents/drrn/utils/__init__.py b/experiments/agents/drrn/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/experiments/agents/drrn/utils/__pycache__/__init__.cpython-310.pyc b/experiments/agents/drrn/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..700a058a3249f93f1f28bfccf87c8f70ce05b533 GIT binary patch literal 205 zcmYk0O$x#=5QS6eLWEwx8@Pyb0TCAgH&u$_x|Afekt7rHgLoG&;Fa8Z3s)v9eek~d zc`yt%&4OfImJeR)yWn3{9(LKG&Jg5GR@L!Id|ChSaWJ8gz&)CQ14EvSv@t;E@hW*~ zCPw!jlNHL2v>oi2hEdW33aJCVsW?$4rK6`7SlfZn4su>j2=6VVsC0n7S60QoU%UHj QzA-40mfP}4m}S)D3;W69UPUnOaCc_+Jk%=O zL#@iI!WsC38uvxOYogxwc);sV++O3h#T&f&#NtiSoH@M}v{(2l+N-9$iuM{`M|)kk zgEh=p=k~7EKKBCBSZ$_*EE)=4j7O>1(UsjIDuj0O2TBL`Wt6F;Nb;=h>53{xqPWnW z6ptdw@vHcA5tairQ^%;%F3&UYkl7xpQ4wi&5IeNm{GmE2g}&-4$d^{1amMW@{?r;+ z1$%1E*wiK^eC2GT4sk1!ZtLcLo-3hR2d#0IJRFM_mxmWbl+b{>z-n%%oH9|-Kadv||(>$c3t8BemktvgY+H;(qi)@L~vsoHv!6#HA- zLX5WV-RW-Mx!dLGsEcuk-Q`kd-Eonmsyh_JTpo5thdQ`M+lcew=z4>MrX6fplS?WZ z!cv`UX&y(Zx{k_X+ASEfD#a*`Vu3w)@qV7futO@cwj+s2xt*28p5!^IkxH~zvL#10 zD_ynaMbu-IrH4#*14VT}gwe;-`VXP+%p6v3<6APZ~@hZL*?(-VH@Kut-{$ReeDaNVP(GW7iQm{+yp~;nTV0!i$)`naap0B?}D^#`8|BJ8_7L&dSmWr ztoAQp*lcQzHP{-vz$WWUo1!@}dEnxqI>nPQ6{)1$5Q#WtGY7H6cHng6L#5}Dcndj# z2T>94hbozfQ_`3pXsU6-H8wfFBu43^OPVDWkT6CNa^Hn!cP;rYnppE#J&0%0!>KiO zH4G6VVfYrt%(?-aY%HxipRm(r@)GfctA!!KW*F)q42L-%r&Mo*;lpv1mLu|QTI(Gm zMh!or8sW1fhOK;`>&>e9!k9j_Hrlwe&b>-9S+vgB%Conh87#z;#~bK0?vu zH6EA{tn-Em!6sk9x5`%u{PpHtndB1SJ`w!nUSAyjg<1arZ}XV##$@QlLv@njCW`t3 zq>Rz24Zmblr;Jhb*&Br6RtR5)Q@9t6-|iunZJOz!R5|-S)q(k8tq2D7qsG)RaowEz zH*81dEyH`Ibnf+0DfeO6mpE*2Hp#1)qn#ux^h%VD_M`9^2AU5!DF0kEmq9{f@n-F8gX_#`(nY7L@ z!ZC>4S_(SSI~9W>|3n3vMLKa{%PO}YvniAB6$ViZt~kJzO$x{(mqV|>72u}96=;3n z8C>zWYjDLexZ-gHuHjHM9DH#27;~$yaHyiUW;oR59DKu}MjUWfpWluCgo8S26~`$= zM}7#2Z|z6|_I6OJ%!KC8&>=q}LYgXJi@aO@oXAg!`~n1ULebmv6BQaKkUylMml0)x ziQQFs!rXRv&?tXdW;wwRE~U#6=qFI z-#7tDx9yrys&K%)&98OPer>@I&mAFy&9!YAw>mpH=%lg zX`7fit!3i*DT;CH02)5WF4)EZg zFW;xWEh3cnzV>9lLjy0t$kYrXbumDgrzi&Lcn{Y7Rlk7)o?D(a6Qa7aeZJF{g_I7rQKmzwwCf+;s}CY zvZLxVMBRLzkG^+{+I(J6)Th?W##zmtfmfMhHFc1vB*R58i-kEXbrrrN_JouKI@<52 zc~rnr$%9bS)r?0{M#$8QoGviB@*vOCP`mWOU2{Cbue3c~<)R;r(_)c4;%Yj0&U7sd z<1|t#3`?aORsRM*q$r9mHVx(j_+J)elk3O+*I96_oVG3T(9JpbSfuG<1!K`KFlug0 zMz{l7s|1Y=W_plW)#E%(aU(=(q9hqaS2B42VVOkG*)2aILN+Q7yW_+{yQB-FGLtiE y51R!mlL{Jl(RFhCc@UWuU*~h$zgFg?*C~H8_uU49gx+y4Xk7pF-8 literal 0 HcmV?d00001 diff --git a/experiments/agents/drrn/utils/__pycache__/pad_sequences.cpython-310.pyc b/experiments/agents/drrn/utils/__pycache__/pad_sequences.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3380e9e8d09aa7d286c1e3a3e62a73b2d695830 GIT binary patch literal 1427 zcmY*Z&1zgX6qa;<=lUll3@(8dR6?Kw8Q;=w%3w@Nr*sk5xG{8L8jO6UnYs4;v!q*l z!ktZ>EW79%#LK=(U!WUpyC`{uEZQDv!i+7@xsuK~pLFznSM}Cbf}k~jeSP+4fY9G| za<_Rfc?MnWfZ>Sa0-azUa-RpU@d@Gh7!9I#;6sNd$SeKTm;cy_ZJEFPI=cZjg8nUZ z^&SkzoV-RI8lxM$@HLF!8+4d^Es}kW-;&P1#S5&x8?*>*+{^wVg1G1gbN|AZLx}Oa z=oX&`JmB6N@(AKEs_^9_@Pr*;O-L7hjBat~_0ij?BY+p{*zN>qqo2v5cL$Nk=al|r?J&a3GPc6XKY3oBa4nG`hxU^lb54dX6#b#S|AvA9sVgrZ&K z66P^|A#^LNb-C9gTD4^}r%XyVr&qb2QJzC}Dz7U=KL_WTkf-(JbcOGVf_et-WEoud zsu37jWgbIUeK1qd-pde_hB|zMe>#HA+XAFo1=_pnfS59DCO z^j2h=a4A=59}yEct(a)3R&|n8XQ#^&l-XPkPTfY*zBdM68!zYfFtV+(HH$K~-mQC= zXDL=s!EA5DIK~MMy%=xeKK3#B_Y?0U7!$lrw#h?Sd5FXRc03=;Pa$F89ZJiGwD0A> iGl3JV+_X#9e`jB(Be!|HSJu2O#J*)l+4UH0d;bG*hlU{l literal 0 HcmV?d00001 diff --git a/experiments/agents/drrn/utils/memory.py b/experiments/agents/drrn/utils/memory.py new file mode 100644 index 0000000..1a8d4d9 --- /dev/null +++ b/experiments/agents/drrn/utils/memory.py @@ -0,0 +1,117 @@ +from collections import namedtuple +import numpy as np +import json +import sys + +State = namedtuple('State', ('obs')) #, 'description', 'inventory')) +Transition = namedtuple('Transition', ('state', 'act', 'reward', 'next_state', 'next_acts', 'done')) + + +def sample(rng: np.random.RandomState, data: list, k: int): + """ Chooses k unique random elements from a list. """ + return [data[i] for i in rng.choice(len(data), k, replace=False)] + + +class ReplayMemory(object): + def __init__(self, capacity, seed=20210824): + self.capacity = capacity + self.memory = [] + self.position = 0 + self.rng = np.random.RandomState(seed) + + def push(self, *args): + if len(self.memory) < self.capacity: + self.memory.append(None) + self.memory[self.position] = Transition(*args) + self.position = (self.position + 1) % self.capacity + + def sample(self, batch_size): + return sample(self.rng, self.memory, batch_size) + + def __len__(self): + return len(self.memory) + + + +class PrioritizedReplayMemory(object): + def __init__(self, capacity=100000, priority_fraction=0.0, seed=20210824): + # Stored + self.capacity = capacity + self.priority_fraction = priority_fraction + self.seed = seed + + # Calculated at init + self.alpha_capacity = int(capacity * priority_fraction) + self.beta_capacity = capacity - self.alpha_capacity + + # Declared + self.alpha_memory, self.beta_memory = [], [] + self.alpha_position, self.beta_position = 0, 0 + + # Initialized + self.rng = np.random.RandomState(seed) + + def push(self, is_prior=False, *args): + """Saves a transition.""" + if self.priority_fraction == 0.0: + is_prior = False + if is_prior: + if len(self.alpha_memory) < self.alpha_capacity: + self.alpha_memory.append(None) + self.alpha_memory[self.alpha_position] = Transition(*args) + self.alpha_position = (self.alpha_position + 1) % self.alpha_capacity + else: + if len(self.beta_memory) < self.beta_capacity: + self.beta_memory.append(None) + self.beta_memory[self.beta_position] = Transition(*args) + self.beta_position = (self.beta_position + 1) % self.beta_capacity + + def sample(self, batch_size): + if self.priority_fraction == 0.0: + from_beta = min(batch_size, len(self.beta_memory)) + res = sample(self.rng, self.beta_memory, from_beta) + else: + from_alpha = min(int(self.priority_fraction * batch_size), len(self.alpha_memory)) + from_beta = min(batch_size - int(self.priority_fraction * batch_size), len(self.beta_memory)) + res = sample(self.rng, self.alpha_memory, from_alpha) + sample(self.rng, self.beta_memory, from_beta) + + self.rng.shuffle(res) + return res + + def __len__(self): + return len(self.alpha_memory) + len(self.beta_memory) + + def serializeToJSON(self, filenameOut): + print("Serializing to JSON... ") + sys.stdout.flush() + + packed = { + "capacity": self.capacity, + "priority_fraction": self.priority_fraction, + "alpha_memory": self.alpha_memory, + "alpha_position": self.alpha_position, + "beta_memory": self.beta_memory, + "beta_position": self.beta_position, + } + + print(packed) + sys.stdout.flush() + + with open(filenameOut, 'w') as outfile: + outfile.write(json.dumps(packed, cls=NpEncoder, indent=2)) + + print("Completed...") + sys.stdout.flush() + + +class NpEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, np.integer): + return int(obj) + if isinstance(obj, np.floating): + return float(obj) + if isinstance(obj, np.ndarray): + return obj.tolist() + if isinstance(obj, np.bool_): + return bool(obj) + return super(NpEncoder, self).default(obj) \ No newline at end of file diff --git a/experiments/agents/drrn/utils/pad_sequences.py b/experiments/agents/drrn/utils/pad_sequences.py new file mode 100644 index 0000000..050c67c --- /dev/null +++ b/experiments/agents/drrn/utils/pad_sequences.py @@ -0,0 +1,39 @@ +import numpy as np + + +def pad_sequences(sequences, maxlen=None, dtype='int32', value=0.): + ''' + Partially borrowed from Keras + # Arguments + sequences: list of lists where each element is a sequence + maxlen: int, maximum length + dtype: type to cast the resulting sequence. + value: float, value to pad the sequences to the desired value. + # Returns + x: numpy array with dimensions (number_of_sequences, maxlen) + ''' + lengths = [len(s) for s in sequences] + nb_samples = len(sequences) + if maxlen is None: + maxlen = np.max(lengths) + # take the sample shape from the first non empty sequence + # checking for consistency in the main loop below. + sample_shape = tuple() + for s in sequences: + if len(s) > 0: + sample_shape = np.asarray(s).shape[1:] + break + x = (np.ones((nb_samples, maxlen) + sample_shape) * value).astype(dtype) + for idx, s in enumerate(sequences): + if len(s) == 0: + continue # empty list was found + # pre truncating + trunc = s[-maxlen:] + # check `trunc` has expected shape + trunc = np.asarray(trunc, dtype=dtype) + if trunc.shape[1:] != sample_shape: + raise ValueError('Shape of sample %s of sequence at position %s is different from expected shape %s' % + (trunc.shape[1:], idx, sample_shape)) + # post padding + x[idx, :len(trunc)] = trunc + return x diff --git a/experiments/agents/random_agent/__init__.py b/experiments/agents/random_agent/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/experiments/agents/random_agent/__pycache__/__init__.cpython-310.pyc b/experiments/agents/random_agent/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f78440d5e7936a9cebfe71fc83a4e4109498e509 GIT binary patch literal 207 zcmd1j<>g`k0;e6vlR@-j5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_fenx(7s(x}& zer{s2zDs^`X>Mv>NwI!FQGQlxGKi7kqU&CiUz(SanU}8XlbDxYnwXxd>zkjFnp3P> zo>`Ki>ynyUpc~|)@8T1npORCc50nQPQIwdMlAjw7=IO`BXXa&=#K-FuRNmsS$<0qG Q%}KQbxuuv1NU$&f006u7^bPtBy!PZvAE1|ZM)Jl^5fU5?hciRY%r{blK}cZy@W-FYmmVR1 z;pXvhVDmjJ^DPiT1kK0^g)hrk&Q2I5heSAnUlYNv*oh z9v^*v1yb4iJ7Izfc1^&8FSu~8=?NDe_zGpC%_weBu#X7khKF;V~6s1L4MbX|QQ%RheePEVWc2mo0p^K=L zI+A5-;6YFlE{pfZx>_1p*`PRuGZbu?^ioD~Ql+YhOc^KAt`&>?^uZR5AUJ9L&abgN zQ&ThaEjKbd(}+dgM>0UN3dB0<6wK1%Oqqw2YOK8tmTyN?v}N(=D)rjALpcloz1;q6 ztk##s6r!9ZSk&dfi=hWPJcUqBK^vzc6`%r&`P>z#;lc9H zsBl38vE>Qx9oOGg&P`Cex3qzM4HKmk#OTURSbMkh4R8D=XjYoA2=Aq!{UB{`_YtRW zpEW(u=+!-!?2 z2{}Jp#$qldWYSiSAf{TJ&;T!R3V4!8eyr|khBG7MQObb*MJkicUn{(9K*Vpbg>PJIG0gm z!wBPBWXSiU=zI}p-HF}?Rs9^v$KO)NVIyhm0+bspRX_r|+G}M)4rN{Bkng8(&=m@G UKj*{-lkV<)EcLyoKHX&h0n+P|g8%>k literal 0 HcmV?d00001 diff --git a/experiments/agents/random_agent/random_agent.py b/experiments/agents/random_agent/random_agent.py new file mode 100644 index 0000000..69a3fe1 --- /dev/null +++ b/experiments/agents/random_agent/random_agent.py @@ -0,0 +1,41 @@ +import numpy as np +from tqdm import tqdm + +class Random_agent: + def __init__(self, envs, nbr_envs, size_action_space, number_episodes): + self.envs = envs + obs, infos = self.envs.reset() + self.nbr_envs = nbr_envs + self.size_action_space = size_action_space + self.number_episodes = number_episodes + self.returns = [0 for _ in range(self.nbr_envs)] + self.logs = { + "return_per_episode": [], + } + + def generate_trajectories(self, dict_modifier, language='english'): + episodes_done = 0 + pbar = tqdm(range(self.number_episodes), ascii=" " * 9 + ">", ncols=100) + while episodes_done < self.number_episodes: + + actions = np.random.randint(low=0, high=self.size_action_space, size=(self.nbr_envs,)) + + if self.size_action_space > 6: + # only useful when we test the impact of the number of actions + real_a = np.copy(actions) + real_a[real_a > 6] = 6 + obs, rewards, dones, infos = self.envs.step(real_a) + else: + obs, rewards, dones, infos = self.envs.step(actions) + + for j in range(self.nbr_envs): + self.returns[j] += rewards[j] + if dones[j]: + episodes_done += 1 + pbar.update(1) + self.logs["return_per_episode"].append(self.returns[j]) + self.returns[j] = 0 + pbar.close() + + self.logs["episodes_done"] = episodes_done + return None, self.logs diff --git a/experiments/clm_finetuning.py b/experiments/clm_finetuning.py new file mode 100644 index 0000000..f4eac2b --- /dev/null +++ b/experiments/clm_finetuning.py @@ -0,0 +1,248 @@ +import transformers +import datasets +from transformers import AdamW, get_scheduler, set_seed, AutoModelForSeq2SeqLM, AutoTokenizer, default_data_collator +from datasets import Dataset, DatasetDict + +from accelerate import Accelerator + +accelerator = Accelerator(split_batches=False) + +from torch.utils.data.dataloader import DataLoader +from torch.utils.tensorboard import SummaryWriter + +import torch +import numpy as np +import logging +import argparse +from copy import deepcopy +import os + + +def load_dataset(dir, file_name, file_id): + _inputs = np.load(f"{dir}/{file_name}_prompts_{file_id}.npy") + _outputs = np.load(f"{dir}/{file_name}_actions_{file_id}.npy") + + _train_dataset = Dataset.from_dict({ + "input": _inputs[:400000], + "output": _outputs[:400000] + }) + + _eval_dataset = Dataset.from_dict({ + "input": _inputs[400000:], + "output": _outputs[400000:] + }) + + return DatasetDict({ + "train": _train_dataset, + "test": _eval_dataset + }) + +def tokenize_dataset(dataset, tokenizer): + tokenized_datasets = dataset.map( + lambda examples: tokenizer(examples["input"], padding="max_length", max_length=1024), + batched=True, + desc="Running tokenizer on inputs", + remove_columns=["input"] + ) + + # max_length = 3 as longest sequence is [, , ] (same with "turn right" or "go forward") + tokenized_datasets = tokenized_datasets.map( + lambda examples: {"labels": tokenizer(examples["output"], padding="max_length", max_length=3)["input_ids"]}, + batched=True, + desc="Running tokenizer on outputs", + remove_columns=["output"] + ) + + return tokenized_datasets + + +def setup_logging(logging_folder, args): + logger = logging.getLogger(__name__) + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", level=logging.INFO) + if accelerator.is_main_process: # we only want to setup logging once + tb_writer = SummaryWriter(log_dir=logging_folder) + hyperparams = deepcopy(args) + for hyperparam, value in hyperparams.items(): + if isinstance(value, list): + hyperparams[hyperparam] = ','.join(str(value)) + tb_writer.add_hparams(hyperparams, {'0': 0}) + logger.setLevel(logging.INFO) + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_info() + else: + tb_writer = None + logger.setLevel(logging.ERROR) + datasets.utils.logging.set_verbosity_error() + transformers.utils.logging.set_verbosity_error() + return logger, tb_writer + + +def get_grouped_params(model, config, no_decay=["bias", "LayerNorm.weight"]): + params_with_wd, params_without_wd = [], [] + for n, p in model.named_parameters(): + if any(nd in n for nd in no_decay): + params_without_wd.append(p) + else: + params_with_wd.append(p) + return [{'params': params_with_wd, 'weight_decay': config["weight_decay"]}, + {'params': params_without_wd, 'weight_decay': 0.0}] + + +def log_metrics(logger, tb_writer, step, metrics): + logger.info(f"Step {step}: {metrics}") + if accelerator.is_main_process: + [tb_writer.add_scalar(k, v, step) for k, v in metrics.items()] + + +def evaluate(model, eval_dataloader, config): + model.eval() + losses = [] + for step, batch in enumerate(eval_dataloader): + with torch.no_grad(): + outputs = model(**batch) + loss = outputs.loss.repeat(config["per_device_batch_size"]) + losses.append(accelerator.gather(loss)) + if config["max_eval_steps"] > 0 and step >= config["max_eval_steps"]: break + loss = torch.mean(torch.cat(losses)) + try: + perplexity = torch.exp(loss) + except OverflowError: + perplexity = float("inf") + return loss.item(), perplexity.item() + + +def launch_training(args): + torch.cuda.set_device(accelerator.device) + raw_datasets = load_dataset(args.data_dir, args.file_name, args.file_id) + tokenizer = AutoTokenizer.from_pretrained(args.model_dir) + model = AutoModelForSeq2SeqLM.from_pretrained(args.model_dir) + processed_datasets = tokenize_dataset(raw_datasets, tokenizer) + + config = { + "weight_decay": 0.0, + "learning_rate": 5e-4, # same as Flan paper + "lr_scheduler_type": "cosine", + "n_epochs": 1, + "evaluation_steps": 250, + "gradient_accumulation_steps": args.gradient_accumulation_steps + } + + config["per_device_batch_size"] = args.per_device_batch_size + config["full_batch_size"] = args.per_device_batch_size * accelerator.num_processes + updates_batch_size = config["full_batch_size"] * args.gradient_accumulation_steps + # Use the same number of samples for evaluation than for updates + config["max_eval_steps"] = args.per_device_batch_size * args.gradient_accumulation_steps + config["num_warmup_steps"] = len(processed_datasets["train"]) // updates_batch_size * 0.01 # => 1% of total number of steps + + output_dir = args.output_dir + # Sanity checks + if output_dir is not None: + os.makedirs(output_dir, exist_ok=True) + logger, tb_writer = setup_logging(output_dir + "/logs/", config) + + set_seed(args.seed) + + train_dataloader = DataLoader(processed_datasets["train"], collate_fn=default_data_collator, + batch_size=config["per_device_batch_size"]) + eval_dataloader = DataLoader(processed_datasets["test"], collate_fn=default_data_collator, + batch_size=config["per_device_batch_size"]) + n_train_steps = len(processed_datasets["train"]) / updates_batch_size * config["n_epochs"] + + # Prepare the optimizer and learning rate scheduler + optimizer = AdamW(get_grouped_params(model, config), lr=config["learning_rate"], eps=1e-8) + lr_scheduler = get_scheduler(name=config["lr_scheduler_type"], optimizer=optimizer, + num_warmup_steps=config["num_warmup_steps"], + num_training_steps=n_train_steps) + + def get_lr(): + return optimizer.param_groups[0]['lr'] + + # Prepare everything with our `accelerator`. + logger.info("Accelerate preparing...") + model, optimizer, train_dataloader, eval_dataloader = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader) + + # Train model + logger.info("Training model!") + model.train() + completed_steps = 0 + for epoch in range(config["n_epochs"]): + for step, batch in enumerate(train_dataloader, start=1): + input_ids = torch.tensor(batch["input_ids"]) + if step == 1: + print(f"Input size: {len(input_ids)}") + attention_mask = torch.tensor(batch["attention_mask"]) + labels = torch.tensor(batch["labels"]) + # labels[labels == tokenizer.pad_token_id] = -100 + loss = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels).loss + log_metrics(logger, tb_writer, step, {'lr': get_lr(), 'samples': step * config["full_batch_size"], + 'steps': completed_steps, 'loss/train': loss.item()}) + loss = loss / config["gradient_accumulation_steps"] + accelerator.backward(loss) + if step % config["gradient_accumulation_steps"] == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + completed_steps += 1 + if step % config["evaluation_steps"] == 0: + logger.info('Evaluating model') + eval_loss, perplexity = evaluate(model, eval_dataloader, config) + log_metrics(logger, tb_writer, step, {'loss/eval': eval_loss, 'perplexity': perplexity}) + logger.info('Saving model checkpoint') + accelerator.wait_for_everyone() + unwrapped_model = accelerator.unwrap_model(model) + if accelerator.is_main_process: + torch.save(unwrapped_model.state_dict(), args.output_dir + "/model.checkpoint") + model.train() + + # Evaluate and save the last checkpoint + logger.info('Evaluating and saving model after training') + eval_loss, perplexity = evaluate(model, eval_dataloader, config) + log_metrics(logger, tb_writer, step, {'loss/eval': eval_loss, 'perplexity': perplexity}) + accelerator.wait_for_everyone() + unwrapped_model = accelerator.unwrap_model(model) + if accelerator.is_main_process: + torch.save(unwrapped_model.state_dict(), args.output_dir + "/model.checkpoint") + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Finetune a LLM on transitions") + parser.add_argument( + "--data_dir", + type=str + ) + parser.add_argument( + "--file_name", + type=str, + default="trajectories" + ) + parser.add_argument( + "--file_id", + type=str, + default="13" + ) + parser.add_argument( + "--model_dir", + type=str + ) + parser.add_argument( + "--output_dir", + type=str + ) + parser.add_argument( + "--gradient_accumulation_steps", + type=int + ) + parser.add_argument( + "--per_device_batch_size", + type=int + ) + parser.add_argument( + "--seed", + type=int + ) + + args = parser.parse_args() + launch_training(args) \ No newline at end of file diff --git a/experiments/configs/accelerate/default_config.yaml b/experiments/configs/accelerate/default_config.yaml new file mode 100644 index 0000000..14a0136 --- /dev/null +++ b/experiments/configs/accelerate/default_config.yaml @@ -0,0 +1,12 @@ +compute_environment: LOCAL_MACHINE +deepspeed_config: { } +distributed_type: MULTI_GPU +fsdp_config: { } +machine_rank: 0 +main_process_ip: 127.0.0.1 +main_process_port: 12345 +main_training_function: main +mixed_precision: 'no' +num_machines: 1 +num_processes: 2 +use_cpu: false \ No newline at end of file diff --git a/experiments/configs/local_cpu_config.yaml b/experiments/configs/local_cpu_config.yaml new file mode 100644 index 0000000..ed0bf17 --- /dev/null +++ b/experiments/configs/local_cpu_config.yaml @@ -0,0 +1,44 @@ +lamorel_args: + log_level: info + allow_subgraph_use_whith_gradient: false + distributed_setup_args: + n_rl_processes: 1 + n_llm_processes: 1 + accelerate_args: + config_file: accelerate/default_config.yaml + machine_rank: 0 + num_machines: 1 + num_processes: 2 + cpu: + synchronize_gpus_after_scoring: false + empty_cuda_cache_after_scoring: false + llm_args: + model_type: causal + model_path: distilgpt2 + pretrained: true + model_parallelism_size: 1 + minibatch_size: 4 +rl_script_args: + path: ??? + task_idx: 13 + num_steps: 100 + max_episode_steps: 3 + simplification_str: easy + frames_per_proc: 40 + discount: 0.99 + lr: 1e-4 + beta1: 0.9 + beta2: 0.999 + gae_lambda: 0.99 + entropy_coef: 0.01 + value_loss_coef: 0.5 + max_grad_norm: 0.5 + adam_eps: 1e-5 + clip_eps: 0.2 + epochs: 4 + saving_path_logs: ??? + name_experiment: ??? + saving_path_model: ??? + load_embedding: false + use_action_heads: false + diff --git a/experiments/configs/local_gpu_config.yaml b/experiments/configs/local_gpu_config.yaml new file mode 100644 index 0000000..2e0d815 --- /dev/null +++ b/experiments/configs/local_gpu_config.yaml @@ -0,0 +1,62 @@ +lamorel_args: + log_level: info + allow_subgraph_use_whith_gradient: true + distributed_setup_args: + n_rl_processes: 1 + n_llm_processes: 1 + accelerate_args: + config_file: accelerate/default_config.yaml + machine_rank: 0 + num_machines: 2 + num_processes: 2 + cpu: + llm_args: + model_type: seq2seq + model_path: t5-small + pretrained: true + model_parallelism_size: 1 + minibatch_size: 4 + synchronize_gpus_after_scoring: false + empty_cuda_cache_after_scoring: false + updater_args: +rl_script_args: + path: ??? + seed: 1 + number_envs: 2 + num_steps: 1000 + max_episode_steps: 3 + simplification_str: easy + frames_per_proc: 40 + reward_shaping_beta: 0 + discount: 0.99 + lr: 1e-6 + beta1: 0.9 + beta2: 0.999 + gae_lambda: 0.99 + entropy_coef: 0.01 + value_loss_coef: 0.5 + max_grad_norm: 0.5 + adam_eps: 1e-5 + clip_eps: 0.2 + epochs: 4 + batch_size: 16 + action_space: ["turn_left","turn_right","go_forward","pick_up","drop","toggle"] + saving_path_logs: ??? + name_experiment: ??? + name_model: ??? + saving_path_model: ??? + name_environment: ??? + number_episodes: 10 + language: 'english' + load_embedding: true + use_action_heads: false + template_test: 1 + zero_shot: false + modified_action_space: false + new_action_space: ["rotate_left","rotate_right","move_ahead","take","release","switch"] + spm_path: ??? + random_agent: false + get_example_trajectories: false + nbr_obs: 3 + im_learning: true + im_path: "" diff --git a/experiments/configs/multi-node_slurm_cluster_config.yaml b/experiments/configs/multi-node_slurm_cluster_config.yaml new file mode 100644 index 0000000..354ff89 --- /dev/null +++ b/experiments/configs/multi-node_slurm_cluster_config.yaml @@ -0,0 +1,55 @@ +lamorel_args: + log_level: info + allow_subgraph_use_whith_gradient: true + distributed_setup_args: + n_rl_processes: 1 + n_llm_processes: 4 + accelerate_args: + config_file: accelerate/default_config.yaml + machine_rank: 0 + num_machines: ??? + num_processes: ??? + main_process_ip: ??? + main_process_port: 12345 + llm_args: + model_type: ??? + model_path: ??? + pretrained: true + model_parallelism_size: ??? + minibatch_size: ??? + synchronize_gpus_after_scoring: false + empty_cuda_cache_after_scoring: false + updater_args: +rl_script_args: + path: ??? + seed: ??? + number_envs: ??? + num_steps: ??? + max_episode_steps: 3 + simplification_str: easy + frames_per_proc: 40 + reward_shaping_beta: 0 + discount: 0.99 + lr: 1e-6 + beta1: 0.9 + beta2: 0.999 + gae_lambda: 0.99 + entropy_coef: 0.01 + value_loss_coef: 0.5 + max_grad_norm: 0.5 + adam_eps: 1e-5 + clip_eps: 0.2 + epochs: 4 + batch_size: 64 + action_space: ??? + saving_path_logs: ??? + name_experiment: ??? + name_model: ??? + saving_path_model: ??? + name_environment: ??? + nbr_obs: 3 + language: 'english' + load_embedding: false + use_action_heads: false + template_test: 1 + spm_path: '' diff --git a/experiments/configs/multi-node_slurm_cluster_config_test.yaml b/experiments/configs/multi-node_slurm_cluster_config_test.yaml new file mode 100644 index 0000000..53573f5 --- /dev/null +++ b/experiments/configs/multi-node_slurm_cluster_config_test.yaml @@ -0,0 +1,60 @@ +lamorel_args: + log_level: info + allow_subgraph_use_whith_gradient: false + distributed_setup_args: + n_rl_processes: 1 + n_llm_processes: 4 + accelerate_args: + config_file: accelerate/default_config.yaml + machine_rank: 0 + num_machines: ??? + num_processes: ??? + main_process_ip: ??? + llm_args: + model_type: ??? + model_path: ??? + pretrained: true + model_parallelism_size: ??? + minibatch_size: ??? + synchronize_gpus_after_scoring: false + empty_cuda_cache_after_scoring: false + updater_args: +rl_script_args: + path: ??? + seed: ??? + number_envs: ??? + num_steps: 100 + max_episode_steps: 3 + simplification_str: easy + frames_per_proc: 40 + reward_shaping_beta: 0 + discount: 0.99 + lr: 1e-6 + beta1: 0.9 + beta2: 0.999 + gae_lambda: 0.99 + entropy_coef: 0.01 + value_loss_coef: 0.5 + max_grad_norm: 0.5 + adam_eps: 1e-5 + clip_eps: 0.2 + epochs: 4 + batch_size: 64 + action_space: ??? + saving_path_logs: ??? + name_experiment: ??? + name_model: ??? + saving_path_model: ??? + name_environment: ??? + nbr_obs: 3 + number_episodes: ??? + zero_shot: ??? + language: 'english' + modified_action_space: false + new_action_space: [] + spm_path: ??? + random_agent: false + im_learning: false + im_path: ??? + get_example_trajectories: false + bot: false diff --git a/experiments/example_script.py b/experiments/example_script.py new file mode 100644 index 0000000..2fbb9b1 --- /dev/null +++ b/experiments/example_script.py @@ -0,0 +1,119 @@ +""" +This script run a simple agent in a ScienceWorld environment, with dummy calls to an API +to perform inference on the provided data. +""" +import transformers +# transformers.models.gpt2.modeling_gpt2.GPT2Block = None +import torch + +from lamorel import Caller, lamorel_init +lamorel_init() + +import hydra +from scienceworld import ScienceWorldEnv +from agents.random_agent import RandomAgent +from pprint import pprint +import time +from accelerate import Accelerator + +accelerator = Accelerator() + + +def reset_env(env, args, variation='train'): + if variation == 'train': + variation_idx = env.getRandomVariationTrain() + elif variation == 'dev': + variation_idx = env.getRandomVariationDev() + elif variation == 'test': + variation_idx = env.getRandomVariationTest() + else: + raise ValueError(f"Unsupported vatiation {variation}, must be one of 'train', 'dev' or 'test'") + + obs, info = env.resetWithVariation(variation_idx, args.simplification_str) + reward, done = 0, False + return obs, reward, done, info + + +def get_generated_sequence(info, lm_server): + # Something a bit like goal generation, takes in the room description, adds some + # an additional prompt and then gets a suggestion from the model. + promt_suffix = "\nThis is an example of what I could do here:" + prompt = info['look'] + promt_suffix + print("Generating sequences from LLM") + start_time = time.time() + _result = lm_server.generate(contexts=[prompt], max_length=512) + print("Generation done in {} seconds".format(time.time() - start_time)) + generated = _result[0][0]["text"].split('.')[0] + + return generated + + +def get_actions_reranked(obs, info, lm_server): + # gets the valid actions from the info dict and returns a list of reranked + # actions, from lower to higher negative log likelihood under the model + valid_actions = list(info['valid']) + print("Getting scores from LLM of {} actions".format(len(valid_actions))) + start_time = time.time() + scores = lm_server.score(contexts=[obs], candidates=[valid_actions]) + print("Scores computed in {} seconds".format(time.time() - start_time)) + return scores[0] + + +def run_agent(agent, env, args, lm_server): + # provides example uses of HF models for + # - 1. generating text sequences before an episode + # - 2. ranking actions from within an episode, at each step + + obs, reward, done, info = reset_env(env, args) + generated_goal = get_generated_sequence(info, lm_server) + print(f"Generated goal: {generated_goal}") + + for step in range(1, args.num_steps + 1): + print(f'Step number {step}') + state = agent.build_state(obs, info) + action = agent.act(state) + obs, reward, done, info = env.step(action) + # this will cuda oom on most machine in most cases after a few steps + valid_actions_reranked = get_actions_reranked(obs, info, lm_server) + print("Reranked actions according to NLL:") + pprint(valid_actions_reranked) + + if step % args.max_episode_steps == 0: + lm_server.update(contexts=["test", "test", "test", "test"], candidates=[["test"], ["test"], ["test"], ["test"]], labels=torch.tensor([[1, 1, 1, 1]])) + print(f"Step {step}, resetting env") + obs, reward, done, info = reset_env(env, args) + generated_goal = get_generated_sequence(info, lm_server) + print(f"Generated goal: {generated_goal}") + +from lamorel import BaseUpdater +class TestUpdater(BaseUpdater): + def perform_update(self, contexts, candidates, _current_batch_ids, **kwargs): + if not hasattr(self, 'loss_fn'): + self.loss_fn = torch.nn.L1Loss() + if not hasattr(self, 'optimizer'): + self.optimizer = torch.optim.Adam(self._trainable_module.parameters()) + + output = self._score_fn( + contexts=contexts, candidates=candidates, require_grad=True).to('cpu') + loss = self.loss_fn(output, kwargs["labels"][:, _current_batch_ids]) + loss.backward() + self.optimizer.step() + +# This will be overriden by lamorel's launcher if used +@hydra.main(config_path='config', config_name='config') +def main(config_args): + + # lm server + lm_server = Caller(config_args.lamorel_args, custom_updater_class=TestUpdater) + + # Env + env = ScienceWorldEnv('', envStepLimit=config_args.rl_script_args.max_episode_steps, threadNum=accelerator.process_index) + task_names = env.getTaskNames() + env.load(task_names[config_args.rl_script_args.task_idx], 0, config_args.rl_script_args.simplification_str) + agent = RandomAgent() + + run_agent(agent, env, config_args.rl_script_args, lm_server) + lm_server.close() + +if __name__ == '__main__': + main() diff --git a/experiments/main.py b/experiments/main.py new file mode 100644 index 0000000..25e8fc5 --- /dev/null +++ b/experiments/main.py @@ -0,0 +1,505 @@ +""" +This script run a simple agent in a BabyAI GoTo-Local environment. +""" +import os +import shutil +import distutils +import csv +import json +from collections import OrderedDict + +import logging + +logger = logging.getLogger(__name__) +from colorama import Fore + +import time + +import numpy as np +import torch +import gym +import torch.nn.functional as F +from torch.distributions import Categorical + +import babyai.rl +import babyai.utils as utils +from babyai.paral_env_simple import ParallelEnv + +from agents.drrn.drrn import DRRN_Agent + +from lamorel import Caller, lamorel_init +from lamorel import BaseUpdater, BaseModuleFunction + +lamorel_init() + +import hydra + +from accelerate import Accelerator + +accelerator = Accelerator() + +# TODO add the value of the true reward *20 who should receive the final reward? +def reward_function(subgoal_proba=None, reward=None, policy_value=None, llm_0=None): + if reward > 0: + return [20 * reward, 0] + else: + return [0, 0] + + +# TODO think about a correct value for the beta of the reward shaping part +def reward_function_shapped(subgoal_proba=None, reward=None, policy_value=None, llm_0=None): + if reward > 0: + return [20 * reward - np.log(subgoal_proba / policy_value), -np.log(subgoal_proba / policy_value)] + else: + return [0 - np.log(subgoal_proba / policy_value), 0 - np.log(subgoal_proba / policy_value)] + + +class ValueModuleFn(BaseModuleFunction): + def __init__(self, model_type): + super().__init__() + self._model_type = model_type + + def initialize(self): + llm_hidden_size = self.llm_config.to_dict()[self.llm_config.attribute_map['hidden_size']] + self.value_head_op = torch.nn.Sequential( + torch.nn.Linear(llm_hidden_size, 1024), + torch.nn.Sigmoid(), + torch.nn.Linear(1024, 1024), + torch.nn.Sigmoid(), + torch.nn.Linear(1024, 1), + ).to(self.device) + + def forward(self, forward_outputs, minibatch, tokenized_context, **kwargs): + if self._model_type == "causal": + model_head = forward_outputs['hidden_states'][-1][:, len(tokenized_context["input_ids"]) - 1, :] + else: + # model_head = forward_outputs['encoder_last_hidden_state'][0, len(tokenized_context["input_ids"]) - 1, :] + model_head = forward_outputs["decoder_hidden_states"][-1][:, 0, :] + + value = self.value_head_op(model_head.to(self.device)) + return value.cpu() + +class ActionHeadsModuleFn(BaseModuleFunction): + def __init__(self, model_type, action_space_size): + super().__init__() + self._model_type = model_type + self._action_space_size = action_space_size + + def initialize(self): + llm_hidden_size = self.llm_config.to_dict()[self.llm_config.attribute_map['hidden_size']] + self.action_heads_op = torch.nn.Sequential( + torch.nn.Linear(llm_hidden_size, 1024), + torch.nn.Sigmoid(), + torch.nn.Linear(1024, 1024), + torch.nn.Sigmoid(), + torch.nn.Linear(1024, self._action_space_size) + ).to(self.device) + + def forward(self, forward_outputs, minibatch, tokenized_context, **kwargs): + # Get encoder's representation + if self._model_type == "causal": + model_head = forward_outputs['hidden_states'][-1][0, len(tokenized_context["input_ids"]) - 1, :] + else: + # model_head = forward_outputs['encoder_last_hidden_state'][0, len(tokenized_context["input_ids"]) - 1, :] + model_head = forward_outputs["decoder_hidden_states"][-1][:, 0, :] + + actions_score = self.action_heads_op(model_head.to(self.device)) + return actions_score.cpu() + + +class Updater(BaseUpdater): + def generate_prompt(self, subgoals, template_test): + head_prompt = "Possible action of the agent:" + for sg in subgoals: + head_prompt += " {},".format(sg) + head_prompt = head_prompt[:-1] + + if template_test == 1: + # expected answers: go forward, turn left, turn left, toggle + templeted_prompts = [ + ' \n Goal of the agent: go to the green ball \n Observation 0: A wall 2 step left, A purple key 1 step left and 2 steps forward, A yellow key 1 step left and 1 step forward, A green ball 3 steps forward, A grey ball 1 step right and 5 steps forward, A green key 1 step right and 2 steps forward, A grey ball 1 step right and 1 step forward, A green key 2 steps right and 4 steps forward, A red box 2 steps right and 2 steps forward, \n Action 0: ', + ' \n Goal of the agent: go to the green ball \n Observation 0: A wall 2 step left, A purple key 1 step left and 2 steps forward, A yellow key 1 step left and 1 step forward, A green ball 3 steps forward, A grey ball 1 step right and 5 steps forward, A green key 1 step right and 2 steps forward, A grey ball 1 step right and 1 step forward, A green key 2 steps right and 4 steps forward, A red box 2 steps right and 2 steps forward, \n Action 0: go forward \n Observation 1: A purple key 1 step left and 1 step forward, A yellow key 1 step left, A green ball 2 steps forward, A grey ball 1 step right and 4 steps forward, A green key 1 step right and 1 step forward, A grey ball 1 step right, A green key 2 steps right and 3 steps forward, A red box 2 steps right and 1 step forward, \n Action 1: turn right \n Observation 2: A wall 2 step right, A green key 3 steps left and 2 steps forward, A green ball 2 steps left, A red box 1 step left and 2 steps forward, A green key 1 step left and 1 step forward, A grey ball 1 step forward, \n Action 2: ', + ' \n Goal of the agent: open the purple door \n Observation 0: You see a wall 3 steps forward, You see a wall 3 steps left, You see a yellow key 1 step right and 1 step forward, You see a locked purple door 2 steps right and 3 steps forward, You see a purple ball 3 steps right and 1 step forward, You see a green box 3 steps right, You see a purple key 2 steps left \n Action 0: ', + ' \n Goal of the agent: open the purple door \n Observation 0: You see a wall 3 steps forward, You see a wall 3 steps left, You see a yellow key 1 step right and 1 step forward, You see a locked purple door 2 steps right and 3 steps forward, You see a purple ball 3 steps right and 1 step forward, You see a green box 3 steps right, You see a purple key 2 steps left \n Action 0: turn left \n Observation 1: You see a wall 3 steps forward, You see a wall 3 steps right, You see a purple key 2 steps forward \n Action 1: go forward \n Observation 2: You see a wall 2 steps forward, You see a wall 3 steps right, You see a purple key 1 step forward \n Action 2: ', + ' \n Goal of the agent: open the purple door \n Observation 0: You carry a purple key, You see a wall 3 steps forward, You see a wall 5 steps left, You see a yellow key 1 step left and 1 step forward, You see a locked purple door 3 steps forward, You see a purple ball 1 step right and 1 step forward, You see a green box 1 step right \n Action 0: go forward \n Observation 1: You carry a purple key, You see a wall 2 steps forward, You see a wall 5 steps left, You see a yellow key 1 step left, You see a locked purple door 2 steps forward, You see a purple ball 1 step right \n Action 1: go forward \n Observation 2: You carry a purple key, You see a wall 1 step forward, You see a wall 5 steps left, You see a locked purple door 1 step forward \n Action 2: ', + ' \n Goal of the agent: pick up green box \n Observation 0: You see a wall 2 steps forward, You see a wall 2 steps left, You see a yellow ball 1 step left and 1 step forward, You see a green box 2 steps right \n Action 0: ', + ' \n Goal of the agent: pick up green box \n Observation 0: You see a wall 2 steps forward, You see a wall 2 steps left, You see a yellow ball 1 step left and 1 step forward, You see a green box 2 steps right \n Action 0: turn right \n Observation 1: You see a wall 2 steps left, You see a blue key 1 step right, You see a red ball 2 steps right and 1 step forward, You see a green box 2 steps forward \n Action 1: go forward \n Observation 2: You see a wall 2 steps left, You see a red ball 2 steps right, You see a green box 1 step forward \n Action 2: ', + ' \n Goal of the agent: put blue ball next to red box \n Observation 0: You carry a blue ball, You see a wall 5 steps forward, You see a wall 2 steps left, You see a grey key 1 step right and 2 steps forward, You see a red box 3 steps forward \n Action 0: go forward \n Observation 1: You carry a blue ball, You see a wall 4 steps forward, You see a wall 2 steps left, You see a grey key 1 step right and 1 step forward, You see a red box 2 steps forward \n Action 1: ', + ' \n Goal of the agent: pick up the blue ball then go to the red box \n Observation 0: You see a wall 3 steps forward, You see a wall 4 steps right, You see a purple key 2 steps forward, You see a red box 2 steps right, You see a blue ball 2 steps left \n Action 0: ', + ' \n Goal of the agent: go to the red box after you pick up the blue ball \n Observation 0: You see a wall 3 steps forward, You see a wall 4 steps right, You see a purple key 2 steps forward, You see a red box 2 steps right, You see a blue ball 2 steps left \n Action 0: ', + ' \n Goal of the agent: pick up the green key then pick up the the red box \n Observation 0: You carry a green key, You see a wall 4 steps forward, You see a wall 4 steps left, You see a red box 1 step left, You see a purple ball 2 steps left and 1 step forward \n Action 0: '] + elif template_test == 2: + # expected answers: go forward, turn left + templeted_prompts = [ + ' \n Goal of the agent: go to the green ball \n Observation 0: A wall 2 step left, A purple key 1 step left and 2 steps forward, A yellow key 1 step left and 1 step forward, A green ball 3 steps forward, A grey ball 1 step right and 5 steps forward, A green key 1 step right and 2 steps forward, A grey ball 1 step right and 1 step forward, A green key 2 steps right and 4 steps forward, A red box 2 steps right and 2 steps forward, \n Action 0: ', + ' \n Goal of the agent: go to the green ball \n Observation 0: A wall 2 step left, A purple key 1 step left and 2 steps forward, A yellow key 1 step left and 1 step forward, A green ball 3 steps forward, A grey ball 1 step right and 5 steps forward, A green key 1 step right and 2 steps forward, A grey ball 1 step right and 1 step forward, A green key 2 steps right and 4 steps forward, A red box 2 steps right and 2 steps forward, \n Action 0: go forward \n Observation 1: A purple key 1 step left and 1 step forward, A yellow key 1 step left, A green ball 2 steps forward, A grey ball 1 step right and 4 steps forward, A green key 1 step right and 1 step forward, A grey ball 1 step right, A green key 2 steps right and 3 steps forward, A red box 2 steps right and 1 step forward, \n Action 1: turn right \n Observation 2: A wall 2 step right, A green key 3 steps left and 2 steps forward, A green ball 2 steps left, A red box 1 step left and 2 steps forward, A green key 1 step left and 1 step forward, A grey ball 1 step forward, \n Action 2: '] + + for j in range(len(templeted_prompts)): + templeted_prompts[j] = head_prompt + templeted_prompts[j] + return templeted_prompts + + def perform_update(self, contexts, candidates, _current_batch_ids, **kwargs): + + if not hasattr(self, 'optimizer') and "load_fine_tuned_version" not in kwargs: + self.optimizer = torch.optim.Adam(self._llm_module.parameters(), kwargs["lr"], + (kwargs["beta1"], kwargs["beta2"]), + eps=kwargs["adam_eps"]) + + if "load_embedding" in kwargs or "load_fine_tuned_version" in kwargs or "save_first_last" in kwargs: + # If asked, only do embedding weights loading + if "load_embedding" in kwargs and kwargs["load_embedding"] and not hasattr(self, "is_embedding_loaded"): + pretrained_weights = torch.load(kwargs["llm_path"] + "/pytorch_model.bin") + state_dict = OrderedDict({ + k: v for k, v in pretrained_weights.items() if "embed" in k or "shared" in k + # Warning: this may fail if the model shares other things than embedding weights + }) + self._llm_module.module._LLM_model.load_state_dict(state_dict, strict=False) + self.is_embedding_loaded = True + + torch.save(self._llm_module.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/model.checkpoint") + torch.save(self.optimizer.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/optimizer.checkpoint") + + elif "load_fine_tuned_version" in kwargs and kwargs["load_fine_tuned_version"] \ + and not hasattr(self, "is_loaded"): + try: + self._llm_module.load_state_dict(torch.load(kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/model.checkpoint")) + self.optimizer = torch.optim.Adam(self._llm_module.parameters()) + self.optimizer.load_state_dict(torch.load( + kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/last/optimizer.checkpoint")) + self.is_loaded = True + + except: + # The last save have been corrupted for whatever reasons, possibly the programme ihas been forced + # to close during the saving we use the backup + + self._llm_module.load_state_dict(torch.load(kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/backup/model.checkpoint")) + self.optimizer = torch.optim.Adam(self._llm_module.parameters()) + self.optimizer.load_state_dict(torch.load( + kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/backup/optimizer.checkpoint")) + self.is_loaded = True + + dest = kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/last" + src = kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/backup" + distutils.dir_util.copy_tree(src, dest) + + elif "save_first_last" in kwargs and kwargs["save_first_last"] \ + and not hasattr(self, "save_first_last"): + torch.save(self._llm_module.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/model.checkpoint") + torch.save(self.optimizer.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/optimizer.checkpoint") + self.save_first_last = True + + return {} + + else: + + # save the proba_dist over actions every n updates + if accelerator.process_index == 1 and kwargs["lm_server_update_first_call"]: + if kwargs["number_updates"] % 1 == 0 and candidates is not None: + prompts = self.generate_prompt(candidates[0], kwargs['template_test']) + subgoals = [candidates[0] for i in range(len(prompts))] + + # Avoid calling DDP model and get stuck gathering buffers from all LLMs + output = self._llm_module.module([kwargs["scoring_module_key"], 'value'], + contexts=prompts, candidates=subgoals, require_grad=False) + scores = torch.stack([_o[kwargs["scoring_module_key"]] for _o in output]) + scores_max = torch.max(scores, dim=1)[0] + + proba_dist = [] + for j in range(len(scores)): + if scores_max[j] < 1e-45: + proba_dist.append(F.softmax(torch.ones_like(scores[j]), dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j] / scores_max[j], dim=-1).unsqueeze(dim=0)) + + proba_dist = list(torch.cat(proba_dist).cpu().numpy().flatten()) + + csv_distrib_path = os.path.join(kwargs["experiment_path"], 'distrib.csv') + csv_writer = csv.writer(open(csv_distrib_path, 'a', 1)) + csv_writer.writerow(proba_dist) + + sb = {} + for k in ['action', 'value', 'log_prob', 'advantage', 'returnn']: + sb[k] = kwargs["exps"][k][_current_batch_ids] + + # Compute loss + output = self._llm_module([kwargs["scoring_module_key"], 'value'], + contexts=contexts, candidates=candidates, require_grad=True) + scores = torch.stack([_o[kwargs["scoring_module_key"]] for _o in output]).squeeze() + scores_max = torch.max(scores, dim=1)[0] + values = torch.stack([_o["value"][0] for _o in output]) + + proba_dist = [] + for j in range(len(scores)): + if kwargs["scoring_module_key"] == "__score": + # rescaled scores to avoid the flattening effect of softmax + # softmax([1e-9, 1e-100, 1e-9])~[0.33, 0.33, 0.33] + # softmax([1e-9, 1e-100, 1e-9]*1e9)~[0.4223, 0.1554, 0.4223] + if scores_max[j] < 1e-45 or torch.isnan(scores_max[j]): + proba_dist.append(F.softmax(torch.ones_like(scores[j]), dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j] / scores_max[j], dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j], dim=-1).unsqueeze(dim=0)) + + proba_dist = torch.cat(proba_dist) + dist = Categorical(probs=proba_dist) + + entropy = dist.entropy().mean() + log_prob = dist.log_prob(sb['action']) + if len(log_prob.shape) > 1: + log_prob = log_prob.sum(dim=-1) + ratio = torch.exp(log_prob - sb['log_prob']) + surr1 = ratio * sb['advantage'] + surr2 = torch.clamp(ratio, 1.0 - kwargs["clip_eps"], 1.0 + kwargs["clip_eps"]) * sb['advantage'] + policy_loss = -torch.min(surr1, surr2).mean() + + value_clipped = sb['value'] + torch.clamp(values - sb['value'], -kwargs["clip_eps"], kwargs["clip_eps"]) + surr_v1 = (values - sb['returnn']).pow(2) + surr_v2 = (value_clipped - sb['returnn']).pow(2) + value_loss = torch.max(surr_v1, surr_v2).mean() + + loss = policy_loss - kwargs["entropy_coef"] * entropy + kwargs["value_loss_coef"] * value_loss + + # Update actor-critic + + self.optimizer.zero_grad() + """print(policy_loss.detach().item()) + print(value_loss.detach().item()) + print(" ")""" + loss.backward() + grad_norm = sum( + p.grad.data.detach().cpu().norm(2) ** 2 for p in self._llm_module.parameters() if + p.grad is not None) ** 0.5 + torch.nn.utils.clip_grad_norm_(self._llm_module.parameters(), kwargs["max_grad_norm"]) + self.optimizer.step() + + dict_return = {"loss": loss.item(), + "entropy": entropy.item(), + "policy_loss": policy_loss.item(), + "value_loss": value_loss.item(), + "grad_norm": grad_norm.item()} + + # save the model every n updates + if accelerator.process_index == 1 and kwargs["lm_server_update_first_call"]: + if kwargs["number_updates"] % 1 == 0: + # saving the back-up + src = kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/last" + dest = kwargs["saving_path_model"] + "/" + kwargs["id_expe"] + "/backup" + distutils.dir_util.copy_tree(src, dest) + + # saving the last iteration + torch.save(self._llm_module.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/model.checkpoint") + torch.save(self.optimizer.state_dict(), kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/optimizer.checkpoint") + + + return dict_return + + +def run_agent(args, algo, id_expe): + header = (["update", "episodes", "frames", "FPS", "duration"] + + ["return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["success_rate"] + + ["reshaped_return_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["reshaped_return_bonus_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["num_frames_" + stat for stat in ['mean', 'std', 'min', 'max']] + + ["entropy", "policy_loss", "value_loss", "loss", "grad_norm"]) + + experiment_path = os.path.join(args.saving_path_logs, id_expe) + if not os.path.exists(experiment_path): + os.makedirs(experiment_path) + + csv_path = os.path.join(experiment_path, 'log.csv') + # we don't buffer data going in the csv log, because we assume + # that one update will take much longer than one write to the log + first_created = not os.path.exists(csv_path) + csv_writer = csv.writer(open(csv_path, 'a', 1)) + if first_created: + csv_writer.writerow(header) + + # Restore training status + status_path = os.path.join(experiment_path, 'status.json') + if os.path.exists(status_path): + with open(status_path, 'r') as src: + status = json.load(src) + else: + status = {'i': 0, + 'num_episodes': 0, + 'num_frames': 0} + + format_str = ("\nUpdate: {} | Episodes Done: {} | Frames Seen: {:06} | FPS: {:04.0f} | Ellapsed: {}\ + \nReward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Success Rate: {: .2f}\ + \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f})\ + \nFrames/Eps: {:.1f} +- {:.1f} (Min: {}, Max {})\ + \nEntropy: {: .3f} | Policy Loss: {: .3f} | Value Loss: {: .5f} | Loss: {: .3f} | Grad Norm: {: .3f}") + + total_start_time = time.time() + while status['num_frames'] < args.num_steps: + update_start_time = time.time() + algo.number_updates = status['i'] + logs = algo.update_parameters() + update_end_time = time.time() + + status['num_frames'] += logs["num_frames"] + status['num_episodes'] += logs['episodes_done'] + status['i'] += 1 + + total_ellapsed_time = int(time.time() - total_start_time) + fps = logs["num_frames"] / (update_end_time - update_start_time) + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + reshaped_return_per_episode = utils.synthesize(logs["reshaped_return_per_episode"]) + reshaped_return_bonus_per_episode = utils.synthesize(logs["reshaped_return_bonus_per_episode"]) + num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + data = [status['i'], status['num_episodes'], status['num_frames'], + fps, total_ellapsed_time, + *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values(), + *num_frames_per_episode.values(), + logs["entropy"], logs["policy_loss"], logs["value_loss"], + logs["loss"], logs["grad_norm"]] + + logger.info(Fore.YELLOW + format_str.format(*data) + Fore.RESET) + csv_writer.writerow(data) + + with open(status_path, 'w') as dst: + json.dump(status, dst) + + +# This will be overriden by lamorel's launcher if used +@hydra.main(config_path='config', config_name='config') +def main(config_args): + # lm server + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + custom_lamorel_module_functions = { + 'value': ValueModuleFn(config_args.lamorel_args.llm_args.model_type) + } + if config_args.rl_script_args.use_action_heads: + custom_lamorel_module_functions['policy_head'] = ActionHeadsModuleFn( + config_args.lamorel_args.llm_args.model_type, + len(config_args.rl_script_args.action_space) + ) + lamorel_scoring_module_key = "policy_head" + else: + lamorel_scoring_module_key = "__score" + + lamorel_init() + lm_server = Caller(config_args.lamorel_args, custom_updater_class=Updater, + custom_module_functions=custom_lamorel_module_functions) + + # Env + name_env = config_args.rl_script_args.name_environment + seed = config_args.rl_script_args.seed + envs = [] + subgoals = [] + number_envs = config_args.rl_script_args.number_envs + list_actions = [] + for a in config_args.rl_script_args.action_space: + list_actions.append(a.replace("_", " ")) + for i in range(number_envs): + env = gym.make(name_env) + env.seed(100 * seed + i) + envs.append(env) + subgoals.append(list_actions) + + envs = ParallelEnv(envs) + + if config_args.rl_script_args.reward_shaping_beta == 0: + reshape_reward = reward_function + else: + reshape_reward = reward_function_shapped # TODO ad the beta + + id_expe = config_args.rl_script_args.name_experiment + \ + '_nbr_env_{}_'.format(config_args.rl_script_args.number_envs) + \ + '{}_'.format(config_args.rl_script_args.name_model) + \ + 'pretrained_{}_'.format(config_args.lamorel_args.llm_args.pretrained) + + if not config_args.lamorel_args.llm_args.pretrained: + id_expe += 'load_embedding_{}_'.format(config_args.rl_script_args.load_embedding) + + if config_args.rl_script_args.use_action_heads: + id_expe += 'use_action_heads_{}_'.format(config_args.rl_script_args.use_action_heads) + + if config_args.rl_script_args.nbr_obs != 3: + id_expe += 'nbr_obs_{}_'.format(config_args.rl_script_args.nbr_obs) + + id_expe += 'nbr_actions_{}_'.format(len(config_args.rl_script_args.action_space)) + + for a in config_args.rl_script_args.action_space: + id_expe += a + '_' + + id_expe += 'shape_reward_beta_{}_'.format(config_args.rl_script_args.reward_shaping_beta) + \ + 'seed_{}'.format(config_args.rl_script_args.seed) + + model_path = os.path.join(config_args.rl_script_args.saving_path_model, id_expe) + if not os.path.exists(model_path): + os.makedirs(model_path) + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + if os.path.exists(config_args.rl_script_args.saving_path_model + "/" + id_expe + "/last/model.checkpoint"): + # if model.checkpoint already exists that means update =! 0 and we reload the weights of the fine-tuned model + lm_server.update([None for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + [[None] for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + id_expe=id_expe, load_fine_tuned_version=True, + saving_path_model=config_args.rl_script_args.saving_path_model) + + else: + # in the case the model is not pretrained if necessary loads embedding + os.makedirs(os.path.join(model_path, 'last')) + os.makedirs(os.path.join(model_path, 'backup')) + if not config_args.lamorel_args.llm_args.pretrained and config_args.rl_script_args.load_embedding: + lm_server.update([None for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + [[None] for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + load_embedding=True, id_expe=id_expe, + llm_path=config_args.lamorel_args.llm_args.model_path, + saving_path_model=config_args.rl_script_args.saving_path_model, + lr=config_args.rl_script_args.lr, + beta1=config_args.rl_script_args.beta1, + beta2=config_args.rl_script_args.beta2, + adam_eps=config_args.rl_script_args.adam_eps) + else: + # save a first version of the llm that will after the first update become the first backup + lm_server.update([None for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + [[None] for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + save_first_last=True, id_expe=id_expe, + saving_path_model=config_args.rl_script_args.saving_path_model, + lr=config_args.rl_script_args.lr, + beta1=config_args.rl_script_args.beta1, + beta2=config_args.rl_script_args.beta2, + adam_eps=config_args.rl_script_args.adam_eps) + + algo = babyai.rl.PPOAlgoLlm(envs, lm_server, lamorel_scoring_module_key, + config_args.lamorel_args.distributed_setup_args.n_llm_processes, + config_args.rl_script_args.frames_per_proc, + config_args.rl_script_args.discount, config_args.rl_script_args.lr, + config_args.rl_script_args.beta1, config_args.rl_script_args.beta2, + config_args.rl_script_args.gae_lambda, config_args.rl_script_args.entropy_coef, + config_args.rl_script_args.value_loss_coef, config_args.rl_script_args.max_grad_norm, + config_args.rl_script_args.adam_eps, config_args.rl_script_args.clip_eps, + config_args.rl_script_args.epochs, config_args.rl_script_args.batch_size, + reshape_reward, + config_args.rl_script_args.name_experiment, + config_args.rl_script_args.saving_path_model, + config_args.rl_script_args.saving_path_logs, number_envs, subgoals, + config_args.rl_script_args.nbr_obs, id_expe, + config_args.rl_script_args.template_test) + else: + algo = DRRN_Agent(envs, subgoals, reshape_reward, config_args.rl_script_args.spm_path, max_steps=number_envs*4, + saving_path=config_args.rl_script_args.saving_path_model + "/" + id_expe, save_frequency=1) + run_agent(config_args.rl_script_args, algo, id_expe) + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + lm_server.close() + + +if __name__ == '__main__': + main() diff --git a/experiments/main_test.py b/experiments/main_test.py new file mode 100644 index 0000000..83de0f1 --- /dev/null +++ b/experiments/main_test.py @@ -0,0 +1,419 @@ +""" +This script run a simple agent in a BabyAI GoTo-Local environment. +""" +import os +import sys +import csv +import json +import logging + +import time +import numpy as np +import torch +import gym +import babyai.utils as utils +import hydra +import test_llm + +from babyai.paral_env_simple import ParallelEnv +from colorama import Fore +from lamorel import Caller, lamorel_init +from lamorel import BaseUpdater, BaseModuleFunction +from accelerate import Accelerator +from main import ValueModuleFn + +from agents.drrn.drrn import DRRN_Agent +from agents.random_agent.random_agent import Random_agent +from agents.bot.bot import BotAgent + +lamorel_init() +logger = logging.getLogger(__name__) +accelerator = Accelerator() + + +# TODO add the value of the true reward *20 who should receive the final reward? +def reward_function(subgoal_proba=None, reward=None, policy_value=None, llm_0=None): + if reward > 0: + return [20 * reward, 0] + else: + return [0, 0] + + +# TODO think about a correct value for the beta of the reward shaping part +def reward_function_shapped(subgoal_proba=None, reward=None, policy_value=None, llm_0=None): + if reward > 0: + return [20 * reward - np.log(subgoal_proba / policy_value), -np.log(subgoal_proba / policy_value)] + else: + return [-1 - np.log(subgoal_proba / policy_value), -1 - np.log(subgoal_proba / policy_value)] + + +"""dict_modifier_french = [{}, + { + 'clef': 'chaise', + 'balle': 'table', + 'boîte': 'voiture' + }, + { + 'rouge': 'vermilion', + 'verte': 'jade', + 'bleue': 'cyan', + 'violette': 'mauve', + 'jaune': 'dorée', + 'gris': 'argent' + }, + { + 'clef': 'dax', + 'balle': 'xolo', + 'boîte': 'afze' + }, + { + 'rouge': 'faze', + 'verte': 'jatu', + 'bleue': 'croh', + 'violette': 'vurst', + 'jaune': 'gakul', + 'grise': 'sil' + }, + { + 'clef': 'dax', + 'balle': 'xolo', + 'boîte': 'afze', + 'rouge': 'faze', + 'verte': 'jatu', + 'bleue': 'croh', + 'violette': 'vurst', + 'jaune': 'gakul', + 'grise': 'sil' + }] +dict_dict_modifier = {'english': dict_modifier_english, 'french': dict_modifier_french} +dict_modifier_name = ['no_modifications', 'other_name_same_categories', 'adj_synonym', 'no_meaning_nouns', + 'no_meaning_adj', 'no_meaning_words', 'important_words_suppress']""" + +dict_modifier_french = [{}, + { + 'clef': 'chaise', + 'balle': 'table', + 'boîte': 'voiture' + }, + { + 'rouge': 'vermilion', + 'verte': 'jade', + 'bleue': 'cyan', + 'violette': 'mauve', + 'jaune': 'dorée', + 'gris': 'argent' + }, + { + 'clef': 'dax', + 'balle': 'xolo', + 'boîte': 'afze' + }, + { + 'rouge': 'faze', + 'verte': 'jatu', + 'bleue': 'croh', + 'violette': 'vurst', + 'jaune': 'gakul', + 'grise': 'sil' + }, + { + 'clef': 'dax', + 'balle': 'xolo', + 'boîte': 'afze', + 'rouge': 'faze', + 'verte': 'jatu', + 'bleue': 'croh', + 'violette': 'vurst', + 'jaune': 'gakul', + 'grise': 'sil' + }, + {"But de l'agent": "Je veux que l'agent fasse"}, + {"But de l'agent": 'Tu dois faire'}] + +dict_modifier_english = [{}, + { + 'key': 'chair', + 'ball': 'table', + 'box': 'car' + }, + { + 'red': 'vermilion', + 'green': 'jade', + 'blue': 'cyan', + 'purple': 'violet', + 'yellow': 'golden', + 'grey': 'silver' + }, + { + 'key': 'dax', + 'ball': 'xolo', + 'box': 'afze' + }, + { + 'red': 'faze', + 'green': 'jatu', + 'blue': 'croh', + 'purple': 'vurst', + 'yellow': 'gakul', + 'grey': 'sil' + }, + { + 'key': 'dax', + 'ball': 'xolo', + 'box': 'afze', + 'red': 'faze', + 'green': 'jatu', + 'blue': 'croh', + 'purple': 'vurst', + 'yellow': 'gakul', + 'grey': 'sil' + }, + {'Goal of the agent': 'I would like the agent to'}, + {'Goal of the agent': 'You have to'}] + +dict_modifier_name = ['no_modification_test', 'other_name_same_categories', 'adj_synonym', 'no_meaning_nouns', + 'no_meaning_adj', 'no_meaning_words', 'change_intro_first_personne_speaker', + 'change_intro_first_personne_agent'] + +"""dict_modifier_english = [{}] +dict_modifier_french = [{}] +dict_modifier_name = ['no_modification_test']""" + +dict_dict_modifier = {'english': dict_modifier_english, 'french': dict_modifier_french} + + +class updater(BaseUpdater): + def perform_update(self, contexts, candidates, _current_batch_ids, **kwargs): + if not hasattr(self, "is_loaded"): + + if "im_learning" in kwargs: + self._llm_module.module._LLM_model.load_state_dict(torch.load(kwargs["saving_path_model"] + "/model.checkpoint")) + self.is_loaded = True + print("im") + else: + try: + self._llm_module.load_state_dict(torch.load(kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/last/model.checkpoint")) + self.is_loaded = True + print("Last") + except: + self._llm_module.load_state_dict(torch.load(kwargs["saving_path_model"] + + "/" + kwargs["id_expe"] + "/backup/model.checkpoint")) + self.is_loaded = True + print("Backup") + + +def run_agent(args, algo, saving_path_logs, id_expe): + if args.random_agent: + format_str = ("Language: {} | Name dict: {} | Episodes Done: {} | Reward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) |\ + Success Rate: {: .2f} |") + else: + format_str = ("Language: {} | Name dict: {} | Episodes Done: {} | Reward: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) |\ + Success Rate: {: .2f} | \nReshaped: {: .2f} +- {: .2f} (Min: {: .2f} Max: {: .2f}) | Bonus: {: .2f} +- {: .2f}\ + (Min: {: .2f} Max: {: .2f})") + + dm = dict_dict_modifier[args.language] + for d, d_name in zip(dm, dict_modifier_name): + + if args.modified_action_space: + d_name += '_' + for a in args.new_action_space: + d_name += a + '_' + d_name = d_name[:-1] + + if args.zero_shot: + d_name += '_zero_shot' + + if args.im_learning: + d_name += '_im' + + test_path = os.path.join(os.path.join(saving_path_logs, id_expe), 'test') + experiment_path = os.path.join(test_path, args.name_environment) + path_test_folder = os.path.join(experiment_path, 'return_per_episode') + + + if args.get_example_trajectories: + if d_name == 'no_modification_test': + nbr_frames = 0 + k = 0 + if args.bot: + # trajectories generated by the bot given in BabyAI + np_path = os.path.join(path_test_folder, 'bot_trajectories') + else: + # trajectories generated by the agent after its training + np_path = os.path.join(path_test_folder, 'trajectories') + + status_path = os.path.join(path_test_folder, 'status.json') + if os.path.exists(status_path): + with open(status_path, 'r') as src: + status = json.load(src) + else: + status = {'k': 0, + 'nbr_frames': 0} + + while status['nbr_frames'] < args.num_steps: + exps, logs = algo.generate_trajectories(d, args.language) + + np.save(np_path+'_prompts_{}'.format(status['k']), exps.prompts) + np.save(np_path+'_actions_{}'.format(status['k']), exps.actions) + # np.save(np_path+'_values_{}'.format(status['k']), exps.vals) + status['nbr_frames'] += logs['nbr_frames'] + status['k'] += 1 + + with open(status_path, 'w') as dst: + json.dump(status, dst) + else: + if args.im_learning: + exps, logs = algo.generate_trajectories(d, args.language, args.im_learning) + else: + exps, logs = algo.generate_trajectories(d, args.language) + + return_per_episode = utils.synthesize(logs["return_per_episode"]) + success_per_episode = utils.synthesize( + [1 if r > 0 else 0 for r in logs["return_per_episode"]]) + if not args.random_agent: + reshaped_return_per_episode = utils.synthesize(logs["reshaped_return_per_episode"]) + reshaped_return_bonus_per_episode = utils.synthesize(logs["reshaped_return_bonus_per_episode"]) + # num_frames_per_episode = utils.synthesize(logs["num_frames_per_episode"]) + + if args.random_agent: + data = [args.language, d_name, logs['episodes_done'], *return_per_episode.values(), + success_per_episode['mean']] + else: + data = [args.language, d_name, logs['episodes_done'], *return_per_episode.values(), + success_per_episode['mean'], + *reshaped_return_per_episode.values(), + *reshaped_return_bonus_per_episode.values()] + + logger.info(Fore.YELLOW + format_str.format(*data) + Fore.RESET) + np_path = os.path.join(path_test_folder, d_name) + np.save(np_path, np.array(logs["return_per_episode"])) + + + +# This will be overriden by lamorel's launcher if used +@hydra.main(config_path='config', config_name='config') +def main(config_args): + """name_env = config_args.rl_script_args.name_environment + for i in range(1000): + env = gym.make(name_env) + env.seed(int(i)) + obs, info = env.reset() + print(obs['mission'])""" + + # lm server + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + if config_args.rl_script_args.im_learning: + lm_server = Caller(config_args.lamorel_args, custom_updater_class=updater) + else: + lm_server = Caller(config_args.lamorel_args, custom_updater_class=updater, + custom_module_functions={'value': ValueModuleFn(config_args.lamorel_args.llm_args.model_type)}) + + id_expe = config_args.rl_script_args.name_experiment + \ + '_nbr_env_{}_'.format(config_args.rl_script_args.number_envs) + \ + '{}_'.format(config_args.rl_script_args.name_model) + \ + 'pretrained_{}_'.format(config_args.lamorel_args.llm_args.pretrained) + + if not config_args.lamorel_args.llm_args.pretrained: + id_expe += 'load_embedding_{}_'.format(config_args.rl_script_args.load_embedding) + \ + 'use_action_heads_{}_'.format(config_args.rl_script_args.use_action_heads) + + if config_args.rl_script_args.nbr_obs != 3: + id_expe += 'nbr_obs_{}_'.format(config_args.rl_script_args.nbr_obs) + + id_expe += 'nbr_actions_{}_'.format(len(config_args.rl_script_args.action_space)) + + # if config_args.rl_script_args.modified_action_space is not False we keep the same id_expe + # we just create a file with test_name containing the modified action in + # name_experiment/test/return_per_episode/test_name.npy + for a in config_args.rl_script_args.action_space: + id_expe += a + '_' + + id_expe += 'shape_reward_beta_{}_'.format(config_args.rl_script_args.reward_shaping_beta) + \ + 'seed_{}'.format(config_args.rl_script_args.seed) + + # Env + name_env = config_args.rl_script_args.name_environment + seed = config_args.rl_script_args.seed + envs = [] + subgoals = [] + number_envs = config_args.rl_script_args.number_envs + if config_args.rl_script_args.modified_action_space: + list_actions = [a.replace("_", " ") for a in config_args.rl_script_args.new_action_space] + else: + list_actions = [a.replace("_", " ") for a in config_args.rl_script_args.action_space] + + for i in range(number_envs): + env = gym.make(name_env) + env.seed( + int(1e9 * seed + i)) # to be sure to not have the same seeds as in the train (100h max ~ 100000 episodes done in our settings) + envs.append(env) + subgoals.append(list_actions) + envs = ParallelEnv(envs) + + if config_args.rl_script_args.reward_shaping_beta == 0: + reshape_reward = reward_function + else: + reshape_reward = reward_function_shapped # TODO ad the beta + + # create the folder for the agent + model_path = os.path.join(config_args.rl_script_args.saving_path_model, id_expe) + if not os.path.exists(model_path): + os.makedirs(model_path) + + log_path = os.path.join(config_args.rl_script_args.saving_path_logs, id_expe) + # create the folder for the tests results and return_per_episode + test_path = os.path.join(log_path, 'test') + if not os.path.exists(test_path): + os.makedirs(test_path) + + test_path_env = os.path.join(test_path, config_args.rl_script_args.name_environment) + if not os.path.exists(test_path_env): + os.makedirs(test_path_env) + os.makedirs(os.path.join(test_path_env, 'return_per_episode')) + + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + if not config_args.rl_script_args.zero_shot: + if config_args.rl_script_args.im_learning: + saving_path_model = config_args.rl_script_args.im_path + '_seed_{}' + saving_path_model = saving_path_model.format(config_args.rl_script_args.seed) + lm_server.update([None for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + [[None] for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + im_learning=True, saving_path_model=saving_path_model) + else: + lm_server.update([None for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + [[None] for _ in range(config_args.lamorel_args.distributed_setup_args.n_llm_processes)], + id_expe=id_expe, saving_path_model=config_args.rl_script_args.saving_path_model) + + algo = test_llm.BaseAlgo(envs, lm_server, config_args.rl_script_args.number_episodes, reshape_reward, + subgoals) + else: + if config_args.rl_script_args.random_agent: + algo = Random_agent(envs=envs, + nbr_envs=number_envs, + size_action_space=len(config_args.rl_script_args.action_space), + number_episodes=config_args.rl_script_args.number_episodes) + elif config_args.rl_script_args.bot: + algo = BotAgent(envs=envs, + subgoals=subgoals, + number_episodes=config_args.rl_script_args.number_episodes) + else: + if not config_args.rl_script_args.zero_shot: + algo = DRRN_Agent(envs, subgoals, reshape_reward, config_args.rl_script_args.spm_path, + max_steps=number_envs * 4, + number_epsiodes_test=config_args.rl_script_args.number_episodes, + saving_path=config_args.rl_script_args.saving_path_model + "/" + id_expe) + algo.load() + else: + algo = DRRN_Agent(envs, subgoals, reshape_reward, config_args.rl_script_args.spm_path, + max_steps=number_envs * 4, + number_epsiodes_test=config_args.rl_script_args.number_episodes, + saving_path=config_args.rl_script_args.saving_path_model + "/" + id_expe) + + run_agent(config_args.rl_script_args, algo, config_args.rl_script_args.saving_path_logs, id_expe) + if config_args.lamorel_args.distributed_setup_args.n_llm_processes > 0: + lm_server.close() + + +if __name__ == '__main__': + main() diff --git a/experiments/plotting_paper.py b/experiments/plotting_paper.py new file mode 100644 index 0000000..a313469 --- /dev/null +++ b/experiments/plotting_paper.py @@ -0,0 +1,758 @@ +import os +import re +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt + + +def load_log(dir_): + """Loads log from a directory and adds it to a list of dataframes.""" + df = pd.read_csv(os.path.join(dir_, 'log.csv'), + on_bad_lines='warn') + if not len(df): + print("empty df at {}".format(dir_)) + return + df['model'] = dir_ + return df + + +def load_logs(root): + dfs = [] + for root, dirs, files in os.walk(root, followlinks=True): + for file_ in files: + if file_ == 'log.csv': + dfs.append(load_log(root)) + return dfs + + +def plot_average_impl(df, regexps, labels, limits, colors, y_value='return_mean', window=10, agg='mean', + x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models, label, color in zip(regexps, model_groups, labels, colors): + # print("regex: {}".format(regex)) + print(models) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= limits] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pd.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + # df_max = df_re.groupby([x_value]).max()[y_value] + # df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + std = df_re.groupby([x_value]).std()[y_value] + # print(std.iloc[-1]) + df_max = values + std + df_min = values - std + + # pyplot.plot(df_agg.index, values, label='{} SE: {}'.format(label, round(values.sum()/len(values), 3))) + print(("{} last mean:{} last std: {}").format(label, values.iloc[-1], std.iloc[-1])) + plt.plot(df_agg.index, values, label=label, color=color) + # pyplot.plot(df_agg.index, values, label=label) + plt.fill_between(df_agg.index, df_max, df_min, alpha=0.25, color=color) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + print("{} sample efficiency: {}".format(label, values.sum() / len(values))) + + +def plot_average_impl_ax(df, regexps, ax, labels, limits, colors, y_value='return_mean', window=10, agg='mean', + x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models, label, color in zip(regexps, model_groups, labels, colors): + # print("regex: {}".format(regex)) + print(models) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= limits] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pd.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + # df_max = df_re.groupby([x_value]).max()[y_value] + # df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + std = df_re.groupby([x_value]).std()[y_value] + # print(std.iloc[-1]) + df_max = values + std + df_min = values - std + + # pyplot.plot(df_agg.index, values, label='{} SE: {}'.format(label, round(values.sum()/len(values), 3))) + print(("{} last mean:{} last std: {}").format(label, values.iloc[-1], std.iloc[-1])) + ax.plot(df_agg.index, values, label=label, color=color) + # pyplot.plot(df_agg.index, values, label=label) + ax.fill_between(df_agg.index, df_max, df_min, alpha=0.25, color=color) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + print("{} sample efficiency: {}".format(label, values.sum() / len(values))) + + +dfs = load_logs('/home/tcarta/DLP/storage') +df = pd.concat(dfs, sort=True) + + +def plot_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='return_mean', *args, **kwargs) + # plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}, bbox_to_anchor=(1.1, 1.1)) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Reward", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.grid() + # plt.figure(figsize=(8, 6), dpi=100) + plt.show() + + +def plot_success_rate_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='success_rate', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Success Rate", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.grid() + plt.show() + + +def plot_entropy_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='entropy', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Entropy", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_policy_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='policy_loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Policy Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_value_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='value_loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Value Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + +def plot_grad_norm_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='grad_norm', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Grad Norm", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + +# #######################MTRL############################################################## # +regexs = ['.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_mtrl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*MTRL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5', 'DRRN', 'Symbolic-PPO'] +# limits = 3500000 +limits = 1500000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:grey'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] +labels = ['FLAN-T5-large'] +# limits = 3500000 +limits = 1000000 +colors = ['tab:blue'] +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the input type ######################## # +# ####################### GoToRedBall env ######################## # + +regexs = ['.*drrn_gtrb_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTRB-nbr_actions-6-PPO-NoPre.*'] +labels = ['DRRN_3 actions', 'Symbolic-PPO_GTRB'] +limits = 400000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the pretrainning ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_False_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] + +# labels = ['Full pretrained & scoring', 'Full pretrained & action head', 'Not pretrained & action head', 'Pretrained embedding & scoring', 'Pretrained embedding & action head'] + +labels = ['GFLAN-T5', 'AFLAN-T5', 'NPAE-FLAN-T5', 'NPA-FLAN-T5', 'NPE-FLAN-T5'] +limits = 500000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple', 'tab:grey'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the size of the prompt ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_obs_1_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_obs_6_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_obs_9_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] + +# labels = ['Full pretrained & scoring', 'Full pretrained & action head', 'Not pretrained & action head', 'Pretrained embedding & scoring', 'Pretrained embedding & action head'] + +labels = ['1 observation', '3 observations', '6 observations', '9 observations'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the size of the LLM ######################## # +# ####################### GoToLocation env ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5xl_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-xl', 'GFLAN-T5-large', 'GFLAN-T5-small', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple', 'tab:grey', 'tab:pink'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5xl_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] +labels = ['FLAN-T5-xl', 'FLAN-T5-large', 'FLAN-T5-small'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) +# plot_grad_norm_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the number of actions ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(12.5, 10)) + +# ####################### 3 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*GTL-nbr_actions-3-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax0, labels, limits, colors, y_value='success_rate') +ax0.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax0.set_xlabel("Frames", fontsize=15) + +ax0.set_title("Restricted", fontsize=15) +ax0.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax0.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax0.grid() + +# ####################### 6 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax1, labels, limits, colors, y_value='success_rate') +ax1.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax1.set_xlabel("Frames", fontsize=15) + +ax1.set_title("Canonical", fontsize=15) +ax1.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax1.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax1.grid() + +# ####################### 9 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*GTL-nbr_actions-9-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax2, labels, limits, colors, y_value='success_rate') +ax2.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax2.set_xlabel("Frames", fontsize=15) + +ax2.set_title("Augmented", fontsize=15) +ax2.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax2.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax2.grid() + +# ####################### LLM_mixt ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*'] +labels = ['GFLAN-T5-large 3 actions', 'GFLAN-T5-large 6 actions', 'GFLAN-T5-large 9 actions', + 'NPAE-FLAN-T5-large 3 actions', 'NPAE-FLAN-T5-large 6 actions', 'NPAE-FLAN-T5-large 9 actions'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:grey', 'tab:purple', 'tab:pink'] + +plot_average_impl_ax(df, regexs, ax3, labels, limits, colors, y_value='success_rate') +ax3.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax3.set_xlabel("Frames", fontsize=15) + +ax3.set_title("Comparison of the 3 action spaces", fontsize=15) +ax3.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax3.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax3.grid() + +fig.suptitle('Average Success Rate', fontsize=15) +fig.tight_layout() +plt.show() + +# ####################### Performance function of the number of distractors ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(12.5, 10)) + +# ####################### 4 distractors ######################## # +regexs = ['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_distractor_4_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL4-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax0, labels, limits, colors, y_value='success_rate') +ax0.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax0.set_xlabel("Frames", fontsize=15) + +ax0.set_title("4 distractors", fontsize=15) +ax0.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax0.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax0.grid() + + +# ####################### 8 distractors ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax1, labels, limits, colors, y_value='success_rate') +ax1.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax1.set_xlabel("Frames", fontsize=15) + +ax1.set_title("8 distractors", fontsize=15) +ax1.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax1.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax1.grid() + +# ####################### 16 distractors ######################## # +regexs = ['.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_distractor_16_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL16-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_average_impl_ax(df, regexs, ax2, labels, limits, colors, y_value='success_rate') +ax2.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax2.set_xlabel("Frames", fontsize=15) + +ax2.set_title("16 distractors", fontsize=15) +ax2.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax2.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax2.grid() + +# ####################### Mixt ######################## # +regexs = ['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] + +labels = ['GFLAN-T5-large 4 distractors', 'GFLAN-T5-large 8 distractors', 'GFLAN-T5-large 16 distractors', + 'NPAE-FLAN-T5-large 4 distractors', 'NPAE-FLAN-T5-large 8 distractors', 'NPAE-FLAN-T5-large 16 distractors'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:grey', 'tab:green', 'tab:purple', 'tab:pink'] + +plot_average_impl_ax(df, regexs, ax3, labels, limits, colors, y_value='success_rate') +ax3.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) +ax3.set_xlabel("Frames", fontsize=15) + +ax3.set_title("Comparison for 3 number of distractors", fontsize=15) +ax3.set_xticks(np.arange(stop=400001, step=50000), fontsize=10) +ax3.set_yticks(np.arange(start=0.2, stop=1, step=0.1), fontsize=10) +ax3.grid() + +fig.suptitle('Average Success Rate', fontsize=15) +fig.tight_layout() +plt.show() + +# ####################### Distribution shift study 6 actions ######################## # +# ############################## MixtTrainLocal ##################################### # +# ####################### LLM_large ######################## # + +name_file = ['llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + +nbr_test_prompts = 11 +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] + +fig, ax = plt.subplots(nrows=4, ncols=3, figsize=(15.6, 16)) + +columns_names = ['{}'.format(i) for i in range(len(actions)*nbr_test_prompts)] + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(nbr_test_prompts): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+6*j].values +distrib_large_2.iloc[:len_data_frame, i+6*j].values ) + ax[j//3][j % 3].plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + ax[j//3][j % 3].legend() + ax[j//3][j % 3].set_xlabel("updates") + ax[j//3][j % 3].set_ylabel("probability") + ax[j//3][j % 3].set_title('Prompt {}'.format(j)) + +fig.suptitle('Policy evolution', y=0.995, fontsize=15) +fig.tight_layout() +plt.show() + +# ####################### Distribution shift study 6 actions ######################## # +# ############################## GoToLocal ##################################### # + +# ####################### LLM_small ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + + + +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] +columns_names = ['{}'.format(i) for i in range(len(actions)*2)] # 6 actions 2 test prompts + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(2): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+len(actions)*j].values +distrib_large_2.iloc[:len_data_frame, i+len(actions)*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + +# ####################### LLM_large ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + + + +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] +columns_names = ['{}'.format(i) for i in range(len(actions)*2)] # 6 actions 2 test prompts + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(2): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+len(actions)*j].values +distrib_large_2.iloc[:len_data_frame, i+len(actions)*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + + +# ####################### Distribution shift study 9 actions ######################## # +# ############################## GoToLocal ##################################### # + + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0_seed_2'] + +nbr_test_prompts = 2 +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle", "sleep", "do_nothing", "think"] +columns_names = ['{}'.format(i) for i in range(len(actions)*nbr_test_prompts)] + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(nbr_test_prompts): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+6*j].values +distrib_large_2.iloc[:len_data_frame, i+6*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + +# ====================================================================================================================== +# ======================================================REMOVED========================================================= +# ====================================================================================================================== + +# ####################### Performance function of the number of rooms ######################## # +# ####################### LLM_large ######################## # +# ####################### 1 room ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large 1 room', 'Classic A2C 1 room'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### 2 rooms ######################## # +regexs = ['.*llm_gtm_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTM-PPO-NoPre.*'] +labels = ['FLAN-T5-large 2 rooms', 'Classic A2C 2 rooms'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### 4 rooms ######################## # +regexs = ['.*llm_gtlarge_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTLarge-PPO-NoPre.*'] +labels = ['FLAN-T5-large 4 rooms', 'Classic A2C 4 rooms'] +limits = 400000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### Mixt ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtm_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtlarge_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*'] +labels = ['FLAN-T5-large 1 room', 'FLAN-T5-large 2 rooms', 'FLAN-T5-large 4 rooms'] +limits = 200000 +colors = ['tab:blue', 'tab:orange', 'tab:grey'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the type of reward ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large', 'FLAN-T5-large-simple-reward', 'Classic-A2C'] +limits = 200000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*'] +labels = ['FLAN-T5-large', 'FLAN-T5-large-simple-reward', 'Classic-A2C'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) +# plot_entropy_average(df, regexs, labels, limits, colors) + +# ####################### Ablation: pretraining of the LLM large ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large-simple-reward', 'FLAN-T5-large-untrained', 'Classic-A2C'] +limits = 250000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) + + + + +# ####################### Distribution shift study 3 actions ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed_2', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_3_shape_reward_beta_0_seed_2'] + +legend = ['T5_large_1', + 'T5_large_2', + 'T5_small_1', + 'T5_small_2' + ] + +columns_names=['{}'.format(i) for i in range(3*6)] +indices = np.arange(3) +actions = ["turn left", "turn right", "go forward"] +width = 0.1 +for i in range(len(name_file)): + for j in range(4): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][:3], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][12:15], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions) + plt.legend() + plt.title(legend[i]) + plt.show()""" + +# ####################### Distribution shift study 3 actions untrained ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed_2'] + +legend = ['T5_large_untrained_1', + 'T5_untrained_large_2'] + +columns_names=['{}'.format(i) for i in range(3*6)] +indices = np.arange(3) +actions = ["turn left", "turn right", "go forward"] +width = 0.1 +for i in range(len(name_file)): + for j in range(4): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][:3], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][3:], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions) + plt.legend() + plt.title(legend[i]) + plt.show()""" + +# ####################### Distribution shift study 9 actions ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_9_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_9_shape_reward_beta_0_seed_2', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_9_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_9_shape_reward_beta_0_seed_2'] + +legend = ['T5_small_1', + 'T5_small_2', + 'T5_large_1', + 'T5_large_2'] + +columns_names=['{}'.format(i) for i in range(9*6)] +indices = np.arange(9) +actions = ["turn left", "turn right", "go forward", "eat", "dance", "sleep", "do nothing", "cut", "think"] +width = 0.1 +for i in range(len(name_file)): + for j in range(2): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.05+0.1*j, distrib_large.iloc[j][:9], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][9:], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions, rotation=25) + plt.legend() + plt.title(legend[i]) + plt.show()""" \ No newline at end of file diff --git a/experiments/plotting_results.py b/experiments/plotting_results.py new file mode 100644 index 0000000..1835225 --- /dev/null +++ b/experiments/plotting_results.py @@ -0,0 +1,730 @@ +import os +import re +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt + + +def load_log(dir_): + """Loads log from a directory and adds it to a list of dataframes.""" + df = pd.read_csv(os.path.join(dir_, 'log.csv'), + on_bad_lines='warn') + if not len(df): + print("empty df at {}".format(dir_)) + return + df['model'] = dir_ + return df + + +def load_logs(root): + dfs = [] + for root, dirs, files in os.walk(root, followlinks=True): + for file_ in files: + if file_ == 'log.csv': + dfs.append(load_log(root)) + return dfs + + +def plot_average_impl(df, regexps, labels, limits, colors, y_value='return_mean', window=10, agg='mean', + x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + for regex, models, label, color in zip(regexps, model_groups, labels, colors): + # print("regex: {}".format(regex)) + print(models) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= limits] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].rolling(window).mean() + parts.append(df_model) + df_re = pd.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + # df_max = df_re.groupby([x_value]).max()[y_value] + # df_min = df_re.groupby([x_value]).min()[y_value] + values = df_agg[y_value] + std = df_re.groupby([x_value]).std()[y_value] + # print(std.iloc[-1]) + df_max = values + std + df_min = values - std + + # pyplot.plot(df_agg.index, values, label='{} SE: {}'.format(label, round(values.sum()/len(values), 3))) + print(("{} last mean:{} last std: {}").format(label, values.iloc[-1], std.iloc[-1])) + plt.plot(df_agg.index, values, label=label, color=color) + # pyplot.plot(df_agg.index, values, label=label) + plt.fill_between(df_agg.index, df_max, df_min, alpha=0.25, color=color) + print(regex, median_progress, mean_duration / 86400.0, values.iloc[-1]) + print("{} sample efficiency: {}".format(label, values.sum() / len(values))) + +def plot_se(df, regexps, limits, y_value='return_mean', x_value='frames'): + """Plot averages over groups of runs defined by regular expressions.""" + df = df.dropna(subset=[y_value]) + unique_models = df['model'].unique() + model_groups = [[m for m in unique_models if re.match(regex, m)] + for regex in regexps] + + SE = [] + for regex, models in zip(regexps, model_groups): + # print("regex: {}".format(regex)) + print(models) + df_re = df[df['model'].isin(models)] + # the average doesn't make sense if most models are not included, + # so we only for the period of training that has been done by all models + num_frames_per_model = [df_model[x_value].max() + for _, df_model in df_re.groupby('model')] + for _, df_model in df_re.groupby('model'): + print(df_model[x_value].max()) + median_progress = sorted(num_frames_per_model)[(len(num_frames_per_model) - 1) // 2] + mean_duration = np.mean([ + df_model['duration'].max() for _, df_model in df_re.groupby('model')]) + df_re = df_re[df_re[x_value] <= limits] + + # smooth + parts = [] + for _, df_model in df_re.groupby('model'): + df_model = df_model.copy() + df_model.loc[:, y_value] = df_model[y_value].mean() + parts.append(df_model) + df_re = pd.concat(parts) + df_agg = df_re.groupby([x_value]).mean() + values = df_agg[y_value] + SE.append(round(values.sum()/len(values), 3)) + + return np.array(SE) + + +dfs = load_logs('/home/tcarta/DLP/storage') +df = pd.concat(dfs, sort=True) + + +def plot_SE_function_of_variable(df, regexs, limits, **kwargs): + """Plot the Sample Efficiency against a variable (nbr distractors, size action space) + The final Success Rate is added""" + plt.figure(figsize=(7.5, 5)) + + for color, label, marker, rgs in zip(kwargs['colors'], kwargs['labels'], kwargs['markers'], regexs): + SE = plot_se(df, rgs, limits, y_value='success_rate') + plt.plot(kwargs['x_range'], SE, color=color, label=label, marker=marker) + + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel(kwargs['xlabel'], fontsize=15) + plt.ylabel("Sample Efficiency") + plt.title("Sample efficiency depending of {}".format(kwargs['xlabel']), fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + +def plot_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='return_mean', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Reward", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.grid() + # plt.figure(figsize=(8, 6), dpi=100) + plt.show() + + +def plot_success_rate_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='success_rate', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Success Rate", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.grid() + plt.show() + + +def plot_entropy_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='entropy', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Entropy", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_policy_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='policy_loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Policy Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_value_loss_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='value_loss', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Value Loss", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + +def plot_grad_norm_average(*args, **kwargs): + """Plot averages over groups of runs defined by regular expressions.""" + plt.figure(figsize=(7.5, 5)) + plot_average_impl(y_value='grad_norm', *args, **kwargs) + plt.legend(handlelength=0.5, handleheight=0.5, prop={"size": 11}) + plt.xlabel("Frames", fontsize=15) + + plt.title("Average Grad Norm", fontsize=15) + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + plt.show() + + + +# #######################MTRL############################################################## # +regexs = ['.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_mtrl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*MTRL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5', 'DRRN', 'Symbolic-PPO'] +# limits = 3500000 +limits = 1500000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:grey'] +plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] +labels = ['FLAN-T5-large'] +# limits = 3500000 +limits = 1000000 +colors = ['tab:blue'] +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the input type ######################## # +# ####################### GoToRedBall env ######################## # + +regexs = ['.*drrn_gtrb_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTRB-nbr_actions-6-PPO-NoPre.*'] +labels = ['DRRN_3 actions', 'Symbolic-PPO_GTRB'] +limits = 400000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the pretrainning ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_False_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] + +# labels = ['Full pretrained & scoring', 'Full pretrained & action head', 'Not pretrained & action head', 'Pretrained embedding & scoring', 'Pretrained embedding & action head'] + +labels = ['GFLAN-T5', 'AFLAN-T5', 'NPAE-FLAN-T5', 'NPA-FLAN-T5', 'NPE-FLAN-T5'] +limits = 500000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple', 'tab:grey'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) + + +# ####################### Performance function of the size of the LLM ######################## # +# ####################### GoToLocation env ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5xl_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-xl', 'GFLAN-T5-large', 'GFLAN-T5-small', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple', 'tab:grey', 'tab:pink'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5xl_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] +labels = ['FLAN-T5-xl', 'FLAN-T5-large', 'FLAN-T5-small'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_entropy_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) +# plot_grad_norm_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the type of the LLM's training data ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_GPT2large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'] +labels = ['FLAN-T5-large', 'GPT2-large'] +limits = 400000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) +# plot_entropy_average(df, regexs, labels, limits, colors) + + +# ####################### Performance function of the number of actions ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +# ####################### 3 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*GTL-nbr_actions-3-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### 6 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### 9 actions ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*GTL-nbr_actions-9-PPO-NoPre.*'] +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### LLM_mixt ######################## # + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*', + '.*GTL-nbr_actions-3-PPO-NoPre.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*', + '.*GTL-nbr_actions-9-PPO-NoPre.*'] +labels = ['GFLAN-T5-large 3 actions', 'GFLAN-T5-large 6 actions', 'GFLAN-T5-large 9 actions', + 'Symbolic-PPO 3 actions', 'Symbolic-PPO 6 actions', 'Symbolic-PPO 9 actions'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:grey', 'tab:purple', 'tab:pink'] +# plot_average(df, regexs, labels, limits, colors) +plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### SE ######################## # + +regexs = [['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0*'], + ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*'], + ['.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_3_turn_left_turn_right_go_forward_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0.*'], + ['.*GTL-nbr_actions-3-PPO-NoPre.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*', + '.*GTL-nbr_actions-9-PPO-NoPre.*']] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +markers = ['o', 'v', '^', 'P'] +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_SE_function_of_variable(df, regexs, limits, xlabel='size action space', x_range=np.array([3, 6, 9]), labels=labels, colors=colors, markers=markers) + +# ####################### Performance function of the number of distractors ######################## # +# ####################### GoToLocation env ######################## # +# ####################### LLM_large ######################## # + +# ####################### 4 distractors ######################## # +regexs = ['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_distractor_4_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL4-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### 8 distractors ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### 16 distractors ######################## # +regexs = ['.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_distractor_16_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL16-nbr_actions-6-PPO-NoPre.*'] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] +# plot_average(df, regexs, labels, limits, colors) +# plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### Mixt ######################## # +regexs = ['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*GTL4-nbr_actions-6-PPO-NoPre.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*', + '.*GTL16-nbr_actions-6-PPO-NoPre.*'] +labels = ['GFLAN-T5-large 4 distractors', 'GFLAN-T5-large 8 distractors', 'GFLAN-T5-large 16 distractors', + 'Symbolic-PPO 4 distractors', 'Symbolic-PPO 8 distractors', 'Symbolic-PPO 16 distractors'] +limits = 400000 +colors = ['tab:blue', 'tab:orange', 'tab:grey', 'tab:green', 'tab:purple', 'tab:pink'] +plot_success_rate_average(df, regexs, labels, limits, colors) + +# ####################### SE ######################## # + +regexs = [['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'], + ['.*llm_gtl_distractor_4_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*llm_gtl_distractor_16_nbr_env_32_Flan_T5large_pretrained_False_load_embedding_True_use_action_heads_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'], + ['.*drrn_gtl_distractor_4_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*', + '.*drrn_gtl_distractor_16_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*'], + ['.*GTL4-nbr_actions-6-PPO-NoPre.*', + '.*GTL-nbr_actions-6-PPO-NoPre.*', + '.*GTL16-nbr_actions-6-PPO-NoPre.*']] + +labels = ['GFLAN-T5-large', 'NPAE-FLAN-T5-large', 'DRRN', 'Symbolic-PPO'] +limits = 400000 +markers = ['o', 'v', '^', 'P'] +colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:purple'] + +plot_SE_function_of_variable(df, regexs, limits, xlabel='number of distractors', x_range=np.array([4, 8, 16]), labels=labels, colors=colors, markers=markers) + +# ####################### Distribution shift study 6 actions ######################## # +# ############################## MixtTrainLocal ##################################### # +# ####################### LLM_large ######################## # + +name_file = ['llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + +nbr_test_prompts = 11 +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] + +columns_names = ['{}'.format(i) for i in range(len(actions)*nbr_test_prompts)] + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(nbr_test_prompts): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+6*j].values +distrib_large_2.iloc[:len_data_frame, i+6*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show() + +# ####################### Distribution shift study 6 actions ######################## # +# ############################## GoToLocal ##################################### # + +# ####################### LLM_small ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5small_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + + + +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] +columns_names = ['{}'.format(i) for i in range(len(actions)*2)] # 6 actions 2 test prompts + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(2): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+len(actions)*j].values +distrib_large_2.iloc[:len_data_frame, i+len(actions)*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + +# ####################### LLM_large ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_2'] + + + +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle"] +columns_names = ['{}'.format(i) for i in range(len(actions)*2)] # 6 actions 2 test prompts + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(2): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+len(actions)*j].values +distrib_large_2.iloc[:len_data_frame, i+len(actions)*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + + +# ####################### Distribution shift study 9 actions ######################## # +# ############################## GoToLocal ##################################### # + + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0_seed_1', +'llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_9_turn_left_turn_right_go_forward_pick_up_drop_toggle_sleep_do_nothing_think_shape_reward_beta_0_seed_2'] + +nbr_test_prompts = 2 +actions = ["turn left", "turn right", "go forward", "pick up", "drop", "toggle", "sleep", "do_nothing", "think"] +columns_names = ['{}'.format(i) for i in range(len(actions)*nbr_test_prompts)] + +distrib_large_1 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[0]+"/distrib.csv", names=columns_names) +distrib_large_2 = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[1]+"/distrib.csv", names=columns_names) + + +len_data_frame = min(distrib_large_1.shape[0], distrib_large_2.shape[0]) + +for j in range(nbr_test_prompts): + for i in range(len(actions)): + distrib_large_action_i = 0.5*(distrib_large_1.iloc[:len_data_frame, i+6*j].values +distrib_large_2.iloc[:len_data_frame, i+6*j].values ) + plt.plot(np.arange(len_data_frame), distrib_large_action_i, label=actions[i]) + plt.legend() + plt.xlabel("updates") + plt.ylabel("probability") + plt.title('Prompt {}'.format(j)) + plt.show()""" + +# ====================================================================================================================== +# ======================================================REMOVED========================================================= +# ====================================================================================================================== + +# ####################### Performance function of the number of rooms ######################## # +# ####################### LLM_large ######################## # +# ####################### 1 room ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large 1 room', 'Classic A2C 1 room'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### 2 rooms ######################## # +regexs = ['.*llm_gtm_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTM-PPO-NoPre.*'] +labels = ['FLAN-T5-large 2 rooms', 'Classic A2C 2 rooms'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### 4 rooms ######################## # +regexs = ['.*llm_gtlarge_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTLarge-PPO-NoPre.*'] +labels = ['FLAN-T5-large 4 rooms', 'Classic A2C 4 rooms'] +limits = 400000 +colors = ['tab:blue', 'tab:orange'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### Mixt ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtm_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtlarge_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*'] +labels = ['FLAN-T5-large 1 room', 'FLAN-T5-large 2 rooms', 'FLAN-T5-large 4 rooms'] +limits = 200000 +colors = ['tab:blue', 'tab:orange', 'tab:grey'] +# plot_average(df, regexs, labels, limits, colors) + +# ####################### Performance function of the type of reward ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large', 'FLAN-T5-large-simple-reward', 'Classic-A2C'] +limits = 200000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_average(df, regexs, labels, limits, colors) + +regexs = ['.*llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*'] +labels = ['FLAN-T5-large', 'FLAN-T5-large-simple-reward', 'Classic-A2C'] +limits = 200000 +colors = ['tab:blue', 'tab:orange'] +# plot_loss_average(df, regexs, labels, limits, colors) +# plot_policy_loss_average(df, regexs, labels, limits, colors) +# plot_value_loss_average(df, regexs, labels, limits, colors) +# plot_entropy_average(df, regexs, labels, limits, colors) + +# ####################### Ablation: pretraining of the LLM large ######################## # +# ####################### LLM_large ######################## # +regexs = ['.*llm_gtl_simple_env_reward_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed.*', + '.*GTL-PPO-NoPre.*'] +labels = ['FLAN-T5-large-simple-reward', 'FLAN-T5-large-untrained', 'Classic-A2C'] +limits = 250000 +colors = ['tab:blue', 'tab:orange', 'tab:green'] +# plot_average(df, regexs, labels, limits, colors) +# plot_loss_average(df, regexs, labels, limits, colors) + + + + +# ####################### Distribution shift study 3 actions ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_3_shape_reward_beta_0_seed_2', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_3_shape_reward_beta_0_seed_2'] + +legend = ['T5_large_1', + 'T5_large_2', + 'T5_small_1', + 'T5_small_2' + ] + +columns_names=['{}'.format(i) for i in range(3*6)] +indices = np.arange(3) +actions = ["turn left", "turn right", "go forward"] +width = 0.1 +for i in range(len(name_file)): + for j in range(4): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][:3], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][12:15], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions) + plt.legend() + plt.title(legend[i]) + plt.show()""" + +# ####################### Distribution shift study 3 actions untrained ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_untrained_nbr_actions_3_shape_reward_beta_0_seed_2'] + +legend = ['T5_large_untrained_1', + 'T5_untrained_large_2'] + +columns_names=['{}'.format(i) for i in range(3*6)] +indices = np.arange(3) +actions = ["turn left", "turn right", "go forward"] +width = 0.1 +for i in range(len(name_file)): + for j in range(4): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][:3], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][3:], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions) + plt.legend() + plt.title(legend[i]) + plt.show()""" + +# ####################### Distribution shift study 9 actions ######################## # + +"""name_file = ['llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_9_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5small_nbr_actions_9_shape_reward_beta_0_seed_2', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_9_shape_reward_beta_0_seed_1', + 'llm_gtl_nbr_env_32_Flan_T5large_nbr_actions_9_shape_reward_beta_0_seed_2'] + +legend = ['T5_small_1', + 'T5_small_2', + 'T5_large_1', + 'T5_large_2'] + +columns_names=['{}'.format(i) for i in range(9*6)] +indices = np.arange(9) +actions = ["turn left", "turn right", "go forward", "eat", "dance", "sleep", "do nothing", "cut", "think"] +width = 0.1 +for i in range(len(name_file)): + for j in range(2): + distrib_large = pd.read_csv("/home/tcarta/DLP/storage/logs/"+name_file[i]+"/distrib.csv", names=columns_names) + # p = plt.bar(indices-0.05+0.1*j, distrib_large.iloc[j][:9], width=width, alpha=0.5, label="update: {}".format(j*50)) + p = plt.bar(indices-0.15+0.1*j, distrib_large.iloc[j][9:], width=width, alpha=0.5, label="update: {}".format(j*50)) + plt.xticks(indices, actions, rotation=25) + plt.legend() + plt.title(legend[i]) + plt.show()""" \ No newline at end of file diff --git a/experiments/slurm/accelerate_launcher.sh b/experiments/slurm/accelerate_launcher.sh new file mode 100644 index 0000000..c3a6fcd --- /dev/null +++ b/experiments/slurm/accelerate_launcher.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +MASTER_ADDR=$(scontrol show hostnames $SLURM_JOB_NODELIST | sed -n "1p") +echo "running on node $(hostname)" +accelerate launch --machine_rank $SLURM_PROCID --main_process_ip $MASTER_ADDR --main_process_port 13370 $* \ No newline at end of file diff --git a/experiments/slurm/launcher.sh b/experiments/slurm/launcher.sh new file mode 100644 index 0000000..e26e0c1 --- /dev/null +++ b/experiments/slurm/launcher.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +MASTER_ADDR=$(scontrol show hostnames $SLURM_JOB_NODELIST | sed -n "1p") +echo "running process ${SLURM_PROCID} on node $(hostname) with master ${MASTER_ADDR}" +export "DLP_STORAGE"='storage' +python -m lamorel_launcher.launch lamorel_args.accelerate_args.machine_rank=$SLURM_PROCID lamorel_args.accelerate_args.main_process_ip=$MASTER_ADDR $* \ No newline at end of file diff --git a/experiments/test_llm.py b/experiments/test_llm.py new file mode 100644 index 0000000..ebc4e96 --- /dev/null +++ b/experiments/test_llm.py @@ -0,0 +1,344 @@ +from abc import ABC, abstractmethod +import torch +import numpy as np +from tqdm import tqdm +from collections import deque +import torch.nn.functional as F + +from babyai.rl.utils import DictList, ParallelEnv +from babyai.rl.utils.supervised_losses import ExtraInfoCollector +import babyai.utils +from torch.distributions import Categorical +import logging + +logger = logging.getLogger(__name__) + + +class BaseAlgo(ABC): + """The base class for RL algorithms.""" + + def __init__(self, envs, lm_server, number_epsiodes, reshape_reward, subgoals): + """ + Initializes a `BaseAlgo` instance. + Parameters: + ---------- + envs : list + a list of environments that will be run in parallel + llm : torch.Module + the language model + num_frames_per_proc : int + the number of frames collected by every process for an update + discount : float + the discount for future rewards + lr : float + the learning rate for optimizers + gae_lambda : float + the lambda coefficient in the GAE formula + ([Schulman et al., 2015](https://arxiv.org/abs/1506.02438)) + entropy_coef : float + the weight of the entropy cost in the final objective + value_loss_coef : float + the weight of the value loss in the final objective + max_grad_norm : float + gradient will be clipped to be at most this value + reshape_reward : function + a function that shapes the reward, takes an + (observation, action, reward, done) tuple as an input + """ + # Store parameters + + self.env = envs + self.lm_server = lm_server + self.reshape_reward = reshape_reward + + # Store helpers values + + self.device = torch.device("cpu") + self.number_episodes = number_epsiodes + self.num_procs = len(envs) + + # Initialize experience values + + self.obs_queue = [deque([], maxlen=3) for _ in range(self.num_procs)] + self.acts_queue = [deque([], maxlen=2) for _ in range(self.num_procs)] + self.subgoals = subgoals + + logging.info("resetting environment") + self.obs, self.infos = self.env.reset() + logging.info("reset environment") + for i in range(self.num_procs): + self.obs_queue[i].append(self.infos[i]['descriptions']) + + self.mask = torch.ones(self.num_procs, device=self.device) + + self.rewards = [] + self.rewards_bonus = [] + + self.prompts = [] + self.images = [] + self.actions = [] + self.vals = [] # values + # Initialize log values + + self.log_episode_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return = torch.zeros(self.num_procs, device=self.device) + self.log_episode_reshaped_return_bonus = torch.zeros(self.num_procs, device=self.device) + self.log_episode_num_frames = torch.zeros(self.num_procs, device=self.device) + + self.log_done_counter = 0 + self.log_return = [0] * self.num_procs + self.log_reshaped_return = [0] * self.num_procs + self.log_reshaped_return_bonus = [0] * self.num_procs + self.log_num_frames = [0] * self.num_procs + + + def generate_prompt_english(self, goal, subgoals, deque_obs, deque_actions): + + ldo = len(deque_obs) + lda = len(deque_actions) + + head_prompt = "Possible action of the agent:" + for sg in subgoals: + head_prompt += " {},".format(sg) + head_prompt = head_prompt[:-1] + + g = " \n Goal of the agent: {}".format(goal) + obs = "" + for i in range(ldo): + obs += " \n Observation {}: ".format(i) + for d_obs in deque_obs[i]: + obs += "{}, ".format(d_obs) + obs += "\n Action {}: ".format(i) + if i < lda: + obs += "{}".format(deque_actions[i]) + return head_prompt + g + obs + + def generate_prompt_french(self, goal, subgoals, deque_obs, deque_actions): + + ldo = len(deque_obs) + lda = len(deque_actions) + head_prompt = "Actions possibles pour l'agent:" + for sg in subgoals: + head_prompt += " {},".format(sg) + head_prompt = head_prompt[:-1] + + # translate goal in French + dico_traduc_det = {"the": "la", + 'a': 'une'} + dico_traduc_names = {"box": "boîte", + "ball": "balle", + "key": "clef"} + dico_traduc_adjs = {'red': 'rouge', + 'green': 'verte', + 'blue': 'bleue', + 'purple': 'violette', + 'yellow': 'jaune', + 'grey': 'grise'} + + det = '' + name = '' + adj = '' + + for k in dico_traduc_det.keys(): + if k in goal: + det = dico_traduc_det[k] + for k in dico_traduc_names.keys(): + if k in goal: + name = dico_traduc_names[k] + for k in dico_traduc_adjs.keys(): + if k in goal: + adj = dico_traduc_adjs[k] + trad_goal = 'aller à ' + det + ' ' + name + ' ' + adj + + g = " \n But de l'agent: {}".format(trad_goal) + obs = "" + for i in range(ldo): + obs += " \n Observation {}: ".format(i) + for d_obs in deque_obs[i]: + obs += "{}, ".format(d_obs) + obs += "\n Action {}: ".format(i) + if i < lda: + obs += "{}".format(deque_actions[i]) + return head_prompt + g + obs + + @classmethod + def prompt_modifier(cls, prompt: str, dict_changes: dict) -> str: + """use a dictionary of equivalence to modify the prompt accordingly + ex: + prompt= 'green box red box', dict_changes={'box':'tree'} + promp_modifier(prompt, dict_changes)='green tree red tree' """ + + for key, value in dict_changes.items(): + prompt = prompt.replace(key, value) + return prompt + + def generate_trajectories(self, dict_modifier, language='english', im_learning=False, debug=False): + """Generates trajectories and calculates relevant metrics. + Runs several environments concurrently. + Returns + ------- + exps : DictList + Contains actions, rewards, advantages etc as attributes. + Each attribute, e.g. `exps.reward` has a shape + (self.num_frames_per_proc * num_envs, ...). k-th block + of consecutive `self.num_frames_per_proc` frames contains + data obtained from the k-th environment. Be careful not to mix + data from different environments! + logs : dict + Useful stats about the training process, including the average + reward, policy loss, value loss, etc. + """ + + if language == "english": + generate_prompt = self.generate_prompt_english + subgoals = self.subgoals + elif language == "french": + dico_traduc_act = {'turn left': "tourner à gauche", + "turn right": "tourner à droite", + "go forward": "aller tout droit", + "pick up": "attraper", + "drop": "lâcher", + "toggle": "basculer", + "eat": "manger", + "dance": "dancer", + "sleep": "dormir", + "do nothing": "ne rien faire", + "cut": "couper", + "think": "penser"} + generate_prompt = self.generate_prompt_french + subgoals = [[BaseAlgo.prompt_modifier(sg, dico_traduc_act) for sg in sgs] for sgs in self.subgoals] + + nbr_frames = self.num_procs + pbar = tqdm(range(self.number_episodes), ascii=" " * 9 + ">", ncols=100) + while self.log_done_counter < self.number_episodes: + # Do one agent-environment interaction + nbr_frames += self.num_procs + prompt = [BaseAlgo.prompt_modifier(generate_prompt(goal=self.obs[j]['mission'], subgoals=subgoals[j], + deque_obs=self.obs_queue[j], + deque_actions=self.acts_queue[j]), dict_modifier) + for j in range(self.num_procs)] + + + """ + self.images.append(self.env.render(mode="rgb_array"))""" + + if im_learning: + output = self.lm_server.score(contexts=prompt, candidates=subgoals) + scores = torch.stack(output) + else: + output = self.lm_server.score(contexts=prompt, candidates=subgoals, + additional_module_function_keys=['value']) + vals = torch.stack([_o["value"][0] for _o in output]).cpu().numpy() + scores = torch.stack([_o["__score"] for _o in output]) + scores_max = torch.max(scores, dim=1)[0] + + proba_dist = [] + for j in range(len(scores)): + # rescaled scores to avoid the flattening effect of softmax + # softmax([1e-9, 1e-100, 1e-9])~[0.33, 0.33, 0.33] + # softmax([1e-9, 1e-100, 1e-9]*1e9)~[0.4223, 0.1554, 0.4223] + if scores_max[j] < 1e-45: + proba_dist.append(F.softmax(torch.ones_like(scores[j]), dim=-1).unsqueeze(dim=0)) + else: + proba_dist.append(F.softmax(scores[j] / scores_max[j], dim=-1).unsqueeze(dim=0)) + + proba_dist = torch.cat(proba_dist, dim=0) + dist = Categorical(probs=proba_dist) + action = dist.sample() + # action = proba_dist.argmax(dim=1) + a = action.cpu().numpy() + + for j in range(self.num_procs): + self.actions.append(subgoals[j][int(a[j])]) + self.acts_queue[j].append(subgoals[j][int(a[j])]) + + obs, reward, done, self.infos = self.env.step(a) + + for j in range(self.num_procs): + if not im_learning: + self.vals.append(vals[j][0]) + self.prompts.append(prompt[j]) + if done[j]: + # reinitialise memory of past observations and actions + self.obs_queue[j].clear() + self.acts_queue[j].clear() + self.obs_queue[j].append(self.infos[j]['descriptions']) + + info = self.infos + + if debug: + babyai.utils.viz(self.env) + print(babyai.utils.info(reward, heading="Reward")) + print(babyai.utils.info(info, "Subtasks")) + + self.obs = obs + + self.mask = 1 - torch.tensor(done, device=self.device, dtype=torch.float) + + if self.reshape_reward is not None: + rewards_shaped = torch.tensor([ + self.reshape_reward(subgoal_proba=None, reward=reward_, policy_value=None, llm_0=None) + for reward_ in reward + ], device=self.device) + self.rewards.append(rewards_shaped[:, 0]) + self.rewards_bonus.append(rewards_shaped[:, 1]) + else: + self.rewards.append(torch.tensor(reward, device=self.device)) + + # Update log values + + self.log_episode_return += torch.tensor(reward, device=self.device, dtype=torch.float) + self.log_episode_reshaped_return += self.rewards[-1] + self.log_episode_reshaped_return_bonus += self.rewards_bonus[-1] + self.log_episode_num_frames += torch.ones(self.num_procs, device=self.device) + + for i, done_ in enumerate(done): + if done_: + self.log_done_counter += 1 + pbar.update(1) + self.log_return.append(self.log_episode_return[i].item()) + if self.log_episode_return[i].item() > 0: + print(self.obs[i]['mission']) + self.log_reshaped_return.append(self.log_episode_reshaped_return[i].item()) + self.log_reshaped_return_bonus.append(self.log_episode_reshaped_return_bonus[i].item()) + self.log_num_frames.append(self.log_episode_num_frames[i].item()) + + self.log_episode_return *= self.mask + self.log_episode_reshaped_return *= self.mask + self.log_episode_reshaped_return_bonus *= self.mask + self.log_episode_num_frames *= self.mask + + pbar.close() + + exps = DictList() + exps.prompts = np.array(self.prompts) + # exps.images = np.stack(self.images) + + # In commments below T is self.num_frames_per_proc, P is self.num_procs, + # D is the dimensionality + + # for all tensors below, T x P -> P x T -> P * T + exps.actions = np.array(self.actions) + + exps.vals = np.array(self.vals) + + # Log some values + + keep = max(self.log_done_counter, self.num_procs) + + log = { + "return_per_episode": self.log_return[-keep:], + "reshaped_return_per_episode": self.log_reshaped_return[-keep:], + "reshaped_return_bonus_per_episode": self.log_reshaped_return_bonus[-keep:], + "num_frames_per_episode": self.log_num_frames[-keep:], + "episodes_done": self.log_done_counter, + "nbr_frames": nbr_frames + } + + self.log_done_counter = 0 + self.log_return = self.log_return[-self.num_procs:] + self.log_reshaped_return = self.log_reshaped_return[-self.num_procs:] + self.log_reshaped_return_bonus = self.log_reshaped_return_bonus[-self.num_procs:] + self.log_num_frames = self.log_num_frames[-self.num_procs:] + + return exps, log diff --git a/experiments/test_results.py b/experiments/test_results.py new file mode 100644 index 0000000..308fcae --- /dev/null +++ b/experiments/test_results.py @@ -0,0 +1,61 @@ +import os +import re +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt + +def print_test_results(): + root = '/home/tcarta/DLP/storage/logs' + list_dir = os.listdir(root) + + for test_name in ['no_modification_test', 'other_name_same_categories', 'adj_synonym', 'no_meaning_nouns', + 'no_meaning_adj', 'no_meaning_words', 'change_intro_first_personne_speaker', + 'change_intro_first_personne_agent']: + + print('NAME TESTS: {}'.format(test_name)) + reward_list = [] + # for model_name in ['.*llm_mtrl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*']: + # for model_name in ['.*llm_gtl_nbr_env_32_Flan_T5large_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*']: + # for model_name in ['.*drrn_mtrl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0.*']: + for model_name in ['.*drrn_gtl_nbr_env_32_DRRN_pretrained_True_nbr_actions_6_turn_left_turn_right_go_forward_pick_up_drop_toggle_shape_reward_beta_0_seed_1.*']: + for directory in list_dir: + if re.match(model_name, directory): + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTestLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTestLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + 'shift_left_shift_right_go_ahead_take_release_turn' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + '_shift_left_shift_right_go_ahead_take_release_turn' + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + '_rotate_left_rotate_right_move_ahead_take_release_switch' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-MixtTrainLocal-v0'+'/return_per_episode/'+test_name + '_rotate_left_rotate_right_move_ahead_take_release_switch' + '_zero_shot' + '.npy')) + #reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpSeqPickUpLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpSeqPickUpLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpSeqGoToLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpSeqGoToLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToAfterPickUpLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToAfterPickUpLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpThenGoToLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-PickUpThenGoToLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToFrench-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToFrench-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToLocal-v0'+'/return_per_episode/'+test_name + '.npy')) + # reward_list.append(np.load(root+'/'+directory+'/test'+'/BabyAI-GoToLocal-v0'+'/return_per_episode/'+test_name + '_zero_shot' + '.npy')) + + reward_array = np.concatenate(reward_list) + succes_traj = [(r > 0).astype(int) for r in reward_list] + # sr_array = np.array([np.mean(st) for st in succes_traj]) + sr_array = [] + bootstrapping = 1 # 1 no bootstrapping + for st in succes_traj: + for i in range(bootstrapping): + sr_array.append(np.mean(st[i:int((i+1)*(len(st)/bootstrapping))])) + sr_array = np.array(sr_array) + """plt.hist(reward_array, bins=100) + plt.title(test_name) + plt.show()""" + + z_p = 2.575829303549 + print("For {} the mean return per episode is {} +- {}".format(test_name, np.mean(reward_array), np.std(reward_array))) + print("For {} the mean success rate per episode is {} +- {}".format(test_name, np.mean(sr_array), z_p*np.std(sr_array, ddof=1)/np.sqrt(len(sr_array)))) + +print_test_results() \ No newline at end of file diff --git a/gym-minigrid/.gitignore b/gym-minigrid/.gitignore new file mode 100644 index 0000000..c6ff17e --- /dev/null +++ b/gym-minigrid/.gitignore @@ -0,0 +1,8 @@ +*.pyc +*__pycache__ +*egg-info +trained_models + +# PyPI +build/* +dist/* diff --git a/gym-minigrid/.travis.yml b/gym-minigrid/.travis.yml new file mode 100644 index 0000000..e805f38 --- /dev/null +++ b/gym-minigrid/.travis.yml @@ -0,0 +1,10 @@ +language: python +python: + - "3.5" + +# command to install dependencies +install: + - pip3 install -e . + +# command to run tests +script: ./run_tests.py diff --git a/gym-minigrid/LICENSE b/gym-minigrid/LICENSE new file mode 100644 index 0000000..a1a92b7 --- /dev/null +++ b/gym-minigrid/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Maxime Chevalier-Boisvert + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gym-minigrid/README.md b/gym-minigrid/README.md new file mode 100644 index 0000000..a6fc53f --- /dev/null +++ b/gym-minigrid/README.md @@ -0,0 +1,512 @@ +NOTE: This is the original README that came with MiniGrid. + + + +# Minimalistic Gridworld Environment (MiniGrid) + +[![Build Status](https://travis-ci.org/maximecb/gym-minigrid.svg?branch=master)](https://travis-ci.org/maximecb/gym-minigrid) + +There are other gridworld Gym environments out there, but this one is +designed to be particularly simple, lightweight and fast. The code has very few +dependencies, making it less likely to break or fail to install. It loads no +external sprites/textures, and it can run at up to 5000 FPS on a Core i7 +laptop, which means you can run your experiments faster. A known-working RL +implementation can be found [in this repository](https://github.com/lcswillems/torch-rl). + +Requirements: +- Python 3.5+ +- OpenAI Gym +- NumPy +- Matplotlib (optional, only needed for display) + +Please use this bibtex if you want to cite this repository in your publications: + +``` +@misc{gym_minigrid, + author = {Chevalier-Boisvert, Maxime and Willems, Lucas and Pal, Suman}, + title = {Minimalistic Gridworld Environment for OpenAI Gym}, + year = {2018}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://github.com/maximecb/gym-minigrid}}, +} +``` + +List of publications & submissions using MiniGrid or BabyAI (please open a pull request to add missing entries): +- [Learning to Request Guidance in Emergent Communication](https://arxiv.org/pdf/1912.05525.pdf) (University of Amsterdam, Dec 2019) +- [Working Memory Graphs](https://arxiv.org/abs/1911.07141) (MSR, Nov 2019) +- [Fast Task-Adaptation for Tasks Labeled Using +Natural Language in Reinforcement Learning](https://arxiv.org/pdf/1910.04040.pdf) (Oct 2019, University of Antwerp) +- [Generalization in Reinforcement Learning with Selective Noise Injection and Information Bottleneck +](https://arxiv.org/abs/1910.12911) (MSR, NeurIPS, Oct 2019) +- [Recurrent Independent Mechanisms](https://arxiv.org/pdf/1909.10893.pdf) (Mila, Sept 2019) +- [Learning Effective Subgoals with Multi-Task Hierarchical Reinforcement Learning](http://surl.tirl.info/proceedings/SURL-2019_paper_10.pdf) (Tsinghua University, August 2019) +- [Mastering emergent language: learning to guide in simulated navigation](https://arxiv.org/abs/1908.05135) (University of Amsterdam, Aug 2019) +- [Transfer Learning by Modeling a Distribution over Policies](https://arxiv.org/abs/1906.03574) (Mila, June 2019) +- [Reinforcement Learning with Competitive Ensembles +of Information-Constrained Primitives](https://arxiv.org/abs/1906.10667) (Mila, June 2019) +- [Learning distant cause and effect using only local and immediate credit assignment](https://arxiv.org/abs/1905.11589) (Incubator 491, May 2019) +- [Practical Open-Loop Optimistic Planning](https://arxiv.org/abs/1904.04700) (INRIA, April 2019) +- [Learning World Graphs to Accelerate Hierarchical Reinforcement Learning](https://arxiv.org/abs/1907.00664) (Salesforce Research, 2019) +- [Variational State Encoding as Intrinsic Motivation in Reinforcement Learning](https://mila.quebec/wp-content/uploads/2019/05/WebPage.pdf) (Mila, TARL 2019) +- [Unsupervised Discovery of Decision States Through Intrinsic Control](https://tarl2019.github.io/assets/papers/modhe2019unsupervised.pdf) (Georgia Tech, TARL 2019) +- [Modeling the Long Term Future in Model-Based Reinforcement Learning](https://openreview.net/forum?id=SkgQBn0cF7) (Mila, ICLR 2019) +- [Practical Open-Loop Optimistic Planning](https://arxiv.org/pdf/1904.04700.pdf) (INRIA, Apr 2019) +- [Unifying Ensemble Methods for Q-learning via Social Choice Theory](https://arxiv.org/pdf/1902.10646.pdf) (Max Planck Institute, Feb 2019) +- [Planning Beyond The Sensing Horizon Using a Learned Context](https://personalrobotics.cs.washington.edu/workshops/mlmp2018/assets/docs/18_CameraReadySubmission.pdf) (MLMP@IROS, 2018) +- [Guiding Policies with Language via Meta-Learning](https://arxiv.org/abs/1811.07882) (UC Berkeley, Nov 2018) +- [On the Complexity of Exploration in Goal-Driven Navigation](https://arxiv.org/abs/1811.06889) (CMU, NeurIPS, Nov 2018) +- [Transfer and Exploration via the Information Bottleneck](https://openreview.net/forum?id=rJg8yhAqKm) (Mila, Nov 2018) +- [Creating safer reward functions for reinforcement learning agents in the gridworld](https://gupea.ub.gu.se/bitstream/2077/62445/1/gupea_2077_62445_1.pdf) (University of Gothenburg, 2018) +- [BabyAI: First Steps Towards Grounded Language Learning With a Human In the Loop](https://arxiv.org/abs/1810.08272) (Mila, ICLR, Oct 2018) + +This environment has been built as part of work done at [Mila](https://mila.quebec). The Dynamic obstacles environment has been added as part of work done at [IAS in TU Darmstadt](https://www.ias.informatik.tu-darmstadt.de/) and the University of Genoa for mobile robot navigation with dynamic obstacles. + +## Installation + +There is now a [pip package](https://pypi.org/project/gym-minigrid/) available, which is updated periodically: + +``` +pip3 install gym-minigrid +``` + +Alternatively, to get the latest version of MiniGrid, you can clone this repository and install the dependencies with `pip3`: + +``` +git clone https://github.com/maximecb/gym-minigrid.git +cd gym-minigrid +pip3 install -e . +``` + +## Basic Usage + +There is a UI application which allows you to manually control the agent with the arrow keys: + +``` +./manual_control.py +``` + +The environment being run can be selected with the `--env` option, eg: + +``` +./manual_control.py --env MiniGrid-Empty-8x8-v0 +``` + +## Reinforcement Learning + +If you want to train an agent with reinforcement learning, I recommend using the code found in the [torch-rl](https://github.com/lcswillems/torch-rl) repository. This code has been tested and is known to work with this environment. The default hyper-parameters are also known to converge. + +A sample training command is: + +``` +cd torch-rl +python3 -m scripts.train --env MiniGrid-Empty-8x8-v0 --algo ppo +``` + +## Wrappers + +MiniGrid is built to support tasks involving natural language and sparse rewards. +The observations are dictionaries, with an 'image' field, partially observable +view of the environment, a 'mission' field which is a textual string +describing the objective the agent should reach to get a reward, and a 'direction' +field which can be used as an optional compass. Using dictionaries makes it +easy for you to add additional information to observations +if you need to, without having to encode everything into a single tensor. + +There are a variery of wrappers to change the observation format available in [gym_minigrid/wrappers.py](/gym_minigrid/wrappers.py). If your RL code expects one single tensor for observations, take a look at +`FlatObsWrapper`. There is also an `ImgObsWrapper` that gets rid of the 'mission' field in observations, +leaving only the image field tensor. + +Please note that the default observation format is a partially observable view of the environment using a +compact and efficient encoding, with 3 input values per visible grid cell, 7x7x3 values total. +These values are **not pixels**. If you want to obtain an array of RGB pixels as observations instead, +use the `RGBImgPartialObsWrapper`. You can use it as follows: + +``` +from gym_minigrid.wrappers import * +env = gym.make('MiniGrid-Empty-8x8-v0') +env = RGBImgPartialObsWrapper(env) # Get pixel observations +env = ImgObsWrapper(env) # Get rid of the 'mission' field +obs = env.reset() # This now produces an RGB tensor only +``` + +## Design + +Structure of the world: +- The world is an NxM grid of tiles +- Each tile in the grid world contains zero or one object + - Cells that do not contain an object have the value `None` +- Each object has an associated discrete color (string) +- Each object has an associated type (string) + - Provided object types are: wall, floor, lava, door, key, ball, box and goal +- The agent can pick up and carry exactly one object (eg: ball or key) +- To open a locked door, the agent has to be carrying a key matching the door's color + +Actions in the basic environment: +- Turn left +- Turn right +- Move forward +- Pick up an object +- Drop the object being carried +- Toggle (open doors, interact with objects) +- Done (task completed, optional) + +By default, sparse rewards are given for reaching a green goal tile. A +reward of 1 is given for success, and zero for failure. There is also an +environment-specific time step limit for completing the task. +You can define your own reward function by creating a class derived +from `MiniGridEnv`. Extending the environment with new object types or action +should be very easy. If you wish to do this, you should take a look at the +[gym_minigrid/minigrid.py](gym_minigrid/minigrid.py) source file. + +## Included Environments + +The environments listed below are implemented in the [gym_minigrid/envs](/gym_minigrid/envs) directory. +Each environment provides one or more configurations registered with OpenAI gym. Each environment +is also programmatically tunable in terms of size/complexity, which is useful for curriculum learning +or to fine-tune difficulty. + +### Empty environment + +Registered configurations: +- `MiniGrid-Empty-5x5-v0` +- `MiniGrid-Empty-Random-5x5-v0` +- `MiniGrid-Empty-6x6-v0` +- `MiniGrid-Empty-Random-6x6-v0` +- `MiniGrid-Empty-8x8-v0` +- `MiniGrid-Empty-16x16-v0` + +

+ +

+ +This environment is an empty room, and the goal of the agent is to reach the +green goal square, which provides a sparse reward. A small penalty is +subtracted for the number of steps to reach the goal. This environment is +useful, with small rooms, to validate that your RL algorithm works correctly, +and with large rooms to experiment with sparse rewards and exploration. +The random variants of the environment have the agent starting at a random +position for each episode, while the regular variants have the agent always +starting in the corner opposite to the goal. + +### Four rooms environment + +Registered configurations: +- `MiniGrid-FourRooms-v0` + +

+ +

+ +Classic four room reinforcement learning environment. The agent must navigate +in a maze composed of four rooms interconnected by 4 gaps in the walls. To +obtain a reward, the agent must reach the green goal square. Both the agent +and the goal square are randomly placed in any of the four rooms. + +### Door & key environment + +Registered configurations: +- `MiniGrid-DoorKey-5x5-v0` +- `MiniGrid-DoorKey-6x6-v0` +- `MiniGrid-DoorKey-8x8-v0` +- `MiniGrid-DoorKey-16x16-v0` + +

+ +

+ +This environment has a key that the agent must pick up in order to unlock +a goal and then get to the green goal square. This environment is difficult, +because of the sparse reward, to solve using classical RL algorithms. It is +useful to experiment with curiosity or curriculum learning. + +### Multi-room environment + +Registered configurations: +- `MiniGrid-MultiRoom-N2-S4-v0` (two small rooms) +- `MiniGrid-MultiRoom-N4-S5-v0` (four rooms) +- `MiniGrid-MultiRoom-N6-v0` (six rooms) + +

+ +

+ +This environment has a series of connected rooms with doors that must be +opened in order to get to the next room. The final room has the green goal +square the agent must get to. This environment is extremely difficult to +solve using RL alone. However, by gradually increasing the number of +rooms and building a curriculum, the environment can be solved. + +### Fetch environment + +Registered configurations: +- `MiniGrid-Fetch-5x5-N2-v0` +- `MiniGrid-Fetch-6x6-N2-v0` +- `MiniGrid-Fetch-8x8-N3-v0` + +

+ +

+ +This environment has multiple objects of assorted types and colors. The +agent receives a textual string as part of its observation telling it +which object to pick up. Picking up the wrong object produces a negative +reward. + +### Go-to-door environment + +Registered configurations: +- `MiniGrid-GoToDoor-5x5-v0` +- `MiniGrid-GoToDoor-6x6-v0` +- `MiniGrid-GoToDoor-8x8-v0` + +

+ +

+ +This environment is a room with four doors, one on each wall. The agent +receives a textual (mission) string as input, telling it which door to go to, +(eg: "go to the red door"). It receives a positive reward for performing the +`done` action next to the correct door, as indicated in the mission string. + +### Put-near environment + +Registered configurations: +- `MiniGrid-PutNear-6x6-N2-v0` +- `MiniGrid-PutNear-8x8-N3-v0` + +The agent is instructed through a textual string to pick up an object and +place it next to another object. This environment is easy to solve with two +objects, but difficult to solve with more, as it involves both textual +understanding and spatial reasoning involving multiple objects. + +### Red and blue doors environment + +Registered configurations: +- `MiniGrid-RedBlueDoors-6x6-v0` +- `MiniGrid-RedBlueDoors-8x8-v0` + +The purpose of this environment is to test memory. +The agent is randomly placed within a room with one red and one blue door +facing opposite directions. The agent has to open the red door and then open +the blue door, in that order. The agent, when facing one door, cannot see +the door behind him. Hence, the agent needs to remember whether or not he has +previously opened the other door in order to reliably succeed at completing +the task. + +### Memory environment + +Registered configurations: +- `MiniGrid-MemoryS17Random-v0` +- `MiniGrid-MemoryS13Random-v0` +- `MiniGrid-MemoryS13-v0` +- `MiniGrid-MemoryS11-v0` +- `MiniGrid-MemoryS9-v0` +- `MiniGrid-MemoryS7-v0` + +This environment is a memory test. The agent starts in a small room +where it sees an object. It then has to go through a narrow hallway +which ends in a split. At each end of the split there is an object, +one of which is the same as the object in the starting room. The +agent has to remember the initial object, and go to the matching +object at split. + +### Locked room environment + +Registed configurations: +- `MiniGrid-LockedRoom-v0` + +The environment has six rooms, one of which is locked. The agent receives +a textual mission string as input, telling it which room to go to in order +to get the key that opens the locked room. It then has to go into the locked +room in order to reach the final goal. This environment is extremely difficult +to solve with vanilla reinforcement learning alone. + +### Key corridor environment + +Registed configurations: +- `MiniGrid-KeyCorridorS3R1-v0` +- `MiniGrid-KeyCorridorS3R2-v0` +- `MiniGrid-KeyCorridorS3R3-v0` +- `MiniGrid-KeyCorridorS4R3-v0` +- `MiniGrid-KeyCorridorS5R3-v0` +- `MiniGrid-KeyCorridorS6R3-v0` + +

+ + + + + + +

+ +This environment is similar to the locked room environment, but there are +multiple registered environment configurations of increasing size, +making it easier to use curriculum learning to train an agent to solve it. +The agent has to pick up an object which is behind a locked door. The key is +hidden in another room, and the agent has to explore the environment to find +it. The mission string does not give the agent any clues as to where the +key is placed. This environment can be solved without relying on language. + +### Unlock environment + +Registed configurations: +- `MiniGrid-Unlock-v0` + +

+ +

+ +The agent has to open a locked door. This environment can be solved without +relying on language. + +### Unlock pickup environment + +Registed configurations: +- `MiniGrid-UnlockPickup-v0` + +

+ +

+ +The agent has to pick up a box which is placed in another room, behind a +locked door. This environment can be solved without relying on language. + +### Blocked unlock pickup environment + +Registed configurations: +- `MiniGrid-BlockedUnlockPickup-v0` + +

+ +

+ +The agent has to pick up a box which is placed in another room, behind a +locked door. The door is also blocked by a ball which the agent has to move +before it can unlock the door. Hence, the agent has to learn to move the ball, +pick up the key, open the door and pick up the object in the other room. +This environment can be solved without relying on language. + +## Obstructed maze environment + +Registered configurations: +- `MiniGrid-ObstructedMaze-1Dl-v0` +- `MiniGrid-ObstructedMaze-1Dlh-v0` +- `MiniGrid-ObstructedMaze-1Dlhb-v0` +- `MiniGrid-ObstructedMaze-2Dl-v0` +- `MiniGrid-ObstructedMaze-2Dlh-v0` +- `MiniGrid-ObstructedMaze-2Dlhb-v0` +- `MiniGrid-ObstructedMaze-1Q-v0` +- `MiniGrid-ObstructedMaze-2Q-v0` +- `MiniGrid-ObstructedMaze-Full-v0` + +

+ + + + + + + + + +

+ +The agent has to pick up a box which is placed in a corner of a 3x3 maze. +The doors are locked, the keys are hidden in boxes and doors are obstructed +by balls. This environment can be solved without relying on language. + +The agent has to pick up a box which is placed in a corner of a 3x3 maze. +The doors are locked, the keys are hidden in boxes and doors are obstructed +by balls. This environment can be solved without relying on language. + +## Distributional shift environment + +Registered configurations: +- `MiniGrid-DistShift1-v0` +- `MiniGrid-DistShift2-v0` + +This environment is based on one of the DeepMind [AI safety gridworlds](https://github.com/deepmind/ai-safety-gridworlds). +The agent starts in the top-left corner and must reach the goal which is in the top-right corner, but has to avoid stepping +into lava on its way. The aim of this environment is to test an agent's ability to generalize. There are two slightly +different variants of the environment, so that the agent can be trained on one variant and tested on the other. + +

+ + +

+ +## Lava gap environment + +Registered configurations: +- `MiniGrid-LavaGapS5-v0` +- `MiniGrid-LavaGapS6-v0` +- `MiniGrid-LavaGapS7-v0` + +

+ +

+ +The agent has to reach the green goal square at the opposite corner of the room, +and must pass through a narrow gap in a vertical strip of deadly lava. Touching +the lava terminate the episode with a zero reward. This environment is useful +for studying safety and safe exploration. + +## Lava crossing environment + +Registered configurations: +- `MiniGrid-LavaCrossingS9N1-v0` +- `MiniGrid-LavaCrossingS9N2-v0` +- `MiniGrid-LavaCrossingS9N3-v0` +- `MiniGrid-LavaCrossingS11N5-v0` + +

+ + + + +

+ +The agent has to reach the green goal square on the other corner of the room +while avoiding rivers of deadly lava which terminate the episode in failure. +Each lava stream runs across the room either horizontally or vertically, and +has a single crossing point which can be safely used; Luckily, a path to the +goal is guaranteed to exist. This environment is useful for studying safety and +safe exploration. + +## Simple crossing environment + +Registered configurations: +- `MiniGrid-SimpleCrossingS9N1-v0` +- `MiniGrid-SimpleCrossingS9N2-v0` +- `MiniGrid-SimpleCrossingS9N3-v0` +- `MiniGrid-SimpleCrossingS11N5-v0` + +

+ + + + +

+ +Similar to the `LavaCrossing` environment, the agent has to reach the green +goal square on the other corner of the room, however lava is replaced by +walls. This MDP is therefore much easier and and maybe useful for quickly +testing your algorithms. + +### Dynamic obstacles environment + +Registered configurations: +- `MiniGrid-Dynamic-Obstacles-5x5-v0` +- `MiniGrid-Dynamic-Obstacles-Random-5x5-v0` +- `MiniGrid-Dynamic-Obstacles-6x6-v0` +- `MiniGrid-Dynamic-Obstacles-Random-6x6-v0` +- `MiniGrid-Dynamic-Obstacles-8x8-v0` +- `MiniGrid-Dynamic-Obstacles-16x16-v0` + +

+ +

+ +This environment is an empty room with moving obstacles. The goal of the agent is to reach the green goal square without colliding with any obstacle. A large penalty is subtracted if the agent collides with an obstacle and the episode finishes. This environment is useful to test Dynamic Obstacle Avoidance for mobile robots with Reinforcement Learning in Partial Observability. diff --git a/gym-minigrid/benchmark.py b/gym-minigrid/benchmark.py new file mode 100755 index 0000000..8184025 --- /dev/null +++ b/gym-minigrid/benchmark.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 + +import time +import argparse +import gym_minigrid +import gym +from gym_minigrid.wrappers import * + +parser = argparse.ArgumentParser() +parser.add_argument( + "--env-name", + dest="env_name", + help="gym environment to load", + default='MiniGrid-LavaGapS7-v0' +) +parser.add_argument("--num_resets", default=200) +parser.add_argument("--num_frames", default=5000) +args = parser.parse_args() + +env = gym.make(args.env_name) + +# Benchmark env.reset +t0 = time.time() +for i in range(args.num_resets): + env.reset() +t1 = time.time() +dt = t1 - t0 +reset_time = (1000 * dt) / args.num_resets + +# Benchmark rendering +t0 = time.time() +for i in range(args.num_frames): + env.render('rgb_array') +t1 = time.time() +dt = t1 - t0 +frames_per_sec = args.num_frames / dt + +# Create an environment with an RGB agent observation +env = gym.make(args.env_name) +env = RGBImgPartialObsWrapper(env) +env = ImgObsWrapper(env) + +# Benchmark rendering +t0 = time.time() +for i in range(args.num_frames): + obs, reward, done, info = env.step(0) +t1 = time.time() +dt = t1 - t0 +agent_view_fps = args.num_frames / dt + +print('Env reset time: {:.1f} ms'.format(reset_time)) +print('Rendering FPS : {:.0f}'.format(frames_per_sec)) +print('Agent view FPS: {:.0f}'.format(agent_view_fps)) diff --git a/gym-minigrid/figures/BlockedUnlockPickup.png b/gym-minigrid/figures/BlockedUnlockPickup.png new file mode 100644 index 0000000000000000000000000000000000000000..ece2aa9f3e7d3b4d9a9e305c9d4ad04cd5f3a313 GIT binary patch literal 1233 zcmeAS@N?(olHy`uVBq!ia0y~yV2lH@_i``+$&z&LFh`5Nug{12SGaldepa0v2OX7CH?zYGK>zBOwaf-dA zR7#uo?CuLsHf(T8Uixs+Ij`7xtN1<~bI4q=(`x;BeVh2XsR8U2rU6n>m37aPA6(VQ zw9u>LGBNX#YFOAayDdw){js$?^ZK?OPgee8s@=DcjlrZ=3gRsrn3{kHN);&BN z-S+tS`mAlfjlXZ0GBlbnIJS$6*yfd%RIA=Oz7CuMwtcIPZDY;pLe|^%qa4 zeU3l-bHCZ_+`TWe|Nk|g5uf=fcdZj+7x(Sf0%Ub^tENPvz8>57;@Fuc`K|qxU+4cZpp)S^Bb!@ z5AVo}|NP3K@RGrb>hRrG0n4716$9l9IzGPKeUrgVFD1fJ*;_Frnx;Tu*(D()IgK`|83(DQQ>Xg zRX+DMQ!3cDx4S^LZHd0NM=zk+d!Ac)|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD*&j2D2ubN}Z~Hlqfq})`)5S5Q;?~rZ_@BOAh+@TS&K~%mwx!n+pu}3 z^<2N{j0y+-)!4PyHDu0`VdXG7U;N^aJRhTiLjwaNhk$|u0}~5}0FceZf<*|o3{>%j z{=KmRuYX*4(~{u7UNxu8`k37RkIyw6)*h8@3G#aJ=dmM$(fs{kDF> z?_IHN|IMBH`-FEe7lpGd*};6OBK*sbPv45=*8SgH|NZR4*Y)+^esWw`p1ftLz~7w) z|H>Ec`Ch#}C)tik#U(tpLq668%z5(h%_{DXx4K_U%RQrhO6|Ywg==w9_lp#3pC6rG zYxl0$^#c9Y71wtwp8l}$v*3cKdhe<`7N`EW@RK9p)Q6a2#i+LUd^@Ho zdRFqWA=4gSpWn~0l;?c4_|;3dXY@00@^egh!Scr^?4Z+gWrvmT%hogXGi6dm zU9p&&-T$ahkMFxSL}f2jkAL!K@zY0lp5GU!{>Qu6-9SMTqyb6a&D*ShKTKT%a`%-Q z)$BJlEFA~K7ya@IV_dXZ;HTHMug^Ez=r4S);o_YS3>~1>1DEzNzv@W+aRcbPtZ5IE zfsW>xc2M^)x4_)i6Gnf2eU6+r{X)6OqNUpnz(tYOp$i$t7KJ z6W6wTAbYf?gl>5IS?E`v)0Qu0&yFVdQ&MBb@00)Yv_5c6? literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/DistShift2.png b/gym-minigrid/figures/DistShift2.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0c374b070d3643a2c95ed5bd6d06c438b6ac0e GIT binary patch literal 1213 zcmeAS@N?(olHy`uVBq!ia0y~yU{nCIA8@b%$;C3e8-NsBlDE4H!+#K5uy^@npa^Gy zM`SSr1Gg{;GcwGYBLNg-FY)wsWq-^pA|xZAu-ADr0|Sefr;B4q#jUruH|E}U5NSx% zy1=%QBZX~UVXt~Xt=`t=a*xcbGZoIRJt%o8jcsX%=#q)97uD`}ey??ya42n_^Q*cE zds3zs+m$!ACBA5ocx=&j?*Ahp1|}8`fd&RfCKd$;AjKh|;DAL4w+u}2*BjQX8~ftB zCkwp!{a(auw@mW-`u}&h12hZ86_<)w{jU&cm}Xyp_oA`{+_JT=p5N9__`T|G+kbl} z|8>GUn2W+$ObXerJc_+|xqtiq=ZU|*|Fbr4@BjaE?RocxcYPP9Ih908yw{zQ9Y4Fc z=O@Pm0pF;O?P3?_B%g6_u$c$s1dD?>>ZjEH%U-w^7j-_;WB$$`QSbU#6So*h{ja>^dJ#ZFPAG?^i=Wb)!NBRCssxO=(WM;iIW#7-U=idLmrz~+n4P+`VBarRG=aLmS^q$xB{b6iN zED%*VVbQnn^LNuZEkRy4-b|VF^O?Ez{`b}W2@bPC7U6X=)IMZu(H*xSY4@DZH#0jv z|9bmGg{Au6)VVDRzoqIrE^FoqKAYqGeE+^50>AzoJqHR#Pn2LxsQ%{XXj`UVUvIzP z=l{L#>b{-d_JY#atTN=ZB`{g+(OOrN=MtX<71VT(tnAJ>XZTF`sP_wYu8WtB&*%q5 z!v>T04O&Ukc4c-Z;w_|bvC7>JMDmni;C`SDPS&0ZAvt(eNwdQTGMiRpvGPq^nVZNZS ap5dYAkJEQ|9_bWq?n7HJVQ7*IBq}m2gym6xJHx& z=ckpFCl;kLr03=5rs@_a7p11=6=&p^yl38T$H2gJ+tbA{q+-t7JC1p`93&hb7GC{a z(5rLE@PyH;WyfEro!TVBEVh$v`U%53uD3Z@w&mFTKO_CwZli+A%mq(AN;f~w+kRWM z^Hua)YlU9JfQ6DPF7Sk8uxXhvi_U7~I_uDyw!q1lGU2z?Z>=|6dH(+V3;B;<{)ue= z@%p&?okyBWOKkRSso}b@?f_@b_usX59-aSNeCwF*{7Z_h>*_sTxT%rR)9g zmjC4ZbzU*;=7lfk_Z-!co>eEg!{PU7{&bsPn~#f#{B4NeDgI|>^+BzO#&6s6IPW^$ zO-$UrwC$5u!?#E4U(4*@>w3*nT=l|7uE5@PMw|X!Yh~EjDPMK(W_%rQZnVAl<~I`s z{@1N~w|=gX!OLLW~{OHDr_`+*cZtmGyn4G)i+i&+O61m_G*@hc!qt!Ts8~A z<-6aDM?XE^c*FCRTFK2XpD!-UUe|5pc>H(vF27l-%^Us*EM=M1rmYkB{Nex9zRu!{ zA9u1O3IAUzUFU0Z;pa!MgU9tU^}-gMy*bTpiOSN4iybz}=Q$-T*r;^uqn5Kw(t_#9 z1$6utfd;dTz$^xpuQ-`L>9!H=6dQd|Lh9^A5&4EH!24M=F?oeBOWh*X-Zy z1%Hd~9eJ;Ho^zIa@#mtv+^zS{7+(1s9Am%E zb?%esk|Qt0opa4*-zsN(TVi!}A9weT$tqM#EXXPDAH&{X;R<&(=A{Ai0)wZkpUXO@ GgeCx#`iFP` literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/KeyCorridorS3R2.png b/gym-minigrid/figures/KeyCorridorS3R2.png new file mode 100644 index 0000000000000000000000000000000000000000..92454da3874a0043a8a67702efefee2250e2a6a1 GIT binary patch literal 1277 zcmeAS@N?(olHy`uVBq!ia0vp^4}f?92NRH-CI0;ukYX-&@(khN;JE$JA0#JP;u=vB zoS#-wo>-L1ke-*Ho2px!T$GxcSDcYw@}7CW9RmZ)1Wy;okcv5P?<~xh4wpIb@pgH-Y7Mq}HmHP3h z-Tn7_-|zliCvrjM?dRaXS9d?(efg|dx9h5#H*ZG1)LgLk`s+)<7N_`^sw$`mIx1Yxkvi|z^-2ZL<{aVZWpXK@frLnkf_I~@B|In>wyA_`= z&d&&PXndD-(QSE;P)2#HnN?(m!~gy7@6?t4k@aO!y0EQm`tN$DOA!y5rrrYjWrxG< zYTxg3o#w2l|NivPNxi%Me!{7&Z{MA_Qs>^-lxG{^e%rpk?&a^*O;h9ctgHPe>(IFD zxYXI;=YM}o)#eAb+NUH?o)BUl|+Y2$kP^H+Z)KldQ{I|EiU>{~XF*04U(eecH+|lrz)x!yY(8;t`o!ktB762!ro5l_R$zap zq?t+W)ak|iRuw*u7rBpo#ur0Zi+11r8|tgS&)-|LF)u1MFQ+8P<_I@1V#AIq);*Ie z*|dtow+^5^pSf7bs6ehDpf`%rUX_w4oIg^T0o#kJeXfBE#~(fj=RW4-^C_T~Xo!k-uH z3fF;d6V~%z4~qExZ?{j+R{}EZ`zNx@VoKubs+(T_@2|z1hW-D(WZhuw{$O(XK%TdM zLJCib$2Cg}X4$yjnR#aYHG)0q{82HzvCFQAKKd5EdC~F>v5xAw^HVpy3Cdb$PF_W_4wSDi(>-!V!4DHCR5w)L9W@4lF)P@LJ~HLQ&d|L6$^OD44%Jo}KTFoWJ?pT1#eJuUC;P0K&$evq zkc*05x!Z|%3x8DZ-#7PT4pvX&ExGhf^St#d?aS3aQ`YU?eDfTOb=}n7=Z;f@UZ!qp z)?RTT#*zP7>FGJggfpJ0U**Y@@n0o*$Af9@U$t|BHcz!r==}OvdCBn41QqJ$U3dYo akNNG7|Ba!GUQGcOU<{tFelF{r5}E*8`BroQ literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/KeyCorridorS3R3.png b/gym-minigrid/figures/KeyCorridorS3R3.png new file mode 100644 index 0000000000000000000000000000000000000000..c61793f72346c4d053fb0e7a7e6120d3a6b498f4 GIT binary patch literal 1612 zcmeAS@N?(olHy`uVBq!ia0vp^4}ka{2NRH7Z9h93NHG^Xd4_OsaNK_A50aBCag8Vm z&QB{TPb^AhNYBg9P1P+L)g6MLZE=DPopak_{F}G@Ilx`Sj29`)Bs> zYh`fA319krCM(@=mabTL$mX9lc3-0%Zoe%H-rqXA#{8@FgmZ=g3nf=v;0eiK(=uTe zoz=*7)}b|Rfs-)>!neK$?{AF$`{DZei~o<@xBn+;{v&H^ue8n5DVI(cMSkR*t;!U; z{(52a|1YQW|+0ze#P07G;_BW>d1>M?3*C_4cbTOQd=OGy=>ooBDM+I6pu4woKIg zhvN&z&fB36ZuV&|o&IH0MA)9PsTK#!N`C$MkT^f+#m^(NZ+tY@{3~Vg=k)UFCfqXi zyXITTZQt#1f%E;+zGweLjB`?crJ4w5aCNMFv)=TF^7n@Q&*ciZ?xmeNbN}kZ>5b1) z=H8Uds54F5RsX(u!P4vtomX$9T1h{87(DSi!@jeUTe7G7Oup>5lx^1WXK&gnen za^u|+eBI1EbTOM$t4(L$>fA|gye7;=-CK<>yt`v0IBmWQ@0Wzn?~l*eZ}}*A*M#qm zm;cWX=c+673^%$Ep}2Q`6_?8I$7&30Rg*KtK8iWp9CZlx;%~n6>3n&d$(=(E{Kr(D zoOfXT5nNNASNUV{pJrt?t4pDmmlwayV7s-rQ23$B`MZ)Cid#It+`6@_O6!Wl@da1S z&OJTr`{T@}#T)^i`s^cQ_x8?cmx=|!(I3l=_azE-zyrSOr;)@eT$v7FxtD77q z$CjN@jl-R(w-iOsofooLkc;(I+OA_CYc6!w{*(C^U%qqAkLVbs3okyKu9mCc@4xv( z{6<0Bx)S?Ro4oJ7Tj$&Fy5G(tJu6Lek3)RzYQ29#*X#ZPUEQ=upQmj0%eU9Jbgtjz zrp#Kk%2oQUgxZDAqPH^EOEm7=`>y79wNLIA?;eNtH1)XE-g_LDGBS%w>0kKUdHt2p zW4FI=n)LR{y%kDhv%NpR^jnuT{ra`AIDl gmW9{~)GhT4Zpy-Iw@+(S2G$1*p00i_>zopr0NmK|4FCWD literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/KeyCorridorS4R3.png b/gym-minigrid/figures/KeyCorridorS4R3.png new file mode 100644 index 0000000000000000000000000000000000000000..061a35b6cdff6c5f4cbb07ab80741f29f382eeae GIT binary patch literal 1943 zcmcIlYfzF|7{)czG%MH2T(8?bNwBEMwbd1M615b(fO#J?vlLJyFC>(et!cYXo4Tdw zWZn=jX*R9mC+*rUJ7zK}YLZ~&C<@uO^5Xk3=$)GOB83NI_L%X{Mq!v#J4-sB_?#PO|&?uQP@2$X_Ij;*_ zI2>2!R_{eqoN?)kU!6>KM%9WM+_1G?3@D z29SaS@W}oW<)T#cwr4|a=tW!x4QxMrCDGEG>$0h%o-n^K!x||~wB*n=;mGBV4!3!p zFC}zbl*YXu<;`CD&Dz@9F3TQ(%}0gFmy_!302r_1Q-;ldmHvbEN6q zz%BqhZJG}y!|p{=ORf(F!b9K99%LKif!z!7c^T{5>eJ~hg9$1xe4`Be&f$&1w@$IR z6yN;*syK!9JGE-`E^Hs+9*SB-!(qVb#4@XL_5+@c`tbl3B*FO3y}~7>_p^hnr3`q{ zY|r54?V6H~?bU@YUKK`IVqKpenMYNee~GjYvw`wPt+d|(I_Yr4t4gQpLVThAP;Be9bo3>3fw0o4R@^=az>ujqbMF#J zJYjoW1bnzwVJIBZk zbGWKBdSx1YZ|e9)Cf{gH(8L3UV5v9PhRf}p5pN%pC@Tk7r* z^+1I3m|}Joi&PCZM6kFG7RAAz-wP_CI1Vd#U}4&}vkppyTWiQe5d~vg=ug~tmgBm@ zJd6Q7hcN|@X&Et7Zg*9LqJWw5_TY~prcrEwDOm6^1az@{{D}@}#Nu?^sZt+5qFvO( zaL)?S6DKF`{ZwC0W`MAh2EkR3}zj?Ri;|2W8IjpTbx9I8IKyg2&E z*d%jW)urKEf7Y8l0?O9ga2u09NF?<4Q1IwxeTlOB=Vdk1Ss)sA0!gEP(roqvut$1Q z;NOp*(W|Y#b+%t|SU%&{Nyi^1J?HP+f zNLA6q9QCF+Zig3c@6Cx)8;P=s=HaV1+}Py@&%w7H;cbwppBwytwoep>4xq_k(awbU zWlMSQfOxmy+7*|-zu0B~SQN3Ch2!qjJMu#M&IZF literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/KeyCorridorS5R3.png b/gym-minigrid/figures/KeyCorridorS5R3.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1f6b1d277e376ce6a1f8a5aaa459809bba48ab GIT binary patch literal 2746 zcmcgud05iv7KVIs#~Pa)#R}_AWw#XPnp&DLrKUZ(reki%IOfujLJFoR%Vg6+&6N}I^erEBD-v=|BDR!!!`w7trs8nk|QOS zXTEt7kZfXAwr3>fti?93t2{5v$*6kkBLh!gVaQ-`L%?bWOqXsRR%6?EMBv9cH}^Z^ zJ5fASXiRp{mudij=|B;AC)@Z&mzzTo9e5NA3b>B?5{xkF9tWS_|9@L5T_u3J6esr2 z2xH_5Sph^zB);gZK<;dMfO5(7gCnZ^Bzq9~T90wy;h{3={0Fa|4QmdnU6r%7RHebtjw z>e9m^E0P|FbQ(8NOzUs@(N0;t7|+~L2q9XN=GKrs+N)5E&4FSvs{I;jYx;somR6@+gk6$P8DV zC*Q}5tSx-$TYZE@qFgQV==KXwIJy8$Gkzb8*@Fo&#sY5aTnmNZ{yRk#j=+ z*0;W*fe3unY*ofP7fT-$O{S)_S7Tupo^#xnvgwaG@i3%7>}Xj|)lX${`lcpF;SQw; zs@~)UwDdK>=wl}JGW5xU7>dSLk|a~&Cw&@!C32~n)i#qpN{b(cqdXokh1xl`)E_~m zEsQ1r(V+o<<9@nlrhhucXnoR zoE~1m^WNN(DfDEu-%m838kMpJy*BaSIkU`a)IE&K;G{KMlDT17XbJBKwnVDNcKoy! z_4d{7H2u{#j#s=yDD1Bz_9>0=*AtxwvoFZptQ+%&FVZjg^zXWBwYliYHoEBhkvD1e zaSWV1r|lxB5}KiI_>wJTG2n#Uj@}8l;(DTlpJsO3C)#Fv&t}ZS)ES0dwO3YNuZ)rgU%bB}Myti`W%Ol*u5Q3@2 z2;S-C5>izPR^L=Q>lTIEdu+16b)(!K@HglJq#8!{%f*9b$Qy!SG*jV037W{;M62UM zpVrU#vzS8VTuVX}ZL;-pCj$mwmIOxeD3L4IXca)kxhCsFJO)x@m9p)w>%%EymK&H6gESiFlK@kC!ADEc@*dZ9yI26EP}-5;rfK z-&1?FwaL<)lC2mo1f>F0fk7@R9snB45QRe?2hD1A{K7k-BO=uBE+Gg_Q^L6E@4`f5 zDV+Z4EDn1?Iu_^LK{@H~L4N6dJ=u8hE#y$!XK>^iN4a>H4N-Pqh^Hbw=4w@na8EtP z7DlMEhv(^Gw;Yg5Sl}w1LbeO=?c~hB5?PtRt^jY^646{wOCN2c%-@X^E9?`+?Y7R8@BKx zC0xK`#EXp%uPVLiHU8CR!}bLp4rexDPK(^{4-&@quzquEJW0g;6%=P&8*J8p`a98L zqjWfXFiDgTiMoN};pj#DVd~>*6i?tBBKW-I65mbY?QABD=xkFq#YxJGd*A2{ObMji z`7C;=4koTQXTYlRgD1cTRTDjYf8Ik{3@RLA#Pe?Ae(X+cLA2-0zMfQv&7ShuY3M!y N2mFG4>HEGu`5)3;L3scG literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/KeyCorridorS6R3.png b/gym-minigrid/figures/KeyCorridorS6R3.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8eb346c8b64b528817ac99382fa0e7ebba1d57 GIT binary patch literal 3288 zcmcgvdpKKZ9zGZiI>dvbqS!u9r`T4eHJI=aQt*;#sDd-67QR7(H??S2&p-_gjWNzKHaOfF<90G8 z0Dm?nE|eG!MBwlj!}mvr5yQiA(dY0n0yR1c06vZKJn9k{U;J|X0CCL2BrP<=i!;%^ z6VJYyA^67i}voau5Z5JlK-$Ygqu|2!F?i||0*&l zrfHTrdKw032y>f^fUYZ+C}*u6h)0 zZ$ukCzrH$0ri=@(PXw1v@Ql1K-BQadC*%(7LCO^99Dc3pY!Q+IHDieNlX;f%{v_+g za_ED+Nmlc8Z6->nN27LAknQGFhaZf{>TG&*iOVAX?=_o5`UEi0pmgFL>v^Gk9?CaP9QH0N!ebhZ^rIl z_$5;uQ$?CXJH)2X>`g8Sx1zhTd7A%u?JaKK_#E{6lHoY4@;j8oW?sI!P*>NnjU6tR zaC7J3ODvJ1TCRs>of)5vESgViVg4Lk5^N{CDH^HbOG;VmOVd1Qp9I}TA=`dVKSvB* zO7RD0ZyICP_Jy9IL3g#sU&}1n{XzqMUwvx~FYW+kK1SB99(&U#zbGFNP>Nj@;;`oa zY8@plIDrs7vP3fBK(Xja_jNV@=jQx->B1>cpB5y|U|?nnr{stjg*b z`6E=YVY2!z!P28XPNJf=`c>K3=|j{6$~eKcmOBaU7Wy7)UOA=OSkRe?Hh6Y_)=ISz zAz*y6HIg=ZIA^~S3dAE1BTIKLqw10^k^^=r*}Pj67!i{L{rac~nHbSOK4YA?S%apwlJkWj=o%6`zeC3PdQvO5u-(7cR9o73yA;A1-7lP$azhI=s;( zHAz-|xUcRC1K-2P5A)$AidFtdf=w2KLbs#-R23?|OOOc*1&S*my%wc`>EUiHyQTpm zLv*5l^l5}yyQtbS@odn}A(iWx)%EGjhwg$RZuQZKEjJ$*^2Z1mBLwb`#P@=JX9(K7*;B3cM(eVO68fK za`lgQ+j-{=%$a-Fu;~~>+r=0=ow1c?*;j>*GE>EgOGCU=pMWe-a>CWGW4X&4fM;^Hrabw}hg9}QbGfVyVmnhWwU0md`hJi@IGLoG|KC2> zzl^mb(OKWoos?$BQgjT!ixvVQzopl{Yk0KVP0g=OW(ROBm?TXDgsDyxJVh@q3eH}w zjJyR~bP?AklpSj82 zz01M{w}gqR8br&DLu!iW0cBfpzX~yQ*x?bRe9Dljn`n`>DNgTgHOi$JL!US<&{!*& zY&V9mN!O7F8yd%6GJ{<2Nrtcpg;dx<4ouUwe!(rob=6R#hPTatPF}?Oadu$?63HYD zn#xU2QYh-3K)Ya7A#`7Mp1m-4_v_G4RqIxY0z&L z%~Rz;D*^VKm0LXTTmfY)>06;H^wykwVu7u@r} zy6Qj3>poV0_r|Yn@I{@+sToYvmsCym9j#2TpLjAAYJ56s2A*h~cAF*XpvzBO-862I z#O+%FZH5RlJKtM?@=CU*(G!dsqMrnOV#(Xvvb7hbVhm3b+I)X-Lo}+>1_I1jIj6|_ zdkNZa!(4@M3J2{Cc3r$rH*wV9gG2z7UjavQOy!`Zy!pN{L|m$jKG2%>BT|0YJGL7G zA{l6aQJzWpLsD5A$GwA&QgZi$4*aniX{E#fT}MWLulATmSJD1+Q-=;N*#-PJ0X*G& Kj@G+|{O#XKUegBv literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/LavaCrossingS11N5.png b/gym-minigrid/figures/LavaCrossingS11N5.png new file mode 100644 index 0000000000000000000000000000000000000000..c7002d5afb76361644d24f1575e76b071adfbd53 GIT binary patch literal 2867 zcmaJ@dpy&7AD>IC8tZJG424dJSG_PgCCX&VZEoR^Fy_*PgdsUh<`Ogg`d+IM^QXJojdH2pv0kOfxO0vt9GI`JC?2?(cVhtEqO=t0v8{bSDez zSe}sk$jGPS?S`SI*EnX#xl6yfb^LnOUjCa!h3f3dl9t+!cl6FK&|2-r!X5^AL(o5X zdEJcyY$07y4TFi@@>}c(5Q?0xlJ&Ys>$-WHJWx5GwkP4i@HFXsGJ(mo(8^=*-e$qI zn_Zr9mgab+=>R2$p@=)SzUl8r{O_#85TdJ;kCGYwK}>{ut-3CMe7aL`XIXS7x73p< zib9IKhcFxj5;zOJ+1lp8`DZAPY(}r8TJS0e=wQim7$o{!tVCl z+jY>$hKc8lq@NxQST~E?%d%>=ySkfeUgnbf7fdLIn0>{}7Yioav}jJRr;@1bt;zh) zbvoQXq&iI+0P1`OY9)Tp@=rcG+|DreGqh*6H)k8JIIE2M!v_7D+7)hdpj$YbM z*e$&q?`*ncqvA4ZSz-|EmIF!y3(O;fiO|1;PO{pwuS>id(HM$sTO`!dts5=u)y;$U}r)zgMq*UF@doaL_{(bi9p*PzcTf zeb!Tw$4WgN`jBx1j5?JKv4@%L{_v-@aV7_$Z~@G^QirP4FY7=e?3U&I;mwz93g4Sh zYHC1F?5A@uk?LZL zxJ2l%D!Su5^cLQ-J+jYGwEQ!_fh_TPEM9uRqq|f(;fK#OSg94Zj&1R|kY%|WrRKO^ z3TqW1;pJGVElfLkdA;U7xS~)-(pnUxP4P?VwcNba>aZ&KhhN+YWdX11j6VXHnWTOy zV2KI6qb&-2eq4L#U>{y*d4+%{zfRWL_E5Y)*1GhhfWOj}EQ)Kf?p>giM1w~>;_sGh zxOhTx;yWN9dox6C9Vn@2otJzco zxeK~VP_P0bQzk2C_$s&RTyq%l1Cx(?-}DM#Sm23N&RcH4MqmL&i5(U=dMBFbf0hs% zMD#bs0znkCyS#jff!;~pieYjJvSJ1qT<*EJf_67`r@eTHLRJ8h5!!N21B>#qIvK6+ zxKY&%G&PNEM(QCe6cZgfTw%c`?ixR%ka{}#Y+2aA@_kn#{xxxl+|1+cKS5_N&FzYQ zBOyk5=!WG_(sNwSq{A)uJBMs|Z$T2h5qQkedqsFIQo^16M+}{=f*Y~LSE(lq_-z^e z7=#%wH+I@Dn?+`h48Qk(NYAekHPQP{Ij>FdVOJ1jFQTZY(JjZP`HXYMT`=4an>H8 z)LBX?;M@7iOsDcuNI9g6@Ud<9OfKO&w|>E*>%b)D61&;_lD_=WwRf1g*NQ{dAE_|z zvQB+zpKzFZ7Ww87R1ykx$%xW4w;~fx4{h?1$ zyyqkrx%4yxp@Rl-Af*$TFey<_F#>a2%xMt+!Y!treF10Hv-p$EEH(~F8~qg0c~o z%eW!Me;6?;1?VBAP~u- zZI^&UpB5k#WUu`qR!I_{WObjL*LckL^iGL$)HZr{lDG>PKZa7zOqIm@A8-y9RdMjk zodaJvD{BDxHDJy>;m4$?wbsg!VlFs(>z8?J?%TG@Am~O0460Py#WiFpbzI*n%i51| z0B6p00E6fQ3i^A$0a4d6D1#^h+2{`2QA4&-_uXv?6FwGSMYU!ehau%a6sx}z+&BHE z6}&2DzZ9Z*Y{fHMK?~hY-?8hj8`hZly4wMO-xM|Igaj|MqOtSD7yia(* zH&Oz*#$Fm|X(|05k>erD?0=EO8dpd~wfP?aeqMeGijw?V{Nl>V}-^{X(+Y65H@ jJwrFS5vSy!^Twm9qyt-y#5IGzy%2|^F1ELA0x$j>yACy? literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/LavaCrossingS9N1.png b/gym-minigrid/figures/LavaCrossingS9N1.png new file mode 100644 index 0000000000000000000000000000000000000000..3c85ea2aece5867a642660c5f5e0120b9c262dee GIT binary patch literal 1306 zcmeAS@N?(olHy`uVBq!ia0y~yU^D|^4kn;T%0110K#IB8$uoq5gX8u?{|7*>K#6Na zNpOBzNqJ&XDnoEaX-P?HQF7A-P6h^+ZJsWUAr-gY-Zjj-Z6MJQXmx?tO7ewd5$nRq z(|KkYXBHg0v#|Vy#`(FHDIceJihsDpT*9?LxrAc^Tc@sc9_QpQ)ycUVj^)=Z@DhKp zDEBtQlU1CGMi54UzR%UAoFtAL zzI5NSckfr*iEHoXO}7f<-}T`Bq6Qa7AZF}rf?_5i)=nTsH4J2+hsXpC7*+_JpaH@Y zR;#u1Z@im#S$AL5+BNxqH|tLK-VK%k%D#AN)B53wbz}J~9{bDDOUw7kzgc8iZ!ufT zZBUOYS6tS2O@?h!IG zplZ=0mqm|QI<*1dRHIlc#sFMdBS0lLLdY~LIOQBTDf+_U-@-y{^Pof0(bPY{`Ooi-w*R4kVe;z z5s>JCskI^Fw%M_Y7f&S~Tl9I_AN=rk`})Lt{nJ~%r`y%tob{on{rQ&Z;(Uh~YGp5g1+^>;t(D+H={`IW4P>hKded%rVpAG;`!VQ+Eq>`(bq z5Ed^i^)cn^{a<|g@aLi*yFU7!iO{>w8U8=@$LDL;=VfptezbksaQ*e!wB)}t_aCT9 zyZ(IvHwAI}NcYyZUPHMm%VQROiwzx>4jcGfE_rcv-Rn)j$o@O++WE>_{$1G915vp{ zWA1NP&D&`=RATG@PWbl8>3jDs`^}%e9)92`4#_x>41}I|5NQvZ3sDn~%)`3C9ZME} z@4n@Fuvw3g5ugkWGe(LLmPH`CR>To-S!%j|Djlkr58qM{mi^ d=9;k9KIolq)DGWSa=_A!!PC{xWt~$(699Bj8xH^g literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/LavaCrossingS9N2.png b/gym-minigrid/figures/LavaCrossingS9N2.png new file mode 100644 index 0000000000000000000000000000000000000000..0da3c61cad4facac618a53959ca0b00f7ad7b53a GIT binary patch literal 1769 zcmb_dX;4#F6pkz!Hno6(nh0poib!IG0@|`@lgd&^!lFU}MWqBQ1VSK)kN_$)ASJCh zOcOSr%EYKdt84*@%P1;BNP&VtSSAI+Hp-?+$kO)&TJ%r<^v5^voqONh`N`IYWT!fGa2Z?KI#+H*vpr5F8Hg9l{TS;d(0WFg1|;1C2|iCbK+mu1FKLOJs4ZkD6ma7Sk?;g-+&Fs1SI zrs~4+jvak6m>{DkwjEuLoJ2%e){Ctp6Cb@sy5nQkS;kCSY>7tA#O*CX*zmmVqUt4V zIGp5O#`wZ${cqTPK*oElVrF48t-h;d^d9-rGq`zpCgp4T*W!Q|bRl19YHekuDuz$Q zyLR|@FwwOLeOp6Q5MJiXU~Ts@XKlA3F2fVBAueL^bm$i7hE>c*Tt7A=M|6Z%rDb|( z*a|;j7)z_q-Qb3y2sN)xjmUMav>Hu66TNhpEIz{b^t@xH_NUshnTW9~W$WB=p9x*9 zd8|Rag;GgKR}p>e_<2ZOjrxFvwa3~E_TnR<>Ub`hSYk3cm$xY=6FZTedR_4IV^1Ks zl|Eq95E0%KNx&=9#iE^dNyhjxx%npfHyhG&x5)|mWq=UV(OwY9L3>eC3Tn`Hu>u=$ zd_sglXN8fe3323_4zzGMp%l^GwTnd}CuCtCUy8w5Ftat?_kcXCS#eva7zY?sI^U9Q z5tlE1#~o@WE$A_IO!XnO!tVfIae~v`N70H2nrd?a!xd#at^i!#CdIJF8X1Jcq-O%QAtQe?#o%6R7h{K zo{^VgLVbou6A>a2RfT_(wj?Md?8l-mr3R(9=!}ou;Z&|3&2wi++%UXGRrqvTYjVMB z1#m5h-bfmDzagZHw5Ye>eIGdL-qGEqHA?xF!hi@1m(>k*dnS{HiqO?O>~)AW|HI(P^~?c9(fzWZP{Ccpb}BJ2dM_Fxp8FBFw41mMm;7AP-}ApqMU`q zzy*iC0sc&Dfz)@dx~1Y6Zlb7<&!`IBqq*Hg1B_NS#Z?zTi%ESK;A6)S_F29e8M$q* z>j_v-BRXF_@E3M35-;L`#BD=eIwm@kP^;%Jq}Fkdrzo*tksnr(PC(SN?D3!>odUT~ zAOrJQU+h=ZpPh+)$c(GM2^tO6RrVwoZQ5eW1M>idw-@L|<7yz`p@xL=DF1!PCH&6; zXW@_{D>yh}MpDQYiEemk>k71UiE~WK0&SOK_D}*~v{E_aoo$VzDP++Jk46RgjK<71 zbm8gNR|RBEZ>d&~Sz03NCx`v2mX8Rh6nK^l<9K-NpKYgRT-AzAkOjP@!j~=OXsbs( z_5lcWtl+|F@Wj+)z(L7jaL}KG%(-ZvRQRffx8!L?gxyp-&!Y#a?Wh4&jhoiMvC_u~9|LL~TNVK4XvQ+R7TTYC&w16%fA1Cri8JT`h#9V`7j;R$bK z7U%oiO+g#5$7|YUW)50y^UZ#B_SShGBwTQMBk6jYYMie<6T>kJUpd3d*Ib-#=sZX+ z&cq_c{8<2qH}J39d#}_@GOy^0{*OE-Z+13<^H2te*-m#Du)07 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/LavaCrossingS9N3.png b/gym-minigrid/figures/LavaCrossingS9N3.png new file mode 100644 index 0000000000000000000000000000000000000000..aafc04cc1989593602055bd411fb0c416e66b487 GIT binary patch literal 1920 zcmcIle^gR;6i3Y?Y3gDSrTuVDI+O`n8s;>of|}$H63blrvY-AcJwjzE+H__}RxSB0EiKVZTcsdJ%#(^pQ?RU~9kPYOV-L`_cJ}Z7xaWP}efQpXzxRGV_cFsn z1FbFXEMYL1_0AyTZWzpDn_l3ikmm5{1`v9f(foE&;c)n{JZubl{en)4qDQ10rJs&V zI|7S{KS`$_NjsF&w-g4mSiO_zOHChoD|Jm94nUrhm*f*ttI4(G-XE>426$0H7>4LT|0m1oiEt@DiP+@c#M;QD)0u)WVFwwO>{b_a_@ zqR=Hv=ouOFPxhVr-N_PRZj>OTljY%GSArri(hSLek!+LSIl-(cjs*bLrF0tY56|V# zvjq6cTHBVfR;&Z%3MAih7v&t$mwS$A!pvC^Q-nElK|cRO5VEBy9t^vyz3;63P6LXb zIzLgTY!^%G#v(^X2fTHOeBPXLFbk}&uV?fvWQM2|k%RGdOEqDSLfAJ->SEU2X9cVk zmT#oagrU+sz!31&edMx&yO{bb2-{j%T zl|OCddZ;F7pna&@v*8+4mxIiwQg;dw!_MYJQ7Qn1pwTsCxF2p zFOO(ud@AQOyn)*qjbiK=uY0X-zHvJ5hOU_`)II(%|A6QXG)|}^CPaa=nV)rpW6sI~ zYx%O$&O(yY(A}Yw9(lJT;;pOX^$Fw2SrTl}X(!L#tNmb4yW4O9YM*HvYkfJ6Cb~=v zWMJ;RatviYNAg0@PIjKua@>+*{g~l6MId)9_eAUMN#Qp>h&A(CmwjRqm;XZ|3C%oj zGf;r**eC8iRjMw+1|jt@xq=NZRkF%tDoTEOTYPYpC;@C&Wwb4T$Oxo9Q$oO*jP@e? zo239Zf_4b0A~&{$OILPj5Y}sWkk-e85by*Fno$lwNb5K)c1VtfOi`Jt#)P;mLylG| zvKzg2n@i8SiV${k{&hjK8ehLtsBq-6CW$Kc$8NiHEr=`vz_CuxXtg5n%?ebX*UF?}uCK?g^i_Q+Y zm%wcC&yS0D&;9wX$0YEWt-VLPCPauAzr2K=m0D%avA(w5n(d<^)2q-=1NSn<;}p}! zvzVb;zg2Co^`BByVYj9xxJBq4Z>Bm87ygJVGxRF*f9w_RQ4LwH?DW1a(;&3`q)GKP z#br-{lJ(gja!EZ@+-$M>Uc&`7#?zg!!c{<=vKlBP_29*QoEAu%OFLBjHw-e-)(>m) z)R^cFLRk3<2r?m@p~lSuqCeEAhnkKT^iOz1Nw1m-!QSJfMiCTw)~{;D&U~WnRbi9C6Rn z=d0&Yh?UC1$Y6cXO!v^kY&_-(%_#8>B^22T)wx$%P^-q+z05lZ<*WCAC}MGpM1VMN z@K_w{SCe#VuB~i+sn7N7I`#BAyD&+s0fmc<|L+Cy&m~c5YMc#=E2Qu4RuNj7ysf;q zJ0a&M=2{yIB|P)f3V?W{=Ngj6-;b*_hfnzksSdVxlH~iL9SYk?3MJP09mx3$EhvNI literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/LavaGapS6.png b/gym-minigrid/figures/LavaGapS6.png new file mode 100644 index 0000000000000000000000000000000000000000..9d095ceca49952305bb6aaf9412d0a263693e875 GIT binary patch literal 1007 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE2}s`E_d5VcaTa()7BevLCxS5J3j5`m3=GT* zJzX3_D(1Ysv$0UxQlc&K#ACj7{M#0~h+5pca&<@hYKP9QB7VM#%?G8#9BYmVJ+SqE z@leO~nsvk7MyNYkSI%iIiE;Wq2x1*obZH_dB<)t zdOkln=U2Sst4cfXfAJEZ1t0-1aeD6Uwz`8)izI*jxw!AY@rQR)SIgTUzjwfB%J0U! zAOCXiZ2teaPT}8v78e%>7X-1)V&aaL?e*T8Pye3(uT%2(z}2(;wVxWda;&)eH9YR` z*Z=?8d*!Q{n0B34Tx@T8@yAAWg#~ie^7GAs%%wM7zGt6#)cIPINl8UP>6^pao{ynS zS*bnig)Y?gd}L>OmDqD1sK)r1IHTYvuIyB<)j|QC@=}!Qg0Q|V zVVp1Q`nJe%tY}wWYd!l#UEdZlMnNF~!RiHJ$9`xrZZ$d<4pedM2Q%YWgJbV=7X6ld z+}*%Y*}B!JHI#G3RLwPB4&M!1Wr6xNbJB(Ho)-yYaq)nM(~-Xp=DmC6U%ZXhbUwaC zURnNK-GbSEJLEGm;}Vg=5*(^?*t4E`WKV5?IPJH^r7B>6^=)|vv=iu9u&Hkvqa+`% zX1Q`oB3^aDZ;8kJELRRo?BCq^F1<&eN$H8`wNoNtKwmA}pv8FixJVgL|FR8peM{_v vBLoE$;i(-I<8ptEHyCJBFAE3?OpFh+7`tDqHMta*dd_^v;JwiD#91=Jhhi*FBGqulw_N{ruBs|9^N_e0}|S zwrAqAa{4!<%HONiGu)Puy~112?A`hG`}e&&FuyH6u3W*la1#ds$IUBww7Xp{vFdC3 z(u|o(ALeS$pSzpw!3_L9npbkmqJBzmdSHw0XZ7gHb$?BKw_Y#kDviz7XEa;!KrS(I zTG8S5#2L?b-uY7~Q$0UE?}y|2_5SZabNiM7T~yq1y|A{j_|JL&_;p!pS>g`KJruoj z^5EY4jd~h~ylqQ9b~D+&TFg=Z=l9iF$MvfNZ@k@i_q*%vD0}ye4NTkRtgJ2m{rmd# zY_x4~#gkL^f3E-Y;eKc-bywMBw`RqOkE#E|gbUtiN;A%G6*JxL{$d4_&4ZWIf03^#2N&~+|JfURp{eX^ zAj__&kKX$%e$L?_`i*1x=LY55$^D=tyK(-qmEWZNHm=Klt9pP<)W#h(x!rp{UApeV z@7I@q|8bgp*OZEh9g-s7EYDoEw=H!@nZ4UXbZ-Skff<^3?=`D`uu~r;#a_Ra%@FmG ZpL5zvfo~c;alpch!PC{xWt~$(696#Z{viMW literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-1Dlh.png b/gym-minigrid/figures/ObstructedMaze-1Dlh.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f8ccb80088b3ebb6c149e294f660ab5b12b0ab GIT binary patch literal 1165 zcmeAS@N?(olHy`uVBq!ia0y~yV2lN__i!))$&l7p#XyR=*vT`5gM;JtL;nX13@omm zE{-7;bKc(FSSai$(Uy2b;L-utmJmlj2UZo97{(9>2Tt+%%tBfU50b2Q@O5M~$T0Cr z{V-5C8TaT)-v|HQP;PA6G~{7yB5cAK_-@Ak{*Mnc*7EI zhfAyqFPSEkFna7_P$5tF%ZhJI8ZSOR4`2HJ(e2IOm%eX0t$nXGHS!d%d|TqY=S827 z7rv?bH+%VdyPC?_ynmIa#kBgz-@p6*!1Kem zf6ICV&nagidW)1va_f%B(GHc!ApXZs63m%wH$TzQ-t!wJ(e&gAq^@;`M-?-g(9%z%fmAJp4Y4`qfueoDitmKxjulu;@nU=-j@3;5u-2Fw% zB1%5?$B+NBFD#4h{_wj0%0gG)az{R^@BJEos-!bB{1(RswEUA5Zau8KbfNCqQb$3v zhd(rA^7MImGnaA~ZBSh9_V7dWr3+oZVgpz*e7EYIIOsNad!)smb-K>NS|yHx3kt>G zI=y%OkmtJY$kTQGFKoFAZ1uLs-`HQd^R?9uyC&_zm!G-Yy`^{YvE)Q=eZ3}r#~;q9 z(4T*~xAD*3y!-Hct-ljDiLU(=-&MyAf`fG-h z$gNA)>J)F-eR=a^`7RBU5&2TqcU`8N&ti^`%7Z?6zzW;Aswrsgx$n(2h z&nGpUGpVgxC~L>rwmNBlfllUwsvG*CWVdDZvX$SY&TU_p{Z{n=o2dQ%4LaUCA09Rk zv3(9g(olHY$m&3pg#-;XbW&Oh0wOr3m!>WU?IO?4{$I6$>Ym?z5^-dVkgfK4i1jn5B(o7FtBX* zba4!+nDh4T#)-GXMA`x`ZeA$uu;fChM)?A+DH;Y`1+07_Oi5Y=kGMo6Hd;Hd_uXkI z)_hR0wBCK1hn`%ae1+eZ#j$s54@=h6JPgTYaxL4nIbfK{P`Nq}tOhl#IQFP!SH-<$ha`(N$X>eulH-)`+aWOM#)8~@<~ z8@bzO<&STC{d51nFW>t2*JqmlKYRLnti7G}jQbgz<{mn?xANz{qc@iAOpIQ%p}zj# z=e)a(_Wb+TT2BbtbAbco%**Yc?CRdi^KXx1{q8Kn^*f7i-=AqF7aA_Nui6*b(p|@< zr^2N=w|>iOrflKXDm~kCrH!GTPKMWIAMQF(1@cwE$>Mn*a>XJ#!5)5a*1P6geYn-y zI#1E5olNsBe^fsF!dT%13W}*V&zaQ4-8Tw>LPwiu=l37cl0>X}u{q^Sj3_&s*eF@t@*oKY37q7W~>!|L)T;F90>U-`stxZ~Pj(oq$|IO7cT{tHya6)tJjxTZBcLjKNYGfSjiz)w} z9jlS@SmOj^$Yx)WEeXrl-Bz>t7eBjIC{LEvvf)vlc=QnJvHX$(%*?)91NpIO(>Qarxh{`10n@;~2qHn%jdb z4jo$<{rru%$ihXh0xMFkUs!nA@V&8=^<`fXv*&+1t{43&U-mAWt8_;#cllAjhdR3s z{M`@?O3e=qd@oT%T>WOWW}{Uk?6@7R+V8sF?%c*+>Q@rfp5; z+MO@n{qV4XO#kt+&&Lbj)Yk2OsJ_?UZtwYglbbJ@$>^3 B0=NJG literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-1Q.png b/gym-minigrid/figures/ObstructedMaze-1Q.png new file mode 100644 index 0000000000000000000000000000000000000000..dd0e7fa76b77c53bef88a675fad8763971637802 GIT binary patch literal 3237 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 JP<7xw`roTt9C!c# literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-2Dlh.png b/gym-minigrid/figures/ObstructedMaze-2Dlh.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ba2f05f55621cd128b317357c878d69be4ebbd GIT binary patch literal 2122 zcmdUxe^8Ql9LGtUaTV9^t#ZWOVwR_CGZz|$Zmv{nT3J~}CN7l)p_oQ3rcY{{d7HY{ z4=P0JsFXTQG9FDVbe7Fo5DP9J9tq1IsL9Mwlpdak(YEV$rTww_^wiszCiLna~J!X93gKO~e*tdN4;ltv)9y3EfD9fLQE%6JS;vpRH(^ zU4bA-TBF8XW!Gp(pF&VrI5$H#AttKfpl?m3>Yl^LIwjIZz96Mg+0uzHwrZ{X&28gd z$$9kTv4QmH`SrY}Fpkmyl>!&8uP{70HgsCIb2zn(TLB7LG7~;rJ7+P})dOkd>i^(`j&{J*%6J_Ns zAX~I^&QH1+R=Ohc>qh}&RWfR5Omx0nM^7hC+D5qfVxYIXtXhvtdIIfHv zD5mXAUvW|weBl+Z=`9#IgXB>mtsU(a5mHZ7sVv^r{i%Wjr=qIAHE!>QO*Y7$>t(`F zFfVUGe3O%4`7!B6uTohh^eby;-K}Az_k44GMjm#YY3AL%r=QOHnH}GApXKTIMj4Ck zS1OByo0o+Z?K*7;M!k!)A%lalDQ?SMth61gU1IUw1ow7k!m~c&gZcf3>QY~?C>_fh zB0n?VXNgP!g+z4EoE^Q9is2vTwqAod>Dp$F@v5r8jJ_xZ7Ezt5_^gl&EHE4}QGN|^ zT7_wifVJyN6M?jrD|Og}z(PM4FH#xzEGf%@)VZr(Km*;x`9VV?@DbT~z_>_a*tZ<$ ztIf0t&?Fgm9zRCEX%)S9T*CfZkPY69NZ_+QlO8-x@Yo1DFtmsS_@N1H4ght)X^nZc zNezjWOkNMQ&1&C+S^wr`9A@8k)YzyO=L~P-B>*D(*6tZ+`sr&YtOfL^N_YLQw(Z#S fx}N@1!*aTpGnNL#(GZI3bAY3-iCSF|%FOu_cS215 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-2Dlhb.png b/gym-minigrid/figures/ObstructedMaze-2Dlhb.png new file mode 100644 index 0000000000000000000000000000000000000000..06cc97440859ea4da97c424d2d31b42a03ccd707 GIT binary patch literal 2276 zcmb_eX;4#F6b|AD4MM6cMre&~ML-Be1sv4Ch$$GwP(UTh=EDI|HWAqg5!;kfwz5b_ z*{YN}l*JSSX!-Nq_uiRv?>*;y=Q}U` zTdb=t)EEkZKy)#O(4OGRfj~6owby`8V+CqFxM)T@V~%NSYxhaq2O$vc5)AslvG|fP z5h{BdX7go9m_YyX;Kq!$lb^V8qnaVkhv2vDhs@WHG&ZaoS|iU)U8{xD`tIQAnk+sX zdCNuN7PHVo_SoEcCYBWVFy4?{>M`BHl3c)TovNr6L-yUUIR&k#Tm^vLWCRi?-E(qs zL_=w;);TtR!YDuiJT`DS0yM4y$N{3{D3`0YkryM{P+o8(vCDH6V2Tw&Mg-%hSj}hu z&BOG4UgY2<_wqT3oKQunrI{=8!|`g%(yUN*^>8lzQKD`ioKETK+0gr|i?yOZ1Z{sE z(4kpv%GEt9U<%TA>d=BM>$9?gxJ&`;-8&jLP(rcwrB`y6Ejge|m}PzHvQObubT0o# z7wa$wGvfr^^Us-uJ>9wd=J6q~$DJCgl10Be8O*YDnROQ7>M+A1vyd4Af(mHl!WtMV zpnvzfhy0(E2$$3pHhV@kH!-ka>bEo?>auzknta@PG40|cZ4U}cDZNtCTdAx zHoeZKU!SkLUu!seE=vOKQ>4?2j5YmC@oBN7HX#d5bHs~VVcG{S zloJk!z$zWQvq*~@N&8&71G75K1@6Ly(LhqM$%t6w6e~OW>Thq0N~??{J?*O%vqIYD zoDL`@ruE`5m9+~1)9LLtN)kY~i@OzooE&|`OCSuEbB|v%neyE`2AK3M6b8dgnAuIX zNdla*snQ}0o%9oEwwk9M-VtUnA1Ws^?Wuf7`EmPMTs1}NUye||Y}`*@ z{DboZ)C%RZInfYD*2yX>%Og03XKW~$yf-~!hkmjpij|NpV>FxTi)6((TDlCIRVPj= zNGy~=`?zLzoorio<}(vr8O2IMr+sfJ?_nmz_bd-sq~Be%?JViIllb%c80#tSYf zi}|}GZ!eRc> z1c~6zzu6IkFj9>Y7W4%QQJ+zB0I3RQ50jY2xiPLMmG69uP#?BsX7sX z*GGXc=M^-(Bsp^Mb%P^Pnf4S;o+EqZ4tG#7$oTad%?{wXdM-t1gVN7o_6XSJz|MH$#yph8XG@xp1=;`GD2>)Bcf9yOAN`ZsD zQxlm2pK)6uUmr9Kxv+|$l%nYln6&I8V}0KZoE?f)xu2X6Scv{P%1}K3{Z1NlWup#T5? literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-2Q.png b/gym-minigrid/figures/ObstructedMaze-2Q.png new file mode 100644 index 0000000000000000000000000000000000000000..4312535f8448be5bb8501bc2d2e613926175463a GIT binary patch literal 3431 zcmd5(^lE2%^@sOPf1Ejc&OUqX zwbuUDx4!-3Zl4|4`CraQp-@;a&ux2AD6|22bo1sQUv4)2@C12b$XmSj&6_u`N8&3+ ze#3ih+q^IF+NkKeOO`Db>7h*ziV0%R;&pS6?J7GdoFT+k9Z-i=Y-U9){JgP+{~J1WC2fd`Mn!u= z=zdSY9Vat6y8=d?D8XB0sW8nK!PJdB(?vTz*5tAZd`LklQ&P1-DU}MafCZK6K_@!u zkEqlZR8T~E^pW@buVG|WJ?Isnno8g2lw%6&|B#wlSDha6lZY5pVbUEiHL_qhoxy)j ze=9@dmtP3NRa0>s(Kz~lc~I{rPTCb9r(#jj!^IG~G_u07H^80-f}-D@@%13mUm)k1 zz%h9nHf8$bhf||{xp4mpd8IZ-g;`8-fE2Xyo&~9vZm1>4n6wv0zbz2jpYd2m9VWmi zIkWE7(&>Q>vw9#FwgWpb8v$~*%?rRzwz`^X@YKbFzCL*{i0tt9DO)-W08%~_77(~0}c19TsPfa z&DU%1Gh+L4JLsj3x0Qj(!OpY@7RO|0X#3zea9|<6P=%px;%C}X_gGw4VML7q$zn~E zsn9Z3Ip>4RXCn*y#XlR!-TnY7Mp}aZ;%xIh4i^96rPsnhi;7&bFMrE3RjF@k=B~U1 z-niA$D!FHqkzM5qcdmbljjhTD1`1b?K99S(Q0U;dQRvFz^;10 zl=Qxudv+k*bo_+PnEUwz$oB67E~xL)&6%uFbzp+K)U{?z;^?G^nU|vr6>zH)(Ot!5 zQiH@H9v(^SS9I>`_a!>VoLa666POBbe;t_IV~p|wIJy&)fCX=&w9>f01Yd8T#}9%D z*6>Kq1!GgSydENYLKcOsoF&MdB_q1`xSp^a{v`TXn<5somZMQ)&TDPQt|NN~Iv7Y< z!N9G(lNX#g;l3kKw>`mh+*TIuS+J0i1BzpWCvkNpq5guXSD)N@z?NwY$~Iq zZD&$HKhVFROO3&w(0#g4X!!{Am|*mpFWLzwJga`glTOYaORT)78V$U_Gk?Zye}LG# z7532>_ODMPO&fY2=U3qS)lt;0vI&*1pG48YFPKs)<>~ZHmfKb?Ey)>|9XHS>&1M<4 z8mFjtEV0pIS^1IZNR`Y73QepGXATV>d3Mf4$ScyuBo>+vJ$K3Ksg;|IJso`%M_AtG z1>}r&KMG8yRc?jS_SwfqUSrkunWHpNn&-~m)?WSSSi2{X6He(&2%yPKo(2UdH}Q#3 z+DbuON`m?g%{12^RkH3~V8@P~iBNPzlOlW<%QAu#^!7tkAL))M+p%0BLcr4ypBt`? z_JWoRUJo6neIv_=I7k1b5wv<{caN+~x^QKNvsO05Aja&Bo1wIgdGRR;A^_Pwg3_+( zf={b3#kuRLWg;wnP~g+btAk6<;KfM6u76gv49>rs@Pe-gXdevgAK76isAIyW^;NQww!h{e-oYB)m*nt+g0|X~#Lw^%ju$`QC0GN|CR?F@Wvl$cD7EY4$EZW!L#s)V zRlH$j=nWm}i7RR?FH}nw&IrWt{fuZIGlz%#44u_1JhD%{P9wL(SAi&8@HLmb<7$k! zp3LK#EDq^gdEM-H;zL&A9CJzg^3@WzH>QpYj{A@w*6}l3tl-70pRT?8h?vwZgKBfg6kkC(~TWd&!C|D>jhkAe_`>J zv62o87?OMy58n+@C1iTA!TKw~KxG4!(c}2!77?%w7raLlx0F#1wGYvcE`^~`r)gD- zm^!AiCn2T|cFZ=7cQNv|^7d8!RPX|5bB5HMlgL8xC;)M zEFG${OI<&xfp*3gKm03c#n$&m`LXU7dUGM>+2Y!HnV%pxCzRKApKaA!LjLh@rD4IU literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/ObstructedMaze-4Q.png b/gym-minigrid/figures/ObstructedMaze-4Q.png new file mode 100644 index 0000000000000000000000000000000000000000..ed20e8d04049843d20ccd60c875917ffdd8aa397 GIT binary patch literal 4345 zcmcgwdsLElA4i>8reU+RrAf1kd&|`2N-gEFi!02uWopgTIp3tFc}cDC0=m6Q8)fAs z?~={UQj&~PLlGxS_Ikt1luQAMr2&bkAo?IY?}N4X?2nz(`$y;H9M1DQ!1-OizwhV9 z_s4t>nHsM*Mj#NTn8OE;BM^F8_^ny44}X$a^!+IOFi6;sIk9~C@)4om7y@BdhdH?K z#O2aSUIo=!n#L9m&$Vd{ZrU2I_1bg$R)=-SMdRA_qLh96+MRB1-e&xXN%bn_veRQ< z9lB6yb4=|0lxThIp40Klhj-F}dw8FGh(;r)c{HiZd9K+8 z2#ofQQV;RqGqKT?O&UaeC2C`~!r<4N_;lBPq}d@*@5N!j)B1gVxd5+q>{T~DOyk#V z!A3wbg2c!_Mg)H(ad1-sOBS(ZryL}B>4i}|xD0JO4;YK8ArFNo9dyto?eWXj!- zg26lbc{$qUf-VpFzt(vIU<#AH-C*xm1PB_p?z?CtkCGyu%#BX%?j4-}d6 z0O=GWAs7FRPb?i|y{IJXPYj*bgrDl?j5X~8y!KUdOt){5Al_?tBHBvX+VS39}S2psKkowCFe-I5ZfML&Mqm1>ilDvK( zs#g8LRb17T_p=oJXl#4Pi9LBd&Uj}2O}yluJLRes`c1*D(5tg2*(?5;10S&uM5I3+ zz9xDGu0xzWu~1E53b>{ycHiQ_tTYRyz~ht2VJ?feRkH)?MY@nbZg@o$3fPCYuRSgH z&NU0v9P8Qp4dq$@VE+d=NG~uO|9bEp*T`a>P$YVH2AenLd<-|A}Sw9-q8-C zk>&?xf~RLZC}72?GT61XnF5BdkZ`JXv*@~KZ>-0@s=3&XSleqq6ILqinLmgIrrwvjXKTcci)Z39-2DC&z7%wraW}+SmSoWR*^qJTYo1 zOWC+xbUrk4Y{RBkqyT_6O~Y1L_9O47U6#0P7lav#i5JVSYO4r;7^bh6DGzM2qZ5V% z8M7GRkrP8K@zWC%pOytDD6uj9$WA&%B;in&uAKF4?WyMAd1n-S<)Q>lSNo-S-L#nO z$C1G~nyHAFN1l{1S!O@EjMlYU9y`YNoY*KELC zoaw|FJ&dGblg*_Xzcgo6YeNEZbbais{=1oJ_l5KTbt9IQwR^I{LrhfC84S(IML&XR zP>!}}!$`sTIn%L?{dH->kpe`FsFD!*Au@k6-liWZO(GDcLV>lFsKBGs_r_Rd{{tId zv)<}fkFxWbjz`&KyTYS@N(eW_XGEnfPwd+2&cVTO{tyE>hcc1}L9*f|x)0RM(^eA8k=CzQvH2(9)lXs$b8CK!&JG^w#0Z$iv z`eaV)n({Ex4K1lOrR<4A_#O^5S+|3r66uF;c0hG{S)35kcE+8#ZNZzHv?{2ayuo;_ zJG0|3WPLjGgR^rXr#V#pn0W-J5x>%CsJ$9>xg3nW8t_J$XtZnF>SAJIzC^WEd!W(v z=nty%1X4$amn*C(RWL+=SK#6(kH-@TxZO+!HlTpQ{aSNRCj8t6Kd)C3yizS2qKI6C zBO>t^Q&eGYuxH{g)da8C!hv1Vv^}<(xE*~}d;5`=$5X*Anz-G4RhRmaShKYHeV`Ec z1E>8kP-+WC=O|d_Yslww@$)u)b{Ps5v^wp=Vd#f>hnNF&zcnfIls1@^5kA;KriBD) z50`97C5LfQH&42_xZFpE589wm!6^NJjwxjUzs=@Pg-J}q%itFb+i@7SflF+y6g6cm zB(ZpMz5jzpcuPE3m+S~>#O;m}O$$iA%$rpvBqR)gX0LEb*c}Wd@nx$4TM*`5T41j4-2=ge3-beXW zCpCRox@zi3`>mF{y`>83)2mcDnR+mili1g}qM*oQz{}CjE-w^H?HOsV8QWl)^F&(! z*VL9v4Rp_ZRUjo`q=%v02IT0GWfo?`d9Ts&u4$=t!4+O?;ImsSJ35?V6Z_m)b`Cl9LA(NURPDC-Fq zX~x!dRQUd#TqviK?0-?FjC~#y_JoV_260(0VoP3Nzg!H3c7441WZIM<>3 ziTKBCHhYK|w^rj;kva&K2p~$#ynwlg;l+KpIEQ53wZf}KBXprp1;DnCXH7^^8v57K z;_tk($y#~P+K3}zCklND<&Sz9T7rg3D8Do&(2Nz#uG&2Oy2v5fO}G=Bbt6mP;eK?w zAN|}UXrU4N-O-d+R}`$5c#svAX0NScX5|NmfY&EUpQ)GmAP8HlfSM!FobRW-q*5)# zLDPFvpcPumlmnZ@#F|gg9y3DUcROut#Wm~fNup7d9G02g7y`QCAV`>1lXu9et!JX! zXy?J%%I6Ab`ej2HlIc(iqz1c`cB`*XY1LFBp}GW`H{fC;!l1*1^1v1eQ~;%(a!E~f zld05g3lS=vtxUw@f4I)nf)p$K*tEwk<^&sdV*i8uy|1M3x;;KR&Ey1*CJ2JesUg5* zGtM8HZ<(8q@yCIxeC0R4cqp&7P{CBHMHhrbNR1!UaR1VKkq za07IEyZ?T5N7@(RbYihlqrxk59Bwz41Z3)7m1pgA_b5^xjFb=kO>j`ZSk&3|{@gFr zitB9#6N|l9tk8LGeUE9{ovN+Aawb=DdqNuyj&ryBST90uzf|c!! zui;Q?hhyx+Yj#c$lWyoD7#vT6OULccm7xMX!GFZXRQ1!x7ki5p{t?OdcQ(PpJcWOx zH!Vjugctcje9QqznOiqO{JfH!yzOG~EbGPSTh<9fvyE6e0o=LSr|5rCPiwZO|W`5t)M3oAzEkox-82Ir|MaDlRZb|Z) zVk5D266`VtGvaskH0ufMW4o0#y!sU~&3rgLzf!PuE28sUxz_GSNQ}biAqr28q-d6m zx!#zG=>Py5bEH#MpcrTvhX*BF#Z1_kBb|^s{LxZDs?M1kbhX0TuC zqL>1Ei<3&{627Wc46n4O=1p3~E-1oi8%pkvA|k(nQ%@BJbPR3|o-ye9aj+WF8S~cY z^?Z3zXadiu&>!B3e{roE;T)ySuU)d{=`TO?gEBf|_e}}TOzNgZ$^N;F8=KJ^2%mG} z%YRpsWy(+v|2nGY&rJ2Y`LW@RpBF<3;vK)oTXzEj9Q295Wl!l1-(;PHqreyFS{6{X<*J$9wG!ulb$oZftw| zmBry$y_-J6f#)3N4m}0TM-bGR$M56xPJarmX86$k{Q2|C``*8w_uuT!^2;x`tb4tG z(}np}RaH_}^;@P-pMFuBq1ndX{(jB7U`{ksP|c(|&!#W#fq%^U>xrAsKmWYpX8yBE zIkW0n%Mv%=@3H%T@p*sQm(TYf9pe>HzQbU62tw^F`2YU7e8Xa|KVc_z|Mz^aZ_j1? z@U_VNUG$wpjmjtQ?Z_|WX778Tmv?9Tj#lRHuksH6bvw{lT^v5&tL}KZ$b+~$e|vw6 zZ7*2x#sH#ckuyY(R?BbkN4z!V?f*hP`P)rp5N+q*p1^F{&a*v&IklY&$o~F7;GtN~ zgL!vycN~@45ne8ycaZJf-Po4sHI2%i?a><=mA%?P51nxEEdjdka)<} zA(+=NqdoU_oPE_!ozt1I*Vo^9K6m-@|0z76H@|FeT>DwO`R5O(?VtI)^2VFYS#4+QjDP)cpKpKb;`#b+ ze^q!If+i&zQJ**D-hS<_KRwlQ?dxAte=~fz42|2Lj~im`a^d0G`?=p1p2+Ez^K5c% zfBSXubZVsE>s@tE?HK-)?2PgIy>EZ@KZ}Iv{av?e-J5Y+Ql-YY={)}ar zU$_|VyD8oIY{Ng>*7x$m=ly1bIQD?KVRrt%iO=iZ2P!i#f7t%hh<~pAUsK+>^{A0p zXul^@>UXpC+&T4Me)ikVe}9~QkqN4n7EeFDY0kCMzo%*$e!PTc(mTD<3T`_XlUnFO zJxjd3?RtOQzaJkTYnL-V5CmsC@GoC$;Y1*Io!@0N;Qx^?dU^jTF$pEEMGBsAO?XQ}uo=ovRH zwNjpe>EE`mj12p{H#G1ZWHMsmJ|Uo^;Jl%s=eqsgIm=!yKgamt;O*PDH>`X8_h zskX!!&wu`}TCl&!M$Y_hyY23~d9&Z`-@Etk_09fHAblu?(1cTQ_ZP$c!o6|kx9#To zeS7=9?0*A0CMb>G^>Ve&_4+jc@z9@|FaI!H{p5_2kJP*CMZTYv?VY~>Yv`Ur~Yfv ztYwMwp3k>A&wl)I;pN&Jn{U6}_VS-a-{D>BzCS-=pS>e){p{TNe(Jx!mG7>%kTJXc zuZQMA-!nZm^4|U`OW(@|=Rf<;d*1x`2owG;h^rwGUPiM|*tDIN=$%di)u?64jUH9h4 zo75?T4XW48Tvww{0f+uQtY_C2?K?Um-YfHMizLkAJ?sQHioz+FhDOGhbL5I%vI zl~f5aXt=D8-(UAhhe3YL>#F}hUzgV_9=L{*K#uKaxUh+BsXN!Md%%id2`6cg}_uDZrunBm&IEGZrd3*a{uJlPUhrp}_ z3^JUTA3S4U=;|NxMxn}3n(YFo!NhkwCbK6RN_e$x{h<~6N#?-pEQ$A$ZThPcerMj^ zcAeSbg#2Q0h95c)nTlGtPYCKMxbJ9?fpeb!440pt`g4^nL*AY}dt|=V?zjA(x`VI% zaANHB|EHbyzpk+1n`?jTYnAL?CZ5lqK7D$(bGgz4Y{@I3q zwyp2vpZs?Jtv`jZV2ezYn5B$Ud28F-uZ#OnZ<4uI`u9|Ao=pGog`eGb$E{x+-jI0i z`RBy@-)Db*&bYhg*3%+Mv)?6FytDtN&3m4>d3mPM|AWu#-RE`DI*It--nO^yOJU@+ z!@JhS?>yi8_@hP1zl`gzOTTa#ocUQ}_vUw9@jsh{>HfQ8^bV)Z_gkL0`Tm*DHaXu+ ze4p9>`1AfmupmZupe)cZG8ZTV_S@;5E{eGRRr@>RkC!!e@}MkMFSp_J^0N@P98TLW z`S-Q?|BV9>X#5BKpMU`uD#3b8PFssWbFETgib`z}7Qgb^EGYv%c9HSb;Ejy85}S Ib4q9e0CHK%xc~qF literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/SimpleCrossingS9N3.png b/gym-minigrid/figures/SimpleCrossingS9N3.png new file mode 100644 index 0000000000000000000000000000000000000000..b577b79b19a741f1fe999d8b5f01f9f96f9fd14e GIT binary patch literal 1629 zcmeAS@N?(olHy`uVBq!ia0y~yVAKL)9S%02NJ;WPBOt|6?Bp530R%N1DIGw*WQl7; zNpOBzNqJ&XDnoi+er~F6adJ^=YF=?he#v|0{dNottnWQt978JRyuE!eSK3?5;o>z1 z#){J_GuX_9Tf|Ov@hlSGoX9YjLHOl4hs{6d-&ZbpGxznRT0VsXR}DU_G7}G-@ORs~ z*VkDDzOBC~&G18ZA=9T8t`ovq3jQk^Y=E45^0jlG|MY*){NUZ=$H}+0z1>$Qu_|-c zved|bC))nafBey+#O}?_w`I~+{~teoTz_p|ox{8U#!4sFC!C@a)I(^-`EFOmyuWB~ zT>DwOxqiFn+t2#kZ~gyafrQy_L36m{fj+6874Y}@dijLtDOL>WD6P-1*b3ukxE%*FRRBSGWIBB**#psrg`~#Z^D0 zuPWz7euyb61uOkkCckQbr)bIBPcOe4``f>`ox6gCYu@p7PO5$%=9CF)H8wr}c4?uI zMg_0FxK?4)_0L8iPOQHykW*W6Du7eu&FSD)uLTM7=RMnhp+n@&^~)_>H}v5V@IE*8 z`ug|s&nxFmOO@O>e>ZYa*Vy^r-gfu;%ldf*h#Wnw}(X_N^DY(vuAs0 z?EZcAbDmd5O-nse_pa~w;|o7Gq;J2S`{K{%pEkL-%i{O*-#MKhyZ(COX8+}v-#zbt z_UG}rdJCDhvvo%<^CKlO>NyIOU?HXv5qR&JzkiCp{<`$Wo69d#{+)Z?Z}#a=`{BeJ zZ`^JEf|EWi+y%>3*Gm8X`d2vbd1mA^!QYHC&OQIUCHHpiU%LYR{iQo&+Rpy_^XJar zKNsiJ-+%sp=5l#j<|JSyy?1-py7>F{=RVu$o;FIdXSn>cX5O~k-RtkOzhnK;ditqR z&bQ~!pKrL?U-66fS(_#H-1N*}vyS~evZw#vf%P$Z(-Sw_+uN7h*KgT7e}4UrKw3Lt z@7mYDzW#k|bN=!s9p!J#26N9p&%C|u_pM&!a*;-f1DdV=e0+SoV=u!UU^e>y`S<&O gOb0Tc1?zuScP2*Vhf{WM1J(}=p00i_>zopr0DOhcV*mgE literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/Unlock.png b/gym-minigrid/figures/Unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..236cb56a54a23e4b68eb954f9b2b102ca5a54c02 GIT binary patch literal 1097 zcmeAS@N?(olHy`uVBq!ia0vp^XF!;P2}o{mxV;oeaTa()7BevL9RXp+soH$fKtah8 z*NBqf{Irtt#G+J&^t}AsRNdm_qSVy9;*9)~_ssk47#NtZdAc};RLpsMcWn>*?NazyDr|{xRk9 z%aWg$Jl*_Kp14qtC=0)Ddc6MDS9v)(IeGcrU-#Gjy`^i%bNFS6(ee4ag(NK}P86n` z*m+lWnajtx-+${~>DHWjS+c7p)9$9sb@TZ=_nzNhX>P!M{(SwOJF)ine=4Zoyx$sI z+kXB=Rm%FWOEwGUT5Y*`CCl+}%jl%(72 z-|xNC-kZ0ZKe>GO_S;4EW?jDXQ?^S7-H0%gz4@WalS}&IHD&2_UzcnsgoSOHd}4)M znYkZOzw-9Gr=LD8=9+$P%4BHBm%TrEr~Pg(n49~(=%u^vyJO(6KchZd`SZzR8(;iP zd^Y)Rnw{i#HINA)XUyJx|L}+ESGF~m%I5#jKkc1Y@o>zR@Z2Q3o1Z^_cG|JZrk|S5%$Kf*dKK(nbi({r zzV_a4XTQIQ-?-Ugv8$R|+~Xooe986RkES~zjCSwCQq&e3biMw3a>lh&&nE9wM>iN0 zxa5kN->P>#(eZEA`>iFrSHHiPXmsym#Tzku8NO@#_ttIyar5cFSiO_rH1U_cW5Mnx UkE|-%fyDrWr>mdKI;Vst00pD_s{jB1 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/UnlockPickup.png b/gym-minigrid/figures/UnlockPickup.png new file mode 100644 index 0000000000000000000000000000000000000000..43c3e70ef7a9cef407197255bc0aec8a58d9c965 GIT binary patch literal 1150 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®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μH*?4AL8`B%>e>{z<~q{8Z4;e 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�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[@sSu-%f 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�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
p!dnP)xpm=V;kjlMdEvb$C|0R(R8i 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 lrL1u7gSzQ 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

)h?oAA`@dT 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

Hg}K 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

OK-l{*hK|MpVgrukh9 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

E9=6I-ThXn*HvAM?41suk)2pvmFbuu9}|d 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

aydvo9RBc?EcSgu$OhpM`-)e zB(m_M zLgtbLpo;$gKL7@x{{;XDoIw8xAOZ?t0Nlj^CZGfQUj-mR13sVwDu7Q=AO$|s1Y)27 zB7kCWpaU8JB!OT8{z3r>I^ZUqpaN={q_C0-0-#GtzyQ49|G88JY@iATfHT>LTO`hM zwcTgHouok25j2505g|k+Avl>66FNZ>903%FlM^6e6E2|=PN6nUAr!<@6%t_=9$^+X zArw>r7*Zh?HlY%lQxr5o6CltLBtaCEVHjc|5>jCjIKe*A;T)!65>jCnZow1w;U3N* z6A~glouMFp;UGd(7a*b;7UCBwVIvlz6T~4TULiy!K@uo|5*&dNRDsPnVH0R#Ao8IT zY9bPH;u~&(6Er~-JmM5yAsU9^MAhLSMj|)al30*g_XQT@h~NE?-%J=A_WVGMNZv{4 z-GY2j^oia6to;NDH4E)I+`A=Fy!qI=O#%3Mh**tPLNy2J8HDLwo$@6G0&ty7P~Ka0 zPBUKKcmN({2%a?(o`+ckngNxO702QMqevm&x2am)?c99H-pdSE{J|qmah|*}k55sY zc_Cg{)C#B_7@N%<>ZKp^^$9mhRlM3MPoR|;EF_8VT#YS=Yi<%591Vxr{Xsm08N-%+lbf}x{JJlRdCqm*qV^l7G1 zC;{=<$B01%PXd5XvJd@*S)&-4P&&kB7@9{JWkuTDWNMFe7KCkUTHD5czpL{}N7%-$rRE2h87=H3tY4#pgHl%9G54QM7e{S1rBGpA!CRu6_b^gMq zJNik3W?pdxr|!)J@7;v&(Hqlkt03nK zm1jg|+=ePyIjZN45@_t1WxCY`2{ETgv|ClST<0}JhH@W~;-eYN9Er6gK{#Gm-etHk zC2*moQWzw(jR}g5CWO-CkXC4#LFVr@=Xtgb3Yk8_nfa*y$W^H{bU82>VX3DFkM5VeX{*KyBX5K1~ zBHWgt=z}_3gevNoj2g!bO%U2CIHqdjt*T43YD<9JY{u$9%&JpGn5JG0p}q{TjRcOh zC7>CneQ0H4mg=Mai?@~@Se9S08bz`KDw-OovtlRse8*#aCPTbwU7SF*e(Itc2c3H9 zH@>Tw$_2Q#gt$^y>Yd}jDyv{N>$8q%n?49z;uWvDM2iX)Y9dKv8fjQ?fqPu6U1V%Z zY%EHUYfI!%lWJrD;bsWcn#9CK5x}YXJZ!Hr%9auudFG>>(8XdzEdT_-07&fsRP7H5 z#MMp)2(X0I2Ef;1?P65z*lMj^48hc*Jf?l1_00A zt<~b~)M{J_gXLb#v=As@A;l@8>Vk8He&nEul36B_j)h<&hHdVVgAyu_p-15`tSY*aPvkl zCmOI?4xuQHZvpe~0Xr}DJ^>VHFZ$wd{+2HRpYJQ`;hZ4oIDmM)~)G3vwu){*6@+=-=)x(0Q=9@wqx0JZB;=;TgD^dm}1Cmp0!73Zq28`e_$4 z8!ao#*sa_li?V4RZ!rwnLz)2(N5lyC>oBsiF=N+&@*Ef!kQgh4XNm??oUFU)@=2s| zDFdrJ%c!0TF&*16)ATHik#j+s^cef-uKIJ3GKp5QvBfQK4`-WOl*mEbrGg28QgO3h z0uaHW^qMmBccltOAB4}S%_37VjDoP3iQWjS@=4$w~0bTvqe0ZHRw< z^duYWTRTk`2kJu~P=O>UKU2nc&La~Q^bUXD8?*IbCm){h^mO|4fu7}TaP`&H6ke;d z%K`L8KvC$ubGOB_?PzvEcymjD^I`$*CeO8>jDbr3&9v?w(yDBxfwkfEqFUF_54$95 zV^0x(Y~E>g%+U4K;Pxjo=tbu>#Cjfxd7npT@n!$xNbAX^{4!2^jwW^>+j4G~j?wbAoQ@~*j@8nl>M&#WcE1-%gD7psXTct9 zgWR%(i8W%PcTmPhtiUXBJ133)QnG6k1ZybwxG{H7ljx{ON_qdyW9O%u1o+amb1--7 zfOCsNduT&r^^=A-Oo8?QHM6FrvsO4P#uT&%+as{XG^A#8Ti=9KA4EN`FlR3~$vXLg zIQWkHMsbccwY_m8+apXvWOmo(k=sskd-t+twS9kwYZ=9kFo|0P=Mn7o5%o42M=auK zIfb{lc?$NKC-joy5Op5FJts3^yzp!UCkx6nd9!(ypH6Xqg`7)7kO%aZM~VVxaQi;N z08_g4LLmTSy7jUmr(19LIxiH=@2FcZND%O-mwNM#`l*w;7OwiL+tRCt6Rpp>t&6(- ziaM;{dMwKNuJ?MWvwHroH!npitgGw#|El_@$FH)VZ?k(Z2eUKGwRe{@MFv21>7||o zZ1_MR!0r&L!azqvd+|WvxQK3vVyi76e+P~iM4GQvvHb1iq&?U+?>HKZa%Z3UyF*K#IA*H)WZ}R8AI( zbZ;JYCoLI225Lt9b#v>TqX#vc-8DPTYMFYo_L&|y?;m3J)Vtwk4(#l>&tt7;`^4m zGJd*yGFyBmD2rypBLw6>dbVQ{t$$igC9Xc!Bq@cNs}i_3M1Cbj1-VB4T`C-k){O;G&fo}fm5RbB0Mc3KmxR) zfg?mI3OI@sq7$Y~pFVUFAZkM=FtH9Cqp<2iBon&=IFT`I$E+|#l0>-{*vgh?Vaf~( zzygT56?TTjJ6GsjrGA};4G=gi;jV_OHu(Yj?%)!*4pf^y2R+ z|E~LKK)~kmZmtAzg3+P@7Fw{2D?sc5y{M2lV7&=p`V7AKlnaK#`f}_-x~ixvajw<= zd#x)0yNaza1F?M3w=Lcqh$|X-1gk3vi=&W14UL@7!z7gykxBigGm)viu9LE=0tk#s z02wtJfKQG7v}nA-*zDqq9iLJ!LgK12?#z*lOfxeib6hg2CcC0jH5I!8a7EeX8bFCG zuhg;&3qeGbDG0}8G%800;sVvIev3%jmpz0^L$ExB#v!SS*T0}jj?-y%9lr1 zpMupq%mQX>V1s4_NsNP$N_bpziBe$LrxJ*mDRwCW(;|1n5|z}$bgs(A9KD#gt0E#> zl)WVXUGC&q1%h@Ua1C6KaJ7>Pem#8)fIxz}ZNN3%tLjH3k$hzKm z^h-x#Cf|*(Uv`mwa{_X2%?RH-mWkrBIl&Al=yKT1m{Kg*3@=^{ER4~Z0;ZwyCS?VY z6+t-06OTQG2nkqPj+(}nTfL=nyBb%oE=53|K&ei1QDBvp@UEW;%|P{HQwDL;qq$rQ zNFdywns9X%E~(6f2qRIZREQG;J_P{{drAQih!g?9t1Et*{vmA)R46gvkS5jA7s!~> z5y6GVe+3Dl$%1G>-vAIOr*TqP6rh4AxzJ`(tRqq`CKUq(jW&y65Olb>kqt6sU$5#{ zkS_B>r=<}(Lu3padE!PSTBj@6=?WD6LdB|B(SZfZSdz5&7%_eEgCGiF$s|X@=ftIm zEjuEUl1P&!GR2bXx+74mv`J0Uu#-abqkFOvNR8-FX+1nk!On;hl}wIJki>~3%k?BD z(lUxfd11Tq*bq*ZsxW-CO`&uYoTRm?ln3dOBMFjB=JetWW&8*_pCynnv@(FNR9GxG zGE1a9tX;R{NiL(}B5r!JFo(2{FfB4jq!cn_2DME7tx!oHmI%%=&a8<&pR%wMO%o}# zj0(;qmQAZ%(KZmIO`#4IoKZ%Fp<#3=W7K()=0L}tQ#*)7bArN`QL;7F1PVx*0??-j zl%Pcw+8FE=93O>+hh=&RJh`PvV3cf`s?-=(aHm7H(&4Hy21RE*cc)~eycYa}tcS2%K%D4q=}Xg5+; zU6NKj2KuF16-yB>vJ{MuMQl7Tl-$TwHCG_YszsoAPrimFtWNm)V%LH| zm?9G9iDqNm*8pKxBl#`ujz>!#q~0)fiE1l(%jvINsD*z>jv8E;43YTm6pk{6h>ekQ zUtChzBKyVSi%e>p?^5s}PzA9{RsPGb9H}>QYl3S93G$vaKg7v6fih4Y%@ga|5yw?z zpjq$i;p3d;&uk5}AweXXA~(3jmyPab=bPJ4Rf*0Ov2&I&O_X^}kU^dPF@XimT7Wr? z7tMXJi)#X7NW1wVG{#8+sQc4aCq>7x#!a4a1J3dd_tOo19GQXGlDKAN(GF>JO^EFf zW77oAL^;5+AtHcFZ?f5kfwpe;%%BiEWW=lTU|2+OURp_ZEu2xZ8eH=1t}b%2{H$|%s(FTnxh=&SOXi&vF7ot z6+PunpnBn?j{=&!)ytl9v3nhBREOKlPmVRL%RTOD=i1`h zj`X#oUGH(%I@Z39^qTuU?nziW$dQ9+%S2%bNoa!O4_~+>(7fqhmx9$=&hwVjyyRH- zcoM)i_suK4@;pC6*BvK56qAI(N8a>V#Bh@U2w(sMn0@UpXZyE3y=pTRbdtdjohkyJBpa7<#|9lVr_|N|c5dN}9{R+_i z{;vQLQ2iE=0pBnB8nE}`Z}-3hoD2X1(a-#pkN=EMA&#H|h>!O|(D-mK_ufw-Za#sE{Ux>@13my-KYM-)K|% zkkuGY5ZnHZzp5e%5D~z{soGo$K8Orb7|h7nDOYmvBf702zHK8SO^J-~*u;<~$dIi5 zP@6h2(+&fi+R!T+aSAc+%mm^J1!B~OVGBp&u1w7fy{Z<;?H03Z7a1ZDebEzXgW_mn z)_@Vvipi;JO39jL#aLq7jxjodP^$>;nGB905U#VRQ6q9Ow5-v5dJ)!svCl-2+JLMW zBMaLy!}Zp1AP(#mPbUwD4H`R28mqC=*bU-hgc}tErGgOvq_D9baU&ve-vm;Gp5}kn z5x&}yCT3BV-fc zA^v$wB57j7u%Z<&lCglou}ticT2Zbvj=6r&xn}FKQW5~-F(`(zDDDvel#nL|5hn47 zB4Z>J6HBQ`(Y!zex$2M^u@Vo1vVa^?9yc+hka8pPF(wPeK_0{69FZ~>BQ(qdF2`)w z*rKYIlG}Q+$x2cdx3ViMVkQ47EXNWjUJW<)5>URebP{D4H4-4R;xposvMO;z>T-qd z(kt^asQMBO-R(ux(miISDMj-sH&P=y5-U#gDt|32FEN_JaLQV8sA6*o!y*a_#n#e; zxT>P5a;+fguqq|W47BJm)$AwTG1YqNH7V^3fubz4F)EheGXt|NqY^H*C6RcL{zIzD zuAnN>1_B`$V$Gxr6I*E2`pIHCQ&7+{DJ`-l-KxMIB@2BJd|*#I8I3zlaw|`ABPNX~ zin7WGYXH{GER}N~xy&DJ(%N)Q3$ZgbnZ!YJVlubVGRF`z!*VlaQ$uM&f(F#n!f`qe zbgCH4(2|5fy)7~|B0_tjH7jC5SrSyl^WpF;W2W*Wno=-{Q4W10ErOx-bQB1maX95` zKQ)m*11dQYBtZERJ)cuD?#)2`Wq+2-EwWQMCuzEh&^V3M*3=g zoe)nSwLoq3Oh0lhstP!(AP2{XM`6)N;cGI5lp+dM7mxEL>69~HMBlO^48U}la+4=I zh%}AyB~BAA3=<@dAX$}lS(&w2mo*8X01BLSTB-GFq_tYHRau?jTC){f$);Pg^(w$M zTf1Ofv9(;ym0Hm?U7dAZsWl0@6*w7$U8fan=(Snx^z|ICb3HA@TM$4{S1Ko z3f5o+zyJ<*Vacxm$PWZgAYl=fU>Vk63-(|imI!9A05Fze9adr`)?p9U0+4`WCl+H9 zwqgaqVJqMW8g^w1z+q)JWM`crXVpn!y4>kdEmS_GiwqjM*01m(jXqIM+ zc4t9WVhsQaE|zHzc4lE#W_yw-yNoR%PAxWLK7FPvE?e5koXYMCEmjSoL&VwIYD@wqg|`X4M`KbwgoPL3&kC z#FR&%6U?Br8Ha>q%Irc;#W5|FI8_4&GSQY6mn^+>Q9t#d2$XWoG~-$;6+<$~a?n0O zM=PI%54E&E2_1RTf3s9SRSjZfxEpDh zFAW5TK`C`hcvQ_pe}32`2y%sarG@h;fEz-3jZ(w@Gg;hMX#TQ+g*Q@(mx?`vQg2Fm zXZL)gQOd&Nn)Kv=zZg)w>z#7YLYk6{G#yoi;o|z~C zdY3VpFHyNEe%U-0F-+hY68i-iv2eZqkT;yCgLxq$r6B^hGL?%rn2B-KqLb2wa^$8H zMUs(%l84ulOX9VDI-i%Bh|#y4Z!D>S0)a1@srk~WbEHXgnj_`8r#WO8ma%{EnR88} z1KhZui_;Igcq7C*DFfOe!d6;3`bkYVAgTDR2Q z%8Q(23!uoKyvxVj%#B>h51?hYoXfGi%(uMFj~oFizzK}@%Gcb?v)s>#9A}f<$mtx) z-~7(4+yDrj%@ZBbss7x~ncN8yK+Pka&YRrMq1?$4017G{0X|*P9i7RW9LfuTUqQqR z6d=;`+{{~@)7w1Kg~tN=T+0pJ$O~P|P5lUH-OmgC%@^Iysayc^_NlT0jZ;yD-zmvd zCbuDTv?~k@D+#!h@SHzbsj;0X4$(HV0;*R=yJDluL6TPm1^x4MWs#k5hI+4_2i(`cdPlZ2CX+nUf-<^km(uaOBG=2Hz9P(GZ#(8c$duEry{(3p|m_Xv}C)wE{qK6}x^`!f= z0hi??T8odGqD7w*m7ci6g6|pQ3Pb6M|DGZ+Kf&H}^ZQ3t)lr`>UZSg_rBfU1$3EL3 zKjd>5wz;{OaniO)^itZr$sp934L-7UH=UCu@BNyA*)q0?-|EdhGbH7$?aGQDI_n!^ z>kqE}>tUWD4nDX`ANrSt`gPv=d05|$6$>{cLE}ovM7yzL=C|eDfa(3(#U3{R;!Br- z1PdBGXixxvg$x@yeAo~P0*DkV0wAKmqQ-_G#2_>{hBBo}V8V#?G9!hH z$e9MkRM?2qf(4u#E1ck|QNd536%!yKTG7A}q!a}#W%@8c6sQoLP<`kmz}1FMXnHNE zaO*-O2E;DJXcj=nuQW*(TL~AXOEX+TvXzO@W?Bm%()#pEB(2f3P6=BzJK(Tc#bOz6 z?aJ0`Sg~Z&qBXlVau>V>-NscJtmR87nnmh0tJCjLu|m@#IBHfY;irq!0&sja>(>4O z3n7=zJ9#UT18GlW#O(36K_?|YubfL-dCi-s`iE>SQc(IUqM@F z_C!g)bm-w|?EM%bb^Y!1Us|oDm==o##+a6iJXxs`Zx7OUBUHn|msXGZ-37*m9g0@Q z6G#%oSr=nwnB-p8iG>|&-fi{TY=)%;W0h3WSmPL7GWA}C@$o2-L2c5+1^ySzy+x!; zXGHhan+1t@6^Tt|cjr}k#%ADE2wv4^ZGKi+<3NKVRj7`KUPS_i(rp1nE|A_Q8eKJF zN|mN`nn+chTMZUos8k7{L|Ow(b?Ra>Hs(dDs}j}fRy%IQ8$_{crXOeab@(BOV!YZb zlXT8G>=3T0D5|kg1>i1veHHV#THBKgcB!R%yGv~K+$o?6(jNS2}p>H@)1vLjIziow=6OeNIU^^%rw{B zF%nYXobwYW!#o7VLf|m*6Zaw!w8TNPOa#*sZ_F~&PaL7b(-S-0{&dz>D=owyeCz>s z*kX@Ow%9Ic0phpL4bw1vUWkx@0&>qycieQ}Eq4M$3}N@(edC??+zFgu#NU4dez*b& zfN(_Ii7O6x-Ev#dINpy-PPYY7^nJPDkyqeE0-XmQx!jsp5-eue9z>WY!+cuh0JR&U>}yN3|mC++2&opO=y&qI;FFCw5Ae?ro(2@j{9K zu%r?2J!W2yiB^rK1(Y0ZMSbn7VDjDP%RJ5qdE`BkQ%^71{?6)iZWr}~nx+PI^i6{OhLIsoF8_y@JA|q6p&n(7-N-C3y zJVdfbk#K1ndm>4cHfGA2K&gNdnX*f&6hNCyIiRwb1}H2G2V z>=ZpArOZf&O4JKJ?}xS`65Cq(&X<-jrgo~TSTcI7ngV5`4xuYo6qG0kjq-|!K`1&G z8ks2|si7)yr*xpo6RB3Sk}TvWQs4@eoBlE-FjtGG zSXJ?LHvq7%DzUp6f^5O52AQ944eQ;HfL9}mH7EKm8yEsSlkLjoC0G{brG_g> z6T|VqLAfVVy2D~#A_ler)u}iiXiyE?SPKR7Fb9QnrqTWe$Q2PXQjUvDGFv2{ku5@+ zsY2P~x0vCb7ZI>z&fWYMh7Xi&Pt}&DooCGB3fD8Q4hoB36 z=tM8N(ET6?Y5Ta5S5}*~^-Nlih+*nfue#MoNc9m8V(@-&k7sBB8y0y>ffl zGoSk0&#q>y-+f-M`t-G5x_-7$upUo;Akhj*kE26dn&9{#4PDq=f?FCcfZs0b4?lmi ze^j-nf8j@fv6p`USbH%Me0Q;UVBmm_LVj$~Q^yw)V6X*Ouxj$-e2erFu!n!&hkyl0 z5C|B8B3ORlM}T8efx95917=BvzTOXJzNtl5s+YVi$T?BbI1{Td0V$SAwPp zimf<;1t=3{qEu!8i>^2;B^Zd@7l)z*T{&P2#BOui>ZQT6T5Xmm#@$eEEGx=#-84mkdRgg~erOITMH3mvH!)M@fK!$%EGynYJhexL^#`1{&<$ zRZtx5`#1Pu7@QECL4v!x2L>M`KyY^m9xOpJ2V1qZ2Yb?0ci+`r)zwvfaP@V4KN8p^mwwp|Dv65Gu%du;3yDa*lPnBR z+4z=EK9m$Rj5f*(@mB04*5FWHxQ^c#MjJ{rPGLBAz==>YJNMmKRxX2l)N1bUw|V#N z?86*+>5d6~##vYb@xQUseDAa4ngSJk?58O6YbYtdt;X(D=FU^fn`3_3=g2cz$vs^C zXJ4YA11DUgH8wsiJJ&e#&k&vs07L8Qvkm}5`$_=);WMU5A!bz}-bCSxm_h>FA|lQr z!kj{q2N0QL5oJ{obyXpFqKFQ+82uCk;4G#-EqbX|%tBR+_punq1cPg>2sfvg_G2;T z$0Cl0LL!qAhSOqAZ48;yV$6qPLqd#BD}0;ZDgDo4b|GG82%Z*h*;~#sU9~cO=Q6{X zGQHDMm6vbR*_=D6i{&gCcv$#TP-@{We`ccgjrKAaVPoaIKR zrJYE;-0|#Uef&^PM7SCv!UXZv3K3m}h@C*hpCS@*E0Z}ZQ`IWdohzeb5SgclY_-a~ zs>;ujl?Av}@y__g6P4K}Rb^HDAF@kd{la_9E?w);QTSEWUl`vPL99TGU*A>Tkwe@% zQQh{DuGzV|d9A9winwc{dhFD+-z0NtBAIKah7GOucBiJU%C>c)YHY2#&%|wjs+!%p zrgb9vyJYQPO!dG+#pk!R-7%$`6AU(bwTkl9i;^`o*`m1t0{B& z0qc!ucnw3Rjd|cE@OsrCA=SfLeZF{;&?DZ{M1xdpHBVr@^m>DI_vbm>7CF2YnX@Jp z^+u)17F14?Mr=zTS?im}W;Ii{pAS_}Rjqo|O=f4UQc|s!Ty2)rZMH6L?_%2&UE1uc z8+WOwgsPiOA1Q}I>dbT7Sn=8%C)<>B+qKtQ0t4GaOfaHdRe_ZQ*t) z692!Y)ClqlKSMR#k`kO!V*jnw2>)+Nje?Y@vV^38goKNNbM8RQ7O`*<+!!M&2=P#d$DW8iGs z%CY^)9Cw*huaLz0uqRfhZm0|N7f9RF#LqtvtlkFl&3r#Q^iGVCH;1&s;%k-`FS)oY z@~w4#yvfp(&X0ri93ejU@p(t<$!q~3&DZPR=ZhuwL&L$Qeg_c)zU$L(dc=OLjbaSS z@X~btTxpFeF>vojdQA;{=9+P9X&pbW@k9;PUA*e{UR{)}m)W5Dd-aFEQMvv+SZE1p zPdD%Ik6^c*4FHq9Fk}ed5gCfjim(bDB1IrWUWkINV5DkB3?XF7;tT>*&f?F_**0TE z5j4bE4B_PE;9WR--3ntYs{=L@oWKUk1Y=$r+l^qGKFgf;HVt4IVrzHLGQrJ!wvd*^cFvhdHioCx^Vf{hjJLy&XN zeNDbnmVR>Ptgy?gI<2S-bFQLCIi{^~P`=ynisfm0Hp%OHZcfkY`!T7{YX`|)&Kt*A zbGaKQcyrHq-Z{pcRMt*(owhpkJG&tkb3S6WA;P%os=^irYb)*Y&MrEtGLj>CM}+O> z`FqpQB1rGleh!nGOEgb#kK*wmmXG32Ci%y}1M3vV;5{dPBPoe)4gbiU!CQ}h zlQ@PEGTpoN5mK8)8$l}elDFy;9Q9MbCfU33y(fhxHH4<>dR(uk1e$xiXZZhp@}8C6 zuJN8zp>S*dCb7I5Gp=1ShcTd~{lfD*K3~v>5u?4pk*_GgRg{tbrwc?Xa3^s|Q|0_r0fwee0gp!zq>whTxT7zt9ejVU|3piDn3qL?Nkixjgxj zM`&f>=7WsCAf63>II1m{?q%q6gR}-5U6!5_Aqd14h{mrN zQ(A})4Qilfe24)nGUm*|J4tLGkrYw_(}^(ixaY2zF$wUNBG}ZfkaVvjg0G1v%sI`R zejGX`2yBW|x7&RwajYmQ`77CMKMa85PjZoM9f?{mp&8I_k}r6h`~#hZN@0A6!Fe_) zTx0*d-va}x`921Bv6QR!xC2N$oRXEtg7=86Oc=u-7Yo{9XM;|O=n%rCNXs~*#x)e5 z^AsuY!?{bACl)R|bN*KE9#$2qBaLUkERChBMu<14^aUTYt37Z!r5uCrRsK1*19kq% zxa|Z1{tD{cOy;qD#yz3#bM_;vVwkmRi2O|9j{1<~3FTmfXli`F^sbPnpW5cCJpMPS zcZY;(DhW9xKE(@&D-io<7_yPV0enPS9WBp$I9v3G=8#^OV=6~RxcFMwLE)lPcWL#M z+yqbnH5AwT$ArY2J9wAG15L9WzJQ>Q=R95v7|2#z%q}M_)eP*?&)r(AF78q4Y(l zZ|2H${+~$okzGqrnEJkmsDCU*0omfXuKd>b{OcBH1JBddFY{@|ZIAN2ra4Q~1Nz?d z)F^Wog(E38{&ZH}ai(7#gr?tq-ZVYzxoUWu$fW0smg`3#7|{baY{KOHd-HjYEVwq2 zN^PZBI0-k?kj>Ma%QDNqEU#-H^ld~9dy1HOgt%};_&pZ7`zE=A9x05~I7^!r$}X6? zCp&-snJ@A;FaJ0vZi40~+JMi)_|Z@d6Zw&^Yfhnt=|F09ERv+Gx^?H@U)}vYarJeG z-m1{3$>m>Oe~QML?az_y`a7Gm1ATk%W4~ZYQlihajm+YHI_iEqOJ>kfX!o8&WkVwe z6FkBq)9B=PYqqm$R4Ywjal*dQ$rGYk$eTTuppMoL`D$OF_{<9~cuJU+^uAN36SEacn2%XJ&wP2|jpCA9F##PMC1EYXYMzhq2G=dwW) zqgd>q{cUNvyw734kWsbNAZn?u(_ZY8m!5H1<86M}EBF}9K`yLWyLN_yB~|NIyWd#< zqKDHbCD?B1&p#jjx)NtnH_+F#p#*!}-Mc&RGDY)WH5=Bexm@GfjJ5aOe*5w1x*HEg z(9z!uiFClJChw5%7|_r3u;R!wZ2#zA=c^xU3hgnZcu77eOg&tJa1kNXe$&?lk7h@>;&McvG=CR!Sz+7phmmAl zf>`*2PqZB+7fSkkD)@Tw>>LLd@*#gJbbHUt-hCt+L;5r*1fQ8=J(5g?_%`I`pBO}i zZG0>I(4zk8!r-=xWQy=lPxt1fn@ae0#nw%O%Byoj_O9LFIsm&*=q9qcf0xY?4FfFq zE6uRyKrSiZ8%5C~HG#QEvzv|-wQm&}Amr3==3%M3;1792|JggOK!8yp9{t!~9LTeY z11r4kJnH?S3J4?I@4Foq8w4jL1`)=E+z-F(`z;3m?NZ3$FKoZY2|@KgZbU&q>sbH( z?3RTI`vC44vHO0?d4yf~{R={3^<6IXqwQxxZU_0~u;cy>+D!$ZcV>QKgJ4eG1}QQ4ATTB$U!4Ypb2b9^dl&Yx&N8^z->vwMG)eaU12jM#mhNjHoy~F;0X|TY~>K6D)WbxeB9+x%-=92_1V?}$c^j3o~VX5z>4Y`}Ca1TuyI9sGeTArb1> zKvk=VV@Hq;GLcRD(<3;+6dM(xC=QH;;FVh8CKO`F72=kL;HHEC<&V+-9w#b9CusAB zbsmE(XJsuRN%7cmeOXB(cVRmV(gaRmt48~qg*X!9rplt0L+A)`nfsML_KBMx!^#6ZA!&&)`IHjokktbpQ{g`g`yF&X+(lqeGzuRwi> zSQHbcW+hyuAqrbHF1{nFs9nOKO+wtk(zrBTr%l4F5Yq1!Fo@K<;)L+ z;J}zUV%aJ)^AOP}qfZ^t(WhBiijKf~58TQ^Y$|>rc|SUW5U)82oo_WV#uz3~7^4-E zhSmv5#er+1IO4J@;W?cWKO-d!oruaQ%!r+GEF_YXz*rviSeGXS-t<`h{XotuG)4f3 zgC8iD6#3)?>bT8tLMF2G=XN_~I&(Zf25u|>L^}KIZzKH|h#*tCS&`dp`%plD^!hu&f<*cv)J)fnVtAZaASU!YUTn*@)NHk^% zAOshv8IrP(Na;O^WW9=x!HJn+!$EkY#z8P*o!0wOWSICtMat#761@w&(# z3d*R2>ttu^Rm%F5$HB>Eo--^?a7w0CN-isNp3x!?!p~lX&x{8qi$}a@|7Q(IDQX8h zliL{NQJ2_(6xIdtHpF_&zD$5kdQ`nGMmNC!c-{m3xERnT>^OJ%ALM(p>mfLK_O?ISmOafD3ilAzOT18jM@&ft&vPBhjg-(FnLi6>E``mdsJ^g@|ITN-Cc)k^fMfeaRWs@K80$hRV2ct`Attd8n%Q z^uXc-05k3~w2l+uxIjv^1YcEHIRZBr2ZyE*=Ad1(@7S2NlC_lGh+0VN!>-%lsKdv3 zT}qL25+nPV+9Zu#KYbj|%k`O0s#-uD%l(5o@|B3i*U$M6Qf${M8=G^z%)OQRN& z+#0gUN-!QgVOiFqzfr<5i9WVmhFrRm3T&jR%`zFs^H3GH0;eP_@hp7SkUoDv{s+ZL zUWxWlPf#Ij$#Vpv=O9ps1Q%5x?mBwNEP65ougD5FsSr&Gkq|tY^8F;%XDqf4S{`Lu zRf8+(5>rRG+M4`W=SfxVjr+OzW5uNtRzM-+~laZtlY5C%H=c77mmruGop{>`{O^>=g#0)t|g;8e5QFd{FKR4#b8Z5tAOgZ{gr)c1l zF^n+@*js4f*h4Q{ zA$EKr_UDk8@t~G;vqntQ*n){#y+w)d8e!>_J*+1#U=#BOOmT4OJ zL_JkWb9MtmO~bQrx6#oclT^eC0lvAyV7_WrTKTSKG?Rr`g}@P>uf_^qz!>S<<&M$C zlF%#j*CdkA)!~sSaiE>{$iDw98qVBK>N1TusCXi(^kMd4Un0L#;xNY??`?sp#3I-& zS>`Ty`zUbBFX$^u1-LsJxLwiTVYo@)AA+{BiRK?noBwHnZEId7XrE_mnIdQ&x;e7E zIm5QK+Z)))28zxJoLLUW0tX+)hn}lEoA6s_6d}8RgHPSI%^WvRRDy2ZLQYhWTlt^t z;-XNhLl4(koZO4<=gZ3q-aDB z6Cl_VLSgV}?g_i^iCprDZeav1?@6OTqB8q3w0jWueZ{&x5%>LPBS&p|U+0p~5wQ1G z=0Mrvz_4yln%56nuxq8c8)_>3qfLUI@X(PqQ2T1fiS|&l|In>qSEV6s=fuRUp@R&K zY`7l}^~zmV0g^m`bxaQk2`dN;OF*M_LsRhxct;xqqYVm;KJGl4qe0HSyWGXl6{uzA z$0*_3#d&WZzUPz5Z?_;yvB$?iBA}We3KGJ=u|3tF<$nwl-5}k^y#`UGp0l_@uBE!Fzm6d%W3q7+QH5d3m|}=`iFH^bhT21nrM)0w9eQ8VP}RJo!*@QE}8t z>%`yIH!t9nNQ}K#NIcn3^GBZt{I-8wY)t!wlK!(z4*}T#LO_=rF9^2JR6_SufWPBW z|KPX>;UJKkx5420KoEQI->83j+L7mep?zW@3rB%CE5TA)n`dm>x3!5t_n_x6OObzm zvwaRE;{BFP`Rx_;Vi4S$5;fR5@{RtdL6S={WqefnSx{FV%-DP~oaV;xMQNABjqS{I zsN@SI$Ht_i9$+YB%~xECuRv9piJj z(uHXS(?p8$L`mo3G#rf_Cj-Yc_LuaMA{gkdmGGQj?O8pOXY_=Ek1L=2mJt6od%f`U zv2i7?;|5(Y_KbAwqMYJyDe3Hw90l`KdocW+248*O}~0-==p;I-V+{A`4e7+yr2~R35>PZ>uK!OgF7Zc^=KXb^PSr zVqp6zkKgo*Pf;kGL7uX(ja9QTzS|$I3e1pPobr;fH7MzXbkw>Ci4w%rI9sY6?8-@= zH|AcQ!sM}X%%6=lrTd3tLS*9#4kqeU#b?+P70d4R2~HXh9#o7T?0l0KLflPn`~5AG zI$s#%0W!6oZBcpY?R-2}TAy>t;y9UgC1d=)ou04{yc3>^6qVk^_S{y257E@XsGroP z$tSG3}VCi!p+F-s6*H`J6-Bn6>FGe}>`dX0GB^_Ci2CmLc zy*SnS{RCSMF*RG=KQVH zOA#!d!Wj^q|1eh_p%-=0$VNzbW7*!kYh@?UTiUvu?u!vhr-CoWHC~We!1bJiD|nYs zZCd_d_Y3Jm@e^IejzLpv zyF9nQY)ri|Ie~s}uo{U$Xmsh@x_lVss4ASWHVH&!dm+7f)Ws$vBvF$%$wOv2yeZpL zKjZc@Y*+b1Ub)&-L=TZL0k9Gk#Z}$I*DSb3g%$->j7m|PG!>J%NtO!+zE_nM@S0lh6nQ88s($~( zOF}e@NpYiw!8zgLaLJ2SVAlAxo|MfCZ$sBxGfx*WR^lY+TzjVqW^hBla;D>b`+nky zb7*Dn!T^(wxtXi;Xm|?0vUd)fVg%k+IPM*4u?fM$vkwZQ#)%EdB>szZ(HRe;Q{;zB zW48^ze@#V0YLNNmVphX6{*g|90=>-SgM$mX(AyI5uQFAZ9Xv`ODE3kmMZkdrWRfaw z5p{#^SjH=AY-;{HEv$;f;=QX)fVJjS+u+LpjL?g>g~niPu>*VuQ1W1rf-kyaU(0)b z@_j=rT^&quk$RCCrg_+%;p?vwjck!;_!J#iwU${b;PBm%HAK2n8T_UB8KOy(69Y#53|gUR1IYk<^&H#u5^2>B~ZDQQxmtWv{aO(%z8 z2f!bWGvyEi$(<}M=NIswBEfIY>wFGnimIFTkGtx({Rboc7OmVLjh*IQie=X|w>zS{;=Is^)M>i?Ats*`XYq z^KqR0vT7dkYDEn?8S(=-T)`X~_NVi_rE+Eb!A_dylDhd#zj5reoiyHc=@xtyF4N~% zAo1wZDSp@QlH2@t<*t;3#!!7)e^Z_ z`+oCSIUfK_Dkm%PB&#Gk{)k#izDX~gty!Se2lE;b)L_4o8y|;PE^mZ{;JhQup~Sq2 zsOKKXGcP_J7@S@9&?Oi%FAN7bI{J6Xs|!@RP?s% ziKd)zz8@{X_qO|2DX(Wsw)(pq!|c=HOVye{jd#fBh>1*T4i{^Ic+~O_PeEiu8hG^z-w?RbiPA7JJ(0#)%P6=X-@?rRUv;0;Q zm0oSCWxX25>1YojdHhLnn&y%eaSDcVR|5z zKkO}e3{GX7e1+Z-Zlf0%jSK5D4p$Y=#DE7#jBQ^z1!loP6sEW_#m$FWRivic7IeR^7=4d&-16s>?MC-zPLMJH~G+p52K}_ zC3`>mVW7=+M?BSDu5&$oyTtE~KZE6IUy6xTp!{J9N}(3N;q|89r~OH+-8#vXmVW;r3>A-UrC0Q2Qd)B{6Shxykb zdF=HF1)5u2BoitUgP=_JC0O3!rEF~cn-(9biFhf|{2Vq|>>4}GrLTRWRD46*inV&4 z{`9$^-ku-h{>sGegMJEZbPx4|@BW*@J@#2ZMb=7E8IPe@O3BiP~Q0 zl}ncV0Is++DdFDUh0?Nln>lNFiDbro6Ic};y6U3|kQ(yng5^p@rAm$zO16$=A6!Sz zT=Uc$y}B>KdAE=s(f=h58;un}31#d8;6(q3jsBNw;8>waB36p@toPIy(&`9l9?OnB z!;jgcmD}s)k$7D^khiwd9|cBZ?U31|Zpz{hHO6~of1mp|wfTLn^aw(Fl%C<-U+zQ# zC5xpY`yD`E8<>?x-NGFp=J!VIXI0oFp%`R$4Z(MAOGD6nGIS4Y*K!m2+y)Q zItslHHi2^&i>n9h6@>OR_@~P@LSX%nk$ylSULIpyH1rqXU)`=`0lAks!|4pgZ-~Eq zMdAls<4BiAZ@V-isgrrK7zfv+C>{h~kqY_V%fYeH*a#)h)*H4FiYfHj&=O%{R}yjK zfePv`7lcaRm_`cd`*e$Od#XETC*|(26^bQ>;Phy$*b>kfWq5;9sDi}8&PdwW>o{@9 zgtvrsjeHqguB<`wJLGG#^_SYm7>8$9V?vZ3{$PnsSg;=P= zQn5eON&KAsOJy~o%pzfAPJio9h0!dPWq;+(?2#`X!x>{^X=8mGgrR|RUs)97j{W6Z z;qs#ZCD;lb7ETyf+JIz>pefq$UMzIOsn2LlZhQ=&{5w6K8KUQ zN`9f-T=%Q`fu63t9_)a0wlNGghIq27d{fVH`HAtX&LYRyHixP@FDmu3U*&;b;@FriVB%QtyGMHn(^PW5eon{8a90%b~!7UGq}f(YXY zdGpNda29^!e3o`r!dCOXaVEXtMSk1f2ul%;P3JC(coJ@MN*t3@a$p{=OU1)L05C!{ zPfDjx)25GWrg4)17+0Z;4Vve9nrEb1ry6L2&uXzYki`+m1g*SL#K>aWl>dl$7XfPzUiS}fmn zM8501_%0;=UFZ9v{@*Y@?C{x#MNRYXCL@aiN&2R}iw61nI!dCt2l}REivm|b;VYm( z;rBOhmQ21a8eW8v!dsw^x^l08bl5-!#1i!t8iWi;*AYs875e6x+o50f5?S_EdR7-e zS}URSMvL@dpsV?!OuC_p8=P%LSNYAN3d&7Ssdbr+AL!c|8qjJeZ@w7WAH5!3%-$qN z)y-J9I$=~bc69>$)m48D+<@f5S*LpMD zc8vh7SIB>*!9Oor1FlEiJ#`;TyGI7 zmY$V!78c3!qP22-yEi4*wXKqcDu_Bxuv-}p-Q*pF7nR0_JYfsc53y<_n8&_YkAJaQ zW-1Y;_In|x>~~xN4rXm2`)quSA<<@Np{#y)!yuV_lZ*Kqq6ubiIvS_$0sn+-eY_uT zFRn(+IB6`o_ctPUSb6OKH4-s zaEXqjZO|sJvHUwqvNa&AHd;loXy-oHC@@Z@rWWZ=gL8@j`TIB4;ojuU1_4tWJ~O#8 zi>L}|8xGl0G`wfQzNSW|TfhL8xOj~gmWwm`jVT8AT6C$~4G%hyvP$tq0An0ovT`zT%H#aB3OIi6??mF2K`5x;E-9Dq%a zEv!6-{%IW4rsk{gQcielwssef)NC=g=+M07i5@6GxG(y+hh#X&BHY`bW$su{Xe6_4 zlt<@efK>^RsNg6Df6O^g)w*1ue)(!q5)nZsH0yDQUjIji}(x z){>EZ5sDo~i8#FCu{Ks7l`ONZ9K+}h9`pFLN13r^ptzrQwf`h_m^P+-1Qw2Hk=(x(~-BB!IEgu=96NA(Q%rQLIsh1w7+zKXulpo zOno^HFx;N$?H<%&H;>=4f{@!c&Gsf8T2?;FwN&iGTTz(-ho&HN4##>j;4gn!9%6q% z2~HmiwH+>jm9M2-_g(S%kzwM~F>*g+Qoo8z9d;a}hq5AV%jZ<4KVb)=*{-;~%e+z= zhvEa#T}!~{K(2Gw47(hpgOt)X#pNK?qr8&!sr-anmlgA4?Wy|7*hf_dk)7=TcgioU z@USokb^iC^v*wEaA%6jb%#%Z9c;3%c0~=!AnfIlUMr#IX5ms=}PcnYV%_x3JCm-x~=&wk)D3lHd zL!bwGi>;#d8;f%$p@TZo3P*j^hn)>aLu=p&&J%5=-kzjhmtgiRioFT>W0d(vBk7Mx z)E`Yanxe;nFt1CpCi2xwdPD@{bvhn81OS4DfW&?6-}%}Z`r29E*vj5S^557c`np8j zIE?z*i-nL7hBJtVdB}z_u!nixvNIC;d5HOWz4K!SqkG*Vo>8~}l&oK(&aF2aFkr@y zQ9FlW#VF~2}VztD=?05QKrL7!uuy9Q|(WZUZok z02t7a=i`4&9_S6a_D6JaK)Eacr2T-%d?=#}QOp9AX5Q2+e{@>Du@wWbHUOS4bY*+2 zGxWuP0RDsX%-+{-KfGHGK)*s0xKeyUv^7V+_1zQb&llkF#V_SK7Lx6r!HC2EC=gB& z)c=g3YjLDvEv7_0jb=WD|9E8J4_nT8>WjMjMi+pByg_5~2P%JmnqvDKj^#Hc_O!Si z^er*S;~(I(*x$K|pmEu-SIZ^98IMKJ7&Lg}uBD`Uhz7C+y%I z>d+EpSgWV@BK+VejHNIj(FFMA{rx$g-z3)4D3;L}9qK3DQ%V$&iSXYP3ja_s{~I=c z55D_U(%w8mixrEr{Gsb`L|O%bueMH zXVOpD9tLT})yY-THsD$Bc)tg1s9tI_-jE!*xe#=)Bg+cM&<&1mD)m6~Or-bNxVG9F z!Dosh2o`o~C?ACJ9B{XOJf3sr2@(Ic#&z1^xQBapECNXF@ODxtx=`#I8BtaK#l{Q1 z{|APnl0sp@K00f2_d-$8+xhiUQkbkNChc2}*U9PvUqGp^bZOi%(SetAAl0()H>BU%&sBji=tVu5Msyc6?sWVw6OP70| z(%v(#UU2pdrp(ORQ>!9Fm5D7KoGGd1na($uyqL4fSNa&i-K&2&zTZ@(%wp4E)lo%K zrhXD7~e+`IRd>sOy> z{Q38B6O1Q|$?k~2xkYmOsth7QYH()K`DqaEXHDnZ{hrc~G_}$9Ijt?vjJI)<7GD!Z z>l=)rbN%lm5JEod0N9MB06uPtvv%QkqIncvhs#~ zSdwYa&MU;vcwGOXD$4&?euau(!Y!zSvCv}Th>%Ql-&r8l_z?n>n^&C;V-nQYK^(nG zFdm77O%xQhy+f=!*?F1Z6iysQLh5_)gB^^Koll49bxIB9d6E_sgUY=xa;zOc{z582 zIz$;QN-bL$t?#t`leYt0qTik7ZP_hFfPG7i^q+DHt4c@W0xCiWfF()~VqY)s@!}E?P>Y)-F-d1TbHBLl&W~Ruhj+BJL-OF@W<}*#Fp+6w3l8IEv2s{~(4Re!FX6Du^4JBtSQxjbbakO&lH&q(7 zUAj4(09+k6XCreH-3E*A0IZNOGba<>!cX5TF++gB#VWmlob(DHphl;fYN-;KULKWR z0z{nZ)?aBfW>yCwQ7az*bERJ(Bv60{E0_So?4*JBpQD?8- z2R7zf-Yd7aDrQeSRzA81e-w!E+RfxmKc9622mWqnPu-t>SyYZc?cJq*IRBN*3? zf~X}6eN7AAugsuy*9$}b+_Co`Pis2R5k|wHjESj1F!?c$Bh0)MK!7=~*OX>r?nP;5 zidu)BdhE=va6h-4lP=#J55FK{zSSGDi300#Rnk!85VahxwcHze7BC`s1GF$x6hBIW zk_)(x-$hFE&N8dBxoRLtL^Yk~$`b_f>BNsr)^yoO_tH+=#*{!pmy-!7p^A!l{8Q!x zj;|Qfe+Eu}Io2BKjQX2J7b^B}6V93BwH3UQ`!Fc_nZ6~f0u;TWx9Vs>FvCW7i4>-6 zc6Mo7W34}={JN|ET4>C50sG`PVT2ROGD3GT%d{CSdrZQ*!o>W0%eaVn?b_+E$;_71 zZS#GU3mINl5?=a?zR=BSp%*mLI|Xp%6W4=e;)v3KEym_3=>kVCx7iojzVh{($*k8V zJbjqUeeV}8W7V1WYU+e4g*!*A6%VEjJG?12f(iX8(vseRvU-DWf5q-UYOIS|c1D^v zd!qMj&`aE&=!}-0oMay{$m@K7^`-NFzFtr7RN(uC`=5k7>SOu2fU5oP-g2F) z=avi-P;CpZKlms{tpzmzaV>b{?Bc|eH0IrJ;mA=jn8a0Xi*|$KeWEVkem~92RV7OQ zjaL>-PKn8pbZ5PLrU-v)4pV;{mNbd#(cwO{HG+5fP~H{_}18?9d;RY#JnPQO+L9^9{Q5FuKmxv=8Om4a={0 zI;iiKiS|fHsnJ}~!Y#ulAleE~gzhjcRw+OBH-ln=KIPwJ+?(LE?SU-{mJO^>3l(?) zGI=ZZwH~(bx==EGWy3HbE$mw|_4ELh*vTqpIvO4U#_u_LfGhGvPJU*{wi3 z#@A3Rir-)t9_r}E7%JlY7PM!}h8jv*ka9s!K5z7(ZG$5@hGU_K`(OF$p~cK;b@`KrvWWdFe8rp%J+ z(B{G35?D^6M`82J-UjGkyIW=%dMj6n0Yfyd(ikI;t5tNwT^m zI5=#T1tga{vL3pu9XggDl7i8!d|B<53>A2p&cQyux z7AOY`hj>fIat8-i+hSG{`cR9HM;}C~D}~XB)7}OAI&gcwr_GTyZ8@oUsP!(3x6F|_ z0o%u|BNFUo%lX4kYb+lfDl8w${7-Q(93qqc(js{nzu+^u_7^F+;$8VnqSZ2%Gb80R z>`6PBHa82ZYndvLvoa{B(NG7IiYrF;`&}h~Em3-b(rhjuUUj&rglQGalvs&^YM5}i zgoxHu17fLfMaYLSM3AnSIlh#h#V+yZvlhZJCS_MHEBi+hlU!**oCV@#xhnUjqnsHd z*nx4B2;(;y4Z~Oa(E;*kdXAVPM|z1$xvV+rPgawZ^bv!3LbyB9p6pxtn6q!`qg}%Xf&ur&T4c#lgVgLtawVHRX9dRzdl=J#__1PK)f@Jz zMZHS7j#+nn5Q@~8mSUp>y|=2g3fZ~A$h+%I;`RAzrx2@;y?7w2@fU_0eQ1=|#Kwst z(KKD6j&`(D{tR;WERUhwh6`(&3xHOw2s!Rx-fAZXH90Gha2Gy8_Y}2Dl#KSeSgn)p zw?q!BdU!c<$zdEB*}am(lA(pE`JC;Y8y!tE=r}csgy)Lj^URzCnG;IzwqEevQYyl2-AA)@8#4w?9m=@z1$*%EY0Aa*cYs+McNGt5aBq0pqlPjY3F`BF%UeCg)0dF7aRjs>t;@$n_|nhoh`k5ylA}+d;It zEtILA+NfpZShdVEu9W6x5QV2r9ni_uV-nYutNl{D4pd;jEiA?)im z_K8Qe!|Kc@GCKjf17nzJz-y^J>P(L?o z1?!Iz@*dR`hn+!B2_>AYdwm(P5wvHgzA#L6TC6C{M7-3(Itlx|0toG2^7?-rl7H=9 zh5X8**7c;hRtKU($hC&a>+@hAm0mSd{;iwEbAcWBava`Zp91*Vb~u|^y~22#-lSbA zv6HsTOyn@^DbA_jsVoe#|J+XV{03@LpjUSd5bTzZ_6@;St*ufW9|4dGp#(_01=zgb zfSU!-0hlm=AYZc}+qD37v)mGrpHoQiy^x5O_Zz)_d1$k^i;$3dvl%l)$){P|P)LmJ z8m)gsu)Vn@?OOZ?Gjp=g>lq;lx(w+fp-!;fo2O=Z9X*NLX6e*e)5>Of6>pVO+c!bE zdt}$LT0W4#W{G8xVOz7(`<50`IRk$oh42>9*mG?oe0$gh7Sjr)DW*+Ix%zgQ&0vfA zjL!$_ESo+bhv^p01>s1XL-l`!ohE*pPxyTJ)}oEosyXSS&4xy*A*V_GN0aT3j?@6D zVyiyWAFXW`3cC+_Tq53_AM|IA^b%k)Q^1oe)Drl}z5xh2Md z1o}Z^uay)Ms-@Lx#P`86)!`HIJHvlkjb65rjD2|PxS(1nOkjw1(TDpe2-^`I2BOab z4&7mO`~Yxc*|6Z3w)M?5#k1n-YpA;nnOD^Bld=a#4aEBwv>v3Qf}EzXKfa30E}+Jx zZ?6Icmh1#YB7W3la72W7VW^E$nh@&4cJ02HdebSoRoCvy?-qOcezD;|Y36$bUbHOj zVWnQQ=D3kj5QX3jR$uf3Y>@CwD@RoD6km#}2#ZToxOE9%wv zZiP2+E03*-y)6Tbo=Bc3e|S{Kb0jXGKllop?vf14DgvwV31zawa*H&d+Q=9DSxUt? zP$SxmS1ShDO$lrMZbSp|vZy{=y7Ai846Fvv8j16X+#K{X~}{F5}43 z?S=90ts8#Rdn*qoOZP4U{s_H+C5GvOZ1L^lJO7f}p$MvfwsSwYSc8Xl1M$36Z{eQ* zj(3InAs;%19yrm@=wEray)$GdK2uGx`ybTZRZv_}*CycZh6Wl)f(Ez7-CcqOcW)#? zgL{HQaCdiiclY4#?yf-s1W7tS-&ZqpGgWgxtIqwo*}KlEwby>1D)c9I2@HFdt4M3c z(KqIwj+Gqgw|SeML}Me)VwDH%By8;~TtH4Uifr_k~ zt;3lr)cy~rqtky?emtCAcJrs`*$} z@;I64@nu?%mwk9P-xu7+aBC%#?3wncbpSR6-x8EQh5dLS6loD-@}iG!7t@$>?~z{T zNbf4BZs{?Oy?Duv=?EO)jfHryX7=Ss3y!RlcmB)q(C?5)Y?rd}tn0tT&zD8>)Pk@vk2f%w0DmDLW>H5k zqkR_?cpj0Ffi(doi`MyFetxssV7G=nu(s?~Tgd)F_=Q{iVc1?6wCp{`-MLo8%lOPI zb3OE1DQzM`5ZThoXCphlwS>3zG*p^+cwT>}YYbpfr7sNg+y8NadWUF>$= zIq%N(zn#`-SQvE&ALh3Nfg=2@Nb7tufchQZA-RMBGmDYipI(8#h5C6<15Ma55cA8_4LwyZ33B94z*V*YT-Vqpq$$h#F% zS-=}u(EE6S@J2K>Zmwt?#~&G!MngtL0StIYA(hC-o)5;rVgG`t0^bdkiowK1f8tZ? zi;E+BgU?^)=nJ4_gmnjoIRX;X2(r*yWoJkG8PWVm|3D3o2Ph%oa!mQ;mXa98zJ%!M zGyk17HCt@wW~}=Jf;goKB$MONnop;H%jaR%ZL-M|a`$h3jY_q?BJ}GovfFO?x_g%8 ziDz%r6$okpoV8N9? z0ggru(XDTJ2ePZzaoldmNLwkoc)C7VtX!|>MmMX}saJ6zKnPA^)UGjfRJL8g$^ZEC z9dqR4Tk-=pM4BEv(P;zUu^WyaUV?YIVN+K!`Cn)si+bUYlnOmWAkm-MbMNR*!qch+ z&btXmdV`u@raG?p2x~g8u;`3C6Nk`xg?}RX#t33&jGcC|k|KteUWKz63IT^1F(}F$ z_WdJh^VJ>1szP@M(T~+6>BN6B)f#r9_Na@Z{Nhru?`YHf;x5L z1fdvij=jaAqL_I(^$nQPr!ET&spq~M^$`>q>9K-TZ5^>4=)>yvLcsV^wVB`LiJTOy z8CI$j_<0;SVrOeOLlvCFT!~YK7dEKV#dkKSel%_S*Bt=R-)K4U?S`6C0I5~Kf<%WX z7d;!^UnMF23ONTc8EV_>T)sD*jiu0-i%@Zs-*ChxdW39+u^%@`boYW8Du1WKwCxMn z^YZ>U-*jLPDV!}aW7;@ZoHHb;uViry;=q(X_OpF@5DCN@Pg81Ymeb7Wf2ZXiYTQJx zi-6uz>KMS3!YJczgR!#iYw()}jg4-p-(6UfrwnwaCv-zxlk}t(xaOsWT!U=6=>=PXYQ!WfaRZ=Nv{Q=)(`ZJuB z>Tl|~S;F@}h>^Ap#A&AK_9#&t{NzoGnAvlB zf91uad6Kk28n<0&_s{h-D|)AkzEm?<(=DYV9!4>T=0Ecl%9tE`ktLwW;CEtUi~CR@Q%1 z={@-kb&!{7JfS!hN+P%&{mY2}eCy@xYaE&tLjb4y#wvWExlrY;@6y^uV3Uy907fD%pfM zs>-NCv^h~5O3!S3Z7hIbLjGNAAfIYClC5qUGHNUx7-{6oX{k#zct4Okp~%EDw#Z7i zTFZg*HetVQSHVf9huWz0o1oEBj$A6{zc)8>zl@>*njD3lOvR&dXNNM9xT6$jyKz18_DHA&8B1=7}NIr8dQ0@ zrn!V=aDHsV*07U}L(nsZtG->~->9_@XGz$VY@$?hiAzW*-#20}Dw#@>q)(jCu%Nd$ zMx+{YrUn<5NZJ?3`S&^+E!G*cQXfngBL1TB@gjvA=Jyo0Qswc+#mL&%&yaH`hP~UA z#WsO3;^$u#C(oS>d`0E)butgw=BK%r^oUO<=hCG0KXQ#$=1eQd?bv5L**WIrig35)B!Ei4t2FYIl_7SSP9NJdKUf7)9qCN-N>mExN+V?Td? zX!^j^)MlfP^aD0)Ow(9!$mGn{vAW+2Zt7-_wBC(RU4Hn|oURyYwcAhBE4o`(n|EnN z{v%}rp4{-DALLV)@&8Rh zK4a`QT2X!zy$m7|yYiUN*t*gZrMhmqavL>?|2?$au^q(ak3%3lOhmvF1ePWDwO zSf6LZzp#p%cCaWR*z%=6J}cZfr5^SLr4@Vl@ViH1su5{l3?Xjh~a}&Mv6JDM8@sP>a(B7U3Km4I7 z{IoQqEv}JBxj1n-v@!lc+!kTVgQ}_f&B^U(uC2Wng=l}fG(9QKR9q>gq5G6n9 z9chtRMEiJJw@!G^&D_8`x5~BG@9@s~aDTn2zI*E(j)*ii6jZJ$6~1WL z+0OR5vlRS2@Hh z#0H15$6F_>I?tsvwJ)fv{=WmJ%}DJT8iS-J-U&t9mn^VSuGmxiPo;i&M>(K$ogWj3 zYWDktc_}yYQl$U#Hh|m^MUBt`9|?mu{s;ghzuGXXNZ<3BvDARZLUE=>Qr}FHzO72P zqt1@5D!n3Kk!Dg;2At9f{l=JbQ;)kABEYN$O$s@##&HI)m-RBK4h6GeM>(9M*eQn^N*FspX=>?{AcM!hey%lSe>;mr(es3R2~B;xG#IV%j3UKZ7o6bc@APa2QgM-i6`gN$D*-~r};idYp=$lKSu)>te~;ypilFKSUE9g z_tyJk(OYxS_^Hv{i=*1zGWq|Y*gkU9LQypFI@J?nCj!8d++uuTJU{xrR zyyOy78j5B4hM_eEs|vLI>8m_C2Hr1}gS%+;Zl+w{8>&Ed_}4~h_r|O($|%DkR8H}_ zJLR$B9W>m0G!o@M7ASJ=3V71~c(TT+@nGqgDEy2)oCF3cO}o?Xebh^gvqFY_Odg^O8mO}Y3{hWaNttdy!Ge_bDkH0oHTfll?_N_AF6^Mk+UUn_Y|5R6@1 zIUrcMXV&G9hHK~@Wn|+ejibX`NkUcZ@u@p)a%BqBg?H9>?my!W<{--3llWIxpV{t} zXK$z)XQB=cq^u(2ZP*2?Z&ob5**0+LPc^i6q-b4?=tJeQ|8i4cUG(L9a+Y^mjBWCjIdOD zWaloD@$*yDhLqCCm=>AdbF6yhYKsK$k3Ko>6VfhGGQ4+T<$-cM&@5c;h@?PslhvMX zD56nZOI@IqJZRKTP#rEkb>8aECB%2;PTrT_+-+Pa`thXu!5KAQkhO^0XuoprxhBkx zDzqTf+&f=1tB@Qa>n*!CRKuN&-f7x$IkWfcgt6FC_&XFVIjp`%Nc*BIoUc2G_iYy0 zVMW8K@BNn_58js=^2Y%_6vnQa(VmX^wtdG25shxtdv18*@u1XidM>1K)8d7{DXd&+ z4qOWX%|6JiuGp7)6|Cv~yzgmMas8lXct`etVQIrVu?4)V72dxryuYwgosoHi{y7?) z)9LtY(?4oc{=o}|y>sV%WYl`EXJ6;bcx#6Fn6MN}x&Fm=5LNeI5hhx^f7zmcma&(f zhF*g>J~4{1H?F$J3i@|^no2we-sFfTUagYAL#js_saq?@doh=!Grm+NeQo{C-|jmp zP##wr0oO?U6&DS+Sp|5pLD79smTK}^UB1(4{+63gE-$6Ab{bBu+;1ue>ij@uV={`g z$_W{(L#i;!y%_4LND7c!yaq*ax$K8D191XMsWf0v612U1VMa41q2EthJWbZ(>uX>u zd8+AX>v!9>&itQfj!MyTY~ftY6p=e9k>r_!u*^R9%;C1oA8G6}tC_29S%ds6ORHIj zu*|F-$ew%lVO#c%d(IDjNTF}e?=(nzZ`Kt-4)PlHaa-<>w#;|BdB8Q4+W0Jz^xP6R zc~Zih9A5~FZuYTp{?ijm_Na=**qEG(hTbx$a2{Z#UIZ2`GDt6iwHKKXA}ZzbpydLL zb&It&970;w_z_u>49NbrYq)Y%i7wpo^IPfm=4Wy~mQx{Oq=BoHcog`R$Dat$b$->|)_+vhI> z#nAiuB0_ImX~YE-J|A@B)~9QK^`Z|~u|4b29Bq{ev4?b)SP_}vxkD{@LWB7_U{&4P zsRm{Q&@GqNL+;{289ky>H&pfB@Ap6cF%3}eHUE18|dez*cHUkTR$R7;{kP1IkqwN=T)#S=cc^kez zO~5{(sL)Rj?de%}8(uXQ|Jc&8J0OzbJlyQnBLh^IJ*>yL|uwMs3% zN)L*E?-+Zpa_r%5?6m15G1+SnvOs2xQxe!0v{8HK>fhzLdMa#DlW)DKPfG35Y{vWW zHgihWaXsYkc$eZwnRi3KS;?^_EDXNj7p}~+gBMm0C(C|QdI^YJUJQ}KtvABZyG=J*I5}~% zfK2UDiO~L=F1#Yr-Yt<`d$`T;iDj40Z^OZ@lBj9+y(`w#XB)c|;if}`?k}0y#%AzI z>6N4D`>x$A`ANCyVK0=z z{fk5nxfu6x6X}_k*tYg!y7`;@goNti@@ZY0j5d1cK0#>jw=lX29-Mj||86-`rZ|VR zE_HKqag*}Hi+7`BCchxlzm>jix53YalOo<8_kTWk{|175d;Jh_(J4aN^7{Qy-m-X= z*7{^ur#iEvfLM&Iul!*gMPo^f;8-s=#J=$$37iQHnY{=(7A8-Z zoBqSs{%DUcfp9oZD%q}(` zbWnI{w%Mpv{3_Mu>14V}i8QyQfCfe1$~J6uaOB|9nH!Y%%yJjtE02SI48`DgI^Z~h zN;8-YRl5Jeq*LMh-u#E(`D`&yR-N>A_1EcQt|pn|Z6L=ve6x`eo85n%>uR-3V%x_* zz1eZSgrA5VYUX}46%T&M*J>TaCeHMjl1f< zLho_%*_NnH_`orME!7)LVzyyhOoaK-W;o49nXS+8`)J=VsXKbHRv`AP!iHr$2q;)F zmSO*fq)c2-g@l5H?+XAiwLcn1ur-hDg+p51`XS)fP*D&oT&5sWv>l}%L-3Z4DwgN% zDHK_nIP4%+erluuh>NdU5RdeTZr6zu&r8FM7+yu#+;Zmr>z9$V{%C?H24yx=yxvkr_@+(+Sa1qW`bRec1 zNxGhY$oH{URblp-bRH6I&!LaI31i08c2)(l|2zz+N$%&yu)3{h8# zebZcjH#9NJT)7{c$M(Ou$bH`b<1nDUo}C0HI8pj~sA(YL+GRkUk$kMe z$@r`YM3HQ7IpoN}#q^Wtc~-1y@ZfvcV-UfAof+}e1QI@OEH+mTys;!Z4+l)7;C2>$ zw9iQxUr-Y7DM#P+fsJY{!SCS$D^a#=i_V$tPQ%TcNoIbj0fw5%$=&;YlEEZly0CbM zK9<%4@5%jKq+h%Vf9Wel{(91z|JF)>UHge$H?KhmKzJs8DN zn-4_bck?Awgxv(FI+{#kA#@mV4aO1c?kPAN4^-mV2B~C*Nph78r^wX$pC_z6U_4=c zERT-cx>ad);z9p(J)xiMHQKHw!zCb9=LdVDs{iwdanB#&?XZf0hscMo5l=;xWGi(nBww z4p4DF%JPUg$&a2o(bzLa;53Nyng+#F6`-S$Pg?e=Yn{835L3zqxJrn!&9lMOA|^p)uEg{9@^BQh6yeTDWGlMS14Mj4N zc&7^X1Va+F6-QLO9@-M9zvBn8!W?B$RpN>7Y3RW)bh3!S5!81rarAk3;rZBEa`33(~) zSa|SlI*D)~cMWXz`_5}7@S8K02#eG%ylml~^^s_cc& znf5)FJK=Je9&avm1A0;VSen711~!Izy^v8P7ckPI&8H87YhA%SO^$DZQ1#cB>VqrV zY>F;*$90z)NL_0%cM#E1Gd33N0AwKGmD{-I)?KzMS^ael9Q;T}SX87aCa~s{ybP~p z`WYJWIiBB?`ksdEEyRn}ON=!5u-#}?qKh@!(QSJj?MQCFJBDNDGHN*);j=>@r@#I< ze`?p8kddw}Yopzy$a;kNYk8*Zo6PZ-ExKJkE@#Jv7)G$;4FXG_qsEEw^b@mnm$l z$B{&G&Pl7pR0t>S%bZ&w>aLv)eJc#yCejt*&x^gd5KDheFYLqoue&HA&*IsP&aFCK zP@x4CymRO6#)W1kpMNid?(kA(FSPhbf|Pg(H2#qS-cMz?B@1CGEg@*{zQBnI5q!uv zo~M$w?(W|H=@Fv(I?zJM@I?ZmGXK_L6`Q!~SH9Q0{q$TBjpPf8QE3BPXG+y{;ne_g z=S~;6dU^`$5>KL?CP@jiIN-pQp~_S53jQ~Vt4E|e$5J==v(HVihiaaO2)oOxfYUqZ z^8wo-@R0Eoj1{kqd-+XdLmFd68cRc3C_`J~Zjhlz8ru^Y3xMzI$L3qT&sK4yj)pHi zckFVFjCs3^=}fEio(>~5#FJfG2oJ{tOB;7W(t}#Zeu$TOJ;`523cbG3i_X#b800P9 zM_a{HY=12{D+6a6pTU*Pj!we}^#)bm6tj z{y)uiuWy5!jzw?qV+bvTe&J)))5RgENAQM3fl8y|X8AfF9j!+EUjjpqN<#@K0tmzc z-Zn;}_yr98iXHk9za<_85py&!iYvx*lMME;cw|$cKrv8>*^vp~lmLB9(l13xL>qOV zM#20TCL|pu1pfw=55wp?PGm20^w$Q{(S=eip*5)l>$-=MyXyC z_^H$O;!S^#cm<0*RCWfZjdl zQUda@LOm4t8imySZm;=!R`YL+LK#^6C%i^W z)O2_Nyg%l38D1qg3%=EbC*3`>w&ugOtT;GL>V}_f+htTA&$NMQbpXbCC?ip%sVy7pEK)a)I_TD+z&R92-f|ZYcvyV#zPG6I`KeV zZ?Z&d(ILVWJFh`JY69Z4Y>BrZX0$w7H9-9vYTS)oJ+Y|2HseXQdXIaBFjh^Ur5iQ1 z7>LTA$#O;#wK=}DgdjV~xj|E2n&)(@!^Z>jE6TGyp)%{Wc|=tP1>YZ5WP(mA9T`PO z%QeZ>T>gAf{0_%$4Ac9%I@XbYE<^jHA!)q5LcV={tYx^OlO!HL0Kc`Up;L;eB@(TJ zaktG}QgFeuefFiMhq0|(7d**deEzx;1ncdrJJ-g$D9@|5B3h5EJI@8%Up!(o1Zxgn zs&3aCep<6Ep!VRcWB=>uJX@~;*<_Sh9b_CLsKWY|IrA}ehJgYsN;|{5 z`d@WRl(0}0tn5p~^B0lNd!B=2zK~*`KZ=O`&4OqY5wGyPH1mSe&b(mOyujai5!-oj zl0`+^dBLg$8RkVf;RVU4dA_U#{>ypkuEo!aiy!|ka0)LO7%Y97oM*3E6slU%^Io)2 zTr!wk&~z}b zim&&QyyA+z_q>$tqD0klZr4JJ?ShKvYJehPK-8L?0hn`h?G^K4s=_D3L+^qAm-1?> zTJM-#@48&?h+6L<+2~Q+7_{B!6yE5{+8CbPn7rJWezQ4S^_rf#F=x9uVX(Puu(6u8 zIa0Mb-LpGI^lO9d>&>mlsO_I!+s}&I zf4a7x{%&7+ZzG6o-;wMf`RoAgwjuECH!R!tQ9C!xyKlF)G2ZT=`s`q{>=JbEqABg5 z!*?-7w$Zn?sk67?iaYPBci(33l4S1@+U?+G@8C~u-~QcY@Y!dy+h&g5XBXM0dwal< zy^mnGi{`T}xM(2%X`OHWpc1w|hjU2I5&E%Dy+_5Zrco0XjiW;fg^S~{%pDwRbmMFN z%PZv^lhqnBl6g*`gld%%|%Jsv076deo*Ih zV()XJH+5wB_9*l%x{1<>f3*}$WZme~iHyq;yy1wY^H@sbWTCOL<>f};2=z2zfnGY`|f6& z^afk`2G{-uFXo28{u(!D^gwB(iw-@b`UaKk=C{Z#t?~t({Uw9)CDYYy`KJr|f48d$ z#{}QcIX~R;l3oAlzQKz5h4KATsOO4i`}V{48_9pyQZ+XMHFt_JKSgS;B(Cn%-`!J@ z-GgH8ILZE>P8c!-83z~j9VP}24$gagJQ5NTy!ZHTFy28?$tbA+Ts90E7 zc)6Kbm^fKj1gYr+*jczZSOi!Fc^TLR82I_QxVQzmxj6)R1q67wI0b}w1i1wMQ(}TV zk^(}K{M_n-yk7+Pz6lEOcymjN@kmGrE6NMWO7ZCG@F}YbnwSV!SPD2g@_Bd(*gFU^ zvWoHwi1V_FedL$15E2s+lYA{%X=y1LX(?$L1qB5e8EGXIA z;R4(#LINd%f-OQqQ-XpMB0S520{@Y~g#MQV_97&3DJXUzfkmdlKhA#SSjS&u=AvJ&1dI`}=wX`uX{Vga(C$1y@v*mlhYbwKPpnjZM#v z%`HqWFV5}nZu~qyyt+8KK0mmt6n_6qx?981I8^0g8#*=Wu_Q!;?m+&A;>iq(&tn5& z4MlxfLTI2jR_aGHK~e!uLgk62^C1eVQr>b+<%?xnl&GDd+~=B6f*t-i=eRbjRZLB1 zpfR+w)fRTf_|0~Co6UB^EAhb&E!Md}uLk2c@(m7Zp{kq=G_rNJ>wYmL63H7b+GYlw z&<`{t;~ZZMx{!k3pR_i7980CPd%q&jc`zN#89j87es|E6wme5e^3*W05p6zP8KKK@ zFynP4$JEw#dpI^=B=4HFQPX$SY|ENrLvU}mQ^5~kciDW&b=}(Y^!$+1Vd%KMJzMbp zt*+0*P4;TRKcVaovY-F!gmv9<{MQNF@ki%D$@P0HMMn|P`KV^(he2AJ>5u=ubk~3+ z7(bsC>F3_K0dagO)SvDrG~bUhJ~S@^F&bsx7Z=GQKa$O3#Kad`zG4(DcDu44C___r z5Rd)*RfV-}!5@vKMZ@xcJ7F$iMa-Xq>5o!PgCWJt|8>GzcIuBZY?jom6sJ}m!Fka){lLxfY(;1pS{nU6R@r}b}lDA(_Wz9tU5w`O9h8}PTO zpJ1@IX_#O^W3HPbm9MIw*L|sM9v08AshfnN*|jdny;QYrWuIR*oDbcWmp2tNuvRx` zKeKcde%ZCIsonCZsj0W?`&g>hi76+kDv9}q7C87rMN~g<;3Jih zBbJ;3QyrG_*G$P_B5NjgEYg<9R|sBEe_)Ww)21GaV7k*0i|LpcJk6#F{|75uC3iO;j5RGyJotRk z^7-S-^)TzdKX)zDo_`;YYkFQ@rj@}=TCXSN$b7w~ZBte?@CCA|`!c zFHlOw52%sMsEZka%y8|8ZfZz}#MfWJ?BGv=le_&EUlii6;`=6Z2gDiL4C($E$ZM0e zO=rQ~Q{)f~*Kia67c4UXC1n48#hE_qW*&GQHBH{Fg8!WDI>4ZN6Rsn)_fO_g94k6H zq$V{N9gna7jg(5zcOpu{K0X1+kzyogq5-j@jA)%vtkc^8lS3y9u{uqMU<>E0Z2+tf z1@$)AV!!}rcxEm417L-;-Q7@JR9-&B##bNn75$}>K zuS(A{I|NjqQ_weQNoxo=I8hgpuOZ1GnqslV4-Pe>ZoJ!#7%&(ksq*g|r!a4*N zdtDalA}=X$@1B?Pc`)(OWzW4F=;8NDgYZts7k!_)<0Kl)|C)O z8?sUoE>RCVhKMGgg=@cP9wEgILvih8xL}`T_VC9)D)f8o<7qCCwnmR0*229pLwo6R zX1;~IIda@2K;_1A2y#)PHtu`SSxHWc`}@L?dS7A|Xu$!I!nu=Kub5MP-xgAX?MN~m zX;{HQP+u5GO`oN|5-yUSbeYNY7k|=%g!3`{?a@M1L+Odw@1#tVDoZJ8!TCPj^t$0j zZeMW4XYP5A0`aQ7RFYLIUly_VsUOE>PY8{elGhevB*itjb+v$VeVI{3JOoJyWY#78w3P+r&53#I&6!QI9NM zW=uOoD!U0x|9pL)XYd`%)kVAl5M;8P>J>X%xP)CL!v5KDKSHY!$KU6!J%nvn@V-<; z-gEQ9N4Ik8&I@*KGX(TW-F0nFFQuLM)k}$qs&ew|mb7M*EuUH>b#3;sKA zk%8@Vp2E6``opVikNMBe%jPH1!TOv1&))yW_8z#Jxr+p^Tj2KG-+6ixq8j;dlG=a$ z75mhBWnGTB`28c5hOLu2E3L4Ru$jkEN|ZrnPvt+lpH3neBlbArcppW*Ouw^A``RS? znitqAXe(%_c%J|EzNPfZ6w^NbCaEb3CT#U1UhyLx@zad;BjfX@!uO|g^Cz|Nr)%|B zcK~k~GaFGcErLWjTbWqhnAqI{meiQ}O9OWH0z^ZZ_;murP)sd(q{XTI8AJUUS_5fU z0+nR^uNyuMN}158VtftKyVe3zTm#hj$=VRF*H-pph_?lz2OpyENr<>gDBRNmQBO29Xe2arB}D%^H2x$+ zk1Z@&2GPJFOwu9LS0+@?*I+5dw$=fRaUJZM8jP}ofZ-7CkQz?d8*W{SKv5(zU93G~ zZgG(EQR5l_n2G3qjOfLW>_Guyl1C1?MFOq?guamzj}bO2ku#|Pja(o_E^tXFifjkC zAQMHF3nbkEk^w+VGEs}E2-=3gMSRfSD=O3*y<8eaff2J*8nw_0q=*G?rA9BO#t`KK zi40@*OM#e%QJeT6J+_z~y6APCD8y6XGhZ}%8kk}ymWVuh@gy3%Ep|yK4kaz*W+a+? zCWeG9?wxG>dMR*|E*j?R`Ug*e^#E0y4Gx%Di4-sdaE?Y&!~%H3A_-^gBus-osA6>G zYM35-Tr@-ox<_KvM#|DhzQX`1(nn6?C-sH`v_+%HF=BMfl3;B~pURR19FjisC!4k< z8N-svYLUx*Q4`rvUh_;%+Q4S8WP{TrELh6tuoTnPC@k3&=e8vG6@ix`-g4^H%CBIM zXj1P9f{^S`IElsk1Ofl%Yb@-6pOTU7$l=xHkq_G9)u_MftpDp zB{c(%N!UQT^qJ0W z>BIaf$g;@|ZIFas)bw0Pf&;`iHd>D$^A{{x&o>=GAkN7>*S#&?`3twhugsh$gedy7 zg|@UMnBFhv2;@GS_K}E;)wEsN>}dY6X)M6!dNVF*dRMs}-3&SZmRu%Xb`CUNJ2kvwui<+;9XVD6nl-?n%oO$n&9XefUc z4?$L(WuD0Dhv8(KPsm0j&uKetX?yhPh4ks#y+C3%B+FbRD-|STQINn|Iw5(E8et6Y zSo)_j)Pz{b_gWwvD;MaI3rTcSsC5{w>t-@F)EYDN zX(F{nIBP}m?s-(y_P%*A3=7Gv)6@a{{GztvL-!>6bR-L3B+FPNGY2H286dPagX643 z={emL0xB_tWcVV#Dr%V5p!8bQieAtsSZA5lKA^bZ@+yc2{ZAK-M z4lqJ^R=#fa;!_be@`scp7)+;_i~;yXw?;!YKVKG1u2Ny=P$3!d`o3)H*d#I)1k`mP zQEmG5X`w(ZIGPYdi-yt^2Jy^Abn}Ij^`ZuoR{=e$_|6KU9VMfy0%J~rhwnvqp3@@v zvyRGBPpl*jT5wX*BGR6!t92tS#u`-lYbdS2genyuI{x!I`JO&Bkw zHT0FJ8Bw{u5RrCBDjOs{7lmG>35mW^Nw=BowDuDulbWb(tW5&Yr3ATB@rpFep z19=T&zW3%N@3e)pf!?+y@z;WB8H>ma+ZA-H*2?Q2zbbp(HD^2_unKlK%O`ykw7QmX zs|zV_kVaOk{dPmC;&Ira;a+@;+NyZk&~OF}_H3Ovud(b!vaUsP3`dG0iV=25_ACb} zhG%}Sg_Jo!!pOT#%DNFenolD7_1wEZyO$+O7-LiS#M9?F5j7;8_KdosRn;P54}0C1 z^r}Mg`}GDIbXy%fS|u}(zQk5o`&QWcB6V1S$ZPuwJ#&|cVpPkMu*nPk2vKlFlaKVO z7%FoIN4pu_Z8sP^7$kq}F?49ib{sP_1O_{o5B-Q(77^b_M7c=yx2}QL3*>9N17#H& zl`}g>Gb$p9kjTk1>)i$s!n;00QV0!!IJL+bDv(qRl>PH0S=3Rw@oqf_gw?Uv3}9<= z-0E=4ANt`x5Q=`Z>Ueot7yD%N?!)rm>W^Sd)Hs*tpS31^n8`@Y0IOOz@v0zjh$6F- zqoloVX(6C#85pypgvl!tw$qPFm`XArbrlh)fdQ!V{P8LMM+mQ{slYfHVU15^uPlF( zG&-n#qGsZJz|asx;G6E@(ba!3TGk7xoSB#+Mw$7ObSU5aJ#5mXtbMUO^Aot^7uv8Y z{qR@$VJWj=dcU-;@s@B1P~au+qBG$g#>j&Qm_l@9#Ix1$84jj#0J^Sa^R!Q^2{e^H zC70Lc0RB$QMz#;bhQ371Af$&BOGxi7Db?%`HK5HZ($7B1&psAZr)&D?7S1B;kDq&u z%R;6!-NB@WbGQnPUsOt{$w9fqpeLpx2Ee>t8;B(rB=kIp@HdG}VR8`_q*vSSi3)-N z&~lc=HOLd*F;6vl`biX4w;THLF{bsRRamVh>Rd+ZzL{=bLoyRZG9d>s+ccS`4XUk| znwkI$o)gGGdMEIaDec|@7z^JKCTr z>E}2J08wuMNBl^(wMfRk2#9(G6PNRSLQCEJAQ;>?#U%=eEs79ASeh@KEX&aTg>j6b zcBb9cuJ&>nN4Lk(tEYK#;i5o07#Syca=n_cv)N{VG98Slhh*dc`t7xvFBor-R-!eN zU$L3ad$xHKitOQl96U3T_jhUDqpGy4y9ixJ+-xhFpruM^s`R~xU>+>GaaeYBIQ(f? z7;Qt(-k z%Z%uPOW)kL2&JS*hEGUl&o&cV{s&Y*tH1q|;ZslwfzehZ;yd}O_HC~peUta90X5K~ zA>f{rn&$B+oK1__3abMHj@eS017%wSHGm41u;>0lo(Y72j$fIiI_;ZBew^tWsl}<+ zp!Q^a4Y#wsleKN->`gyF8I+{KWryvm>RjSuK9eS%;sYMJcn+6QI_fpBw4@#arLK-W zfCU~f>M=dtfgS=Xzyh{@>nz~YrOmo`t(Apt&Hr|1Q6ABcev^@&lvmzAHEUyEr;AlS z;+syDpT58-zQEJSjv>&G`{<7}j*{(|?F^ZxR~e82sqN%`?%wDDq*(4EIgZ*$kLGTT z*p83msF3bx@7t~cA<2*(Adx5e?@nutyJ_y#NRN5Qj{Vq=;@FS;uJ0U4?jTSBD~U|n zXEj*xnE*h)fIY|L92ZZbRC&xkT-cc;U;gqYfAXCPybz!Rs)+I~|MD#V@-lz&AwUE& zukt280XW~8A;1MjPy|0eF+xA|L=W^tUj;s2^g|!?N-y+FumnlJ^i3c1Oh5EpQ1wkO z^%G+RTt6{a&-GZJ^*~ScT;Byn&-7Ry_Cdb|e}rMIBvcwO^K##rL=XaVFZXqS_cQMU z?V5E^K-fdM1x86fRiFb)IgW>q_~f4W#0b1Tpo($7_>ymphoAT{ACQSp`IE2sI$-mW zulbW70fnjo6@d6X?>#D01kqzL4U_sA12Y@r^RNFf!$Un&V=}n!F-tHu6Vv*yk36)G z`x28hv5zvX5B$h;`_!W|7{dh<{=+*cqcOu1G804n%HuIezy-L2GEx)$%C9lX|9^=k zTd*?)9zgP=5Bi_K{*?~_M4$ugulVZE_=o@gow@nyKmQQm16L#k{aelep-bREfxLX( z+EOISLWT_;K5R$@0RV~>EndWE5dwsa9X$egpyA_4iwHuHL}`GEh7KBBwsaX&=1iG7 zR?g(m0cJ}OENS`-u_b~_4jMMhJgNaiQVk(wh6s@*rqh@(fx4ucldf;O@u}6Zd-5Kn3Dp!bN2LBA9rf!CP9O5QhAa z%7eciA&9J;@xjT=7)^Hm_AC|ZXws!klh$#i>F5q2TEBL!6Kd<&u2o!-eOk9}uDgAk zF8f=!(=9rN{|3=^?yFF(;)ZeyJ?<3&pfBo3VBMk)zuEx=j=V4lWFm(ZpFg-|eE9H_ zy;I!y9wcY)2z1CtAo}=j9r|bImQ5!CV|%T&-g4WowB8cbEei&BbMQga*n(xbxtx0o zI#*z+YXJFt(CatGyz>a!B|U}Mi_E?EE|YIF{O)@%zttoht-l>fqm4Eo zOY0zq1$l(ZNC`mz4oL-_gzAH+Ug-j^P+YOlLh9thj?3<})1V3%$y0H~fezAQ%or(q zPXdnKvoXgT@LT=~sv3~&K{Y5t$iY7+{X{ZCDA_V@PvxSMj=3!5qN2L@e#lP5FRd$4 z&4-AtMgkMN@&&E7ntoWDNC9@8Ya42mJKB6Uo$Al~4s#AFM%(;h6kQP$YXY z_uRI2eXha`m)r8u5PzK%v`QIzOo=g%&D6|Y7}KItXBmQ4I|w4EkyPtU&GCvoH}G-K zKDm`p+*#9=P)dv?^dJjZ*o`jaxukQhQ7$8;SJ;6Y;#XN+7~7)Rht^}SVCx`|Kt2c* z1`PofuKuMs!4G^CQo{aa*y^;^@ z{({A|VO6dOv*?$ZV5YwHUG8R>QCq@J#WcYsNPoML9%(ejy#4g4Z+=Tq2uG8J9PEiL zt;1gStfsiefv+>-qZIiZBD2AiFA9bMhNhAgHiY<)Fh(2<`zjN>4CZJAKnpu4B*So}cI7ZPBGzv@^1EWwjua(J6y+~j0l=v6-SqFX#<6M14 zx1SG6$Venqp=n0oJS@)Y16!b8^=>7@x5V%jvRhp3)OfoTMQ}v`8OTL}hmrZ3vS9X7XEpRL zOdRHo=%fL-A<2Fh6^_yXIUFTnQGn0f(+B>!99->cYLIN)yt-+-%2hI1LtN4B)Mrza zJhU?rW!psArk{QaXK3@}Q4OH^AT8kYL4PBSTYp2A5$vgBA0uNd4|x7k>-fNinZcpG zZrMglo(Gfcp{eD9slgnzb1w)m-cgSOIzY+QH$eT(2eQCXy+v&cEi_c?Ldw)#Ay7nr ztxRCQIao_U0SXAsDlfOXN#Ly$qK>@_!}O?uvJU5`^&C!rI14@hxlo@=I#fUx#n&@R zRi#u7&o5njEM4lZF^RR5M9|6D`iM1@Qt?0tJg^#`=1r+eDX&YCq5~_$1Oy*&FL|9Z z->>vU0}}&_Q|wD${x$`^Az%_$u;LW>GKr@E-qDVh0+k5KH^HOn3RR%emEgFfCs5(Q zQ9AJ6uJnX&|7{5Y^~xv@y$3|K9AD)glcMUPuQ9zGSQSF>0R9?300K3}F^+GX;~VSX z2RzO(jdu)W8tcFZH6AjOl^o<6hkyu7-f@zdTw@JzK?p>^a+Zl;1TACP2we8EmW!~3 zFlYJ8T}Jbk!CV9_m|4qUPIH=#(1keHxz1#^bDp(KXD`FK&VDxY7Q*Xx}dMfwn!xFRbdK;G057CLt0|v#oTAw*4x^Ly23Iyi)=I4)0GiK9d_*;W8V? zihVU6m6?d#EHs(0g{AV8jeo`7PFeZM$9tCiYGAzKg@A)B{1bbF{8sQ@6v(U~9{~Ko zx#4s8Us`G@g6}dR0;g$Wxk?f@ako?yC&@bx?4(s?RyY$YblfIXwtBGH^km*7zH}#QtH8WrhWgbg~+1)^lnPv~c2ucT~8UWSoSs1%A zhm+CCdThk;Hm!I3isBp|)I0}QjNXs9ro{^WuRcF(*lK#~8_K5oH{No+Zpd}I&R#5$ zPTGL#q@&#J!H&5%MD1Tx%Tm@3oSf%@gurr?W81?MxFVsvG(9sk@22-8dx6a=q&tj*n6# zpvx5t3BbMzzP%W}$~Zt6fi3e>kL8<@=CdOT{0QBepAI|?`#~!|n!eqjJ>n`2#48N| z+LM1OsWEDW<`Ahw@xIg=z|<;0lz9F@_UN<~Q7D9P!03Vq2(%1gxlZ(f)b7KthjI_<-&ph_>dL6ixyP6;RiJL$&grXWq z!{69}AUqBFo5THcCE*Ap(jbf5^C=NiuD07NZ2~Ml#EU8bciBIByY$&;b~dj&dB$P)XNDHJ|Z90^m5j2I-u zEubJU>Cj5)SHhijd1a-SpflG+>aNsCc~KvSBM32?2OGr#?E68BuK1f zWX5tjKUTb;d6X#Vi=uqg4U!D5J-WowxJI^I64S^6vn-binVM^Yg;uyrstm>OTP@EU z#DP%7i}Vzp%m@km3k!6oSIh_ubQ0n6Mj~mRsOf@?5uvEi#6W4u!pV|W*pQL|#mYFw zG%~2$$wGlRIDiq%{_M&~hl<9pQcTZy&5O{wIYi5#(nWhR$!KDYed0yddnL{^L8@tv zR=|}h&_k@@OXBMttJ?92>;La6NrL>DDFp34v zge7+IKas&p49O;f63t|+obqU~OG1;xN&;~ry%~wly+F*zn$C)t&8Ml&*K5ljVaomJ z&D|gif&7z^y350wz2%8*?=|UE#>q5x*CEr=in`+I!`%j9{!G(zs zxjc;l^^HCmE;;O|+S5PhAWjoxmnJ+Q41onJpwLLVO7UA6*8(D!X~5^KEwN;q69oXs z`pyv0KyA7HO|c^+sQAYwc}yfBi&t<3^b|+Y`a~|V&_2Xaz+f$RBn%ewG=k8oXN(pl z4W)W?C*uh(9*NSlD$voG(#e|@57@u8oRD=1N9}P!C)_KT)DEkBPprgGHBrF4yDlVc zpZ&ax{>&{oeJs^r#Ku&OD{av|{S71W)Y4F@pa@7PIf^XkQo>=RR;UtOp#nsWs^oOR z2J)d$bBLw`O!IS2IV#hhq*Ro!)QZE@+?uDO;IOfnFQe$NqX?arSXQ1g3fG9Ru7EF> z&@5&J0hqYfW%X99;G3q{8xISC{;5{JA+QT;iq>EW$Rn?6jn;UTR+lIXc6EwyomcuA zFmV3efGZ%*e+Afp6hHpCtmh1%jp(0;J^vq%GRCUA4Up z0>VADx7}N?6#`Kxg;8)^Q-IvamE6c31yUe|Qm|ahEd@`20GqX0lhs%v=vcy)!h&%l-|WM-}T+x#ogiM-Qg8p zmEE`9HD2WX-R9lhLh%730IlO?Ug&*Z;~;`or~)atH7Wq#@D1N85Z@^%U-Rt(@)h6m z1>Y%f-}PPJT7%#DrC;zRUoJ4;`VHUwUElnj0`Apc@l{{??Sl5@-vFN9CxC=O=z~0P z;62!bJn#cQh+qe{;0wOsKInuNXd&wrUgibi<_!TOxZUV=-r^164`yDUMPcmiUE>%5 z9T3?&Ap+MO6I66MT&H6+jh^_d3ww(16ns%6v9*Nv32;hJiuA z14Lke1Zv2Sct|UZNEqofiX`H?>2veS8Ito^j z7}l(F<*d5`a$(WZz)nm24aJMSKuRUkNlGZ`01H?IU#5V>i=un}{s1X~n`{vfou~jk zzyoLALpDyw@gpbDJ5pz1I1yz&R!&Ty5lR)>fFA(lY_z^a_KiYD4z|bvUG@zRnCC>m zfaCap4d|bIwg6_Dgco2047dS4t}CW?>e=aJkND(L4CTRi0-E`n1stM;W+<$VK&_5ICjI7-aMJvN zCnxb1{4o@a-i<1?74dY92k8KiMrx&AYGxMb(}HSHHt7EOG^{oa?9%fj_p{EP)<&Vq zA5eYKEXq>etRJ<`>|f015RmI+lFQnPyWi+-8R&Y>znX9OUY8zHOp*(cJ)Q zEQ-;LNzl`f5{>>1%oge87LK<;X_eM(AYD`;tsK}o&Gc9qBeLm>s5+qR8LoyW)piPs z4r)LSiYGNyIBh% zyP1`6A?u8`McsswA5ZGx5OO-OfD%_}H8!!j?uffaaH)n=om3O4i}9Xhztg72MTG3t zmWt?hCHr1HTahNaTI;sn4-4>vJ1Fu2FYp>dax?86`E+sFa?@6v5w4c-9K3Ri;=vGN zZI2psL*X|h5p#PM4h@h27zi%`Z|d*1j?ipr_*@w^jdR+4z&bC?DF5M4g6QMf^!*5z zCmp0(458`HH)A&qF;8RbxwZtj?hquaIMmeEoXG_H)Zdzx)uPt=cK7<*LH5m zi*4!d)BS!Blb!(YX6ffr*nxq9N;1+H{=fC@nvo8;I-gDC^s>i;Va%M!p z@qo2f1PmZ+AzAllKXMdT&f9@w7u$jrX9$>n7F@sS;)X>KnDY8aCio7ZQ@T?6)`BkI z4K5IQ2%GLZp=``n1R6kjsQ71x*E}}Q2scmiNN4iJp!bC^qAq*_^w#)`z-c=MVtwC} zerJ#y=M8Vy@n^cs-?)>wAq@;rgcpeU%4QG@V0X`k_*#7ki-(9x!aE^i7H8q1^wtQD z*9=U5zn)4O+_)ImBcaX8zo$X=(zt-EPk0_-^+s>5XwQgg9}M6|xT?-}%$f0u<7)k= z(^Mf!B*}3k;c|a;p}72T27&qh3E=t!srk;PYr@9}!-ojOUl!r6^qaYJ=hNx;IDlV2 zjvIe3bEa?D_Nae{%Ouo*c~*o8;E8;GuaiEZ^ZI~>7k%)Kb*yX%9d4G1PbfL|ReQ(t z_Lh$XxPr*H(*NT64&eUX^j$wWq5cV>4I7Q;mL9W%R;aiE0W%GJGJjq7jlG0f-JE2G+n3sfDCPjUF*<=&+$eM~xg&q!a@Y0{|K~a_s1lqYeWf zN0J1f13}4@95qmh;__vbCopHeRPxfutY5lz>e|Kgr!HT&wj`lx^e9X!8Vn>zaKI^4 zs86RhecH5Xh>%pRZms?*HEIG4A+I9%YSk>*us#fwrP{PCTCY|iT+z{^hYuY)e(?R# zLr2~pd3*fO0od>kB2)|qF6{X5U>${h>d%cc;|0w3@Rr+oBj45R<8NWfg?r=(v?50i9XV7mZ|=Og4i$!@=crMrL4vjk z3`{+6fP2)g+lfGMY89^dxMh7nU|Q8X{P^&_UNsP6icyB5UpTogqU z6#E%f1rde;$698c<#iZ^L^OCBg%nP>VP}aMG2MiZX(*v)M0|MLXP^Z)p=lZV@S%g# z$@rIyH9GjBjs7|6NF!iH==kH0J_0$UgFOgIud?MkWupaL7Nv;d^a>$$3?dnyqw>Gx`_Grjtf6bT9-ZAkbEt17Y19(C-0 z$?miZ{-MqKOB1xxLI8oa*z$@%robl9gS6z1yDq61hpMrs9BZmr6imDXg-rWNK~oj? zauk3@EKBM`0{W)pa!UQel%TtY{u!{K0v2p&$Kn+L(IUQ^R(<1j$7`M-MlVrbhdn} zIXMz)+B`bmxY~QIym%(hwk5mc3pQk)HE+A?O zb^#Qjs)8^81XTh?Z)d z8#7k8I%-M?wX>WGd8NA+E-;R46JGk1MJVJAQen+YY+M5+uA_ z^l~Ws(c*r(7%Cm|DthH4rlpL@I!8(hlCK;gELRB4gH=JAX4_pYaTzLI77Gec0Hx-9 zvcBYr(^D8cXDTJuDPSp6aO`xHJL8EiN~+{*mRur5CG~>?a59(IJeUI?xUA#-(v*li zl{t^uN~fvOBP~T$Gd;zsqkvOE8Fkbq@mRj^0ql>2s%h2=dO`R(@BXBuI=~JZ$;^wz z^kdI_Neul(OYu=NpVs`|60E2>85Xq4nT)pgUu>S`RmmOSy3;5C)lfYR<>m$oJfT|Zpm=@Q zULCbchW1q@5f$7^ITG59y!2~W`yN}Jh)?n9(^LF3RDyN}*|-&|tD?IrO3^7Pbsjad zifZUO(RwxEDr%;vJ#0$W($Rf>)L%u&$rXEHJW>)Am|i?(4t47&-iB(dLtHAX+<6KP}dlbq_N(0#SqIMOId7b1aq}8@b3xK5~rCLp1R!q8Sa!0Qi%jM-ZyC);{_z2bU;rA=`OR!jGmeb_ zWjp^E&rK#m0tB!f9P@d{QkJrf58XNwJ1fwKo-&QitYbuDnZ`bNz?HAu=RHd~Tr$=& zsI$D~5O}h_G?D98eTiBk;Kc{7el@IPEo)bsXx6s=zO@f(jq6>%ng~APHLraQ>|m>D z*t?E`v3LE1WaApy%(k_&pB?KT2y%k1=E1OmVCy6hLE5q|LbtsQ>(c@+qz_bebrqK1 zQ0nY{xlwVqks=r)(?x9dOYmP&?qAZ)+qbWQkjD+~ZZ4Owehw9$RyPd_C>)PgG zvu(rcCP{7UzIA)5-C$K^%P-a0l>F716Yu_5;kNcY6n{j)thJ`A%IzO+4y-3{8)>yC zYw!yqyzEUc3BxUQfQ15>rSncny}wpsjAp&(ooum#YxvW-MS+S)UliFdczBW|UQ#c= zU%Wy5cBjU2f(MS=#hsXOOTD&OLf0IjOl_1Hem*5%+#zOF$#_-8{EYQ}eE*($+{*L2 zlLPP5?FClyx{B_Qz*p6~$(VMM6kk)H-5>J*M|YRvyiYpUl-)6Y)wpK9ctoduAq%f5 zvm0Kosn6fqAs_w_wto5d)VjuTU9n`M6>% zkQ?xvpQWUq?5&^W_|rE1MEXeAE&haEy4e*NCDaBf6;oAU)s%}7n3wB~Uq`6d-LaQ~ zC;>QuAfP-D!MtC`6-)1xgwpBP=#2yeD$40~5CndN1U?c4QeDU73RFGcg3usHRMibK z*ylu_pa>iSUY7#S-w}Sq0W_gUJYhRUA&Cvx_LLuE?FSZa1PfW7M`0cfeW7H1&JdD> z%4OFWiq-awME5~qh_Ru%NZ!p&kOoT1zOC5hB~J(rU2UBp^915<4Wb!pVj7}hN2uWo zy5Mk0i`9M3l-!FV?p*A7O7C!?<@}rG0ih)pQs`L<{S{LgdPIj2pC@tzC|V#Qx*@v2 zp-nL#B;FxxAq6aoAWux+{=tA#AC5#3CY%bY%F{I-XzgFA6izB`3^Cr!Ow6H1sMr?v zo8ILifN)OH@!{ZARxL`(Ev6GEcEl0}Q7>-9FIH4AP93Ryi*Y4SBjVI5YDz1bqvb^7M@*wZ5&)wA5kqAtUg3VLBeAyc|kWrd&(H<4bNt_MJ{m-sA&-9Rq3D|3p!p-(py!E)>Wd+PLiYg;b5`Q%`)~~ zGw$UqE>Kyf+*xWwOd?)QMkPdv*Y^oy%?)GnB*;&ygjOD-T@s~FQKsP8Sh8UPICgM0YGPT?xqn` zCvfT+cGhOplpoN+gaHJ=cFraM_y7V7z;&C znrMv@!G;FGkP3kh1YQmzg_aD#5CDObY8#LWDTl7;iGtgOCa8&Gseyu95C}mKTq&43 zXnz_3=kZ7TePszcB-=owM@S?YRwK+kWk%Lyc@-v3N};9K}MSmCac zs_$LqsRApiI*O{o+*+<>M|R9kVqi_slchFmpkf}b!VOTMo1r8D(D5oq7?PtDvY%PVqi*4z22WkzGcdWia%1S`SmMF za_murDuO@(s`Z5XZ2^q2Ye~G%!lp#LYFNX1reA^Py|Ug%PLMtE&ZRmcpsG!C4IHjO z0Rdi-I$kX3@T?!Y>!SecW|G9iS_;v67M&h#vI2_dQ;vZfW*z68wHrOb9Er&=w2R;Cy#DpN|&(4MTZsw~_E5PtX{ z)A}pao{&-G<=Y&f*d^dF!Kn{PZr^(A%Cbwo4(^qpq9(B|P(H1q)LtK*Yh)4K;3Dis z_^Melo&7l~>P;@UrY@-f!R0lj@-Uj;|PtySRX=_toCWE-v;g|YA<0? z-U`94O1SN6cA@P~W<%QT1&u6*k#4A*A@&Aucu{Pf0?R*U;M!{L>^`fply6TEY{&wO z&pPheWh?N?ocz|?P67ezo@PogW(PVZ+f*&saon0}tu%5i(0VPfhOMOjj4j(m?BAA3 zH%iI{vThU+(Kuxn|AI z@EzUKRp>Tu^#&j0zAyeA;sKBF$3PPWE9qhe@t=C&=g4QEkYMMaZ)K@34KpzrnJ%mH z@SRfb#~{UbCNHq~DM8AvO3<#Kz!$&`hzlP~3{MLN6JZ~dUc=5Ssd#WngeJ@C@b;3X z+A1&p&awXP$MX)I2_i4TSa3vA@3lVe^%n3Mm2DK0BJ0j2ucRiej<56bFBWNmu0qv< zSaO?+asB006LT`eLU9OFrLrc^{l=^ce+~}@3}ivrGaAJn&+z_4vhM7hF?yd~LI0FDV-)8fGb4J?aI;%4~s|*C> zfH{B5u7q%iwc96ZAW`^K;@OL$i#_xbr`2#B??^ zL*I+o^m9fUK{*o}}JnxD_ zzw|ucvqlVou$VMN-*Z5ZI<6&2;cf-ELkh*VECRabRY7Xi3g zwN`I6gIY+3ZZ%k22$_a8Sp%pMJi%8}wGou{R4aj6v;K8e=jc?gwN=x#RzCq;hc#Z8 zwOwnqT-WthbLdwK0nJ*Dg)nJe$8}!=HdzpV|@lriA#qmSnfz+XNiwGVVB4z|SI{*G4YNRxTR%4>Xf@#l3NA zrs`P~Uls+S5MFk|;_bWE zHc1Hb6ALfudWtjeHmow@G&Ao|?h)G%fgNkk$8NzY?<)+0_wFvYM>IDeKX;>ocJ_|; z)nH)>yEh~Ava`m7FU#jspKlV66D+@}^;+W%{x7qEAI<@5No9kRDCbUalf-JPaDK}R zgx_vM<}QEBuzz<1fFt1sXSj5yH_~o6y)jN3!vxR)aU&CV$L4Bsr<{22?S-F;dD~-+ z8}Kc|R4!Yg4$cGvmjo%pcdde>?H#xOB4wg3G4?equ@15sPxp3Z|ZhS zruj0pzZ7$YyCgDeN|M*|xD3IP6EB}nA)0Fv7RRv`TaEs- zf49gkI&;rBbmKXyZ)1~-)^7v4rIQ5yru!t-qVgzxC*1CF0DC#MZu05oPY~=mb(?wB zOlr8Yx)3+7RQXe^FJvlL_NQNB4HpxbEAyk1Fd}n!E?>LZ1UjY;_oWy2QB1b^p7?|% zx-nZgv-j4yf93&m+1EQ#Bs;zrc?R3MF5)(NcPsAq`4syLP)#|BJN`#N{_1~|f~2_l z?zpowJndKH25UVNN_)}sO6ez}wA3%(6K+aTYZg@}|O=Dx)X?I(4cMS-^B<)w)%yuUlJ^P!;==$^!sr(WX_q zHmw8=Y~jWQ03n22yJ;WjxC?hc+5|iH-ZkJOuw4N|3fm=;SnguRaEbJNj8?LcDmZ>CY2SDU<@38{3>qrnDf%ev#z4L?;QPynQTyfvhk}Hta78zL7#pjPB`t1V^O))m=h2>;GQFJ!O3oXEJwz;JJBbpz>|i1wP?$}25it22rzSIcj|7f-u#xhzi`&^a$pqYlAGwd>JGB{qwq3O84qP`ev0 z1TMoUWz&U8u59aNPZOgA^t2U;Gjz28iQBTvStEs%xHInpVolEa1nSbz-XzaRKdr(l zPbYQ$^YhR9R+B)#RtX&q)wADHT8&nq4(=@HH)73sjGSp*r$qh_wtNy3sjMm_%R3~aIrsoCyQ}W8~If* z=zoupB{uG>1LIGeH3);>7l`iz(*?h*b? z{c7r(t9CbMXm{3{Z^k+X{9_%5#*y2SPc#}_wTa_&*gBPjc~q_*t~>LIpT*B&#-@ew z^TcY5PP@UeD_uv_9aMd^l;d1^w3bhV`@Pv~|B1KW>`n~tLU&IL<5))rKK#N02fOg% zBSqdp#S=@r@umHgenb&vzB~#j+@|XK>)Qx*6Z82<&ZbKv_MwptjMBtqteV)DrodL_dK2F88jdj6e{)^je0 z$!A>=`{3QGl(!M?1pzt87+{E#!pE%8YfEH{8`lEIvs5OA_v_6R_fkVEvJG}ls|{^r zMl+LrQF|d=)fn#rz{hNjI0Zo9Udl%}^G(t^b?nUy(S|e{R`4+wj3Q@V#zXk{kX?lA zUl_Sp#N}|Qk&nDfBpW5iw8#=Iv^YVt8kyP=;LhOTsdrGr7-3&r52N-gz( zK&-UZ@N9XYNQnkJC;DU*A}Ar&sqBjBxt7;~ys<73D zgtaMKH9`@{>eZr5qzY=4DpP$#gdvC(AzG!YL5^})mEcn>;QXVWzT(lbK#@073X){L z^)1nC&rO)}mz(%QO|&?6vTMo9S`>Sh#;V1oX-RBl0YF&*bXF~*6>Vq%U;ycCR?U`Zyny6x>*aI0HjfflvHHEu=zcXCwNK*+bd6|Q893jiOi zOaQF)Y-RhB8qm)6x}`nK1?v+#bjhrX-aO}i4CyYF#)YMe{2lpT3Kuq_kCOC#=vmZM zG@r^vkKE)VsQfs;Ve*Nf7&7Q%6v?~y1_qw@iZ5Gc3bK0MG@^X9qp$WGmkEx>b^oo; z6Efr1_rzyD1*Q_#l4-=Bt(b-OG!t}jWZ@t2fX-uHjdQ)GmXbxcXo?D(FTkw=Pa#-iDz4hbcrJ{d-xlB|RnLnBCGu(7%NSWL zG}QSbwhQOnQJ=(G*?DAkU|QYDS8Hftk{d6zskR?Yi}Bj;?6h1G4c~7oao>=UF;%L} zmMcG|!;Y&{K%2A+cw-K|gHk5FoC#`C*LQ&wukfRTwMT*<9w@t$MN4&nYmg9e*WhyV^G>7Cgo2;&hBMd+t>7t)yn1Da?dJ# zmi>Msf@=Pga^K~~8_ltn+oM5RkMhr@YAY|8R>OVbq9-SQ+ zX!A;kOF~y}imB_99+)vFCn3_u4tUHmU9)I!a>Xl&@uNlB)oiN!9IUpkZE*6XAJc7 zMWWN=2z<35*JL+Oix1vT_0`{H?ywQBsAm8A`rLjkm=BEK$tZZWcwXY(o_N|L3iS>e zA1yja{bULbzn(~+DxtKra`%p{P^=C3fYFOljG|IBWUIMDw{?|77D3doN%&aao2&n}veGj?ct0BfMUPDKO_ z!D}`FW7+Xp>nYFfFr+t=m!BH=U8nB<)R2<14Qo5axl$Zny~Ml@GPS6$nx(j zGVqnIFy^d-3yCjvA|&Jd%W;CPuX^qQ&Col-jQZ5V`i^N0i^Gf(>J3w?_cl=Ynl9X? z0tI`53#(4`b}qdBkT!DuW6HwJqo@E3NiGJj4-wnY&>XSbzz+)#Z#1-UD*Dh;48#C6 zPW@mb%tA$}oP@xB$RLD(2z&q-8zLABVhDyH2!Nm^(b<|+t;kr;2H z2&^#}vk@V*(IANNtbD*45272zQ5>m}2%<_H6+#`mks>0(8-;Ng<8dM2u^`lO9OscD zLSnAuiU`iJAB%As6N0RMaUJt*^kB;Vy=LIA(1f%gkT|^ zaT~QU9qo}Ds}Uay;vBWgBS$hM+YuPSidgW3N&4*4#vner?kKre7IDtU4$n^GztfG~FQCV5gSqf#ne>L{5q zEW1)HbCR@z@+Qf0EW1**Gz%@Y(k-_#EDK;Ukn$*#QYn-2F6|O6aqBJ7GA_H4CzG-- z;ZgvAG62BxD1kC4Ln9}NK!3zyoT|V80-!Pv6DXI`D8Z5{!NUh0pen_ZDz|bfwd*h6 zk~6~+wZst2d}7vUr^h~!CkQbuC{VrXt!Eg~k#3L%5pSI(Y{X z4~;Q&v;GQoa1{YiJBDBi(&P1n)5?NS=dOen8JAvzT z(!-kKERK-bAr84Of;RX%@}T@wRU?~^BT3tS+TEhP2Xyp=ORstg5`;nLGt z_eN_XjtafcS9{b{_u>`nWLsHP(he?MhiMDSYp|$7Qw{N?5OGlDqCFEMR2%B$=CEBo zQ1R$>Q}A>x^b{y^G2vv!oXklHK(SUYk5lbJW7%su2ljw=Q)D|(LAcNd=(NuMxRv$t zbqr;%PiH1uhwfiL^jR~;P}dc3LiS*R)uM#8VH>YblCvw|4>Rhc3S<`dXjU$47R?ZG z3LR`(eUn;ymNC*qeJ~Z(24-lPZ{1iBD1wP!C-yv-wpn$@0uyRiceXG{m1^C!Fcfws zsbWjjBBSV*2#Z!MUPhSIg12WS56|QR8IQB4vMqPe+7Izt&=Z_Yi}ZF*sJ=h?i|0_;?wEJBx+@ z3&U|o*ElIvOlhrhl_eZK_=7<>gh6-+U_yjV_=JPe2vB&1KX@Zp_=VB&g<1G9WtfGd zpoUlYhH?0Wt6+yuSciQ$gyHH$f>?x$AP9;WgwrvJJ@^hGC+qlih;0u7Zqfj%%Zjg9 z01N<&xwyItpt>|51hlw{xwwn3*ov_jjCJ5Bx44S4*o@J5j0NB+$vBJ8_>SdxjIUCT z;nlED*?*bjw>0G z1pt!2SOAOw0sPnizPJERIg|<6lfgu3cOn5knUy;^l}~w$zt}TB*^leEk_TA;bbyKt znUELRkV7DHJL>UtQCxrSPcuz*+ldhunE#@-cwrZUok&?!b#)#$42>D+9`D`!)L%Ok zN_UTSxs6JzIh}d-;!dwZYBxOlQxi3qNeFln?Str=HeipAen0kg*V&ryY5cT<7WdE= zJ0m^ZFJ?e4UV*}5&2`Xp4@Rb0g+#A&%|!hCB%4*uWX01v@-|NtE}SFq>+-p!a&$@y zwvF&t60KH(-WlEeH!T48n@o3iZ?W>Qmo~Nc@=Ot${=v6_0s5jp_g2;pC~%i?)1ph^ z&Yz+uTtm8FN7_c^_hP1VqSt6g%U7ry#n=|`k{Gt2Th&#^VqX=yYrFcMnKq)atx)+n zE@1AT)!A@Ib_-p4o8to7D8&eqYU`3P@9wHmV-Eti7sYQfrJqXbz8Sez^ujGTF;P8ywo$FPSDVJXU$k-Gf& zH!Yl(XkAi+`?|CXiJU>yoD&qN3p-IM*i4WoZeyD?W*aTO6tq7q#9(z7lofTGd9rcz z0^2(2RywOUo6d%t1e5zLYP)W4n{wqtibXE|r-Q>o0lTHx+OoUvOIUkfSUO5Pd$Ge> z$0VoA!l}fh+g)~=Ex6aR+WWGlHoL8(yI)(NMfbC_mg6clPe#gm(fUc_x15(_cnN$# zU0c4ldOL)It|9G$C)HRf4T_Itq;v`i;?{s!wLqa* ziXU{XwnKS1PIB!;F?pOD$%&fWBwXXI3bT8~_49lRZb}Pf_NxyZ9 ze;%G17n!iM|0S&Wb25+EP^F%&_a=at;H_@dDLCE!k62W1zY&&ZQ{)>Oa}TN^jlA!?lNvdU<^A8 z?%Vt!JLH?Yw0+oDmRr0p_XPVM(}(HQ8NTVg+@ojM4;R}vDA;j6`O~?FCmRho4yR&b(@?1Pq&Wf zw~_(aLwzT0FHg7`PMJ63|I9S0S38QpQc3004hqghP0udSX9t@AMHmEU;H;hMoZ0jY zY?UTD@PK9Y6KM7GGUO*=;rYeW3+m9HoLhi;q4P_IOV0jt=G(`nmPE$TpR87w&*Xp@ z{^zP&XGZCuG?@-4gS{Zg@(d)UoTH_?Xs3qx)G&rje#BliTS$7Ww)28bCsCnN;sGk6 zK@ODWMXTwy788KfIi1g`MUEAinnRAd5*`yx!$E0ke{q_Ql(A_>G#(r&0F$i{vmAS5 zrh{3&?U7hpZn|1VgMMteY>to9dPPtqMOC%v#d5eA9t9T7XP&iI$Ju((M4@`~CJZt0 z3>S)bdJEFmPqB_yY6&pIkvXhEU5rLG#=e}N+g!FY(a~1^|B`sbnC;=2@rkppA6oWX z0czj8UXpfceQKgDr#Ojhb6&BvF;;a1UA(EaXeYa!Bl7z+>A;=X%k$xlS;u5qcWVPl zzdDoh?A>Z2gW`&48K(XQK9*6~&VtycEr^jArg+TC8m{t#dW9@Vn~|L&IL|+G32+xL zVynjL!vYGc@XweJQ?L6>6G5!fWF2XK4^_k0_&=a;mz-_HhAxi8KUGlcT5bW&se@hJ28gY=tIdm(_#w+ofZ(j ztVp}`!%h>!aHp>WmIj+e2W80}M{EvJuXjNTXwYz-q@6xQ*_kCzf>WHb09k&$m83}g z-OfPHG1eZXj=%n$XMn0Y@vS{phod%;+IgjY`q>C0Vj9U>Twe73h_g@{==126_8!l> zcAna9_{9a#)M&}puQ=$*X*fG+d$8HRe%bfg$lic6faX~T|4VgL)w3cq%c2>vo7(rp z>id;BAIdXa^fzA6Q07zIniCI@m0^RkmZ6ECDg|i*i4vQZ9Xa05&(Y>ZKYh_nntQVu z;PgSrTYA0Sw;cREotViYt#H&Q3pGiYxMJ=9?9kM*l}|f&sqL9l5^|jHM>lDC|67`z z&S%LdRSUz#_r+b(O&jpR=E-K~5s(M>)H!UL>N! zm6ZT%w(2#jOtuikO8Dr><^sQ=ix$KI@YB2GFq-&II=Mi|m^34crR=Ud#;KFYgT5h7-2 z{m2DPF5P90y(ujS2wnEkh7Zp*p1!!XEqO~YT-eBs0cjxlWV$8*g@a)yZstKi?`=GxA}UhL*&{9Qw3IDg9;6lEkzT?QL9DDk zW$3&JQPC~q7Cwq(LjB4pNn+(Sa+)?TZ^rJ@vL^{p*LYbi50Q1VCyJ@4F?6qC8yCecKTqI4m&nINlp4F&rI=bOuEgmIj?HZ{8K}AoV@uyRL3bh z!t3*LL|HfpW?lGjS|Rsu^0^j<7YbzmNgpRcH^g}W0)4{)ikqL0QVc61<~_uOndwEm z6e$6VVyHqjq98$6g;3O7lCsodNFNk~^Tz?kwr*_plvlY(9jErU`6z11CIu>yk7$;( z@jN3zPT&_^!r1oFWG`a)C~m0_-YuA~T2N*!V=O>=`O{+tX^Cy&HtTJ4eABBylriBfayOaw2HDWPiCm zRqvh9-@zGsK=TNg7?7(QjTRgC{mQ8E{tLCfmQL~v;F zV9uZUxFl>)2mcncxpQ(m_WpurdBJj;A0Nc6-*>3&BbR{>P5)xN^PYv69eDmT^gicP z|IlfCR|l;>?yJpY)C%jdk-8r1vh{nidDdysttfTFku>{k=Bzgfv2s1jM5@s}Zg$Hi zq>3gJL}+8P*3_AZXTQRz-tB3>>m>`$P59n@O2P5-lF-L~(F*2iJaM?jnH_*oz-)jF z2JjG=mj)rI34aFl2JjIdG=DGL6K82Csmp#tvn{Kz({0s!KrxZAn`k)EA;0@7sOI#` z-Ft^|$;lR_-?cky6yL|?30grluwi0SD%DJ#kE!n**7I9eS@^NG0-q#znP_&2r1!El(OjMTGwHrrx~^D*rXH|E z>mc4NB{IJvj7?(W%HvH1EI*}PwC?+LG3Gd8VQe?N_Vu@Rwh{ExWhk% zDfGe<+aI;e`QLj+493^SYI_xUtn~;tD#X*Zs+B5F-?s*^&z%vqvNOHOTDsj{K!`t! zYjm^tXTQRCbR8<2T<~t%9XFn)-7beNFUd1%O|(d;cHHL`qrS9US-Jjj@Piw2h>nrn zA+E1Yzo7hIlxF+~wUVh|GsZ#6!yXTDgEl&grR*T4tNQrqcG~Uq{v?IIS)5lQaRt@J zb_rDJ;80J2Hz&0KlmQRoR3fY1Ok%iF46Tr z0u?p*QB9g75FX>nwKs_dZQ~ANS(ra4$oj=&VKvtzrh*i&-VuYA09MC*5}Ts`uFq4- z51~gwnNO|W4Sn;8u>7HKbUyxxWBp;kgulpCYLiSdmt}})EAXfI6LZ^E(vjB`^b`Rx zl(aT&?~07v2Y39AqJzl=1Njhd&9i*9n*z7Ro&3fq_oAI-UIekZ2jyJ5{K+5^iY5Q4 z$S?rr_Dz4;ATC9SEl;dQjHMg6;1fxP2m}a#6k?e^e_+SRCX<5&0RRS3><~t*Ap8q2 zQ%2#zVoVxXw1HZ*kz=&sA?8yepz%bsWhLfQ7|@a<#)t|-S)SrmT#TqZ2yGJ=^U5UV zOA+`cr8HnM5-X zVUUMmco0Fd;^L8&@wsvF9@Y>8j9^bpu=b&kC&*P_0c@xXu9`@wJ4~paNHA(l2)syW zJ4~p-PORcc?8;93;F#DUk=S>b*io6#y_z^QkvNi_P+O5Sft@%z5n!;LR7aIGdPq7e zk=z-Vs3!nkl}H{@OYF%`Zd2n^)B_vLCvS1Q|HzTtbol<{FxdbGem)P<-Uj`NOS!E~ zxpz!KVLQ8!I!BjNr5U~#HKwoeCBim+U&_vkdjuzhBIIo1v?|cAn*GjcEvR#`(sIkx z+($a$?dneND?Cp_xuy&^zw*bTfqg{r(<#)zEtRZUvDPtMh(^ibvkxmp1{+RL zI<%;5vXtGYRPBzwO4QbCWo$E_lMf#*T2Gz6!LxDz3@UKmSLC9lU!vE)PY zs)`3EGe4jTXRz4guD~R%it8r-;X}HndNpLd8s3F!;7Y%TR^!HlwnaUk4HOjJky}sw z#|e9YA}XZH409A}rr?T_V1ZJkAWJYkcE!iL@>!gqrSG-e>Z;lh@bq2j(p2r%R5q5o zEp2CA=z2az=ev%9T&4ZGmZ_W{33h*?OIE5&PigW?E0Fq)GBv6V*LU?>33UL?7jlyI zrJXYEQ$F9Ca6ia{Rkj;dbkU$^=Zz}zAWdrxlt>eaIjCHuiM+dsc%w;Epot)`iA1`Y z%%zDS_i=0{(geZGn+VOD=(?NfbDP*{TQnP+=}wxN?i*>Rn|ZmL_&1t`ahqT#%>vxb z!ilYNv`sSiO}v`T+}$nu+-)*0tt!*a5*w`?flYL@P0zcVIPY6!0$V9vnk)lbtosuyVI5-#2Osd?2W4a!71`huccV-Cl0^LE*lcNV<*W+uc;t zRmh_?%L?Co9^!C#vMHAZqw`;;_ev_?5RoYnU(IDo9>xU?CDO# zH7cp0QIc+nDa%#O>Rn?fa(L*FWF8zR^1X@B7x>x8L1+6xjFuzHfKB_kyiqQ(C1`k-WLUeFidSZ& zwwPSCX9O)4QEe~&%|50(Wszt5yOdB592*m4y}~nLJY_ zJtK)SQx!>5RXkJWK~uG^le4>1F?r+FTGMSwN-}4H=@%q zxm`QgZ$G5flEGSoFvh{g+krKT469$bTtC zQjbcJ5TB?BuOy$eIJck_ue21qgoLQ*f1n~!X)!5jF;S7n;lH7xXHpVI(qc~1k3^BA zocz=OR*IBmwf>_Ni5nS7ni@;$>WV)?MXy~XAE6@u0LlM?iX^4v#UvH}%PR7aQIJzm zlvPkyQd0Wgts>p$I{(EL{f|{-W@7UA$oi$#qgC|k)&IjPva|g!tLU|})1y`7Xm981 zTv2hML~)6DMU~_uSJd4t*4_Qc6-f^Dh&@_G z|C>_uADQTXprVbh65E>+|DRCN@gaLuynI2CLRr;+prVxbPN+iH>I&EYWfi&pzgR_) z0U-(DfzkiN6~)EH{r_1ks<*@sl+06WDjrRw5_bO5LBuqk0#nktGJ%)Mr%~z=74@arPzrFBmXTd@5F$+^>c3_o!DPI`Bzm44}DJ&K7sN&l(P<_y8w2b&mM$3^4f zQmCyqej7-7qWA*Ov}kuChP^Q8)X&{vCdHTajHlz*?zFuot?L)bro&nGi-2;A+h5jm zkuKlf=XEq4e(6@l91mP6IbTM-_8gnZ@pjvfOA8G_Q{P;~l89m+d|fMDe>vNLe*WaB zrswwZ@KcS|$G+aXm%Vf2zR&yn{@&kQT>c^t4e`G@pS*q&2Kog-J*E^pqQd`Puop)3 zowmcGNC>bCBhjXDJCPUA3F}Z0#SLR5b}AK91f#>vPCW51_MPb4(ba+kp}E8V+a$U= z{FWk*#kmJprf}Lr{6{Q8eBkLU<<(W;WKC~d^1w~e+ti;g(&+)uX=liWu- z7MOm|kuFD;W!sliSL8Zq9PQ=%?N^oZcHT4-+4L^$#*;@;B#e^Bu~i=y8`C9lP`nr7 zIx2y`$Z;%9P@Li@Pt&M&DnXd7AC+f$NO4tG@R@P))DDqMbE6x_?r?aT$81k(8ooH! za5o-1*VGRDzH@0Dx=Y}$t!L2WsT)LBb2rQ$)6_Kg3!P~2Ox^{&X&uHmaj9EXoUZ1c z**|uvsddl;S53BK$uUX#(;ztZv8qUf^NgAR2IJ`*=d{HN!giQJtmpn1x1mn%*ZJB zGi4<;PEn?P5g?&8<~b*&I&f_qpc2MwU0@Z~x*Al~I-OcFc)c@8XKGj1#%=m)R)hOR zLo*Jyr`wN7u9xk*INWBhXT3kaZjc@4awyCPuUm}^iJ`e`YZs^JUf*l`P}sLC`cl{> z_9n207Up++c^7EwyJFQ4{D&^GdvR*TGqCxZE_ZxU{Oh}{zT5p58@)I?{w={0Yh_kv z@%xVNbflIIREgcEbwFQ#4q?y+xh+yl6JHMyzLvQlq7v>u9}r=l3A&obt!p0qN1zqO z^IPSaE`Nu~1wYB&b6523VMPP_Q7n3Fzy2?=sE{9gw(?<7gXiW?O8+4m7xfRoF;KPe zCKR%_)pl1dxzJP`9yDE8XI3GGK`|eJpGSk`ejwjQ?iLQNrCS#B5ir&fyb3F&##1;NPgDWzC5>%v|?6k`>twLcQ*@h?kr$U?A3q{bS8 z2m@E~z^S;=H;Pu@xVIh-9mf@Ee!(w?w@5Ftl!>c}eIZG&$SI-ER73QlUGBGc?;uhv zX20T6PPa}i7ADyogwiW47@3Sa`<^h_!~|PRJZT~lV9^TC=uj>t_2|^RgI=Vj+cB|f ztF^HtyiG67GZPS|8n7-WPC_e{|4XgZ(kf1M4i(-dsx#GMB|yY`4wO=OsOw0bT|95W zqgu$3pY!Ru%qP7s1E|MJe&M}Le1R@CExI;rjSR(EDNJxjk>mI zpCZm_6g!{zSZ_?JK{1u6oiZ!eN5Xwi=Lrz21i$)7D8+oC78yNja;K!Rz+6e{Lm{hr zm7JExMN&zS6W}0Q@5Ng}Dvik%@};#;6e`-q@{wD5gz-@vmF}(&%wJE3)RoC%h|AU= zP$aa@`oXq(X_m{c|6zBGbbxhpD82UBF2)s;ev=@CMW#aDx`P#m+)93ooN%R}R&K71 zVgtOZWiNb3?E8q*d0Ab7&!k4OQx~eucsW_zV?Uz>Gb7WrTmdcf%k#5jzTbG9?>4K4 z3(eB&L8Nc)POI0G_`Gc+$k8xhV%%7Y7-{HZ-FV5P=J~7Y3zxThZ%puW#Gg@!grRzB zxet9Ts%6t#>+)BvzWeH!E{b-o&Ys;#-I>^{2&T94?u!*_n8p-~q>{>KVTECyyUe~1eO_}?cq0iAfIWko)TDX+{b4ig~E{u@``l+taiTc+#H_Oe~g5^2U zWf`)KPY$k7O#CDhf|VjP5pHrA^QFO1;wc!;KXeU8TjC0!95jJ<&V z1-B>B9?GiI+!mG&u#KrNA(pC^ll#{)@z?WIWcFrBuj@~{PQh!^uhU06I;2TOA?FEC zc)vYc*(*MEQ7kpyF!-y|KEoS@!6sL`&(GCfNKjC!9xi(*nqxThHmEd4F3~)k0Z}$u zo+DBw;P9gVXT^wMoTGEn$=y!ZMsdEko;Q!YTuSP2`!HSkfzyoRtII)svTyRyJo?

twmPBfxumD@qrKWA%hgak8TUXMM2}&)fD7 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

WT*Ag1Q&<854Kr*Byc+>q;({+%a;zdi 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 z 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

`yACUpd% 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

&}QZt_)1yd#x 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%0AN2~QGLPLiEZ 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 !dJejca3^M2II>$g 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≻rld6w<#H?~f$5Y3w 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�D}%X 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 z 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

Ed|W<4`bXlO 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
    }mXZRAE|l*STZz_~cFJ$wW?C`ZrmfjQv;cQliC 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
      (zf`l5UAB=A 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 z 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ð}mGbU<$IlU}RozSu6 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≧0>0r*`>bL0u*6E&eZjwmoBJRD1Zo-K!XsCW) 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

      JD|z2BrqB7j(KjaMC)UwE*54oe-!P`;FUIE3 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

      yFjU0SEv1P`9YII< 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�cnj)LDZ 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

      (pCfQ3bIHVIxK4RQgAX%))cV@uIbTp({1 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

      XV&8@i}3k2Jb9MMFU*og5MOR*bGY1(83BV%*#M9 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

      r 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 g0)TBC=Ts%7w0Edd~|e*%#V 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%0DKm>5VV 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 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/door-key-env.png b/gym-minigrid/figures/door-key-env.png new file mode 100644 index 0000000000000000000000000000000000000000..6d11235ef00a28358bd6b3d02e2baac64934da0a GIT binary patch literal 18049 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

      (X&G;m+GjB}n8Cq^Kqa&WS((22+A0D}>iXnx_& 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 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/dynamic_obstacles.gif b/gym-minigrid/figures/dynamic_obstacles.gif new file mode 100644 index 0000000000000000000000000000000000000000..020ea24673827ef9262eca2288d7d78e078c3855 GIT binary patch literal 390342 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%0AQjlFgYb9wIwAr1)yM?lFF*4gXmZfr4-7h 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%0Ag||If+PL3SNJ&hjm!rR9$n$R-d>VEiCT{3 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

      qNw?1-5}!68gb++a1n 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%0Aq)Zz=d!egTgsJ=_)SAL+|32K6&4sim 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 z%0AJxejkeah5c&eM^Z4GzoRp5md?3AUMZ{}3gZEof@ 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 NK5%OM{bD|9{|1J>;)DPI literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/empty-env.png b/gym-minigrid/figures/empty-env.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4310557958b90c98a8066e24fba021f04daff7 GIT binary patch literal 5206 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 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/four-rooms-env.png b/gym-minigrid/figures/four-rooms-env.png new file mode 100644 index 0000000000000000000000000000000000000000..57799e61c276379455525d558eba0c57e881ea09 GIT binary patch literal 3120 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�+=zWI!)G$=t1il; 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/gym-minigrid/figures/gotodoor-6x6.png b/gym-minigrid/figures/gotodoor-6x6.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4f13a96163b4958bd6741d0e7dcdcff8bc890b GIT binary patch literal 16298 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%0DAnkKyO1vP`2ANNp( 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�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%0DE0Pi}7dl}&@g^pg4L=Kxk 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

      qLC#*wMJE&%Ju^prZH|Io2;Jvt6- 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 hQFmqp}(o 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%0DZozbx#C-ofZc!x~2S5857_Hd7b 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 literal 0 HcmV?d00001 diff --git a/gym-minigrid/gym_minigrid/__init__.py b/gym-minigrid/gym_minigrid/__init__.py new file mode 100644 index 0000000..741d18e --- /dev/null +++ b/gym-minigrid/gym_minigrid/__init__.py @@ -0,0 +1,5 @@ +# Import the envs module so that envs register themselves +import gym_minigrid.envs + +# Import wrappers so it's accessible when installing with pip +import gym_minigrid.wrappers diff --git a/gym-minigrid/gym_minigrid/envs/__init__.py b/gym-minigrid/gym_minigrid/envs/__init__.py new file mode 100644 index 0000000..ea58abc --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/__init__.py @@ -0,0 +1,21 @@ +from gym_minigrid.envs.empty import * +from gym_minigrid.envs.doorkey import * +from gym_minigrid.envs.multiroom import * +from gym_minigrid.envs.fetch import * +from gym_minigrid.envs.gotoobject import * +from gym_minigrid.envs.gotodoor import * +from gym_minigrid.envs.putnear import * +from gym_minigrid.envs.lockedroom import * +from gym_minigrid.envs.keycorridor import * +from gym_minigrid.envs.unlock import * +from gym_minigrid.envs.unlockpickup import * +from gym_minigrid.envs.blockedunlockpickup import * +from gym_minigrid.envs.playground_v0 import * +from gym_minigrid.envs.redbluedoors import * +from gym_minigrid.envs.obstructedmaze import * +from gym_minigrid.envs.memory import * +from gym_minigrid.envs.fourrooms import * +from gym_minigrid.envs.crossing import * +from gym_minigrid.envs.lavagap import * +from gym_minigrid.envs.dynamicobstacles import * +from gym_minigrid.envs.distshift import * diff --git a/gym-minigrid/gym_minigrid/envs/blockedunlockpickup.py b/gym-minigrid/gym_minigrid/envs/blockedunlockpickup.py new file mode 100644 index 0000000..4ff8d53 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/blockedunlockpickup.py @@ -0,0 +1,52 @@ +from gym_minigrid.minigrid import Ball +from gym_minigrid.roomgrid import RoomGrid +from gym_minigrid.register import register + +class BlockedUnlockPickup(RoomGrid): + """ + Unlock a door blocked by a ball, then pick up a box + in another room + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=16*room_size**2, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + # Add a box to the room on the right + obj, _ = self.add_object(1, 0, kind="box") + # Make sure the two rooms are directly connected by a locked door + door, pos = self.add_door(0, 0, 0, locked=True) + # Block the door with a ball + color = self._rand_color() + self.grid.set(pos[0]-1, pos[1], Ball(color)) + # Add a key to unlock the door + self.add_object(0, 0, 'key', door.color) + + self.place_agent(0, 0) + + self.obj = obj + self.mission = "pick up the %s %s" % (obj.color, obj.type) + + def step(self, action): + obs, reward, done, info = super().step(action) + + if action == self.actions.pickup: + if self.carrying and self.carrying == self.obj: + reward = self._reward() + done = True + + return obs, reward, done, info + +register( + id='MiniGrid-BlockedUnlockPickup-v0', + entry_point='gym_minigrid.envs:BlockedUnlockPickup' +) diff --git a/gym-minigrid/gym_minigrid/envs/crossing.py b/gym-minigrid/gym_minigrid/envs/crossing.py new file mode 100644 index 0000000..cc499bd --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/crossing.py @@ -0,0 +1,155 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +import itertools as itt + + +class CrossingEnv(MiniGridEnv): + """ + Environment with wall or lava obstacles, sparse reward. + """ + + def __init__(self, size=9, num_crossings=1, obstacle_type=Lava, seed=None): + self.num_crossings = num_crossings + self.obstacle_type = obstacle_type + super().__init__( + grid_size=size, + max_steps=4*size*size, + # Set this to True for maximum speed + see_through_walls=False, + seed=None + ) + + def _gen_grid(self, width, height): + assert width % 2 == 1 and height % 2 == 1 # odd size + + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place the agent in the top-left corner + self.agent_pos = (1, 1) + self.agent_dir = 0 + + # Place a goal square in the bottom-right corner + self.put_obj(Goal(), width - 2, height - 2) + + # Place obstacles (lava or walls) + v, h = object(), object() # singleton `vertical` and `horizontal` objects + + # Lava rivers or walls specified by direction and position in grid + rivers = [(v, i) for i in range(2, height - 2, 2)] + rivers += [(h, j) for j in range(2, width - 2, 2)] + self.np_random.shuffle(rivers) + rivers = rivers[:self.num_crossings] # sample random rivers + rivers_v = sorted([pos for direction, pos in rivers if direction is v]) + rivers_h = sorted([pos for direction, pos in rivers if direction is h]) + obstacle_pos = itt.chain( + itt.product(range(1, width - 1), rivers_h), + itt.product(rivers_v, range(1, height - 1)), + ) + for i, j in obstacle_pos: + self.put_obj(self.obstacle_type(), i, j) + + # Sample path to goal + path = [h] * len(rivers_v) + [v] * len(rivers_h) + self.np_random.shuffle(path) + + # Create openings + limits_v = [0] + rivers_v + [height - 1] + limits_h = [0] + rivers_h + [width - 1] + room_i, room_j = 0, 0 + for direction in path: + if direction is h: + i = limits_v[room_i + 1] + j = self.np_random.choice( + range(limits_h[room_j] + 1, limits_h[room_j + 1])) + room_i += 1 + elif direction is v: + i = self.np_random.choice( + range(limits_v[room_i] + 1, limits_v[room_i + 1])) + j = limits_h[room_j + 1] + room_j += 1 + else: + assert False + self.grid.set(i, j, None) + + self.mission = ( + "avoid the lava and get to the green goal square" + if self.obstacle_type == Lava + else "find the opening and get to the green goal square" + ) + +class LavaCrossingEnv(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=1) + +class LavaCrossingS9N2Env(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=2) + +class LavaCrossingS9N3Env(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=3) + +class LavaCrossingS11N5Env(CrossingEnv): + def __init__(self): + super().__init__(size=11, num_crossings=5) + +register( + id='MiniGrid-LavaCrossingS9N1-v0', + entry_point='gym_minigrid.envs:LavaCrossingEnv' +) + +register( + id='MiniGrid-LavaCrossingS9N2-v0', + entry_point='gym_minigrid.envs:LavaCrossingS9N2Env' +) + +register( + id='MiniGrid-LavaCrossingS9N3-v0', + entry_point='gym_minigrid.envs:LavaCrossingS9N3Env' +) + +register( + id='MiniGrid-LavaCrossingS11N5-v0', + entry_point='gym_minigrid.envs:LavaCrossingS11N5Env' +) + +class SimpleCrossingEnv(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=1, obstacle_type=Wall) + +class SimpleCrossingS9N2Env(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=2, obstacle_type=Wall) + +class SimpleCrossingS9N3Env(CrossingEnv): + def __init__(self): + super().__init__(size=9, num_crossings=3, obstacle_type=Wall) + +class SimpleCrossingS11N5Env(CrossingEnv): + def __init__(self): + super().__init__(size=11, num_crossings=5, obstacle_type=Wall) + +register( + id='MiniGrid-SimpleCrossingS9N1-v0', + entry_point='gym_minigrid.envs:SimpleCrossingEnv' +) + +register( + id='MiniGrid-SimpleCrossingS9N2-v0', + entry_point='gym_minigrid.envs:SimpleCrossingS9N2Env' +) + +register( + id='MiniGrid-SimpleCrossingS9N3-v0', + entry_point='gym_minigrid.envs:SimpleCrossingS9N3Env' +) + +register( + id='MiniGrid-SimpleCrossingS11N5-v0', + entry_point='gym_minigrid.envs:SimpleCrossingS11N5Env' +) diff --git a/gym-minigrid/gym_minigrid/envs/distshift.py b/gym-minigrid/gym_minigrid/envs/distshift.py new file mode 100644 index 0000000..437a618 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/distshift.py @@ -0,0 +1,70 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class DistShiftEnv(MiniGridEnv): + """ + Distributional shift environment. + """ + + def __init__( + self, + width=9, + height=7, + agent_start_pos=(1,1), + agent_start_dir=0, + strip2_row=2 + ): + self.agent_start_pos = agent_start_pos + self.agent_start_dir = agent_start_dir + self.goal_pos = (width-2, 1) + self.strip2_row = strip2_row + + super().__init__( + width=width, + height=height, + max_steps=4*width*height, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place a goal square in the bottom-right corner + self.put_obj(Goal(), *self.goal_pos) + + # Place the lava rows + for i in range(self.width - 6): + self.grid.set(3+i, 1, Lava()) + self.grid.set(3+i, self.strip2_row, Lava()) + + # Place the agent + if self.agent_start_pos is not None: + self.agent_pos = self.agent_start_pos + self.agent_dir = self.agent_start_dir + else: + self.place_agent() + + self.mission = "get to the green goal square" + +class DistShift1(DistShiftEnv): + def __init__(self): + super().__init__(strip2_row=2) + +class DistShift2(DistShiftEnv): + def __init__(self): + super().__init__(strip2_row=5) + +register( + id='MiniGrid-DistShift1-v0', + entry_point='gym_minigrid.envs:DistShift1' +) + +register( + id='MiniGrid-DistShift2-v0', + entry_point='gym_minigrid.envs:DistShift2' +) diff --git a/gym-minigrid/gym_minigrid/envs/doorkey.py b/gym-minigrid/gym_minigrid/envs/doorkey.py new file mode 100644 index 0000000..3bcc741 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/doorkey.py @@ -0,0 +1,76 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class DoorKeyEnv(MiniGridEnv): + """ + Environment with a door and key, sparse reward + """ + + def __init__(self, size=8): + super().__init__( + grid_size=size, + max_steps=10*size*size + ) + + def _gen_grid(self, width, height): + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place a goal in the bottom-right corner + self.put_obj(Goal(), width - 2, height - 2) + + # Create a vertical splitting wall + splitIdx = self._rand_int(2, width-2) + self.grid.vert_wall(splitIdx, 0) + + # Place the agent at a random position and orientation + # on the left side of the splitting wall + self.place_agent(size=(splitIdx, height)) + + # Place a door in the wall + doorIdx = self._rand_int(1, width-2) + self.put_obj(Door('yellow', is_locked=True), splitIdx, doorIdx) + + # Place a yellow key on the left side + self.place_obj( + obj=Key('yellow'), + top=(0, 0), + size=(splitIdx, height) + ) + + self.mission = "use the key to open the door and then get to the goal" + +class DoorKeyEnv5x5(DoorKeyEnv): + def __init__(self): + super().__init__(size=5) + +class DoorKeyEnv6x6(DoorKeyEnv): + def __init__(self): + super().__init__(size=6) + +class DoorKeyEnv16x16(DoorKeyEnv): + def __init__(self): + super().__init__(size=16) + +register( + id='MiniGrid-DoorKey-5x5-v0', + entry_point='gym_minigrid.envs:DoorKeyEnv5x5' +) + +register( + id='MiniGrid-DoorKey-6x6-v0', + entry_point='gym_minigrid.envs:DoorKeyEnv6x6' +) + +register( + id='MiniGrid-DoorKey-8x8-v0', + entry_point='gym_minigrid.envs:DoorKeyEnv' +) + +register( + id='MiniGrid-DoorKey-16x16-v0', + entry_point='gym_minigrid.envs:DoorKeyEnv16x16' +) diff --git a/gym-minigrid/gym_minigrid/envs/dynamicobstacles.py b/gym-minigrid/gym_minigrid/envs/dynamicobstacles.py new file mode 100644 index 0000000..48dd0fb --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/dynamicobstacles.py @@ -0,0 +1,139 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register +from operator import add + +class DynamicObstaclesEnv(MiniGridEnv): + """ + Single-room square grid environment with moving obstacles + """ + + def __init__( + self, + size=8, + agent_start_pos=(1, 1), + agent_start_dir=0, + n_obstacles=4 + ): + self.agent_start_pos = agent_start_pos + self.agent_start_dir = agent_start_dir + + # Reduce obstacles if there are too many + if n_obstacles <= size/2 + 1: + self.n_obstacles = int(n_obstacles) + else: + self.n_obstacles = int(size/2) + super().__init__( + grid_size=size, + max_steps=4 * size * size, + # Set this to True for maximum speed + see_through_walls=True, + ) + # Allow only 3 actions permitted: left, right, forward + self.action_space = spaces.Discrete(self.actions.forward + 1) + self.reward_range = (-1, 1) + + def _gen_grid(self, width, height): + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place a goal square in the bottom-right corner + self.grid.set(width - 2, height - 2, Goal()) + + # Place the agent + if self.agent_start_pos is not None: + self.agent_pos = self.agent_start_pos + self.agent_dir = self.agent_start_dir + else: + self.place_agent() + + # Place obstacles + self.obstacles = [] + for i_obst in range(self.n_obstacles): + self.obstacles.append(Ball()) + self.place_obj(self.obstacles[i_obst], max_tries=100) + + self.mission = "get to the green goal square" + + def step(self, action): + # Invalid action + if action >= self.action_space.n: + action = 0 + + # Check if there is an obstacle in front of the agent + front_cell = self.grid.get(*self.front_pos) + not_clear = front_cell and front_cell.type != 'goal' + + # Update obstacle positions + for i_obst in range(len(self.obstacles)): + old_pos = self.obstacles[i_obst].cur_pos + top = tuple(map(add, old_pos, (-1, -1))) + + try: + self.place_obj(self.obstacles[i_obst], top=top, size=(3,3), max_tries=100) + self.grid.set(*old_pos, None) + except: + pass + + # Update the agent's position/direction + obs, reward, done, info = MiniGridEnv.step(self, action) + + # If the agent tried to walk over an obstacle or wall + if action == self.actions.forward and not_clear: + reward = -1 + done = True + return obs, reward, done, info + + return obs, reward, done, info + +class DynamicObstaclesEnv5x5(DynamicObstaclesEnv): + def __init__(self): + super().__init__(size=5, n_obstacles=2) + +class DynamicObstaclesRandomEnv5x5(DynamicObstaclesEnv): + def __init__(self): + super().__init__(size=5, agent_start_pos=None, n_obstacles=2) + +class DynamicObstaclesEnv6x6(DynamicObstaclesEnv): + def __init__(self): + super().__init__(size=6, n_obstacles=3) + +class DynamicObstaclesRandomEnv6x6(DynamicObstaclesEnv): + def __init__(self): + super().__init__(size=6, agent_start_pos=None, n_obstacles=3) + +class DynamicObstaclesEnv16x16(DynamicObstaclesEnv): + def __init__(self): + super().__init__(size=16, n_obstacles=8) + +register( + id='MiniGrid-Dynamic-Obstacles-5x5-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesEnv5x5' +) + +register( + id='MiniGrid-Dynamic-Obstacles-Random-5x5-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesRandomEnv5x5' +) + +register( + id='MiniGrid-Dynamic-Obstacles-6x6-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesEnv6x6' +) + +register( + id='MiniGrid-Dynamic-Obstacles-Random-6x6-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesRandomEnv6x6' +) + +register( + id='MiniGrid-Dynamic-Obstacles-8x8-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesEnv' +) + +register( + id='MiniGrid-Dynamic-Obstacles-16x16-v0', + entry_point='gym_minigrid.envs:DynamicObstaclesEnv16x16' +) diff --git a/gym-minigrid/gym_minigrid/envs/empty.py b/gym-minigrid/gym_minigrid/envs/empty.py new file mode 100644 index 0000000..ca0558b --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/empty.py @@ -0,0 +1,92 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class EmptyEnv(MiniGridEnv): + """ + Empty grid environment, no obstacles, sparse reward + """ + + def __init__( + self, + size=8, + agent_start_pos=(1,1), + agent_start_dir=0, + ): + self.agent_start_pos = agent_start_pos + self.agent_start_dir = agent_start_dir + + super().__init__( + grid_size=size, + max_steps=4*size*size, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place a goal square in the bottom-right corner + self.put_obj(Goal(), width - 2, height - 2) + + # Place the agent + if self.agent_start_pos is not None: + self.agent_pos = self.agent_start_pos + self.agent_dir = self.agent_start_dir + else: + self.place_agent() + + self.mission = "get to the green goal square" + +class EmptyEnv5x5(EmptyEnv): + def __init__(self): + super().__init__(size=5) + +class EmptyRandomEnv5x5(EmptyEnv): + def __init__(self): + super().__init__(size=5, agent_start_pos=None) + +class EmptyEnv6x6(EmptyEnv): + def __init__(self): + super().__init__(size=6) + +class EmptyRandomEnv6x6(EmptyEnv): + def __init__(self): + super().__init__(size=6, agent_start_pos=None) + +class EmptyEnv16x16(EmptyEnv): + def __init__(self): + super().__init__(size=16) + +register( + id='MiniGrid-Empty-5x5-v0', + entry_point='gym_minigrid.envs:EmptyEnv5x5' +) + +register( + id='MiniGrid-Empty-Random-5x5-v0', + entry_point='gym_minigrid.envs:EmptyRandomEnv5x5' +) + +register( + id='MiniGrid-Empty-6x6-v0', + entry_point='gym_minigrid.envs:EmptyEnv6x6' +) + +register( + id='MiniGrid-Empty-Random-6x6-v0', + entry_point='gym_minigrid.envs:EmptyRandomEnv6x6' +) + +register( + id='MiniGrid-Empty-8x8-v0', + entry_point='gym_minigrid.envs:EmptyEnv' +) + +register( + id='MiniGrid-Empty-16x16-v0', + entry_point='gym_minigrid.envs:EmptyEnv16x16' +) diff --git a/gym-minigrid/gym_minigrid/envs/fetch.py b/gym-minigrid/gym_minigrid/envs/fetch.py new file mode 100644 index 0000000..7e58468 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/fetch.py @@ -0,0 +1,109 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class FetchEnv(MiniGridEnv): + """ + Environment in which the agent has to fetch a random object + named using English text strings + """ + + def __init__( + self, + size=8, + numObjs=3 + ): + self.numObjs = numObjs + + super().__init__( + grid_size=size, + max_steps=5*size**2, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.horz_wall(0, 0) + self.grid.horz_wall(0, height-1) + self.grid.vert_wall(0, 0) + self.grid.vert_wall(width-1, 0) + + types = ['key', 'ball'] + + objs = [] + + # For each object to be generated + while len(objs) < self.numObjs: + objType = self._rand_elem(types) + objColor = self._rand_elem(COLOR_NAMES) + + if objType == 'key': + obj = Key(objColor) + elif objType == 'ball': + obj = Ball(objColor) + + self.place_obj(obj) + objs.append(obj) + + # Randomize the player start position and orientation + self.place_agent() + + # Choose a random object to be picked up + target = objs[self._rand_int(0, len(objs))] + self.targetType = target.type + self.targetColor = target.color + + descStr = '%s %s' % (self.targetColor, self.targetType) + + # Generate the mission string + idx = self._rand_int(0, 5) + if idx == 0: + self.mission = 'get a %s' % descStr + elif idx == 1: + self.mission = 'go get a %s' % descStr + elif idx == 2: + self.mission = 'fetch a %s' % descStr + elif idx == 3: + self.mission = 'go fetch a %s' % descStr + elif idx == 4: + self.mission = 'you must fetch a %s' % descStr + assert hasattr(self, 'mission') + + def step(self, action): + obs, reward, done, info = MiniGridEnv.step(self, action) + + if self.carrying: + if self.carrying.color == self.targetColor and \ + self.carrying.type == self.targetType: + reward = self._reward() + done = True + else: + reward = 0 + done = True + + return obs, reward, done, info + +class FetchEnv5x5N2(FetchEnv): + def __init__(self): + super().__init__(size=5, numObjs=2) + +class FetchEnv6x6N2(FetchEnv): + def __init__(self): + super().__init__(size=6, numObjs=2) + +register( + id='MiniGrid-Fetch-5x5-N2-v0', + entry_point='gym_minigrid.envs:FetchEnv5x5N2' +) + +register( + id='MiniGrid-Fetch-6x6-N2-v0', + entry_point='gym_minigrid.envs:FetchEnv6x6N2' +) + +register( + id='MiniGrid-Fetch-8x8-N3-v0', + entry_point='gym_minigrid.envs:FetchEnv' +) diff --git a/gym-minigrid/gym_minigrid/envs/fourrooms.py b/gym-minigrid/gym_minigrid/envs/fourrooms.py new file mode 100644 index 0000000..b02fbbd --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/fourrooms.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + + +class FourRoomsEnv(MiniGridEnv): + """ + Classic 4 rooms gridworld environment. + Can specify agent and goal position, if not it set at random. + """ + + def __init__(self, agent_pos=None, goal_pos=None): + self._agent_default_pos = agent_pos + self._goal_default_pos = goal_pos + super().__init__(grid_size=19, max_steps=100) + + def _gen_grid(self, width, height): + # Create the grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.horz_wall(0, 0) + self.grid.horz_wall(0, height - 1) + self.grid.vert_wall(0, 0) + self.grid.vert_wall(width - 1, 0) + + room_w = width // 2 + room_h = height // 2 + + # For each row of rooms + for j in range(0, 2): + + # For each column + for i in range(0, 2): + xL = i * room_w + yT = j * room_h + xR = xL + room_w + yB = yT + room_h + + # Bottom wall and door + if i + 1 < 2: + self.grid.vert_wall(xR, yT, room_h) + pos = (xR, self._rand_int(yT + 1, yB)) + self.grid.set(*pos, None) + + # Bottom wall and door + if j + 1 < 2: + self.grid.horz_wall(xL, yB, room_w) + pos = (self._rand_int(xL + 1, xR), yB) + self.grid.set(*pos, None) + + # Randomize the player start position and orientation + if self._agent_default_pos is not None: + self.agent_pos = self._agent_default_pos + self.grid.set(*self._agent_default_pos, None) + self.agent_dir = self._rand_int(0, 4) # assuming random start direction + else: + self.place_agent() + + if self._goal_default_pos is not None: + goal = Goal() + self.put_obj(goal, *self._goal_default_pos) + goal.init_pos, goal.cur_pos = self._goal_default_pos + else: + self.place_obj(Goal()) + + self.mission = 'Reach the goal' + + def step(self, action): + obs, reward, done, info = MiniGridEnv.step(self, action) + return obs, reward, done, info + +register( + id='MiniGrid-FourRooms-v0', + entry_point='gym_minigrid.envs:FourRoomsEnv' +) diff --git a/gym-minigrid/gym_minigrid/envs/gotodoor.py b/gym-minigrid/gym_minigrid/envs/gotodoor.py new file mode 100644 index 0000000..2817c2c --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/gotodoor.py @@ -0,0 +1,104 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class GoToDoorEnv(MiniGridEnv): + """ + Environment in which the agent is instructed to go to a given object + named using an English text string + """ + + def __init__( + self, + size=5 + ): + assert size >= 5 + + super().__init__( + grid_size=size, + max_steps=5*size**2, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + # Create the grid + self.grid = Grid(width, height) + + # Randomly vary the room width and height + width = self._rand_int(5, width+1) + height = self._rand_int(5, height+1) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Generate the 4 doors at random positions + doorPos = [] + doorPos.append((self._rand_int(2, width-2), 0)) + doorPos.append((self._rand_int(2, width-2), height-1)) + doorPos.append((0, self._rand_int(2, height-2))) + doorPos.append((width-1, self._rand_int(2, height-2))) + + # Generate the door colors + doorColors = [] + while len(doorColors) < len(doorPos): + color = self._rand_elem(COLOR_NAMES) + if color in doorColors: + continue + doorColors.append(color) + + # Place the doors in the grid + for idx, pos in enumerate(doorPos): + color = doorColors[idx] + self.grid.set(*pos, Door(color)) + + # Randomize the agent start position and orientation + self.place_agent(size=(width, height)) + + # Select a random target door + doorIdx = self._rand_int(0, len(doorPos)) + self.target_pos = doorPos[doorIdx] + self.target_color = doorColors[doorIdx] + + # Generate the mission string + self.mission = 'go to the %s door' % self.target_color + + def step(self, action): + obs, reward, done, info = super().step(action) + + ax, ay = self.agent_pos + tx, ty = self.target_pos + + # Don't let the agent open any of the doors + if action == self.actions.toggle: + done = True + + # Reward performing done action in front of the target door + if action == self.actions.done: + if (ax == tx and abs(ay - ty) == 1) or (ay == ty and abs(ax - tx) == 1): + reward = self._reward() + done = True + + return obs, reward, done, info + +class GoToDoor8x8Env(GoToDoorEnv): + def __init__(self): + super().__init__(size=8) + +class GoToDoor6x6Env(GoToDoorEnv): + def __init__(self): + super().__init__(size=6) + +register( + id='MiniGrid-GoToDoor-5x5-v0', + entry_point='gym_minigrid.envs:GoToDoorEnv' +) + +register( + id='MiniGrid-GoToDoor-6x6-v0', + entry_point='gym_minigrid.envs:GoToDoor6x6Env' +) + +register( + id='MiniGrid-GoToDoor-8x8-v0', + entry_point='gym_minigrid.envs:GoToDoor8x8Env' +) diff --git a/gym-minigrid/gym_minigrid/envs/gotoobject.py b/gym-minigrid/gym_minigrid/envs/gotoobject.py new file mode 100644 index 0000000..ffab837 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/gotoobject.py @@ -0,0 +1,98 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class GoToObjectEnv(MiniGridEnv): + """ + Environment in which the agent is instructed to go to a given object + named using an English text string + """ + + def __init__( + self, + size=6, + numObjs=2 + ): + self.numObjs = numObjs + + super().__init__( + grid_size=size, + max_steps=5*size**2, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Types and colors of objects we can generate + types = ['key', 'ball', 'box'] + + objs = [] + objPos = [] + + # Until we have generated all the objects + while len(objs) < self.numObjs: + objType = self._rand_elem(types) + objColor = self._rand_elem(COLOR_NAMES) + + # If this object already exists, try again + if (objType, objColor) in objs: + continue + + if objType == 'key': + obj = Key(objColor) + elif objType == 'ball': + obj = Ball(objColor) + elif objType == 'box': + obj = Box(objColor) + + pos = self.place_obj(obj) + objs.append((objType, objColor)) + objPos.append(pos) + + # Randomize the agent start position and orientation + self.place_agent() + + # Choose a random object to be picked up + objIdx = self._rand_int(0, len(objs)) + self.targetType, self.target_color = objs[objIdx] + self.target_pos = objPos[objIdx] + + descStr = '%s %s' % (self.target_color, self.targetType) + self.mission = 'go to the %s' % descStr + #print(self.mission) + + def step(self, action): + obs, reward, done, info = MiniGridEnv.step(self, action) + + ax, ay = self.agent_pos + tx, ty = self.target_pos + + # Toggle/pickup action terminates the episode + if action == self.actions.toggle: + done = True + + # Reward performing the done action next to the target object + if action == self.actions.done: + if abs(ax - tx) <= 1 and abs(ay - ty) <= 1: + reward = self._reward() + done = True + + return obs, reward, done, info + +class GotoEnv8x8N2(GoToObjectEnv): + def __init__(self): + super().__init__(size=8, numObjs=2) + +register( + id='MiniGrid-GoToObject-6x6-N2-v0', + entry_point='gym_minigrid.envs:GoToObjectEnv' +) + +register( + id='MiniGrid-GoToObject-8x8-N2-v0', + entry_point='gym_minigrid.envs:GotoEnv8x8N2' +) diff --git a/gym-minigrid/gym_minigrid/envs/keycorridor.py b/gym-minigrid/gym_minigrid/envs/keycorridor.py new file mode 100644 index 0000000..f51dc8c --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/keycorridor.py @@ -0,0 +1,137 @@ +from gym_minigrid.roomgrid import RoomGrid +from gym_minigrid.register import register + +class KeyCorridor(RoomGrid): + """ + A ball is behind a locked door, the key is placed in a + random room. + """ + + def __init__( + self, + num_rows=3, + obj_type="ball", + room_size=6, + seed=None + ): + self.obj_type = obj_type + + super().__init__( + room_size=room_size, + num_rows=num_rows, + max_steps=30*room_size**2, + seed=seed, + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + # Connect the middle column rooms into a hallway + for j in range(1, self.num_rows): + self.remove_wall(1, j, 3) + + # Add a locked door on the bottom right + # Add an object behind the locked door + room_idx = self._rand_int(0, self.num_rows) + door, _ = self.add_door(2, room_idx, 2, locked=True) + obj, _ = self.add_object(2, room_idx, kind=self.obj_type) + + # Add a key in a random room on the left side + self.add_object(0, self._rand_int(0, self.num_rows), 'key', door.color) + + # Place the agent in the middle + self.place_agent(1, self.num_rows // 2) + + # Make sure all rooms are accessible + self.connect_all() + + self.obj = obj + self.mission = "pick up the %s %s" % (obj.color, obj.type) + + def step(self, action): + obs, reward, done, info = super().step(action) + + if action == self.actions.pickup: + if self.carrying and self.carrying == self.obj: + reward = self._reward() + done = True + + return obs, reward, done, info + +class KeyCorridorS3R1(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=1, + seed=seed + ) + +class KeyCorridorS3R2(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=2, + seed=seed + ) + +class KeyCorridorS3R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=3, + num_rows=3, + seed=seed + ) + +class KeyCorridorS4R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=4, + num_rows=3, + seed=seed + ) + +class KeyCorridorS5R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=5, + num_rows=3, + seed=seed + ) + +class KeyCorridorS6R3(KeyCorridor): + def __init__(self, seed=None): + super().__init__( + room_size=6, + num_rows=3, + seed=seed + ) + +register( + id='MiniGrid-KeyCorridorS3R1-v0', + entry_point='gym_minigrid.envs:KeyCorridorS3R1' +) + +register( + id='MiniGrid-KeyCorridorS3R2-v0', + entry_point='gym_minigrid.envs:KeyCorridorS3R2' +) + +register( + id='MiniGrid-KeyCorridorS3R3-v0', + entry_point='gym_minigrid.envs:KeyCorridorS3R3' +) + +register( + id='MiniGrid-KeyCorridorS4R3-v0', + entry_point='gym_minigrid.envs:KeyCorridorS4R3' +) + +register( + id='MiniGrid-KeyCorridorS5R3-v0', + entry_point='gym_minigrid.envs:KeyCorridorS5R3' +) + +register( + id='MiniGrid-KeyCorridorS6R3-v0', + entry_point='gym_minigrid.envs:KeyCorridorS6R3' +) diff --git a/gym-minigrid/gym_minigrid/envs/lavagap.py b/gym-minigrid/gym_minigrid/envs/lavagap.py new file mode 100644 index 0000000..04368a1 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/lavagap.py @@ -0,0 +1,80 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class LavaGapEnv(MiniGridEnv): + """ + Environment with one wall of lava with a small gap to cross through + This environment is similar to LavaCrossing but simpler in structure. + """ + + def __init__(self, size, obstacle_type=Lava, seed=None): + self.obstacle_type = obstacle_type + super().__init__( + grid_size=size, + max_steps=4*size*size, + # Set this to True for maximum speed + see_through_walls=False, + seed=None + ) + + def _gen_grid(self, width, height): + assert width >= 5 and height >= 5 + + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.wall_rect(0, 0, width, height) + + # Place the agent in the top-left corner + self.agent_pos = (1, 1) + self.agent_dir = 0 + + # Place a goal square in the bottom-right corner + self.goal_pos = np.array((width - 2, height - 2)) + self.put_obj(Goal(), *self.goal_pos) + + # Generate and store random gap position + self.gap_pos = np.array(( + self._rand_int(2, width - 2), + self._rand_int(1, height - 1), + )) + + # Place the obstacle wall + self.grid.vert_wall(self.gap_pos[0], 1, height - 2, self.obstacle_type) + + # Put a hole in the wall + self.grid.set(*self.gap_pos, None) + + self.mission = ( + "avoid the lava and get to the green goal square" + if self.obstacle_type == Lava + else "find the opening and get to the green goal square" + ) + +class LavaGapS5Env(LavaGapEnv): + def __init__(self): + super().__init__(size=5) + +class LavaGapS6Env(LavaGapEnv): + def __init__(self): + super().__init__(size=6) + +class LavaGapS7Env(LavaGapEnv): + def __init__(self): + super().__init__(size=7) + +register( + id='MiniGrid-LavaGapS5-v0', + entry_point='gym_minigrid.envs:LavaGapS5Env' +) + +register( + id='MiniGrid-LavaGapS6-v0', + entry_point='gym_minigrid.envs:LavaGapS6Env' +) + +register( + id='MiniGrid-LavaGapS7-v0', + entry_point='gym_minigrid.envs:LavaGapS7Env' +) diff --git a/gym-minigrid/gym_minigrid/envs/lockedroom.py b/gym-minigrid/gym_minigrid/envs/lockedroom.py new file mode 100644 index 0000000..a0ad0fa --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/lockedroom.py @@ -0,0 +1,124 @@ +from gym import spaces +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class Room: + def __init__(self, + top, + size, + doorPos + ): + self.top = top + self.size = size + self.doorPos = doorPos + self.color = None + self.locked = False + + def rand_pos(self, env): + topX, topY = self.top + sizeX, sizeY = self.size + return env._rand_pos( + topX + 1, topX + sizeX - 1, + topY + 1, topY + sizeY - 1 + ) + +class LockedRoom(MiniGridEnv): + """ + Environment in which the agent is instructed to go to a given object + named using an English text string + """ + + def __init__( + self, + size=19 + ): + super().__init__(grid_size=size, max_steps=10*size) + + def _gen_grid(self, width, height): + # Create the grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + for i in range(0, width): + self.grid.set(i, 0, Wall()) + self.grid.set(i, height-1, Wall()) + for j in range(0, height): + self.grid.set(0, j, Wall()) + self.grid.set(width-1, j, Wall()) + + # Hallway walls + lWallIdx = width // 2 - 2 + rWallIdx = width // 2 + 2 + for j in range(0, height): + self.grid.set(lWallIdx, j, Wall()) + self.grid.set(rWallIdx, j, Wall()) + + self.rooms = [] + + # Room splitting walls + for n in range(0, 3): + j = n * (height // 3) + for i in range(0, lWallIdx): + self.grid.set(i, j, Wall()) + for i in range(rWallIdx, width): + self.grid.set(i, j, Wall()) + + roomW = lWallIdx + 1 + roomH = height // 3 + 1 + self.rooms.append(Room( + (0, j), + (roomW, roomH), + (lWallIdx, j + 3) + )) + self.rooms.append(Room( + (rWallIdx, j), + (roomW, roomH), + (rWallIdx, j + 3) + )) + + # Choose one random room to be locked + lockedRoom = self._rand_elem(self.rooms) + lockedRoom.locked = True + goalPos = lockedRoom.rand_pos(self) + self.grid.set(*goalPos, Goal()) + + # Assign the door colors + colors = set(COLOR_NAMES) + for room in self.rooms: + color = self._rand_elem(sorted(colors)) + colors.remove(color) + room.color = color + if room.locked: + self.grid.set(*room.doorPos, Door(color, is_locked=True)) + else: + self.grid.set(*room.doorPos, Door(color)) + + # Select a random room to contain the key + while True: + keyRoom = self._rand_elem(self.rooms) + if keyRoom != lockedRoom: + break + keyPos = keyRoom.rand_pos(self) + self.grid.set(*keyPos, Key(lockedRoom.color)) + + # Randomize the player start position and orientation + self.agent_pos = self.place_agent( + top=(lWallIdx, 0), + size=(rWallIdx-lWallIdx, height) + ) + + # Generate the mission string + self.mission = ( + 'get the %s key from the %s room, ' + 'unlock the %s door and ' + 'go to the goal' + ) % (lockedRoom.color, keyRoom.color, lockedRoom.color) + + def step(self, action): + obs, reward, done, info = MiniGridEnv.step(self, action) + return obs, reward, done, info + +register( + id='MiniGrid-LockedRoom-v0', + entry_point='gym_minigrid.envs:LockedRoom' +) diff --git a/gym-minigrid/gym_minigrid/envs/memory.py b/gym-minigrid/gym_minigrid/envs/memory.py new file mode 100644 index 0000000..ff9ca86 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/memory.py @@ -0,0 +1,154 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class MemoryEnv(MiniGridEnv): + """ + This environment is a memory test. The agent starts in a small room + where it sees an object. It then has to go through a narrow hallway + which ends in a split. At each end of the split there is an object, + one of which is the same as the object in the starting room. The + agent has to remember the initial object, and go to the matching + object at split. + """ + + def __init__( + self, + seed, + size=8, + random_length=False, + ): + self.random_length = random_length + super().__init__( + seed=seed, + grid_size=size, + max_steps=5*size**2, + # Set this to True for maximum speed + see_through_walls=False, + ) + + def _gen_grid(self, width, height): + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.horz_wall(0, 0) + self.grid.horz_wall(0, height-1) + self.grid.vert_wall(0, 0) + self.grid.vert_wall(width - 1, 0) + + assert height % 2 == 1 + upper_room_wall = height // 2 - 2 + lower_room_wall = height // 2 + 2 + if self.random_length: + hallway_end = self._rand_int(4, width - 2) + else: + hallway_end = width - 3 + + # Start room + for i in range(1, 5): + self.grid.set(i, upper_room_wall, Wall()) + self.grid.set(i, lower_room_wall, Wall()) + self.grid.set(4, upper_room_wall + 1, Wall()) + self.grid.set(4, lower_room_wall - 1, Wall()) + + # Horizontal hallway + for i in range(5, hallway_end): + self.grid.set(i, upper_room_wall + 1, Wall()) + self.grid.set(i, lower_room_wall - 1, Wall()) + + # Vertical hallway + for j in range(0, height): + if j != height // 2: + self.grid.set(hallway_end, j, Wall()) + self.grid.set(hallway_end + 2, j, Wall()) + + # Fix the player's start position and orientation + self.agent_pos = (self._rand_int(1, hallway_end + 1), height // 2) + self.agent_dir = 0 + + # Place objects + start_room_obj = self._rand_elem([Key, Ball]) + self.grid.set(1, height // 2 - 1, start_room_obj('green')) + + other_objs = self._rand_elem([[Ball, Key], [Key, Ball]]) + pos0 = (hallway_end + 1, height // 2 - 2) + pos1 = (hallway_end + 1, height // 2 + 2) + self.grid.set(*pos0, other_objs[0]('green')) + self.grid.set(*pos1, other_objs[1]('green')) + + # Choose the target objects + if start_room_obj == other_objs[0]: + self.success_pos = (pos0[0], pos0[1] + 1) + self.failure_pos = (pos1[0], pos1[1] - 1) + else: + self.success_pos = (pos1[0], pos1[1] - 1) + self.failure_pos = (pos0[0], pos0[1] + 1) + + self.mission = 'go to the matching object at the end of the hallway' + + def step(self, action): + if action == MiniGridEnv.Actions.pickup: + action = MiniGridEnv.Actions.toggle + obs, reward, done, info = MiniGridEnv.step(self, action) + + if tuple(self.agent_pos) == self.success_pos: + reward = self._reward() + done = True + if tuple(self.agent_pos) == self.failure_pos: + reward = 0 + done = True + + return obs, reward, done, info + +class MemoryS17Random(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=17, random_length=True) + +register( + id='MiniGrid-MemoryS17Random-v0', + entry_point='gym_minigrid.envs:MemoryS17Random', +) + +class MemoryS13Random(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=13, random_length=True) + +register( + id='MiniGrid-MemoryS13Random-v0', + entry_point='gym_minigrid.envs:MemoryS13Random', +) + +class MemoryS13(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=13) + +register( + id='MiniGrid-MemoryS13-v0', + entry_point='gym_minigrid.envs:MemoryS13', +) + +class MemoryS11(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=11) + +register( + id='MiniGrid-MemoryS11-v0', + entry_point='gym_minigrid.envs:MemoryS11', +) + +class MemoryS9(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=9) + +register( + id='MiniGrid-MemoryS9-v0', + entry_point='gym_minigrid.envs:MemoryS9', +) + +class MemoryS7(MemoryEnv): + def __init__(self, seed=None): + super().__init__(seed=seed, size=7) + +register( + id='MiniGrid-MemoryS7-v0', + entry_point='gym_minigrid.envs:MemoryS7', +) diff --git a/gym-minigrid/gym_minigrid/envs/multiroom.py b/gym-minigrid/gym_minigrid/envs/multiroom.py new file mode 100644 index 0000000..ce6b535 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/multiroom.py @@ -0,0 +1,275 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class Room: + def __init__(self, + top, + size, + entryDoorPos, + exitDoorPos + ): + self.top = top + self.size = size + self.entryDoorPos = entryDoorPos + self.exitDoorPos = exitDoorPos + +class MultiRoomEnv(MiniGridEnv): + """ + Environment with multiple rooms (subgoals) + """ + + def __init__(self, + minNumRooms, + maxNumRooms, + maxRoomSize=10 + ): + assert minNumRooms > 0 + assert maxNumRooms >= minNumRooms + assert maxRoomSize >= 4 + + self.minNumRooms = minNumRooms + self.maxNumRooms = maxNumRooms + self.maxRoomSize = maxRoomSize + + self.rooms = [] + + super(MultiRoomEnv, self).__init__( + grid_size=25, + max_steps=self.maxNumRooms * 20 + ) + + def _gen_grid(self, width, height): + roomList = [] + + # Choose a random number of rooms to generate + numRooms = self._rand_int(self.minNumRooms, self.maxNumRooms+1) + + while len(roomList) < numRooms: + curRoomList = [] + + entryDoorPos = ( + self._rand_int(0, width - 2), + self._rand_int(0, width - 2) + ) + + # Recursively place the rooms + self._placeRoom( + numRooms, + roomList=curRoomList, + minSz=4, + maxSz=self.maxRoomSize, + entryDoorWall=2, + entryDoorPos=entryDoorPos + ) + + if len(curRoomList) > len(roomList): + roomList = curRoomList + + # Store the list of rooms in this environment + assert len(roomList) > 0 + self.rooms = roomList + + # Create the grid + self.grid = Grid(width, height) + wall = Wall() + + prevDoorColor = None + + # For each room + for idx, room in enumerate(roomList): + + topX, topY = room.top + sizeX, sizeY = room.size + + # Draw the top and bottom walls + for i in range(0, sizeX): + self.grid.set(topX + i, topY, wall) + self.grid.set(topX + i, topY + sizeY - 1, wall) + + # Draw the left and right walls + for j in range(0, sizeY): + self.grid.set(topX, topY + j, wall) + self.grid.set(topX + sizeX - 1, topY + j, wall) + + # If this isn't the first room, place the entry door + if idx > 0: + # Pick a door color different from the previous one + doorColors = set(COLOR_NAMES) + if prevDoorColor: + doorColors.remove(prevDoorColor) + # Note: the use of sorting here guarantees determinism, + # This is needed because Python's set is not deterministic + doorColor = self._rand_elem(sorted(doorColors)) + + entryDoor = Door(doorColor) + self.grid.set(*room.entryDoorPos, entryDoor) + prevDoorColor = doorColor + + prevRoom = roomList[idx-1] + prevRoom.exitDoorPos = room.entryDoorPos + + # Randomize the starting agent position and direction + self.place_agent(roomList[0].top, roomList[0].size) + + # Place the final goal in the last room + self.goal_pos = self.place_obj(Goal(), roomList[-1].top, roomList[-1].size) + + self.mission = 'traverse the rooms to get to the goal' + + def _placeRoom( + self, + numLeft, + roomList, + minSz, + maxSz, + entryDoorWall, + entryDoorPos + ): + # Choose the room size randomly + sizeX = self._rand_int(minSz, maxSz+1) + sizeY = self._rand_int(minSz, maxSz+1) + + # The first room will be at the door position + if len(roomList) == 0: + topX, topY = entryDoorPos + # Entry on the right + elif entryDoorWall == 0: + topX = entryDoorPos[0] - sizeX + 1 + y = entryDoorPos[1] + topY = self._rand_int(y - sizeY + 2, y) + # Entry wall on the south + elif entryDoorWall == 1: + x = entryDoorPos[0] + topX = self._rand_int(x - sizeX + 2, x) + topY = entryDoorPos[1] - sizeY + 1 + # Entry wall on the left + elif entryDoorWall == 2: + topX = entryDoorPos[0] + y = entryDoorPos[1] + topY = self._rand_int(y - sizeY + 2, y) + # Entry wall on the top + elif entryDoorWall == 3: + x = entryDoorPos[0] + topX = self._rand_int(x - sizeX + 2, x) + topY = entryDoorPos[1] + else: + assert False, entryDoorWall + + # If the room is out of the grid, can't place a room here + if topX < 0 or topY < 0: + return False + if topX + sizeX > self.width or topY + sizeY >= self.height: + return False + + # If the room intersects with previous rooms, can't place it here + for room in roomList[:-1]: + nonOverlap = \ + topX + sizeX < room.top[0] or \ + room.top[0] + room.size[0] <= topX or \ + topY + sizeY < room.top[1] or \ + room.top[1] + room.size[1] <= topY + + if not nonOverlap: + return False + + # Add this room to the list + roomList.append(Room( + (topX, topY), + (sizeX, sizeY), + entryDoorPos, + None + )) + + # If this was the last room, stop + if numLeft == 1: + return True + + # Try placing the next room + for i in range(0, 8): + + # Pick which wall to place the out door on + wallSet = set((0, 1, 2, 3)) + wallSet.remove(entryDoorWall) + exitDoorWall = self._rand_elem(sorted(wallSet)) + nextEntryWall = (exitDoorWall + 2) % 4 + + # Pick the exit door position + # Exit on right wall + if exitDoorWall == 0: + exitDoorPos = ( + topX + sizeX - 1, + topY + self._rand_int(1, sizeY - 1) + ) + # Exit on south wall + elif exitDoorWall == 1: + exitDoorPos = ( + topX + self._rand_int(1, sizeX - 1), + topY + sizeY - 1 + ) + # Exit on left wall + elif exitDoorWall == 2: + exitDoorPos = ( + topX, + topY + self._rand_int(1, sizeY - 1) + ) + # Exit on north wall + elif exitDoorWall == 3: + exitDoorPos = ( + topX + self._rand_int(1, sizeX - 1), + topY + ) + else: + assert False + + # Recursively create the other rooms + success = self._placeRoom( + numLeft - 1, + roomList=roomList, + minSz=minSz, + maxSz=maxSz, + entryDoorWall=nextEntryWall, + entryDoorPos=exitDoorPos + ) + + if success: + break + + return True + +class MultiRoomEnvN2S4(MultiRoomEnv): + def __init__(self): + super().__init__( + minNumRooms=2, + maxNumRooms=2, + maxRoomSize=4 + ) + +class MultiRoomEnvN4S5(MultiRoomEnv): + def __init__(self): + super().__init__( + minNumRooms=4, + maxNumRooms=4, + maxRoomSize=5 + ) + +class MultiRoomEnvN6(MultiRoomEnv): + def __init__(self): + super().__init__( + minNumRooms=6, + maxNumRooms=6 + ) + +register( + id='MiniGrid-MultiRoom-N2-S4-v0', + entry_point='gym_minigrid.envs:MultiRoomEnvN2S4' +) + +register( + id='MiniGrid-MultiRoom-N4-S5-v0', + entry_point='gym_minigrid.envs:MultiRoomEnvN4S5' +) + +register( + id='MiniGrid-MultiRoom-N6-v0', + entry_point='gym_minigrid.envs:MultiRoomEnvN6' +) diff --git a/gym-minigrid/gym_minigrid/envs/obstructedmaze.py b/gym-minigrid/gym_minigrid/envs/obstructedmaze.py new file mode 100644 index 0000000..2b7987c --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/obstructedmaze.py @@ -0,0 +1,224 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.roomgrid import RoomGrid +from gym_minigrid.register import register + +class ObstructedMazeEnv(RoomGrid): + """ + A blue ball is hidden in the maze. Doors may be locked, + doors may be obstructed by a ball and keys may be hidden in boxes. + """ + + def __init__(self, + num_rows, + num_cols, + num_rooms_visited, + seed=None + ): + room_size = 6 + max_steps = 4*num_rooms_visited*room_size**2 + + super().__init__( + room_size=room_size, + num_rows=num_rows, + num_cols=num_cols, + max_steps=max_steps, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + # Define all possible colors for doors + self.door_colors = self._rand_subset(COLOR_NAMES, len(COLOR_NAMES)) + # Define the color of the ball to pick up + self.ball_to_find_color = COLOR_NAMES[0] + # Define the color of the balls that obstruct doors + self.blocking_ball_color = COLOR_NAMES[1] + # Define the color of boxes in which keys are hidden + self.box_color = COLOR_NAMES[2] + + self.mission = "pick up the %s ball" % self.ball_to_find_color + + def step(self, action): + obs, reward, done, info = super().step(action) + + if action == self.actions.pickup: + if self.carrying and self.carrying == self.obj: + reward = self._reward() + done = True + + return obs, reward, done, info + + def add_door(self, i, j, door_idx=0, color=None, locked=False, key_in_box=False, blocked=False): + """ + Add a door. If the door must be locked, it also adds the key. + If the key must be hidden, it is put in a box. If the door must + be obstructed, it adds a ball in front of the door. + """ + + door, door_pos = super().add_door(i, j, door_idx, color, locked=locked) + + if blocked: + vec = DIR_TO_VEC[door_idx] + blocking_ball = Ball(self.blocking_ball_color) if blocked else None + self.grid.set(door_pos[0]-vec[0], door_pos[1]-vec[1], blocking_ball) + + if locked: + obj = Key(door.color) + if key_in_box: + box = Box(self.box_color) if key_in_box else None + box.contains = obj + obj = box + self.place_in_room(i, j, obj) + + return door, door_pos + +class ObstructedMaze_1Dlhb(ObstructedMazeEnv): + """ + A blue ball is hidden in a 2x1 maze. A locked door separates + rooms. Doors are obstructed by a ball and keys are hidden in boxes. + """ + + def __init__(self, key_in_box=True, blocked=True, seed=None): + self.key_in_box = key_in_box + self.blocked = blocked + + super().__init__( + num_rows=1, + num_cols=2, + num_rooms_visited=2, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + self.add_door(0, 0, door_idx=0, color=self.door_colors[0], + locked=True, + key_in_box=self.key_in_box, + blocked=self.blocked) + + self.obj, _ = self.add_object(1, 0, "ball", color=self.ball_to_find_color) + self.place_agent(0, 0) + +class ObstructedMaze_1Dl(ObstructedMaze_1Dlhb): + def __init__(self, seed=None): + super().__init__(False, False, seed) + +class ObstructedMaze_1Dlh(ObstructedMaze_1Dlhb): + def __init__(self, seed=None): + super().__init__(True, False, seed) + +class ObstructedMaze_Full(ObstructedMazeEnv): + """ + A blue ball is hidden in one of the 4 corners of a 3x3 maze. Doors + are locked, doors are obstructed by a ball and keys are hidden in + boxes. + """ + + def __init__(self, agent_room=(1, 1), key_in_box=True, blocked=True, + num_quarters=4, num_rooms_visited=25, seed=None): + self.agent_room = agent_room + self.key_in_box = key_in_box + self.blocked = blocked + self.num_quarters = num_quarters + + super().__init__( + num_rows=3, + num_cols=3, + num_rooms_visited=num_rooms_visited, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + middle_room = (1, 1) + # Define positions of "side rooms" i.e. rooms that are neither + # corners nor the center. + side_rooms = [(2, 1), (1, 2), (0, 1), (1, 0)][:self.num_quarters] + for i in range(len(side_rooms)): + side_room = side_rooms[i] + + # Add a door between the center room and the side room + self.add_door(*middle_room, door_idx=i, color=self.door_colors[i], locked=False) + + for k in [-1, 1]: + # Add a door to each side of the side room + self.add_door(*side_room, locked=True, + door_idx=(i+k)%4, + color=self.door_colors[(i+k)%len(self.door_colors)], + key_in_box=self.key_in_box, + blocked=self.blocked) + + corners = [(2, 0), (2, 2), (0, 2), (0, 0)][:self.num_quarters] + ball_room = self._rand_elem(corners) + + self.obj, _ = self.add_object(*ball_room, "ball", color=self.ball_to_find_color) + self.place_agent(*self.agent_room) + +class ObstructedMaze_2Dl(ObstructedMaze_Full): + def __init__(self, seed=None): + super().__init__((2, 1), False, False, 1, 4, seed) + +class ObstructedMaze_2Dlh(ObstructedMaze_Full): + def __init__(self, seed=None): + super().__init__((2, 1), True, False, 1, 4, seed) + + +class ObstructedMaze_2Dlhb(ObstructedMaze_Full): + def __init__(self, seed=None): + super().__init__((2, 1), True, True, 1, 4, seed) + +class ObstructedMaze_1Q(ObstructedMaze_Full): + def __init__(self, seed=None): + super().__init__((1, 1), True, True, 1, 5, seed) + +class ObstructedMaze_2Q(ObstructedMaze_Full): + def __init__(self, seed=None): + super().__init__((1, 1), True, True, 2, 11, seed) + +register( + id="MiniGrid-ObstructedMaze-1Dl-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_1Dl" +) + +register( + id="MiniGrid-ObstructedMaze-1Dlh-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_1Dlh" +) + +register( + id="MiniGrid-ObstructedMaze-1Dlhb-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_1Dlhb" +) + +register( + id="MiniGrid-ObstructedMaze-2Dl-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_2Dl" +) + +register( + id="MiniGrid-ObstructedMaze-2Dlh-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_2Dlh" +) + +register( + id="MiniGrid-ObstructedMaze-2Dlhb-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_2Dlhb" +) + +register( + id="MiniGrid-ObstructedMaze-1Q-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_1Q" +) + +register( + id="MiniGrid-ObstructedMaze-2Q-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_2Q" +) + +register( + id="MiniGrid-ObstructedMaze-Full-v0", + entry_point="gym_minigrid.envs:ObstructedMaze_Full" +) \ No newline at end of file diff --git a/gym-minigrid/gym_minigrid/envs/playground_v0.py b/gym-minigrid/gym_minigrid/envs/playground_v0.py new file mode 100644 index 0000000..226bb1c --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/playground_v0.py @@ -0,0 +1,76 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class PlaygroundV0(MiniGridEnv): + """ + Environment with multiple rooms and random objects. + This environment has no specific goals or rewards. + """ + + def __init__(self): + super().__init__(grid_size=19, max_steps=100) + + def _gen_grid(self, width, height): + # Create the grid + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.horz_wall(0, 0) + self.grid.horz_wall(0, height-1) + self.grid.vert_wall(0, 0) + self.grid.vert_wall(width-1, 0) + + roomW = width // 3 + roomH = height // 3 + + # For each row of rooms + for j in range(0, 3): + + # For each column + for i in range(0, 3): + xL = i * roomW + yT = j * roomH + xR = xL + roomW + yB = yT + roomH + + # Bottom wall and door + if i+1 < 3: + self.grid.vert_wall(xR, yT, roomH) + pos = (xR, self._rand_int(yT+1, yB-1)) + color = self._rand_elem(COLOR_NAMES) + self.grid.set(*pos, Door(color)) + + # Bottom wall and door + if j+1 < 3: + self.grid.horz_wall(xL, yB, roomW) + pos = (self._rand_int(xL+1, xR-1), yB) + color = self._rand_elem(COLOR_NAMES) + self.grid.set(*pos, Door(color)) + + # Randomize the player start position and orientation + self.place_agent() + + # Place random objects in the world + types = ['key', 'ball', 'box'] + for i in range(0, 12): + objType = self._rand_elem(types) + objColor = self._rand_elem(COLOR_NAMES) + if objType == 'key': + obj = Key(objColor) + elif objType == 'ball': + obj = Ball(objColor) + elif objType == 'box': + obj = Box(objColor) + self.place_obj(obj) + + # No explicit mission in this environment + self.mission = '' + + def step(self, action): + obs, reward, done, info = MiniGridEnv.step(self, action) + return obs, reward, done, info + +register( + id='MiniGrid-Playground-v0', + entry_point='gym_minigrid.envs:PlaygroundV0' +) diff --git a/gym-minigrid/gym_minigrid/envs/putnear.py b/gym-minigrid/gym_minigrid/envs/putnear.py new file mode 100644 index 0000000..19ee1a5 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/putnear.py @@ -0,0 +1,126 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class PutNearEnv(MiniGridEnv): + """ + Environment in which the agent is instructed to place an object near + another object through a natural language string. + """ + + def __init__( + self, + size=6, + numObjs=2 + ): + self.numObjs = numObjs + + super().__init__( + grid_size=size, + max_steps=5*size, + # Set this to True for maximum speed + see_through_walls=True + ) + + def _gen_grid(self, width, height): + self.grid = Grid(width, height) + + # Generate the surrounding walls + self.grid.horz_wall(0, 0) + self.grid.horz_wall(0, height-1) + self.grid.vert_wall(0, 0) + self.grid.vert_wall(width-1, 0) + + # Types and colors of objects we can generate + types = ['key', 'ball', 'box'] + + objs = [] + objPos = [] + + def near_obj(env, p1): + for p2 in objPos: + dx = p1[0] - p2[0] + dy = p1[1] - p2[1] + if abs(dx) <= 1 and abs(dy) <= 1: + return True + return False + + # Until we have generated all the objects + while len(objs) < self.numObjs: + objType = self._rand_elem(types) + objColor = self._rand_elem(COLOR_NAMES) + + # If this object already exists, try again + if (objType, objColor) in objs: + continue + + if objType == 'key': + obj = Key(objColor) + elif objType == 'ball': + obj = Ball(objColor) + elif objType == 'box': + obj = Box(objColor) + + pos = self.place_obj(obj, reject_fn=near_obj) + + objs.append((objType, objColor)) + objPos.append(pos) + + # Randomize the agent start position and orientation + self.place_agent() + + # Choose a random object to be moved + objIdx = self._rand_int(0, len(objs)) + self.move_type, self.moveColor = objs[objIdx] + self.move_pos = objPos[objIdx] + + # Choose a target object (to put the first object next to) + while True: + targetIdx = self._rand_int(0, len(objs)) + if targetIdx != objIdx: + break + self.target_type, self.target_color = objs[targetIdx] + self.target_pos = objPos[targetIdx] + + self.mission = 'put the %s %s near the %s %s' % ( + self.moveColor, + self.move_type, + self.target_color, + self.target_type + ) + + def step(self, action): + preCarrying = self.carrying + + obs, reward, done, info = super().step(action) + + u, v = self.dir_vec + ox, oy = (self.agent_pos[0] + u, self.agent_pos[1] + v) + tx, ty = self.target_pos + + # If we picked up the wrong object, terminate the episode + if action == self.actions.pickup and self.carrying: + if self.carrying.type != self.move_type or self.carrying.color != self.moveColor: + done = True + + # If successfully dropping an object near the target + if action == self.actions.drop and preCarrying: + if self.grid.get(ox, oy) is preCarrying: + if abs(ox - tx) <= 1 and abs(oy - ty) <= 1: + reward = self._reward() + done = True + + return obs, reward, done, info + +class PutNear8x8N3(PutNearEnv): + def __init__(self): + super().__init__(size=8, numObjs=3) + +register( + id='MiniGrid-PutNear-6x6-N2-v0', + entry_point='gym_minigrid.envs:PutNearEnv' +) + +register( + id='MiniGrid-PutNear-8x8-N3-v0', + entry_point='gym_minigrid.envs:PutNear8x8N3' +) diff --git a/gym-minigrid/gym_minigrid/envs/redbluedoors.py b/gym-minigrid/gym_minigrid/envs/redbluedoors.py new file mode 100644 index 0000000..cea95b4 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/redbluedoors.py @@ -0,0 +1,80 @@ +from gym_minigrid.minigrid import * +from gym_minigrid.register import register + +class RedBlueDoorEnv(MiniGridEnv): + """ + Single room with red and blue doors on opposite sides. + The red door must be opened before the blue door to + obtain a reward. + """ + + def __init__(self, size=8): + self.size = size + + super().__init__( + width=2*size, + height=size, + max_steps=20*size*size + ) + + def _gen_grid(self, width, height): + # Create an empty grid + self.grid = Grid(width, height) + + # Generate the grid walls + self.grid.wall_rect(0, 0, 2*self.size, self.size) + self.grid.wall_rect(self.size//2, 0, self.size, self.size) + + # Place the agent in the top-left corner + self.place_agent(top=(self.size//2, 0), size=(self.size, self.size)) + + # Add a red door at a random position in the left wall + pos = self._rand_int(1, self.size - 1) + self.red_door = Door("red") + self.grid.set(self.size//2, pos, self.red_door) + + # Add a blue door at a random position in the right wall + pos = self._rand_int(1, self.size - 1) + self.blue_door = Door("blue") + self.grid.set(self.size//2 + self.size - 1, pos, self.blue_door) + + # Generate the mission string + self.mission = "open the red door then the blue door" + + def step(self, action): + red_door_opened_before = self.red_door.is_open + blue_door_opened_before = self.blue_door.is_open + + obs, reward, done, info = MiniGridEnv.step(self, action) + + red_door_opened_after = self.red_door.is_open + blue_door_opened_after = self.blue_door.is_open + + if blue_door_opened_after: + if red_door_opened_before: + reward = self._reward() + done = True + else: + reward = 0 + done = True + + elif red_door_opened_after: + if blue_door_opened_before: + reward = 0 + done = True + + return obs, reward, done, info + +class RedBlueDoorEnv6x6(RedBlueDoorEnv): + def __init__(self): + super().__init__(size=6) + +register( + id='MiniGrid-RedBlueDoors-6x6-v0', + entry_point='gym_minigrid.envs:RedBlueDoorEnv6x6' +) + +register( + id='MiniGrid-RedBlueDoors-8x8-v0', + entry_point='gym_minigrid.envs:RedBlueDoorEnv' +) diff --git a/gym-minigrid/gym_minigrid/envs/unlock.py b/gym-minigrid/gym_minigrid/envs/unlock.py new file mode 100644 index 0000000..9f93a1c --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/unlock.py @@ -0,0 +1,46 @@ +from gym_minigrid.minigrid import Ball +from gym_minigrid.roomgrid import RoomGrid +from gym_minigrid.register import register + +class Unlock(RoomGrid): + """ + Unlock a door + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=8*room_size**2, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + # Make sure the two rooms are directly connected by a locked door + door, _ = self.add_door(0, 0, 0, locked=True) + # Add a key to unlock the door + self.add_object(0, 0, 'key', door.color) + + self.place_agent(0, 0) + + self.door = door + self.mission = "open the door" + + def step(self, action): + obs, reward, done, info = super().step(action) + + if action == self.actions.toggle: + if self.door.is_open: + reward = self._reward() + done = True + + return obs, reward, done, info + +register( + id='MiniGrid-Unlock-v0', + entry_point='gym_minigrid.envs:Unlock' +) diff --git a/gym-minigrid/gym_minigrid/envs/unlockpickup.py b/gym-minigrid/gym_minigrid/envs/unlockpickup.py new file mode 100644 index 0000000..38f54a3 --- /dev/null +++ b/gym-minigrid/gym_minigrid/envs/unlockpickup.py @@ -0,0 +1,48 @@ +from gym_minigrid.minigrid import Ball +from gym_minigrid.roomgrid import RoomGrid +from gym_minigrid.register import register + +class UnlockPickup(RoomGrid): + """ + Unlock a door, then pick up a box in another room + """ + + def __init__(self, seed=None): + room_size = 6 + super().__init__( + num_rows=1, + num_cols=2, + room_size=room_size, + max_steps=8*room_size**2, + seed=seed + ) + + def _gen_grid(self, width, height): + super()._gen_grid(width, height) + + # Add a box to the room on the right + obj, _ = self.add_object(1, 0, kind="box") + # Make sure the two rooms are directly connected by a locked door + door, _ = self.add_door(0, 0, 0, locked=True) + # Add a key to unlock the door + self.add_object(0, 0, 'key', door.color) + + self.place_agent(0, 0) + + self.obj = obj + self.mission = "pick up the %s %s" % (obj.color, obj.type) + + def step(self, action): + obs, reward, done, info = super().step(action) + + if action == self.actions.pickup: + if self.carrying and self.carrying == self.obj: + reward = self._reward() + done = True + + return obs, reward, done, info + +register( + id='MiniGrid-UnlockPickup-v0', + entry_point='gym_minigrid.envs:UnlockPickup' +) diff --git a/gym-minigrid/gym_minigrid/minigrid.py b/gym-minigrid/gym_minigrid/minigrid.py new file mode 100644 index 0000000..b47c5fa --- /dev/null +++ b/gym-minigrid/gym_minigrid/minigrid.py @@ -0,0 +1,1493 @@ +import math +import gym +from enum import IntEnum +import numpy as np +from gym import error, spaces, utils +from gym.utils import seeding +from .rendering import * + +# Size in pixels of a tile in the full-scale human view +TILE_PIXELS = 32 + +# Map of color names to RGB values +COLORS = { + 'red': np.array([255, 0, 0]), + 'green': np.array([0, 255, 0]), + 'blue': np.array([0, 0, 255]), + 'purple': np.array([112, 39, 195]), + 'yellow': np.array([255, 255, 0]), + 'grey': np.array([100, 100, 100]) +} + +COLOR_NAMES = sorted(list(COLORS.keys())) + +# Used to map colors to integers +COLOR_TO_IDX = { + 'red': 0, + 'green': 1, + 'blue': 2, + 'purple': 3, + 'yellow': 4, + 'grey': 5 +} + +IDX_TO_COLOR = dict(zip(COLOR_TO_IDX.values(), COLOR_TO_IDX.keys())) + +# Map of object type to integers +OBJECT_TO_IDX = { + 'unseen': 0, + 'empty': 1, + 'wall': 2, + 'floor': 3, + 'door': 4, + 'key': 5, + 'ball': 6, + 'box': 7, + 'goal': 8, + 'lava': 9, + 'agent': 10, +} + +IDX_TO_OBJECT = dict(zip(OBJECT_TO_IDX.values(), OBJECT_TO_IDX.keys())) + +# Map of state names to integers +STATE_TO_IDX = { + 'open': 0, + 'closed': 1, + 'locked': 2, +} + +# Map of agent direction indices to vectors +DIR_TO_VEC = [ + # Pointing right (positive X) + np.array((1, 0)), + # Down (positive Y) + np.array((0, 1)), + # Pointing left (negative X) + np.array((-1, 0)), + # Up (negative Y) + np.array((0, -1)), +] + + +class WorldObj: + """ + Base class for grid world objects + """ + + def __init__(self, type, color): + assert type in OBJECT_TO_IDX, type + assert color in COLOR_TO_IDX, color + self.type = type + self.color = color + self.contains = None + + # Initial position of the object + self.init_pos = None + + # Current position of the object + self.cur_pos = None + + def can_overlap(self): + """Can the agent overlap with this?""" + return False + + def can_pickup(self): + """Can the agent pick this up?""" + return False + + def can_contain(self): + """Can this contain another object?""" + return False + + def see_behind(self): + """Can the agent see behind this object?""" + return True + + def toggle(self, env, pos): + """Method to trigger/toggle an action this object performs""" + return False + + def encode(self): + """Encode the a description of this object as a 3-tuple of integers""" + return (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], 0) + + @staticmethod + def decode(type_idx, color_idx, state): + """Create an object from a 3-tuple state description""" + + obj_type = IDX_TO_OBJECT[type_idx] + color = IDX_TO_COLOR[color_idx] + + if obj_type == 'empty' or obj_type == 'unseen': + return None + + # State, 0: open, 1: closed, 2: locked + is_open = state == 0 + is_locked = state == 2 + + if obj_type == 'wall': + v = Wall(color) + elif obj_type == 'floor': + v = Floor(color) + elif obj_type == 'ball': + v = Ball(color) + elif obj_type == 'key': + v = Key(color) + elif obj_type == 'box': + v = Box(color) + elif obj_type == 'door': + v = Door(color, is_open, is_locked) + elif obj_type == 'goal': + v = Goal() + elif obj_type == 'lava': + v = Lava() + else: + assert False, "unknown object type in decode '%s'" % objType + + return v + + def render(self, r): + """Draw this object with the given renderer""" + raise NotImplementedError + + +class Goal(WorldObj): + def __init__(self): + super().__init__('goal', 'green') + + def can_overlap(self): + return True + + def render(self, img): + fill_coords(img, point_in_rect(0, 1, 0, 1), COLORS[self.color]) + + +class Floor(WorldObj): + """ + Colored floor tile the agent can walk over + """ + + def __init__(self, color='blue'): + super().__init__('floor', color) + + def can_overlap(self): + return True + + def render(self, r): + # Give the floor a pale color + c = COLORS[self.color] + r.setLineColor(100, 100, 100, 0) + r.setColor(*c / 2) + r.drawPolygon([ + (1, TILE_PIXELS), + (TILE_PIXELS, TILE_PIXELS), + (TILE_PIXELS, 1), + (1, 1) + ]) + + +class Lava(WorldObj): + def __init__(self): + super().__init__('lava', 'red') + + def can_overlap(self): + return True + + def render(self, img): + c = (255, 128, 0) + + # Background color + fill_coords(img, point_in_rect(0, 1, 0, 1), c) + + # Little waves + for i in range(3): + ylo = 0.3 + 0.2 * i + yhi = 0.4 + 0.2 * i + fill_coords(img, point_in_line(0.1, ylo, 0.3, yhi, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.3, yhi, 0.5, ylo, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.5, ylo, 0.7, yhi, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.7, yhi, 0.9, ylo, r=0.03), (0, 0, 0)) + + +class Wall(WorldObj): + def __init__(self, color='grey'): + super().__init__('wall', color) + + def see_behind(self): + return False + + def render(self, img): + fill_coords(img, point_in_rect(0, 1, 0, 1), COLORS[self.color]) + + +class Door(WorldObj): + def __init__(self, color, is_open=False, is_locked=False): + super().__init__('door', color) + self.is_open = is_open + self.is_locked = is_locked + + def can_overlap(self): + """The agent can only walk over this cell when the door is open""" + return self.is_open + + def see_behind(self): + return self.is_open + + def toggle(self, env, pos): + # If the player has the right key to open the door + if self.is_locked: + if isinstance(env.carrying, Key) and env.carrying.color == self.color: + self.is_locked = False + self.is_open = True + return True + return False + + self.is_open = not self.is_open + return True + + def encode(self): + """Encode the a description of this object as a 3-tuple of integers""" + + # State, 0: open, 1: closed, 2: locked + if self.is_open: + state = 0 + elif self.is_locked: + state = 2 + elif not self.is_open: + state = 1 + + return (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], state) + + def render(self, img): + c = COLORS[self.color] + + if self.is_open: + fill_coords(img, point_in_rect(0.88, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.92, 0.96, 0.04, 0.96), (0, 0, 0)) + return + + # Door frame and door + if self.is_locked: + fill_coords(img, point_in_rect(0.00, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.06, 0.94, 0.06, 0.94), 0.45 * np.array(c)) + + # Draw key slot + fill_coords(img, point_in_rect(0.52, 0.75, 0.50, 0.56), c) + else: + fill_coords(img, point_in_rect(0.00, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.04, 0.96, 0.04, 0.96), (0, 0, 0)) + fill_coords(img, point_in_rect(0.08, 0.92, 0.08, 0.92), c) + fill_coords(img, point_in_rect(0.12, 0.88, 0.12, 0.88), (0, 0, 0)) + + # Draw door handle + fill_coords(img, point_in_circle(cx=0.75, cy=0.50, r=0.08), c) + + +class Key(WorldObj): + def __init__(self, color='blue'): + super(Key, self).__init__('key', color) + + def can_pickup(self): + return True + + def render(self, img): + c = COLORS[self.color] + + # Vertical quad + fill_coords(img, point_in_rect(0.50, 0.63, 0.31, 0.88), c) + + # Teeth + fill_coords(img, point_in_rect(0.38, 0.50, 0.59, 0.66), c) + fill_coords(img, point_in_rect(0.38, 0.50, 0.81, 0.88), c) + + # Ring + fill_coords(img, point_in_circle(cx=0.56, cy=0.28, r=0.190), c) + fill_coords(img, point_in_circle(cx=0.56, cy=0.28, r=0.064), (0, 0, 0)) + + +class Ball(WorldObj): + def __init__(self, color='blue'): + super(Ball, self).__init__('ball', color) + + def can_pickup(self): + return True + + def render(self, img): + fill_coords(img, point_in_circle(0.5, 0.5, 0.31), COLORS[self.color]) + + +class Box(WorldObj): + def __init__(self, color, contains=None): + super(Box, self).__init__('box', color) + self.contains = contains + + def can_pickup(self): + return True + + def render(self, img): + c = COLORS[self.color] + + # Outline + fill_coords(img, point_in_rect(0.12, 0.88, 0.12, 0.88), c) + fill_coords(img, point_in_rect(0.18, 0.82, 0.18, 0.82), (0, 0, 0)) + + # Horizontal slit + fill_coords(img, point_in_rect(0.16, 0.84, 0.47, 0.53), c) + + def toggle(self, env, pos): + # Replace the box by its contents + env.grid.set(*pos, self.contains) + return True + + +class Grid: + """ + Represent a grid and operations on it + """ + + # Static cache of pre-renderer tiles + tile_cache = {} + + def __init__(self, width, height): + assert width >= 3 + assert height >= 3 + + self.width = width + self.height = height + + self.grid = [None] * width * height + + def __contains__(self, key): + if isinstance(key, WorldObj): + for e in self.grid: + if e is key: + return True + elif isinstance(key, tuple): + for e in self.grid: + if e is None: + continue + if (e.color, e.type) == key: + return True + if key[0] is None and key[1] == e.type: + return True + return False + + def __eq__(self, other): + grid1 = self.encode() + grid2 = other.encode() + return np.array_equal(grid2, grid1) + + def __ne__(self, other): + return not self == other + + def copy(self): + from copy import deepcopy + return deepcopy(self) + + def set(self, i, j, v): + # assert i >= 0 and i < self.width + # assert j >= 0 and j < self.height + self.grid[j * self.width + i] = v + + def get(self, i, j): + # assert i >= 0 and i < self.width + # assert j >= 0 and j < self.height + return self.grid[j * self.width + i] + + def horz_wall(self, x, y, length=None, obj_type=Wall): + if length is None: + length = self.width - x + for i in range(0, length): + self.set(x + i, y, obj_type()) + + def vert_wall(self, x, y, length=None, obj_type=Wall): + if length is None: + length = self.height - y + for j in range(0, length): + self.set(x, y + j, obj_type()) + + def wall_rect(self, x, y, w, h): + self.horz_wall(x, y, w) + self.horz_wall(x, y + h - 1, w) + self.vert_wall(x, y, h) + self.vert_wall(x + w - 1, y, h) + + def rotate_left(self): + """ + Rotate the grid to the left (counter-clockwise) + """ + + grid = Grid(self.height, self.width) + + for i in range(self.width): + for j in range(self.height): + v = self.get(i, j) + grid.set(j, grid.height - 1 - i, v) + + return grid + + def rotate_left_twice(): + grid = Grid(self.height, self.width) + for i in range(self.width): + for j in range(self.height): + v = self.get(i, j) + + def slice(self, topX, topY, width, height): + """ + Get a subset of the grid + """ + + grid = Grid(width, height) + + for j in range(0, height): + for i in range(0, width): + x = topX + i + y = topY + j + + if x >= 0 and x < self.width and \ + y >= 0 and y < self.height: + v = self.get(x, y) + else: + v = Wall() + + grid.set(i, j, v) + + return grid + + @classmethod + def render_tile( + cls, + obj, + agent_dir=None, + highlight=False, + tile_size=TILE_PIXELS, + subdivs=3 + ): + """ + Render a tile and cache the result + """ + + # Hash map lookup key for the cache + key = (agent_dir, highlight, tile_size) + key = obj.encode() + key if obj else key + + if key in cls.tile_cache: + return cls.tile_cache[key] + + img = np.zeros(shape=(tile_size * subdivs, tile_size * subdivs, 3), dtype=np.uint8) + + # Draw the grid lines (top and left edges) + fill_coords(img, point_in_rect(0, 0.031, 0, 1), (100, 100, 100)) + fill_coords(img, point_in_rect(0, 1, 0, 0.031), (100, 100, 100)) + + if obj != None: + obj.render(img) + + # Overlay the agent on top + if agent_dir is not None: + tri_fn = point_in_triangle( + (0.12, 0.19), + (0.87, 0.50), + (0.12, 0.81), + ) + + # Rotate the agent based on its direction + tri_fn = rotate_fn(tri_fn, cx=0.5, cy=0.5, theta=0.5 * math.pi * agent_dir) + fill_coords(img, tri_fn, (255, 0, 0)) + + # Highlight the cell if needed + if highlight: + highlight_img(img) + + # Downsample the image to perform supersampling/anti-aliasing + img = downsample(img, subdivs) + + # Cache the rendered tile + cls.tile_cache[key] = img + + return img + + def render( + self, + tile_size, + agent_pos=None, + agent_dir=None, + highlight_mask=None + ): + """ + Render this grid at a given scale + :param r: target renderer object + :param tile_size: tile size in pixels + """ + + if highlight_mask is None: + highlight_mask = np.zeros(shape=(self.width, self.height), dtype=np.bool) + + # Compute the total grid size + width_px = self.width * tile_size + height_px = self.height * tile_size + + img = np.zeros(shape=(height_px, width_px, 3), dtype=np.uint8) + + # Render the grid + for j in range(0, self.height): + for i in range(0, self.width): + cell = self.get(i, j) + + agent_here = np.array_equal(agent_pos, (i, j)) + tile_img = Grid.render_tile( + cell, + agent_dir=agent_dir if agent_here else None, + highlight=highlight_mask[i, j], + tile_size=tile_size + ) + + ymin = j * tile_size + ymax = (j + 1) * tile_size + xmin = i * tile_size + xmax = (i + 1) * tile_size + img[ymin:ymax, xmin:xmax, :] = tile_img + + return img + + def encode(self, vis_mask=None): + """ + Produce a compact numpy encoding of the grid + """ + + if vis_mask is None: + vis_mask = np.ones((self.width, self.height), dtype=bool) + + array = np.zeros((self.width, self.height, 3), dtype='uint8') + + for i in range(self.width): + for j in range(self.height): + if vis_mask[i, j]: + v = self.get(i, j) + + if v is None: + array[i, j, 0] = OBJECT_TO_IDX['empty'] + array[i, j, 1] = 0 + array[i, j, 2] = 0 + + else: + array[i, j, :] = v.encode() + + return array + + @staticmethod + def decode(array): + """ + Decode an array grid encoding back into a grid + """ + + width, height, channels = array.shape + assert channels == 3 + + vis_mask = np.ones(shape=(width, height), dtype=np.bool) + + grid = Grid(width, height) + for i in range(width): + for j in range(height): + type_idx, color_idx, state = array[i, j] + v = WorldObj.decode(type_idx, color_idx, state) + grid.set(i, j, v) + vis_mask[i, j] = (type_idx != OBJECT_TO_IDX['unseen']) + + return grid, vis_mask + + def process_vis(grid, agent_pos): + mask = np.zeros(shape=(grid.width, grid.height), dtype=np.bool) + + mask[agent_pos[0], agent_pos[1]] = True + + for j in reversed(range(0, grid.height)): + for i in range(0, grid.width - 1): + if not mask[i, j]: + continue + + cell = grid.get(i, j) + if cell and not cell.see_behind(): + continue + + mask[i + 1, j] = True + if j > 0: + mask[i + 1, j - 1] = True + mask[i, j - 1] = True + + for i in reversed(range(1, grid.width)): + if not mask[i, j]: + continue + + cell = grid.get(i, j) + if cell and not cell.see_behind(): + continue + + mask[i - 1, j] = True + if j > 0: + mask[i - 1, j - 1] = True + mask[i, j - 1] = True + + for j in range(0, grid.height): + for i in range(0, grid.width): + if not mask[i, j]: + grid.set(i, j, None) + + return mask + + +class MiniGridEnv(gym.Env): + """ + 2D grid world game environment + """ + + metadata = { + 'render.modes': ['human', 'rgb_array'], + 'video.frames_per_second': 10 + } + + # Enumeration of possible actions + class Actions(IntEnum): + # Turn left, turn right, move forward + left = 0 + right = 1 + forward = 2 + + # Pick up an object + pickup = 3 + # Drop an object + drop = 4 + # Toggle/activate an object + toggle = 5 + + # Done completing task + done = 6 + + def __init__( + self, + grid_size=None, + width=None, + height=None, + max_steps=100, + see_through_walls=False, + seed=1337, + agent_view_size=7, + language='english' + ): + # Can't set both grid_size and width/height + if grid_size: + assert width == None and height == None + width = grid_size + height = grid_size + + # Action enumeration for this environment + self.actions = MiniGridEnv.Actions + + # Actions are discrete integer values + self.action_space = spaces.Discrete(len(self.actions)) + + # Number of cells (width and height) in the agent view + self.agent_view_size = agent_view_size + + # Observations are dictionaries containing an + # encoding of the grid and a textual 'mission' string + self.observation_space = spaces.Box( + low=0, + high=255, + shape=(self.agent_view_size, self.agent_view_size, 3), + dtype='uint8' + ) + self.observation_space = spaces.Dict({ + 'image': self.observation_space, + 'direction': spaces.Discrete(n=1), + 'mission': spaces.Text(max_length=500) + }) + + # Range of possible rewards + self.reward_range = (0, 1) + + # Window to use for human rendering mode + self.window = None + + # Environment configuration + self.width = width + self.height = height + self.max_steps = max_steps + self.see_through_walls = see_through_walls + + # Language of the descriptions + self.language = language + + # Current position and direction of the agent + self.agent_pos = None + self.agent_dir = None + + # Initialize the RNG + self.seed(seed=seed) + + # Initialize the state + self.reset() + + def reset(self): + # Current position and direction of the agent + self.agent_pos = None + self.agent_dir = None + + # Generate a new random grid at the start of each episode + # To keep the same grid for each episode, call env.seed() with + # the same seed before calling env.reset() + self._gen_grid(self.width, self.height) + + # These fields should be defined by _gen_grid + assert self.agent_pos is not None + assert self.agent_dir is not None + + # Check that the agent doesn't overlap with an object + start_cell = self.grid.get(*self.agent_pos) + assert start_cell is None or start_cell.can_overlap() + + # Item picked up, being carried, initially nothing + self.carrying = None + + # Step count since episode start + self.step_count = 0 + + # Return first observation + obs = self.gen_obs() + ##### APPENDED CODE ##### + info = self.gen_graph(move_forward=None) # add info Episodic Knowledge to minigrid + ##### APPENDED CODE ##### + + return obs, info + + def seed(self, seed=1337): + # Seed the random number generator + self.np_random, _ = seeding.np_random(seed) + return [seed] + + @property + def steps_remaining(self): + return self.max_steps - self.step_count + + def __str__(self): + """ + Produce a pretty string of the environment's grid along with the agent. + A grid cell is represented by 2-character string, the first one for + the object and the second one for the color. + """ + + # Map of object types to short string + OBJECT_TO_STR = { + 'wall': 'W', + 'floor': 'F', + 'door': 'D', + 'key': 'K', + 'ball': 'A', + 'box': 'B', + 'goal': 'G', + 'lava': 'V', + } + + # Short string for opened door + OPENDED_DOOR_IDS = '_' + + # Map agent's direction to short string + AGENT_DIR_TO_STR = { + 0: '>', + 1: 'V', + 2: '<', + 3: '^' + } + + str = '' + + for j in range(self.grid.height): + + for i in range(self.grid.width): + if i == self.agent_pos[0] and j == self.agent_pos[1]: + str += 2 * AGENT_DIR_TO_STR[self.agent_dir] + continue + + c = self.grid.get(i, j) + + if c == None: + str += ' ' + continue + + if c.type == 'door': + if c.is_open: + str += '__' + elif c.is_locked: + str += 'L' + c.color[0].upper() + else: + str += 'D' + c.color[0].upper() + continue + + color_code = c.color[0].upper() if c.color != "grey" else "Q" + str += OBJECT_TO_STR[c.type] + color_code + + if j < self.grid.height - 1: + str += '\n' + + return str + + def _gen_grid(self, width, height): + assert False, "_gen_grid needs to be implemented by each environment" + + def _reward(self): + """ + Compute the reward to be given upon success + """ + + return 1 - 0.9 * (self.step_count / self.max_steps) + + def _rand_int(self, low, high): + """ + Generate random integer in [low,high[ + """ + + return self.np_random.integers(low, high) + + def _rand_float(self, low, high): + """ + Generate random float in [low,high[ + """ + + return self.np_random.uniform(low, high) + + def _rand_bool(self): + """ + Generate random boolean value + """ + + return (self.np_random.integers(0, 2) == 0) + + def _rand_elem(self, iterable): + """ + Pick a random element in a list + """ + + lst = list(iterable) + idx = self._rand_int(0, len(lst)) + return lst[idx] + + def _rand_subset(self, iterable, num_elems): + """ + Sample a random subset of distinct elements of a list + """ + + lst = list(iterable) + assert num_elems <= len(lst) + + out = [] + + while len(out) < num_elems: + elem = self._rand_elem(lst) + lst.remove(elem) + out.append(elem) + + return out + + def _rand_color(self): + """ + Generate a random color name (string) + """ + + return self._rand_elem(COLOR_NAMES) + + def _rand_pos(self, xLow, xHigh, yLow, yHigh): + """ + Generate a random (x,y) position tuple + """ + + return ( + self.np_random.integers(xLow, xHigh), + self.np_random.integers(yLow, yHigh) + ) + + def place_obj(self, + obj, + top=None, + size=None, + reject_fn=None, + max_tries=math.inf + ): + """ + Place an object at an empty position in the grid + + :param top: top-left position of the rectangle where to place + :param size: size of the rectangle where to place + :param reject_fn: function to filter out potential positions + """ + + if top is None: + top = (0, 0) + else: + top = (max(top[0], 0), max(top[1], 0)) + + if size is None: + size = (self.grid.width, self.grid.height) + + num_tries = 0 + + while True: + # This is to handle with rare cases where rejection sampling + # gets stuck in an infinite loop + if num_tries > max_tries: + raise RecursionError('rejection sampling failed in place_obj') + + num_tries += 1 + + pos = np.array(( + self._rand_int(top[0], min(top[0] + size[0], self.grid.width)), + self._rand_int(top[1], min(top[1] + size[1], self.grid.height)) + )) + + # Don't place the object on top of another object + if self.grid.get(*pos) != None: + continue + + # Don't place the object where the agent is + if np.array_equal(pos, self.agent_pos): + continue + + # Check if there is a filtering criterion + if reject_fn and reject_fn(self, pos): + continue + + break + + self.grid.set(*pos, obj) + + if obj is not None: + obj.init_pos = pos + obj.cur_pos = pos + + return pos + + def put_obj(self, obj, i, j): + """ + Put an object at a specific position in the grid + """ + + self.grid.set(i, j, obj) + obj.init_pos = (i, j) + obj.cur_pos = (i, j) + + def place_agent( + self, + top=None, + size=None, + rand_dir=True, + max_tries=math.inf + ): + """ + Set the agent's starting point at an empty position in the grid + """ + + self.agent_pos = None + pos = self.place_obj(None, top, size, max_tries=max_tries) + self.agent_pos = pos + + if rand_dir: + self.agent_dir = self._rand_int(0, 4) + + return pos + + @property + def dir_vec(self): + """ + Get the direction vector for the agent, pointing in the direction + of forward movement. + """ + + assert self.agent_dir >= 0 and self.agent_dir < 4 + return DIR_TO_VEC[self.agent_dir] + + @property + def right_vec(self): + """ + Get the vector pointing to the right of the agent. + """ + + dx, dy = self.dir_vec + return np.array((-dy, dx)) + + @property + def front_pos(self): + """ + Get the position of the cell that is right in front of the agent + """ + + return self.agent_pos + self.dir_vec + + def get_view_coords(self, i, j): + """ + Translate and rotate absolute grid coordinates (i, j) into the + agent's partially observable view (sub-grid). Note that the resulting + coordinates may be negative or outside of the agent's view size. + """ + + ax, ay = self.agent_pos + dx, dy = self.dir_vec + rx, ry = self.right_vec + + # Compute the absolute coordinates of the top-left view corner + sz = self.agent_view_size + hs = self.agent_view_size // 2 + tx = ax + (dx * (sz - 1)) - (rx * hs) + ty = ay + (dy * (sz - 1)) - (ry * hs) + + lx = i - tx + ly = j - ty + + # Project the coordinates of the object relative to the top-left + # corner onto the agent's own coordinate system + vx = (rx * lx + ry * ly) + vy = -(dx * lx + dy * ly) + + return vx, vy + + def get_view_exts(self): + """ + Get the extents of the square set of tiles visible to the agent + Note: the bottom extent indices are not included in the set + """ + + # Facing right + if self.agent_dir == 0: + topX = self.agent_pos[0] + topY = self.agent_pos[1] - self.agent_view_size // 2 + # Facing down + elif self.agent_dir == 1: + topX = self.agent_pos[0] - self.agent_view_size // 2 + topY = self.agent_pos[1] + # Facing left + elif self.agent_dir == 2: + topX = self.agent_pos[0] - self.agent_view_size + 1 + topY = self.agent_pos[1] - self.agent_view_size // 2 + # Facing up + elif self.agent_dir == 3: + topX = self.agent_pos[0] - self.agent_view_size // 2 + topY = self.agent_pos[1] - self.agent_view_size + 1 + else: + assert False, "invalid agent direction" + + botX = topX + self.agent_view_size + botY = topY + self.agent_view_size + + return (topX, topY, botX, botY) + + def relative_coords(self, x, y): + """ + Check if a grid position belongs to the agent's field of view, and returns the corresponding coordinates + """ + + vx, vy = self.get_view_coords(x, y) + + if vx < 0 or vy < 0 or vx >= self.agent_view_size or vy >= self.agent_view_size: + return None + + return vx, vy + + def in_view(self, x, y): + """ + check if a grid position is visible to the agent + """ + + return self.relative_coords(x, y) is not None + + def agent_sees(self, x, y): + """ + Check if a non-empty grid position is visible to the agent + """ + + coordinates = self.relative_coords(x, y) + if coordinates is None: + return False + vx, vy = coordinates + + obs = self.gen_obs() + obs_grid, _ = Grid.decode(obs['image']) + obs_cell = obs_grid.get(vx, vy) + world_cell = self.grid.get(x, y) + + return obs_cell is not None and obs_cell.type == world_cell.type + + def step(self, action): + self.step_count += 1 + + reward = 0 + done = False + + # Get the position in front of the agent + fwd_pos = self.front_pos + + # Get the contents of the cell in front of the agent + fwd_cell = self.grid.get(*fwd_pos) + + # Rotate left + if action == self.actions.left: + self.agent_dir -= 1 + if self.agent_dir < 0: + self.agent_dir += 4 + + # Rotate right + elif action == self.actions.right: + self.agent_dir = (self.agent_dir + 1) % 4 + + # Move forward + elif action == self.actions.forward: + if fwd_cell == None or fwd_cell.can_overlap(): + self.agent_pos = fwd_pos + if fwd_cell != None and fwd_cell.type == 'goal': + done = True + reward = self._reward() + if fwd_cell != None and fwd_cell.type == 'lava': + done = True + + # Pick up an object + elif action == self.actions.pickup: + if fwd_cell and fwd_cell.can_pickup(): + if self.carrying is None: + self.carrying = fwd_cell + self.carrying.cur_pos = np.array([-1, -1]) + self.grid.set(*fwd_pos, None) + + # Drop an object + elif action == self.actions.drop: + if not fwd_cell and self.carrying: + self.grid.set(*fwd_pos, self.carrying) + self.carrying.cur_pos = fwd_pos + self.carrying = None + + # Toggle/activate an object + elif action == self.actions.toggle: + if fwd_cell: + fwd_cell.toggle(self, fwd_pos) + + # Done action (not used by default) + elif action == self.actions.done: + pass + + else: + assert False, "unknown action" + + if self.step_count >= self.max_steps: + done = True + + obs = self.gen_obs() + + ##### APPENDED CODE ##### + move_forward = None + if action == self.actions.forward: + move_forward = False + if np.all(self.agent_pos == fwd_pos): + move_forward = True + + info = self.gen_graph(move_forward=move_forward) # add info about the Episodic Knowledge to the minigrid return + ##### APPENDED CODE ##### + + return obs, reward, done, info + + def gen_obs_grid(self): + """ + Generate the sub-grid observed by the agent. + This method also outputs a visibility mask telling us which grid + cells the agent can actually see. + """ + + topX, topY, botX, botY = self.get_view_exts() + + grid = self.grid.slice(topX, topY, self.agent_view_size, self.agent_view_size) + + for i in range(self.agent_dir + 1): + grid = grid.rotate_left() + + # Process occluders and visibility + # Note that this incurs some performance cost + if not self.see_through_walls: + vis_mask = grid.process_vis(agent_pos=(self.agent_view_size // 2, self.agent_view_size - 1)) + else: + vis_mask = np.ones(shape=(grid.width, grid.height), dtype=np.bool) + + # Make it so the agent sees what it's carrying + # We do this by placing the carried object at the agent's position + # in the agent's partially observable view + agent_pos = grid.width // 2, grid.height - 1 + if self.carrying: + grid.set(*agent_pos, self.carrying) + else: + grid.set(*agent_pos, None) + + return grid, vis_mask + + def gen_obs(self): + """ + Generate the agent's view (partially observable, low-resolution encoding) + """ + + grid, vis_mask = self.gen_obs_grid() + + # Encode the partially observable view into a numpy array + image = grid.encode(vis_mask) + + assert hasattr(self, 'mission'), "environments must define a textual mission string" + + # Observations are dictionaries containing: + # - an image (partially observable view of the environment) + # - the agent's direction/orientation (acting as a compass) + # - a textual mission string (instructions for the agent) + obs = { + 'image': image, + 'direction': self.agent_dir, + 'mission': self.mission + } + + return obs + + def get_obs_render(self, obs, tile_size=TILE_PIXELS // 2): + """ + Render an agent observation for visualization + """ + + grid, vis_mask = Grid.decode(obs) + + # Render the whole grid + img = grid.render( + tile_size, + agent_pos=(self.agent_view_size // 2, self.agent_view_size - 1), + agent_dir=3, + highlight_mask=vis_mask + ) + + return img + + def render(self, mode='human', close=False, highlight=True, tile_size=TILE_PIXELS): + """ + Render the whole-grid human view + """ + + if close: + if self.window: + self.window.close() + return + + if mode == 'human' and not self.window: + import gym_minigrid.window + self.window = gym_minigrid.window.Window('gym_minigrid') + self.window.show(block=False) + + # Compute which cells are visible to the agent + _, vis_mask = self.gen_obs_grid() + + # Compute the world coordinates of the bottom-left corner + # of the agent's view area + f_vec = self.dir_vec + r_vec = self.right_vec + top_left = self.agent_pos + f_vec * (self.agent_view_size - 1) - r_vec * (self.agent_view_size // 2) + + # Mask of which cells to highlight + highlight_mask = np.zeros(shape=(self.width, self.height), dtype=np.bool) + + # For each cell in the visibility mask + for vis_j in range(0, self.agent_view_size): + for vis_i in range(0, self.agent_view_size): + # If this cell is not visible, don't highlight it + if not vis_mask[vis_i, vis_j]: + continue + + # Compute the world coordinates of this cell + abs_i, abs_j = top_left - (f_vec * vis_j) + (r_vec * vis_i) + + if abs_i < 0 or abs_i >= self.width: + continue + if abs_j < 0 or abs_j >= self.height: + continue + + # Mark this cell to be highlighted + highlight_mask[abs_i, abs_j] = True + + # Render the whole grid + img = self.grid.render( + tile_size, + self.agent_pos, + self.agent_dir, + highlight_mask=highlight_mask if highlight else None + ) + + if mode == 'human': + self.window.show_img(img) + self.window.set_caption(self.mission) + + return img + + def gen_graph(self, move_forward=None): + grid, vis_mask = self.gen_obs_grid() + + # Encode the partially observable view into a numpy array + image = grid.encode(vis_mask) + # (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], state) + # State, 0: open, 1: closed, 2: locked + if self.language == 'english': + IDX_TO_STATE = {0: 'open', 1: 'closed', 2: 'locked'} + IDX_TO_COLOR = dict(zip(COLOR_TO_IDX.values(), COLOR_TO_IDX.keys())) + IDX_TO_OBJECT = dict(zip(OBJECT_TO_IDX.values(), OBJECT_TO_IDX.keys())) + + elif self.language == 'french': + IDX_TO_STATE = {0: 'ouverte', 1: 'fermée', 2: 'fermée à clef'} + IDX_TO_COLOR = {0: 'rouge', 1: 'verte', 2: 'bleue', 3: 'violette', 4: 'jaune', 5: 'grise'} + IDX_TO_OBJECT = {0: 'non visible', 1: 'vide', 2: 'mur', 3: 'sol', 4: 'porte', 5: 'clef', + 6: 'balle', 7: 'boîte', 8: 'but', 9: 'lave', 10: 'agent'} + + list_textual_descriptions = [] + + if self.carrying is not None: + # print('carrying') + if self.language == 'english': + list_textual_descriptions.append("You carry a {} {}".format(self.carrying.color, self.carrying.type)) + elif self.language == 'french': + list_textual_descriptions.append("Tu portes une {} {}".format(self.carrying.type, self.carrying.color)) + + # print('A agent position i: {}, j: {}'.format(self.agent_pos[0], self.agent_pos[1])) + agent_pos_vx, agent_pos_vy = self.get_view_coords(self.agent_pos[0], self.agent_pos[1]) + # print('B agent position i: {}, j: {}'.format(agent_pos_vx, agent_pos_vy)) + + view_field_dictionary = dict() + + for i in range(image.shape[0]): + for j in range(image.shape[1]): + if image[i][j][0] != 0 and image[i][j][0] != 1 and image[i][j][0] != 2: + if i not in view_field_dictionary.keys(): + view_field_dictionary[i] = dict() + view_field_dictionary[i][j] = image[i][j] + else: + view_field_dictionary[i][j] = image[i][j] + + # Find the wall if any + # We describe a wall only if there is no objects between the agent and the wall in straight line + + # Find wall in front + j = agent_pos_vy - 1 + object_seen = False + while j >= 0 and not object_seen: + if image[agent_pos_vx][j][0] != 0 and image[agent_pos_vx][j][0] != 1: + if image[agent_pos_vx][j][0] == 2: + if self.language == 'english': + list_textual_descriptions.append( + f"You see a wall {agent_pos_vy - j} step{'s' if agent_pos_vy - j > 1 else ''} forward") + elif self.language == 'french': + list_textual_descriptions.append("Tu vois un mur à {} pas devant".format(agent_pos_vy - j)) + object_seen = True + else: + object_seen = True + j -= 1 + # Find wall left + i = agent_pos_vx - 1 + object_seen = False + while i >= 0 and not object_seen: + if image[i][agent_pos_vy][0] != 0 and image[i][agent_pos_vy][0] != 1: + if image[i][agent_pos_vy][0] == 2: + if self.language == 'english': + list_textual_descriptions.append( + f"You see a wall {agent_pos_vx - i} step{'s' if agent_pos_vx - i > 1 else ''} left") + elif self.language == 'french': + list_textual_descriptions.append("Tu vois un mur à {} pas à gauche".format(agent_pos_vx - i)) + object_seen = True + else: + object_seen = True + i -= 1 + # Find wall right + i = agent_pos_vx + 1 + object_seen = False + while i < image.shape[0] and not object_seen: + if image[i][agent_pos_vy][0] != 0 and image[i][agent_pos_vy][0] != 1: + if image[i][agent_pos_vy][0] == 2: + if self.language == 'english': + list_textual_descriptions.append( + f"You see a wall {i - agent_pos_vx} step{'s' if i - agent_pos_vx > 1 else ''} right") + elif self.language == 'french': + list_textual_descriptions.append("Tu vois un mur à {} pas à droite".format(i - agent_pos_vx)) + object_seen = True + else: + object_seen = True + i += 1 + + # returns the position of seen objects relative to you + for i in view_field_dictionary.keys(): + for j in view_field_dictionary[i].keys(): + if i != agent_pos_vx or j != agent_pos_vy: + object = view_field_dictionary[i][j] + relative_position = dict() + + if i - agent_pos_vx > 0: + if self.language == 'english': + relative_position["x_axis"] = ("right", i - agent_pos_vx) + elif self.language == 'french': + relative_position["x_axis"] = ("à droite", i - agent_pos_vx) + elif i - agent_pos_vx == 0: + if self.language == 'english': + relative_position["x_axis"] = ("face", 0) + elif self.language == 'french': + relative_position["x_axis"] = ("en face", 0) + else: + if self.language == 'english': + relative_position["x_axis"] = ("left", agent_pos_vx - i) + elif self.language == 'french': + relative_position["x_axis"] = ("à gauche", agent_pos_vx - i) + if agent_pos_vy - j > 0: + if self.language == 'english': + relative_position["y_axis"] = ("forward", agent_pos_vy - j) + elif self.language == 'french': + relative_position["y_axis"] = ("devant", agent_pos_vy - j) + elif agent_pos_vy - j == 0: + if self.language == 'english': + relative_position["y_axis"] = ("forward", 0) + elif self.language == 'french': + relative_position["y_axis"] = ("devant", 0) + + distances = [] + if relative_position["x_axis"][0] in ["face", "en face"]: + distances.append((relative_position["y_axis"][1], relative_position["y_axis"][0])) + elif relative_position["y_axis"][1] == 0: + distances.append((relative_position["x_axis"][1], relative_position["x_axis"][0])) + else: + distances.append((relative_position["x_axis"][1], relative_position["x_axis"][0])) + distances.append((relative_position["y_axis"][1], relative_position["y_axis"][0])) + + description = "" + if object[0] != 4: # if it is not a door + if self.language == 'english': + description = f"You see a {IDX_TO_COLOR[object[1]]} {IDX_TO_OBJECT[object[0]]} " + elif self.language == 'french': + description = f"Tu vois une {IDX_TO_OBJECT[object[0]]} {IDX_TO_COLOR[object[1]]} " + + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + if self.language == 'english': + description = f"You see a {IDX_TO_STATE[object[2]]} {IDX_TO_COLOR[object[1]]} {IDX_TO_OBJECT[object[0]]} " + elif self.language == 'french': + description = f"Tu vois une {IDX_TO_OBJECT[object[0]]} {IDX_TO_COLOR[object[1]]} {IDX_TO_STATE[object[2]]} " + + else: + if self.language == 'english': + description = f"You see an {IDX_TO_STATE[object[2]]} {IDX_TO_COLOR[object[1]]} {IDX_TO_OBJECT[object[0]]} " + elif self.language == 'french': + description = f"Tu vois une {IDX_TO_OBJECT[object[0]]} {IDX_TO_COLOR[object[1]]} {IDX_TO_STATE[object[2]]} " + + for _i, _distance in enumerate(distances): + if _i > 0: + if self.language == 'english': + description += " and " + elif self.language == 'french': + description += " et " + + if self.language == 'english': + description += f"{_distance[0]} step{'s' if _distance[0] > 1 else ''} {_distance[1]}" + elif self.language == 'french': + description += f"{_distance[0]} pas {_distance[1]}" + + list_textual_descriptions.append(description) + + return {'descriptions': list_textual_descriptions} diff --git a/gym-minigrid/gym_minigrid/minigrid_old.py b/gym-minigrid/gym_minigrid/minigrid_old.py new file mode 100644 index 0000000..8312175 --- /dev/null +++ b/gym-minigrid/gym_minigrid/minigrid_old.py @@ -0,0 +1,1667 @@ +import math +import gym +from enum import IntEnum +import numpy as np +from gym import error, spaces, utils +from gym.utils import seeding +from .rendering import * + +# Size in pixels of a tile in the full-scale human view +TILE_PIXELS = 32 + +# Map of color names to RGB values +COLORS = { + 'red': np.array([255, 0, 0]), + 'green': np.array([0, 255, 0]), + 'blue': np.array([0, 0, 255]), + 'purple': np.array([112, 39, 195]), + 'yellow': np.array([255, 255, 0]), + 'grey': np.array([100, 100, 100]) +} + +COLOR_NAMES = sorted(list(COLORS.keys())) + +# Used to map colors to integers +COLOR_TO_IDX = { + 'red': 0, + 'green': 1, + 'blue': 2, + 'purple': 3, + 'yellow': 4, + 'grey': 5 +} + +IDX_TO_COLOR = dict(zip(COLOR_TO_IDX.values(), COLOR_TO_IDX.keys())) + +# Map of object type to integers +OBJECT_TO_IDX = { + 'unseen': 0, + 'empty': 1, + 'wall': 2, + 'floor': 3, + 'door': 4, + 'key': 5, + 'ball': 6, + 'box': 7, + 'goal': 8, + 'lava': 9, + 'agent': 10, +} + +IDX_TO_OBJECT = dict(zip(OBJECT_TO_IDX.values(), OBJECT_TO_IDX.keys())) + +# Map of state names to integers +STATE_TO_IDX = { + 'open': 0, + 'closed': 1, + 'locked': 2, +} + +# Map of agent direction indices to vectors +DIR_TO_VEC = [ + # Pointing right (positive X) + np.array((1, 0)), + # Down (positive Y) + np.array((0, 1)), + # Pointing left (negative X) + np.array((-1, 0)), + # Up (negative Y) + np.array((0, -1)), +] + + +class WorldObj: + """ + Base class for grid world objects + """ + + def __init__(self, type, color): + assert type in OBJECT_TO_IDX, type + assert color in COLOR_TO_IDX, color + self.type = type + self.color = color + self.contains = None + + # Initial position of the object + self.init_pos = None + + # Current position of the object + self.cur_pos = None + + def can_overlap(self): + """Can the agent overlap with this?""" + return False + + def can_pickup(self): + """Can the agent pick this up?""" + return False + + def can_contain(self): + """Can this contain another object?""" + return False + + def see_behind(self): + """Can the agent see behind this object?""" + return True + + def toggle(self, env, pos): + """Method to trigger/toggle an action this object performs""" + return False + + def encode(self): + """Encode the a description of this object as a 3-tuple of integers""" + return (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], 0) + + @staticmethod + def decode(type_idx, color_idx, state): + """Create an object from a 3-tuple state description""" + + obj_type = IDX_TO_OBJECT[type_idx] + color = IDX_TO_COLOR[color_idx] + + if obj_type == 'empty' or obj_type == 'unseen': + return None + + # State, 0: open, 1: closed, 2: locked + is_open = state == 0 + is_locked = state == 2 + + if obj_type == 'wall': + v = Wall(color) + elif obj_type == 'floor': + v = Floor(color) + elif obj_type == 'ball': + v = Ball(color) + elif obj_type == 'key': + v = Key(color) + elif obj_type == 'box': + v = Box(color) + elif obj_type == 'door': + v = Door(color, is_open, is_locked) + elif obj_type == 'goal': + v = Goal() + elif obj_type == 'lava': + v = Lava() + else: + assert False, "unknown object type in decode '%s'" % objType + + return v + + def render(self, r): + """Draw this object with the given renderer""" + raise NotImplementedError + + +class Goal(WorldObj): + def __init__(self): + super().__init__('goal', 'green') + + def can_overlap(self): + return True + + def render(self, img): + fill_coords(img, point_in_rect(0, 1, 0, 1), COLORS[self.color]) + + +class Floor(WorldObj): + """ + Colored floor tile the agent can walk over + """ + + def __init__(self, color='blue'): + super().__init__('floor', color) + + def can_overlap(self): + return True + + def render(self, r): + # Give the floor a pale color + c = COLORS[self.color] + r.setLineColor(100, 100, 100, 0) + r.setColor(*c / 2) + r.drawPolygon([ + (1, TILE_PIXELS), + (TILE_PIXELS, TILE_PIXELS), + (TILE_PIXELS, 1), + (1, 1) + ]) + + +class Lava(WorldObj): + def __init__(self): + super().__init__('lava', 'red') + + def can_overlap(self): + return True + + def render(self, img): + c = (255, 128, 0) + + # Background color + fill_coords(img, point_in_rect(0, 1, 0, 1), c) + + # Little waves + for i in range(3): + ylo = 0.3 + 0.2 * i + yhi = 0.4 + 0.2 * i + fill_coords(img, point_in_line(0.1, ylo, 0.3, yhi, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.3, yhi, 0.5, ylo, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.5, ylo, 0.7, yhi, r=0.03), (0, 0, 0)) + fill_coords(img, point_in_line(0.7, yhi, 0.9, ylo, r=0.03), (0, 0, 0)) + + +class Wall(WorldObj): + def __init__(self, color='grey'): + super().__init__('wall', color) + + def see_behind(self): + return False + + def render(self, img): + fill_coords(img, point_in_rect(0, 1, 0, 1), COLORS[self.color]) + + +class Door(WorldObj): + def __init__(self, color, is_open=False, is_locked=False): + super().__init__('door', color) + self.is_open = is_open + self.is_locked = is_locked + + def can_overlap(self): + """The agent can only walk over this cell when the door is open""" + return self.is_open + + def see_behind(self): + return self.is_open + + def toggle(self, env, pos): + # If the player has the right key to open the door + if self.is_locked: + if isinstance(env.carrying, Key) and env.carrying.color == self.color: + self.is_locked = False + self.is_open = True + return True + return False + + self.is_open = not self.is_open + return True + + def encode(self): + """Encode the a description of this object as a 3-tuple of integers""" + + # State, 0: open, 1: closed, 2: locked + if self.is_open: + state = 0 + elif self.is_locked: + state = 2 + elif not self.is_open: + state = 1 + + return (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], state) + + def render(self, img): + c = COLORS[self.color] + + if self.is_open: + fill_coords(img, point_in_rect(0.88, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.92, 0.96, 0.04, 0.96), (0, 0, 0)) + return + + # Door frame and door + if self.is_locked: + fill_coords(img, point_in_rect(0.00, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.06, 0.94, 0.06, 0.94), 0.45 * np.array(c)) + + # Draw key slot + fill_coords(img, point_in_rect(0.52, 0.75, 0.50, 0.56), c) + else: + fill_coords(img, point_in_rect(0.00, 1.00, 0.00, 1.00), c) + fill_coords(img, point_in_rect(0.04, 0.96, 0.04, 0.96), (0, 0, 0)) + fill_coords(img, point_in_rect(0.08, 0.92, 0.08, 0.92), c) + fill_coords(img, point_in_rect(0.12, 0.88, 0.12, 0.88), (0, 0, 0)) + + # Draw door handle + fill_coords(img, point_in_circle(cx=0.75, cy=0.50, r=0.08), c) + + +class Key(WorldObj): + def __init__(self, color='blue'): + super(Key, self).__init__('key', color) + + def can_pickup(self): + return True + + def render(self, img): + c = COLORS[self.color] + + # Vertical quad + fill_coords(img, point_in_rect(0.50, 0.63, 0.31, 0.88), c) + + # Teeth + fill_coords(img, point_in_rect(0.38, 0.50, 0.59, 0.66), c) + fill_coords(img, point_in_rect(0.38, 0.50, 0.81, 0.88), c) + + # Ring + fill_coords(img, point_in_circle(cx=0.56, cy=0.28, r=0.190), c) + fill_coords(img, point_in_circle(cx=0.56, cy=0.28, r=0.064), (0, 0, 0)) + + +class Ball(WorldObj): + def __init__(self, color='blue'): + super(Ball, self).__init__('ball', color) + + def can_pickup(self): + return True + + def render(self, img): + fill_coords(img, point_in_circle(0.5, 0.5, 0.31), COLORS[self.color]) + + +class Box(WorldObj): + def __init__(self, color, contains=None): + super(Box, self).__init__('box', color) + self.contains = contains + + def can_pickup(self): + return True + + def render(self, img): + c = COLORS[self.color] + + # Outline + fill_coords(img, point_in_rect(0.12, 0.88, 0.12, 0.88), c) + fill_coords(img, point_in_rect(0.18, 0.82, 0.18, 0.82), (0, 0, 0)) + + # Horizontal slit + fill_coords(img, point_in_rect(0.16, 0.84, 0.47, 0.53), c) + + def toggle(self, env, pos): + # Replace the box by its contents + env.grid.set(*pos, self.contains) + return True + + +class Grid: + """ + Represent a grid and operations on it + """ + + # Static cache of pre-renderer tiles + tile_cache = {} + + def __init__(self, width, height): + assert width >= 3 + assert height >= 3 + + self.width = width + self.height = height + + self.grid = [None] * width * height + + def __contains__(self, key): + if isinstance(key, WorldObj): + for e in self.grid: + if e is key: + return True + elif isinstance(key, tuple): + for e in self.grid: + if e is None: + continue + if (e.color, e.type) == key: + return True + if key[0] is None and key[1] == e.type: + return True + return False + + def __eq__(self, other): + grid1 = self.encode() + grid2 = other.encode() + return np.array_equal(grid2, grid1) + + def __ne__(self, other): + return not self == other + + def copy(self): + from copy import deepcopy + return deepcopy(self) + + def set(self, i, j, v): + # assert i >= 0 and i < self.width + # assert j >= 0 and j < self.height + self.grid[j * self.width + i] = v + + def get(self, i, j): + # assert i >= 0 and i < self.width + # assert j >= 0 and j < self.height + return self.grid[j * self.width + i] + + def horz_wall(self, x, y, length=None, obj_type=Wall): + if length is None: + length = self.width - x + for i in range(0, length): + self.set(x + i, y, obj_type()) + + def vert_wall(self, x, y, length=None, obj_type=Wall): + if length is None: + length = self.height - y + for j in range(0, length): + self.set(x, y + j, obj_type()) + + def wall_rect(self, x, y, w, h): + self.horz_wall(x, y, w) + self.horz_wall(x, y + h - 1, w) + self.vert_wall(x, y, h) + self.vert_wall(x + w - 1, y, h) + + def rotate_left(self): + """ + Rotate the grid to the left (counter-clockwise) + """ + + grid = Grid(self.height, self.width) + + for i in range(self.width): + for j in range(self.height): + v = self.get(i, j) + grid.set(j, grid.height - 1 - i, v) + + return grid + + def rotate_left_twice(): + grid = Grid(self.height, self.width) + for i in range(self.width): + for j in range(self.height): + v = self.get(i, j) + + def slice(self, topX, topY, width, height): + """ + Get a subset of the grid + """ + + grid = Grid(width, height) + + for j in range(0, height): + for i in range(0, width): + x = topX + i + y = topY + j + + if x >= 0 and x < self.width and \ + y >= 0 and y < self.height: + v = self.get(x, y) + else: + v = Wall() + + grid.set(i, j, v) + + return grid + + @classmethod + def render_tile( + cls, + obj, + agent_dir=None, + highlight=False, + tile_size=TILE_PIXELS, + subdivs=3 + ): + """ + Render a tile and cache the result + """ + + # Hash map lookup key for the cache + key = (agent_dir, highlight, tile_size) + key = obj.encode() + key if obj else key + + if key in cls.tile_cache: + return cls.tile_cache[key] + + img = np.zeros(shape=(tile_size * subdivs, tile_size * subdivs, 3), dtype=np.uint8) + # img = np.ones(shape=(tile_size * subdivs, tile_size * subdivs, 3), dtype=np.uint8) * int(200) + + # Draw the grid lines (top and left edges) + fill_coords(img, point_in_rect(0, 0.031, 0, 1), (100, 100, 100)) + fill_coords(img, point_in_rect(0, 1, 0, 0.031), (100, 100, 100)) + + if obj != None: + obj.render(img) + + # Overlay the agent on top + if agent_dir is not None: + tri_fn = point_in_triangle( + (0.12, 0.19), + (0.87, 0.50), + (0.12, 0.81), + ) + + # Rotate the agent based on its direction + tri_fn = rotate_fn(tri_fn, cx=0.5, cy=0.5, theta=0.5 * math.pi * agent_dir) + fill_coords(img, tri_fn, (255, 0, 0)) + + # Highlight the cell if needed + if highlight: + highlight_img(img) + + # Downsample the image to perform supersampling/anti-aliasing + img = downsample(img, subdivs) + + # Cache the rendered tile + cls.tile_cache[key] = img + + return img + + @classmethod + def render_tile_traj( + cls, + obj, + agent_dir=None, + highlight=False, + tile_size=TILE_PIXELS, + traj_freq=None, + subdivs=3 + ): + """ + Render a tile and cache the result + """ + + value = min(int(255), int(10 * traj_freq + 140)) + # Hash map lookup key for the cache + key = (agent_dir, highlight, tile_size, value) + key = obj.encode() + key if obj else key + + if key in cls.tile_cache: + return cls.tile_cache[key] + + tile = np.array([value, value, 0], dtype=np.uint8) + img = np.tile(tile, reps=(tile_size * subdivs, tile_size * subdivs, 1)) + + # Draw the grid lines (top and left edges) + fill_coords(img, point_in_rect(0, 0.031, 0, 1), (100, 100, 100)) + fill_coords(img, point_in_rect(0, 1, 0, 0.031), (100, 100, 100)) + + if obj != None: + obj.render(img) + + # Overlay the agent on top + if agent_dir is not None: + tri_fn = point_in_triangle( + (0.12, 0.19), + (0.87, 0.50), + (0.12, 0.81), + ) + + # Rotate the agent based on its direction + tri_fn = rotate_fn(tri_fn, cx=0.5, cy=0.5, theta=0.5 * math.pi * agent_dir) + fill_coords(img, tri_fn, (255, 0, 0)) + + # Highlight the cell if needed + if highlight: + highlight_img(img) + + # Downsample the image to perform supersampling/anti-aliasing + img = downsample(img, subdivs) + + # Cache the rendered tile + cls.tile_cache[key] = img + + return img + + def render( + self, + tile_size, + agent_pos=None, + agent_dir=None, + highlight_mask=None + ): + """ + Render this grid at a given scale + :param r: target renderer object + :param tile_size: tile size in pixels + """ + + if highlight_mask is None: + highlight_mask = np.zeros(shape=(self.width, self.height), dtype=np.bool) + + # Compute the total grid size + width_px = self.width * tile_size + height_px = self.height * tile_size + + img = np.zeros(shape=(height_px, width_px, 3), dtype=np.uint8) + + # Render the grid + for j in range(0, self.height): + for i in range(0, self.width): + cell = self.get(i, j) + + agent_here = np.array_equal(agent_pos, (i, j)) + tile_img = Grid.render_tile( + cell, + agent_dir=agent_dir if agent_here else None, + highlight=highlight_mask[i, j], + tile_size=tile_size + ) + + ymin = j * tile_size + ymax = (j + 1) * tile_size + xmin = i * tile_size + xmax = (i + 1) * tile_size + img[ymin:ymax, xmin:xmax, :] = tile_img + + return img + + def render_traj( + self, + tile_size, + agent_pos=None, + agent_dir=None, + traj=None, + highlight_mask=None + ): + """ + Render this grid at a given scale + :param r: target renderer object + :param tile_size: tile size in pixels + """ + + if highlight_mask is None: + highlight_mask = np.zeros(shape=(self.width, self.height), dtype=np.bool) + + # Compute the total grid size + width_px = self.width * tile_size + height_px = self.height * tile_size + + img = np.zeros(shape=(height_px, width_px, 3), dtype=np.uint8) + + # Render the grid + for j in range(0, self.height): + for i in range(0, self.width): + cell = self.get(i, j) + + agent_here = np.array_equal(agent_pos, (i, j)) + if traj[i][j] == 0: + tile_img = Grid.render_tile( + cell, + agent_dir=agent_dir if agent_here else None, + highlight=highlight_mask[i, j], + tile_size=tile_size + ) + else: + tile_img = Grid.render_tile_traj(cell, + agent_dir=agent_dir if agent_here else None, + highlight=highlight_mask[i, j], + traj_freq=traj[i][j], + tile_size=tile_size + ) + + ymin = j * tile_size + ymax = (j + 1) * tile_size + xmin = i * tile_size + xmax = (i + 1) * tile_size + img[ymin:ymax, xmin:xmax, :] = tile_img + + return img + + def encode(self, vis_mask=None): + """ + Produce a compact numpy encoding of the grid + """ + + if vis_mask is None: + vis_mask = np.ones((self.width, self.height), dtype=bool) + + array = np.zeros((self.width, self.height, 3), dtype='uint8') + + for i in range(self.width): + for j in range(self.height): + if vis_mask[i, j]: + v = self.get(i, j) + + if v is None: + array[i, j, 0] = OBJECT_TO_IDX['empty'] + array[i, j, 1] = 0 + array[i, j, 2] = 0 + + else: + array[i, j, :] = v.encode() + + return array + + @staticmethod + def decode(array): + """ + Decode an array grid encoding back into a grid + """ + + width, height, channels = array.shape + assert channels == 3 + + vis_mask = np.ones(shape=(width, height), dtype=np.bool) + + grid = Grid(width, height) + for i in range(width): + for j in range(height): + type_idx, color_idx, state = array[i, j] + v = WorldObj.decode(type_idx, color_idx, state) + grid.set(i, j, v) + vis_mask[i, j] = (type_idx != OBJECT_TO_IDX['unseen']) + + return grid, vis_mask + + def process_vis(grid, agent_pos): + mask = np.zeros(shape=(grid.width, grid.height), dtype=np.bool) + + mask[agent_pos[0], agent_pos[1]] = True + + for j in reversed(range(0, grid.height)): + for i in range(0, grid.width - 1): + if not mask[i, j]: + continue + + cell = grid.get(i, j) + if cell and not cell.see_behind(): + continue + + mask[i + 1, j] = True + if j > 0: + mask[i + 1, j - 1] = True + mask[i, j - 1] = True + + for i in reversed(range(1, grid.width)): + if not mask[i, j]: + continue + + cell = grid.get(i, j) + if cell and not cell.see_behind(): + continue + + mask[i - 1, j] = True + if j > 0: + mask[i - 1, j - 1] = True + mask[i, j - 1] = True + + for j in range(0, grid.height): + for i in range(0, grid.width): + if not mask[i, j]: + grid.set(i, j, None) + + return mask + + +class MiniGridEnv(gym.Env): + """ + 2D grid world game environment + """ + + metadata = { + 'render.modes': ['human', 'rgb_array'], + 'video.frames_per_second': 10 + } + + # Enumeration of possible actions + class Actions(IntEnum): + # Turn left, turn right, move forward + left = 0 + right = 1 + forward = 2 + + # Pick up an object + pickup = 3 + # Drop an object + drop = 4 + # Toggle/activate an object + toggle = 5 + + # Done completing task + done = 6 + + def __init__( + self, + grid_size=None, + width=None, + height=None, + max_steps=100, + see_through_walls=False, + seed=1337, + agent_view_size=7 + ): + # Can't set both grid_size and width/height + if grid_size: + assert width == None and height == None + width = grid_size + height = grid_size + + # Action enumeration for this environment + self.actions = MiniGridEnv.Actions + + # Actions are discrete integer values + self.action_space = spaces.Discrete(len(self.actions)) + + # Number of cells (width and height) in the agent view + self.agent_view_size = agent_view_size + + # Observations are dictionaries containing an + # encoding of the grid and a textual 'mission' string + self.observation_space = spaces.Box( + low=0, + high=255, + shape=(self.agent_view_size, self.agent_view_size, 3), + dtype='uint8' + ) + self.observation_space = spaces.Dict({ + 'image': self.observation_space + }) + + # Range of possible rewards + self.reward_range = (0, 1) + + # Window to use for human rendering mode + self.window = None + + # Environment configuration + self.width = width + self.height = height + self.max_steps = max_steps + self.see_through_walls = see_through_walls + + # Current position and direction of the agent + self.agent_pos = None + self.agent_dir = None + + # Initialize the RNG + self.seed(seed=seed) + + # Initialize the state + self.reset() + + def reset(self): + # Current position and direction of the agent + self.agent_pos = None + self.agent_dir = None + + # Generate a new random grid at the start of each episode + # To keep the same grid for each episode, call env.seed() with + # the same seed before calling env.reset() + self._gen_grid(self.width, self.height) + + # These fields should be defined by _gen_grid + assert self.agent_pos is not None + assert self.agent_dir is not None + + # Check that the agent doesn't overlap with an object + start_cell = self.grid.get(*self.agent_pos) + assert start_cell is None or start_cell.can_overlap() + + # Item picked up, being carried, initially nothing + self.carrying = None + + # Step count since episode start + self.step_count = 0 + + # Return first observation + obs = self.gen_obs() + info = self.gen_graph(move_forward=None) # add info Episodic Knowledge to minigrid + + # print(obs) + + return obs, info + + def seed(self, seed=1337): + # Seed the random number generator + self.np_random, _ = seeding.np_random(seed) + return [seed] + + @property + def steps_remaining(self): + return self.max_steps - self.step_count + + def __str__(self): + """ + Produce a pretty string of the environment's grid along with the agent. + A grid cell is represented by 2-character string, the first one for + the object and the second one for the color. + """ + + # Map of object types to short string + OBJECT_TO_STR = { + 'wall': 'W', + 'floor': 'F', + 'door': 'D', + 'key': 'K', + 'ball': 'A', + 'box': 'B', + 'goal': 'G', + 'lava': 'V', + } + + # Short string for opened door + OPENDED_DOOR_IDS = '_' + + # Map agent's direction to short string + AGENT_DIR_TO_STR = { + 0: '>', + 1: 'V', + 2: '<', + 3: '^' + } + + str = '' + + for j in range(self.grid.height): + + for i in range(self.grid.width): + if i == self.agent_pos[0] and j == self.agent_pos[1]: + str += 2 * AGENT_DIR_TO_STR[self.agent_dir] + continue + + c = self.grid.get(i, j) + + if c == None: + str += ' ' + continue + + if c.type == 'door': + if c.is_open: + str += '__' + elif c.is_locked: + str += 'L' + c.color[0].upper() + else: + str += 'D' + c.color[0].upper() + continue + + color_code = c.color[0].upper() if c.color != "grey" else "Q" + str += OBJECT_TO_STR[c.type] + color_code + + if j < self.grid.height - 1: + str += '\n' + + return str + + def _gen_grid(self, width, height): + assert False, "_gen_grid needs to be implemented by each environment" + + def _reward(self): + """ + Compute the reward to be given upon success + """ + + return 1 - 0.9 * (self.step_count / self.max_steps) + + def _rand_int(self, low, high): + """ + Generate random integer in [low,high[ + """ + + return self.np_random.integers(low, high) + + def _rand_float(self, low, high): + """ + Generate random float in [low,high[ + """ + + return self.np_random.uniform(low, high) + + def _rand_bool(self): + """ + Generate random boolean value + """ + + return (self.np_random.integers(0, 2) == 0) + + def _rand_elem(self, iterable): + """ + Pick a random element in a list + """ + + lst = list(iterable) + idx = self._rand_int(0, len(lst)) + return lst[idx] + + def _rand_subset(self, iterable, num_elems): + """ + Sample a random subset of distinct elements of a list + """ + + lst = list(iterable) + assert num_elems <= len(lst) + + out = [] + + while len(out) < num_elems: + elem = self._rand_elem(lst) + lst.remove(elem) + out.append(elem) + + return out + + def _rand_color(self): + """ + Generate a random color name (string) + """ + + return self._rand_elem(COLOR_NAMES) + + def _rand_pos(self, xLow, xHigh, yLow, yHigh): + """ + Generate a random (x,y) position tuple + """ + + return ( + self.np_random.integers(xLow, xHigh), + self.np_random.integers(yLow, yHigh) + ) + + def place_obj(self, + obj, + top=None, + size=None, + reject_fn=None, + max_tries=math.inf + ): + """ + Place an object at an empty position in the grid + + :param top: top-left position of the rectangle where to place + :param size: size of the rectangle where to place + :param reject_fn: function to filter out potential positions + """ + + if top is None: + top = (0, 0) + else: + top = (max(top[0], 0), max(top[1], 0)) + + if size is None: + size = (self.grid.width, self.grid.height) + + num_tries = 0 + + while True: + # This is to handle with rare cases where rejection sampling + # gets stuck in an infinite loop + if num_tries > max_tries: + raise RecursionError('rejection sampling failed in place_obj') + + num_tries += 1 + + pos = np.array(( + self._rand_int(top[0], min(top[0] + size[0], self.grid.width)), + self._rand_int(top[1], min(top[1] + size[1], self.grid.height)) + )) + + # Don't place the object on top of another object + if self.grid.get(*pos) != None: + continue + + # Don't place the object where the agent is + if np.array_equal(pos, self.agent_pos): + continue + + # Check if there is a filtering criterion + if reject_fn and reject_fn(self, pos): + continue + + break + + self.grid.set(*pos, obj) + + if obj is not None: + obj.init_pos = pos + obj.cur_pos = pos + + return pos + + def put_obj(self, obj, i, j): + """ + Put an object at a specific position in the grid + """ + + self.grid.set(i, j, obj) + obj.init_pos = (i, j) + obj.cur_pos = (i, j) + + def place_agent( + self, + top=None, + size=None, + rand_dir=True, + max_tries=math.inf + ): + """ + Set the agent's starting point at an empty position in the grid + """ + + self.agent_pos = None + pos = self.place_obj(None, top, size, max_tries=max_tries) + self.agent_pos = pos + + if rand_dir: + self.agent_dir = self._rand_int(0, 4) + + return pos + + @property + def dir_vec(self): + """ + Get the direction vector for the agent, pointing in the direction + of forward movement. + """ + + assert self.agent_dir >= 0 and self.agent_dir < 4 + return DIR_TO_VEC[self.agent_dir] + + @property + def right_vec(self): + """ + Get the vector pointing to the right of the agent. + """ + + dx, dy = self.dir_vec + return np.array((-dy, dx)) + + @property + def front_pos(self): + """ + Get the position of the cell that is right in front of the agent + """ + + return self.agent_pos + self.dir_vec + + def get_view_coords(self, i, j): + """ + Translate and rotate absolute grid coordinates (i, j) into the + agent's partially observable view (sub-grid). Note that the resulting + coordinates may be negative or outside of the agent's view size. + """ + + ax, ay = self.agent_pos + dx, dy = self.dir_vec + rx, ry = self.right_vec + + # Compute the absolute coordinates of the top-left view corner + sz = self.agent_view_size + hs = self.agent_view_size // 2 + tx = ax + (dx * (sz - 1)) - (rx * hs) + ty = ay + (dy * (sz - 1)) - (ry * hs) + + lx = i - tx + ly = j - ty + + # Project the coordinates of the object relative to the top-left + # corner onto the agent's own coordinate system + vx = (rx * lx + ry * ly) + vy = -(dx * lx + dy * ly) + + return vx, vy + + def get_view_exts(self): + """ + Get the extents of the square set of tiles visible to the agent + Note: the bottom extent indices are not included in the set + """ + + # Facing right + if self.agent_dir == 0: + topX = self.agent_pos[0] + topY = self.agent_pos[1] - self.agent_view_size // 2 + # Facing down + elif self.agent_dir == 1: + topX = self.agent_pos[0] - self.agent_view_size // 2 + topY = self.agent_pos[1] + # Facing left + elif self.agent_dir == 2: + topX = self.agent_pos[0] - self.agent_view_size + 1 + topY = self.agent_pos[1] - self.agent_view_size // 2 + # Facing up + elif self.agent_dir == 3: + topX = self.agent_pos[0] - self.agent_view_size // 2 + topY = self.agent_pos[1] - self.agent_view_size + 1 + else: + assert False, "invalid agent direction" + + botX = topX + self.agent_view_size + botY = topY + self.agent_view_size + + return (topX, topY, botX, botY) + + def relative_coords(self, x, y): + """ + Check if a grid position belongs to the agent's field of view, and returns the corresponding coordinates + """ + + vx, vy = self.get_view_coords(x, y) + + if vx < 0 or vy < 0 or vx >= self.agent_view_size or vy >= self.agent_view_size: + return None + + return vx, vy + + def in_view(self, x, y): + """ + check if a grid position is visible to the agent + """ + + return self.relative_coords(x, y) is not None + + def agent_sees(self, x, y): + """ + Check if a non-empty grid position is visible to the agent + """ + + coordinates = self.relative_coords(x, y) + if coordinates is None: + return False + vx, vy = coordinates + + obs = self.gen_obs() + obs_grid, _ = Grid.decode(obs['image']) + obs_cell = obs_grid.get(vx, vy) + world_cell = self.grid.get(x, y) + + return obs_cell is not None and obs_cell.type == world_cell.type + + def step(self, action): + self.step_count += 1 + + reward = 0 + done = False + + # Get the position in front of the agent + fwd_pos = self.front_pos + + # Get the contents of the cell in front of the agent + fwd_cell = self.grid.get(*fwd_pos) + + # Rotate left + if action == self.actions.left: + self.agent_dir -= 1 + if self.agent_dir < 0: + self.agent_dir += 4 + + # Rotate right + elif action == self.actions.right: + self.agent_dir = (self.agent_dir + 1) % 4 + + # Move forward + elif action == self.actions.forward: + if fwd_cell == None or fwd_cell.can_overlap(): + self.agent_pos = fwd_pos + if fwd_cell != None and fwd_cell.type == 'goal': + done = True + reward = self._reward() + if fwd_cell != None and fwd_cell.type == 'lava': + done = True + + # Pick up an object + elif action == self.actions.pickup: + if fwd_cell and fwd_cell.can_pickup(): + if self.carrying is None: + self.carrying = fwd_cell + self.carrying.cur_pos = np.array([-1, -1]) + self.grid.set(*fwd_pos, None) + + # Drop an object + elif action == self.actions.drop: + if not fwd_cell and self.carrying: + self.grid.set(*fwd_pos, self.carrying) + self.carrying.cur_pos = fwd_pos + self.carrying = None + + # Toggle/activate an object + elif action == self.actions.toggle: + if fwd_cell: + fwd_cell.toggle(self, fwd_pos) + + # Done action (not used by default) + elif action == self.actions.done: + pass + + else: + assert False, "unknown action" + + if self.step_count >= self.max_steps: + done = True + + obs = self.gen_obs() + + move_forward = None + if action == self.actions.forward: + move_forward = False + if np.all(self.agent_pos == fwd_pos): + move_forward = True + + info = self.gen_graph(move_forward=move_forward) # add info about the Episodic Knowledge to the minigrid return + + return obs, reward, done, info + + def gen_obs_grid(self): + """ + Generate the sub-grid observed by the agent. + This method also outputs a visibility mask telling us which grid + cells the agent can actually see. + """ + + topX, topY, botX, botY = self.get_view_exts() + + grid = self.grid.slice(topX, topY, self.agent_view_size, self.agent_view_size) + + for i in range(self.agent_dir + 1): + grid = grid.rotate_left() + + # Process occluders and visibility + # Note that this incurs some performance cost + if not self.see_through_walls: + vis_mask = grid.process_vis(agent_pos=(self.agent_view_size // 2, self.agent_view_size - 1)) + else: + vis_mask = np.ones(shape=(grid.width, grid.height), dtype=np.bool) + + # Make it so the agent sees what it's carrying + # We do this by placing the carried object at the agent's position + # in the agent's partially observable view + agent_pos = grid.width // 2, grid.height - 1 + if self.carrying: + grid.set(*agent_pos, self.carrying) + else: + grid.set(*agent_pos, None) + + return grid, vis_mask + + def gen_obs(self): + """ + Generate the agent's view (partially observable, low-resolution encoding) + """ + + grid, vis_mask = self.gen_obs_grid() + + # Encode the partially observable view into a numpy array + image = grid.encode(vis_mask) + + assert hasattr(self, 'mission'), "environments must define a textual mission string" + + # Observations are dictionaries containing: + # - an image (partially observable view of the environment) + # - the agent's direction/orientation (acting as a compass) + # - a textual mission string (instructions for the agent) + obs = { + 'image': image, + 'direction': self.agent_dir, + 'mission': self.mission + } + + return obs + + def gen_graph(self, level=3, move_forward=None): + grid, vis_mask = self.gen_obs_grid() + + # Encode the partially observable view into a numpy array + image = grid.encode(vis_mask) + # (OBJECT_TO_IDX[self.type], COLOR_TO_IDX[self.color], state) + # State, 0: open, 1: closed, 2: locked + IDX_TO_STATE = {0: 'open', 1: 'closed', 2: 'locked'} + list_textual_descriptions = [] + + if self.carrying is not None: + print('carrying') + list_textual_descriptions.append("you carry a {} {}".format(self.carrying.color, self.carrying.type)) + if move_forward is not None: # go forward + if not move_forward: + list_textual_descriptions.append("you can't go forward") + + # print('A agent position i: {}, j: {}'.format(self.agent_pos[0], self.agent_pos[1])) + agent_pos_vx, agent_pos_vy = self.get_view_coords(self.agent_pos[0], self.agent_pos[1]) + # print('B agent position i: {}, j: {}'.format(agent_pos_vx, agent_pos_vy)) + + view_field_dictionary = dict() + + for i in range(image.shape[0]): + for j in range(image.shape[1]): + + if image[i][j][0] != 0 and image[i][j][0] != 1 and image[i][j][0] != 2: + if i not in view_field_dictionary.keys(): + view_field_dictionary[i] = dict() + view_field_dictionary[i][j] = image[i][j] + else: + view_field_dictionary[i][j] = image[i][j] + + """# level 0 just return what you see + if level >= 0: + for i in view_field_dictionary.keys(): + for j in view_field_dictionary[i].keys(): + object = view_field_dictionary[i][j] + if object[0] != 4: # if it is not a door + list_textual_descriptions.append( + "You see a {} {}".format(IDX_TO_COLOR[object[1]], IDX_TO_OBJECT[object[0]])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + list_textual_descriptions.append( + "You see a {} {} {}".format(IDX_TO_STATE[object[2]], IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + list_textual_descriptions.append( + "You see an {} {} {}".format(IDX_TO_STATE[object[2]], IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + + # level 1 just return what object you are next to if any + if level >= 1: + if agent_pos_vx - 1 in view_field_dictionary.keys() and agent_pos_vy in view_field_dictionary[ + agent_pos_vx - 1].keys(): + object = view_field_dictionary[agent_pos_vx - 1][agent_pos_vy] + if object[0] != 4: # if it is not a door + list_textual_descriptions.append( + "A {} {} is next to you at your left".format(IDX_TO_COLOR[object[1]], IDX_TO_OBJECT[object[0]])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + list_textual_descriptions.append( + "A {} {} {} is next to you at your left".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + list_textual_descriptions.append( + "An {} {} {} is next to you at your left".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + + if agent_pos_vx + 1 in view_field_dictionary.keys() and agent_pos_vy in view_field_dictionary[ + agent_pos_vx + 1].keys(): + object = view_field_dictionary[agent_pos_vx + 1][agent_pos_vy] + if object[0] != 4: # if it is not a door + list_textual_descriptions.append( + "A {} {} is next to you at your right".format(IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + list_textual_descriptions.append( + "A {} {} {} is next to you at your right".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + list_textual_descriptions.append( + "An {} {} {} is next to you at your right".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + + if agent_pos_vx in view_field_dictionary.keys() and agent_pos_vy - 1 in view_field_dictionary[ + agent_pos_vx].keys(): + object = view_field_dictionary[agent_pos_vx][agent_pos_vy - 1] + if object[0] != 4: # if it is not a door + list_textual_descriptions.append( + "A {} {} is next to you in front of you".format(IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + list_textual_descriptions.append( + "A {} {} {} is next to you in front of you".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + list_textual_descriptions.append( + "An {} {} {} is just in front of you".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + + # level 2 just return what object you face if any + if level >= 2: + if agent_pos_vx in view_field_dictionary.keys(): + if agent_pos_vy - 1 not in view_field_dictionary[ + agent_pos_vx].keys(): # if you are not next to the object (level 1) + count_j = agent_pos_vy - 2 + while count_j >= 0: + print(count_j) + print(view_field_dictionary[agent_pos_vx].keys()) + if count_j in view_field_dictionary[agent_pos_vx].keys(): + object = view_field_dictionary[agent_pos_vx][count_j] + + if object[0] != 4: # if it is not a door + list_textual_descriptions.append( + "You face a {} {}".format(IDX_TO_COLOR[object[1]], IDX_TO_OBJECT[object[0]])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + list_textual_descriptions.append( + "You face a {} {} {}".format(IDX_TO_STATE[object[2]], IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + else: + list_textual_descriptions.append( + "You face an {} {} {}".format(IDX_TO_STATE[object[2]], IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]])) + break + count_j -= 1""" + + # level 3 returns the position of seen objects relative to you + if level >= 3: + for i in view_field_dictionary.keys(): + for j in view_field_dictionary[i].keys(): + if i != agent_pos_vx or j != agent_pos_vy: + object = view_field_dictionary[i][j] + relative_position = dict() + + if i - agent_pos_vx > 0: + relative_position["x_axis"] = ("right", i - agent_pos_vx) + elif i - agent_pos_vx == 0: + relative_position["x_axis"] = ("face", 0) + else: + relative_position["x_axis"] = ("left", agent_pos_vx - i) + + if agent_pos_vy - j > 0: + relative_position["y_axis"] = ("in front", agent_pos_vy - j) + elif agent_pos_vy - j == 0: + relative_position["y_axis"] = ("in front", 0) + + if object[0] != 4: # if it is not a door + if relative_position["x_axis"][0] == "face": + list_textual_descriptions.append( + "A {} {} is {} step {}".format(IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["y_axis"][1], + relative_position["y_axis"][0])) + else: + if relative_position["y_axis"][1] == 0: + list_textual_descriptions.append( + "A {} {} is {} step {}".format(IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["x_axis"][1], + relative_position["x_axis"][0])) + else: + list_textual_descriptions.append( + "A {} {} is {} step {} and {} step {}".format(IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["x_axis"][1], + relative_position["x_axis"][0], + relative_position["y_axis"][1], + relative_position["y_axis"][0])) + else: + if IDX_TO_STATE[object[2]] != 0: # if it is not open + if relative_position["x_axis"][0] == "face": + list_textual_descriptions.append( + "A {} {} {} is {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["y_axis"][1], + relative_position["y_axis"][0])) + else: + if relative_position["y_axis"][1] == 0: + list_textual_descriptions.append( + "A {} {} {} is {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["x_axis"][1], + relative_position["x_axis"][0])) + else: + list_textual_descriptions.append( + "A {} {} {} is {} step {} and {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position[ + "x_axis"][1], + relative_position[ + "x_axis"][0], + relative_position[ + "y_axis"][1], + relative_position[ + "y_axis"][ + 0])) + else: + if relative_position["x_axis"][0] == "face": + list_textual_descriptions.append( + "An {} {} {} is {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["y_axis"][1], + relative_position["y_axis"][0])) + else: + if relative_position["y_axis"][1] == 0: + list_textual_descriptions.append( + "An {} {} {} is {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position["x_axis"][1], + relative_position["x_axis"][0])) + else: + list_textual_descriptions.append( + "An {} {} {} is {} step {} and {} step {}".format(IDX_TO_STATE[object[2]], + IDX_TO_COLOR[object[1]], + IDX_TO_OBJECT[object[0]], + relative_position[ + "x_axis"][1], + relative_position[ + "x_axis"][0], + relative_position[ + "y_axis"][1], + relative_position[ + "y_axis"][ + 0])) + + return list_textual_descriptions + + def get_obs_render(self, obs, tile_size=TILE_PIXELS // 2): + """ + Render an agent observation for visualization + """ + + grid, vis_mask = Grid.decode(obs) + + # Render the whole grid + img = grid.render( + tile_size, + agent_pos=(self.agent_view_size // 2, self.agent_view_size - 1), + agent_dir=3, + highlight_mask=vis_mask + ) + + return img + + def render(self, mode='human', close=False, highlight=True, tile_size=TILE_PIXELS): + """ + Render the whole-grid human view + """ + + if close: + if self.window: + self.window.close() + return + + if mode == 'human' and not self.window: + import gym_minigrid.window + self.window = gym_minigrid.window.Window('gym_minigrid') + self.window.show(block=False) + + # Compute which cells are visible to the agent + _, vis_mask = self.gen_obs_grid() + + # Compute the world coordinates of the bottom-left corner + # of the agent's view area + f_vec = self.dir_vec + r_vec = self.right_vec + top_left = self.agent_pos + f_vec * (self.agent_view_size - 1) - r_vec * (self.agent_view_size // 2) + + # Mask of which cells to highlight + highlight_mask = np.zeros(shape=(self.width, self.height), dtype=np.bool) + + # For each cell in the visibility mask + for vis_j in range(0, self.agent_view_size): + for vis_i in range(0, self.agent_view_size): + # If this cell is not visible, don't highlight it + if not vis_mask[vis_i, vis_j]: + continue + + # Compute the world coordinates of this cell + abs_i, abs_j = top_left - (f_vec * vis_j) + (r_vec * vis_i) + + if abs_i < 0 or abs_i >= self.width: + continue + if abs_j < 0 or abs_j >= self.height: + continue + + # Mark this cell to be highlighted + highlight_mask[abs_i, abs_j] = True + + # Render the whole grid + img = self.grid.render( + tile_size, + self.agent_pos, + self.agent_dir, + highlight_mask=highlight_mask if highlight else None + ) + + if mode == 'human': + self.window.show_img(img) + self.window.set_caption(self.mission) + + return img diff --git a/gym-minigrid/gym_minigrid/register.py b/gym-minigrid/gym_minigrid/register.py new file mode 100644 index 0000000..cd56774 --- /dev/null +++ b/gym-minigrid/gym_minigrid/register.py @@ -0,0 +1,21 @@ +from gym.envs.registration import register as gym_register + +env_list = [] + +def register( + id, + entry_point, + reward_threshold=0.95 +): + assert id.startswith("MiniGrid-") + assert id not in env_list + + # Register the environment with OpenAI gym + gym_register( + id=id, + entry_point=entry_point, + reward_threshold=reward_threshold + ) + + # Add the environment to the set + env_list.append(id) diff --git a/gym-minigrid/gym_minigrid/rendering.py b/gym-minigrid/gym_minigrid/rendering.py new file mode 100644 index 0000000..dd11074 --- /dev/null +++ b/gym-minigrid/gym_minigrid/rendering.py @@ -0,0 +1,118 @@ +import math +import numpy as np + +def downsample(img, factor): + """ + Downsample an image along both dimensions by some factor + """ + + assert img.shape[0] % factor == 0 + assert img.shape[1] % factor == 0 + + img = img.reshape([img.shape[0]//factor, factor, img.shape[1]//factor, factor, 3]) + img = img.mean(axis=3) + img = img.mean(axis=1) + + return img + +def fill_coords(img, fn, color): + """ + Fill pixels of an image with coordinates matching a filter function + """ + + for y in range(img.shape[0]): + for x in range(img.shape[1]): + yf = (y + 0.5) / img.shape[0] + xf = (x + 0.5) / img.shape[1] + if fn(xf, yf): + img[y, x] = color + + return img + +def rotate_fn(fin, cx, cy, theta): + def fout(x, y): + x = x - cx + y = y - cy + + x2 = cx + x * math.cos(-theta) - y * math.sin(-theta) + y2 = cy + y * math.cos(-theta) + x * math.sin(-theta) + + return fin(x2, y2) + + return fout + +def point_in_line(x0, y0, x1, y1, r): + p0 = np.array([x0, y0]) + p1 = np.array([x1, y1]) + dir = p1 - p0 + dist = np.linalg.norm(dir) + dir = dir / dist + + xmin = min(x0, x1) - r + xmax = max(x0, x1) + r + ymin = min(y0, y1) - r + ymax = max(y0, y1) + r + + def fn(x, y): + # Fast, early escape test + if x < xmin or x > xmax or y < ymin or y > ymax: + return False + + q = np.array([x, y]) + pq = q - p0 + + # Closest point on line + a = np.dot(pq, dir) + a = np.clip(a, 0, dist) + p = p0 + a * dir + + dist_to_line = np.linalg.norm(q - p) + return dist_to_line <= r + + return fn + +def point_in_circle(cx, cy, r): + def fn(x, y): + return (x-cx)*(x-cx) + (y-cy)*(y-cy) <= r * r + return fn + +def point_in_rect(xmin, xmax, ymin, ymax): + def fn(x, y): + return x >= xmin and x <= xmax and y >= ymin and y <= ymax + return fn + +def point_in_triangle(a, b, c): + a = np.array(a) + b = np.array(b) + c = np.array(c) + + def fn(x, y): + v0 = c - a + v1 = b - a + v2 = np.array((x, y)) - a + + # Compute dot products + dot00 = np.dot(v0, v0) + dot01 = np.dot(v0, v1) + dot02 = np.dot(v0, v2) + dot11 = np.dot(v1, v1) + dot12 = np.dot(v1, v2) + + # Compute barycentric coordinates + inv_denom = 1 / (dot00 * dot11 - dot01 * dot01) + u = (dot11 * dot02 - dot01 * dot12) * inv_denom + v = (dot00 * dot12 - dot01 * dot02) * inv_denom + + # Check if point is in triangle + return (u >= 0) and (v >= 0) and (u + v) < 1 + + return fn + +def highlight_img(img, color=(255, 255, 255), alpha=0.30): + """ + Add highlighting to an image + """ + + blend_img = img + alpha * (np.array(color, dtype=np.uint8) - img) + blend_img = blend_img.clip(0, 255).astype(np.uint8) + img[:, :, :] = blend_img diff --git a/gym-minigrid/gym_minigrid/roomgrid.py b/gym-minigrid/gym_minigrid/roomgrid.py new file mode 100644 index 0000000..9b0e290 --- /dev/null +++ b/gym-minigrid/gym_minigrid/roomgrid.py @@ -0,0 +1,399 @@ +from .minigrid import * + +def reject_next_to(env, pos): + """ + Function to filter out object positions that are right next to + the agent's starting point + """ + + sx, sy = env.agent_pos + x, y = pos + d = abs(sx - x) + abs(sy - y) + return d < 2 + +class Room: + def __init__( + self, + top, + size + ): + # Top-left corner and size (tuples) + self.top = top + self.size = size + + # List of door objects and door positions + # Order of the doors is right, down, left, up + self.doors = [None] * 4 + self.door_pos = [None] * 4 + + # List of rooms adjacent to this one + # Order of the neighbors is right, down, left, up + self.neighbors = [None] * 4 + + # Indicates if this room is behind a locked door + self.locked = False + + # List of objects contained + self.objs = [] + + def rand_pos(self, env): + topX, topY = self.top + sizeX, sizeY = self.size + return env._randPos( + topX + 1, topX + sizeX - 1, + topY + 1, topY + sizeY - 1 + ) + + def pos_inside(self, x, y): + """ + Check if a position is within the bounds of this room + """ + + topX, topY = self.top + sizeX, sizeY = self.size + + if x < topX or y < topY: + return False + + if x >= topX + sizeX or y >= topY + sizeY: + return False + + return True + +class RoomGrid(MiniGridEnv): + """ + Environment with multiple rooms and random objects. + This is meant to serve as a base class for other environments. + """ + + def __init__( + self, + room_size=7, + num_rows=3, + num_cols=3, + max_steps=100, + seed=0, + language='english' + ): + assert room_size > 0 + assert room_size >= 3 + assert num_rows > 0 + assert num_cols > 0 + self.room_size = room_size + self.num_rows = num_rows + self.num_cols = num_cols + + height = (room_size - 1) * num_rows + 1 + width = (room_size - 1) * num_cols + 1 + + # By default, this environment has no mission + self.mission = '' + + super().__init__( + width=width, + height=height, + max_steps=max_steps, + see_through_walls=False, + seed=seed, + language=language + ) + + def room_from_pos(self, x, y): + """Get the room a given position maps to""" + + assert x >= 0 + assert y >= 0 + + i = x // (self.room_size-1) + j = y // (self.room_size-1) + + assert i < self.num_cols + assert j < self.num_rows + + return self.room_grid[j][i] + + def get_room(self, i, j): + assert i < self.num_cols + assert j < self.num_rows + return self.room_grid[j][i] + + def _gen_grid(self, width, height): + # Create the grid + self.grid = Grid(width, height) + + self.room_grid = [] + + # For each row of rooms + for j in range(0, self.num_rows): + row = [] + + # For each column of rooms + for i in range(0, self.num_cols): + room = Room( + (i * (self.room_size-1), j * (self.room_size-1)), + (self.room_size, self.room_size) + ) + row.append(room) + + # Generate the walls for this room + self.grid.wall_rect(*room.top, *room.size) + + self.room_grid.append(row) + + # For each row of rooms + for j in range(0, self.num_rows): + # For each column of rooms + for i in range(0, self.num_cols): + room = self.room_grid[j][i] + + x_l, y_l = (room.top[0] + 1, room.top[1] + 1) + x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1) + + # Door positions, order is right, down, left, up + if i < self.num_cols - 1: + room.neighbors[0] = self.room_grid[j][i+1] + room.door_pos[0] = (x_m, self._rand_int(y_l, y_m)) + if j < self.num_rows - 1: + room.neighbors[1] = self.room_grid[j+1][i] + room.door_pos[1] = (self._rand_int(x_l, x_m), y_m) + if i > 0: + room.neighbors[2] = self.room_grid[j][i-1] + room.door_pos[2] = room.neighbors[2].door_pos[0] + if j > 0: + room.neighbors[3] = self.room_grid[j-1][i] + room.door_pos[3] = room.neighbors[3].door_pos[1] + + # The agent starts in the middle, facing right + self.agent_pos = ( + (self.num_cols // 2) * (self.room_size-1) + (self.room_size // 2), + (self.num_rows // 2) * (self.room_size-1) + (self.room_size // 2) + ) + self.agent_dir = 0 + + def place_in_room(self, i, j, obj): + """ + Add an existing object to room (i, j) + """ + + room = self.get_room(i, j) + + pos = self.place_obj( + obj, + room.top, + room.size, + reject_fn=reject_next_to, + max_tries=1000 + ) + + room.objs.append(obj) + + return obj, pos + + def add_object(self, i, j, kind=None, color=None): + """ + Add a new object to room (i, j) + """ + + if kind == None: + kind = self._rand_elem(['key', 'ball', 'box']) + + if color == None: + color = self._rand_color() + + # TODO: we probably want to add an Object.make helper function + assert kind in ['key', 'ball', 'box'] + if kind == 'key': + obj = Key(color) + elif kind == 'ball': + obj = Ball(color) + elif kind == 'box': + obj = Box(color) + + return self.place_in_room(i, j, obj) + + def add_door(self, i, j, door_idx=None, color=None, locked=None): + """ + Add a door to a room, connecting it to a neighbor + """ + + room = self.get_room(i, j) + + if door_idx == None: + # Need to make sure that there is a neighbor along this wall + # and that there is not already a door + while True: + door_idx = self._rand_int(0, 4) + if room.neighbors[door_idx] and room.doors[door_idx] is None: + break + + if color == None: + color = self._rand_color() + + if locked is None: + locked = self._rand_bool() + + assert room.doors[door_idx] is None, "door already exists" + + room.locked = locked + door = Door(color, is_locked=locked) + + pos = room.door_pos[door_idx] + self.grid.set(*pos, door) + door.cur_pos = pos + + neighbor = room.neighbors[door_idx] + room.doors[door_idx] = door + neighbor.doors[(door_idx+2) % 4] = door + + return door, pos + + def remove_wall(self, i, j, wall_idx): + """ + Remove a wall between two rooms + """ + + room = self.get_room(i, j) + + assert wall_idx >= 0 and wall_idx < 4 + assert room.doors[wall_idx] is None, "door exists on this wall" + assert room.neighbors[wall_idx], "invalid wall" + + neighbor = room.neighbors[wall_idx] + + tx, ty = room.top + w, h = room.size + + # Ordering of walls is right, down, left, up + if wall_idx == 0: + for i in range(1, h - 1): + self.grid.set(tx + w - 1, ty + i, None) + elif wall_idx == 1: + for i in range(1, w - 1): + self.grid.set(tx + i, ty + h - 1, None) + elif wall_idx == 2: + for i in range(1, h - 1): + self.grid.set(tx, ty + i, None) + elif wall_idx == 3: + for i in range(1, w - 1): + self.grid.set(tx + i, ty, None) + else: + assert False, "invalid wall index" + + # Mark the rooms as connected + room.doors[wall_idx] = True + neighbor.doors[(wall_idx+2) % 4] = True + + def place_agent(self, i=None, j=None, rand_dir=True): + """ + Place the agent in a room + """ + + if i == None: + i = self._rand_int(0, self.num_cols) + if j == None: + j = self._rand_int(0, self.num_rows) + + room = self.room_grid[j][i] + + # Find a position that is not right in front of an object + while True: + super().place_agent(room.top, room.size, rand_dir, max_tries=1000) + front_cell = self.grid.get(*self.front_pos) + if front_cell is None or front_cell.type is 'wall': + break + + return self.agent_pos + + def connect_all(self, door_colors=COLOR_NAMES, max_itrs=5000): + """ + Make sure that all rooms are reachable by the agent from its + starting position + """ + + start_room = self.room_from_pos(*self.agent_pos) + + added_doors = [] + + def find_reach(): + reach = set() + stack = [start_room] + while len(stack) > 0: + room = stack.pop() + if room in reach: + continue + reach.add(room) + for i in range(0, 4): + if room.doors[i]: + stack.append(room.neighbors[i]) + return reach + + num_itrs = 0 + + while True: + # This is to handle rare situations where random sampling produces + # a level that cannot be connected, producing in an infinite loop + if num_itrs > max_itrs: + raise RecursionError('connect_all failed') + num_itrs += 1 + + # If all rooms are reachable, stop + reach = find_reach() + if len(reach) == self.num_rows * self.num_cols: + break + + # Pick a random room and door position + i = self._rand_int(0, self.num_cols) + j = self._rand_int(0, self.num_rows) + k = self._rand_int(0, 4) + room = self.get_room(i, j) + + # If there is already a door there, skip + if not room.door_pos[k] or room.doors[k]: + continue + + if room.locked or room.neighbors[k].locked: + continue + + color = self._rand_elem(door_colors) + door, _ = self.add_door(i, j, k, color, False) + added_doors.append(door) + + return added_doors + + def add_distractors(self, i=None, j=None, num_distractors=10, all_unique=True): + """ + Add random objects that can potentially distract/confuse the agent. + """ + + # Collect a list of existing objects + objs = [] + for row in self.room_grid: + for room in row: + for obj in room.objs: + objs.append((obj.type, obj.color)) + + # List of distractors added + dists = [] + + while len(dists) < num_distractors: + color = self._rand_elem(COLOR_NAMES) + type = self._rand_elem(['key', 'ball', 'box']) + obj = (type, color) + + if all_unique and obj in objs: + continue + + # Add the object to a random room if no room specified + room_i = i + room_j = j + if room_i == None: + room_i = self._rand_int(0, self.num_cols) + if room_j == None: + room_j = self._rand_int(0, self.num_rows) + + dist, pos = self.add_object(room_i, room_j, *obj) + + objs.append(obj) + dists.append(dist) + + return dists diff --git a/gym-minigrid/gym_minigrid/window.py b/gym-minigrid/gym_minigrid/window.py new file mode 100644 index 0000000..d1abb3a --- /dev/null +++ b/gym-minigrid/gym_minigrid/window.py @@ -0,0 +1,90 @@ +import sys +import numpy as np + +# Only ask users to install matplotlib if they actually need it +try: + import matplotlib.pyplot as plt +except: + print('To display the environment in a window, please install matplotlib, eg:') + print('pip3 install --user matplotlib') + sys.exit(-1) + +class Window: + """ + Window to draw a gridworld instance using Matplotlib + """ + + def __init__(self, title): + self.fig = None + + self.imshow_obj = None + + # Create the figure and axes + self.fig, self.ax = plt.subplots() + + # Show the env name in the window title + self.fig.canvas.set_window_title(title) + + # Turn off x/y axis numbering/ticks + self.ax.set_xticks([], []) + self.ax.set_yticks([], []) + + # Flag indicating the window was closed + self.closed = False + + def close_handler(evt): + self.closed = True + + self.fig.canvas.mpl_connect('close_event', close_handler) + + def show_img(self, img): + """ + Show an image or update the image being shown + """ + + # Show the first image of the environment + if self.imshow_obj is None: + self.imshow_obj = self.ax.imshow(img, interpolation='bilinear') + + self.imshow_obj.set_data(img) + self.fig.canvas.draw() + + # Let matplotlib process UI events + # This is needed for interactive mode to work properly + plt.pause(0.001) + + def set_caption(self, text): + """ + Set/update the caption text below the image + """ + + plt.xlabel(text) + + def reg_key_handler(self, key_handler): + """ + Register a keyboard event handler + """ + + # Keyboard handler + self.fig.canvas.mpl_connect('key_press_event', key_handler) + + def show(self, block=True): + """ + Show the window, and start an event loop + """ + + # If not blocking, trigger interactive mode + if not block: + plt.ion() + + # Show the plot + # In non-interative mode, this enters the matplotlib event loop + # In interactive mode, this call does not block + plt.show() + + def close(self): + """ + Close the window + """ + + plt.close() diff --git a/gym-minigrid/gym_minigrid/wrappers.py b/gym-minigrid/gym_minigrid/wrappers.py new file mode 100644 index 0000000..36f2192 --- /dev/null +++ b/gym-minigrid/gym_minigrid/wrappers.py @@ -0,0 +1,377 @@ +import math +import operator +from functools import reduce + +import numpy as np +import gym +from gym import error, spaces, utils +from .minigrid import OBJECT_TO_IDX, COLOR_TO_IDX, STATE_TO_IDX + +class ReseedWrapper(gym.core.Wrapper): + """ + Wrapper to always regenerate an environment with the same set of seeds. + This can be used to force an environment to always keep the same + configuration when reset. + """ + + def __init__(self, env, seeds=[0], seed_idx=0): + self.seeds = list(seeds) + self.seed_idx = seed_idx + super().__init__(env) + + def reset(self, **kwargs): + seed = self.seeds[self.seed_idx] + self.seed_idx = (self.seed_idx + 1) % len(self.seeds) + self.env.seed(seed) + return self.env.reset(**kwargs) + + def step(self, action): + obs, reward, done, info = self.env.step(action) + return obs, reward, done, info + +class ActionBonus(gym.core.Wrapper): + """ + Wrapper which adds an exploration bonus. + This is a reward to encourage exploration of less + visited (state,action) pairs. + """ + + def __init__(self, env): + super().__init__(env) + self.counts = {} + + def step(self, action): + obs, reward, done, info = self.env.step(action) + + env = self.unwrapped + tup = (tuple(env.agent_pos), env.agent_dir, action) + + # Get the count for this (s,a) pair + pre_count = 0 + if tup in self.counts: + pre_count = self.counts[tup] + + # Update the count for this (s,a) pair + new_count = pre_count + 1 + self.counts[tup] = new_count + + bonus = 1 / math.sqrt(new_count) + reward += bonus + + return obs, reward, done, info + + def reset(self, **kwargs): + return self.env.reset(**kwargs) + +class StateBonus(gym.core.Wrapper): + """ + Adds an exploration bonus based on which positions + are visited on the grid. + """ + + def __init__(self, env): + super().__init__(env) + self.counts = {} + + def step(self, action): + obs, reward, done, info = self.env.step(action) + + # Tuple based on which we index the counts + # We use the position after an update + env = self.unwrapped + tup = (tuple(env.agent_pos)) + + # Get the count for this key + pre_count = 0 + if tup in self.counts: + pre_count = self.counts[tup] + + # Update the count for this key + new_count = pre_count + 1 + self.counts[tup] = new_count + + bonus = 1 / math.sqrt(new_count) + reward += bonus + + return obs, reward, done, info + + def reset(self, **kwargs): + return self.env.reset(**kwargs) + +class ImgObsWrapper(gym.core.ObservationWrapper): + """ + Use the image as the only observation output, no language/mission. + """ + + def __init__(self, env): + super().__init__(env) + self.observation_space = env.observation_space.spaces['image'] + + def observation(self, obs): + return obs['image'] + +class OneHotPartialObsWrapper(gym.core.ObservationWrapper): + """ + Wrapper to get a one-hot encoding of a partially observable + agent view as observation. + """ + + def __init__(self, env, tile_size=8): + super().__init__(env) + + self.tile_size = tile_size + + obs_shape = env.observation_space['image'].shape + + # Number of bits per cell + num_bits = len(OBJECT_TO_IDX) + len(COLOR_TO_IDX) + len(STATE_TO_IDX) + + self.observation_space.spaces["image"] = spaces.Box( + low=0, + high=255, + shape=(obs_shape[0], obs_shape[1], num_bits), + dtype='uint8' + ) + + def observation(self, obs): + img = obs['image'] + out = np.zeros(self.observation_space.shape, dtype='uint8') + + for i in range(img.shape[0]): + for j in range(img.shape[1]): + type = img[i, j, 0] + color = img[i, j, 1] + state = img[i, j, 2] + + out[i, j, type] = 1 + out[i, j, len(OBJECT_TO_IDX) + color] = 1 + out[i, j, len(OBJECT_TO_IDX) + len(COLOR_TO_IDX) + state] = 1 + + return { + 'mission': obs['mission'], + 'image': out + } + +class RGBImgObsWrapper(gym.core.ObservationWrapper): + """ + Wrapper to use fully observable RGB image as the only observation output, + no language/mission. This can be used to have the agent to solve the + gridworld in pixel space. + """ + + def __init__(self, env, tile_size=8): + super().__init__(env) + + self.tile_size = tile_size + + self.observation_space.spaces['image'] = spaces.Box( + low=0, + high=255, + shape=(self.env.width*tile_size, self.env.height*tile_size, 3), + dtype='uint8' + ) + + def observation(self, obs): + env = self.unwrapped + + rgb_img = env.render( + mode='rgb_array', + highlight=False, + tile_size=self.tile_size + ) + + return { + 'mission': obs['mission'], + 'image': rgb_img + } + + +class RGBImgPartialObsWrapper(gym.core.ObservationWrapper): + """ + Wrapper to use partially observable RGB image as the only observation output + This can be used to have the agent to solve the gridworld in pixel space. + """ + + def __init__(self, env, tile_size=8): + super().__init__(env) + + self.tile_size = tile_size + + obs_shape = env.observation_space['image'].shape + self.observation_space.spaces['image'] = spaces.Box( + low=0, + high=255, + shape=(obs_shape[0] * tile_size, obs_shape[1] * tile_size, 3), + dtype='uint8' + ) + + def observation(self, obs): + env = self.unwrapped + + rgb_img_partial = env.get_obs_render( + obs['image'], + tile_size=self.tile_size + ) + + return { + 'mission': obs['mission'], + 'image': rgb_img_partial + } + +class FullyObsWrapper(gym.core.ObservationWrapper): + """ + Fully observable gridworld using a compact grid encoding + """ + + def __init__(self, env): + super().__init__(env) + + self.observation_space.spaces["image"] = spaces.Box( + low=0, + high=255, + shape=(self.env.width, self.env.height, 3), # number of cells + dtype='uint8' + ) + + def observation(self, obs): + env = self.unwrapped + full_grid = env.grid.encode() + full_grid[env.agent_pos[0]][env.agent_pos[1]] = np.array([ + OBJECT_TO_IDX['agent'], + COLOR_TO_IDX['red'], + env.agent_dir + ]) + + return { + 'mission': obs['mission'], + 'image': full_grid + } + +class FullyObsImgDirWrapper(FullyObsWrapper): + """ + Fully observable gridworld using a compact grid encoding and direction + """ + + def __init__(self, env): + super().__init__(env) + + def observation(self, obs): + env = self.unwrapped + full_grid = env.grid.encode() + full_grid[env.agent_pos[0]][env.agent_pos[1]] = np.array([ + OBJECT_TO_IDX['agent'], + COLOR_TO_IDX['red'], + env.agent_dir + ]) + + return { + 'mission': obs['mission'], + 'direction': obs['direction'], + 'image': full_grid + } + +class FullyObsImgEgoWrapper(FullyObsWrapper): + """ + Fully observable gridworld using a compact grid encoding and direction + """ + + def __init__(self, env): + super().__init__(env) + + def observation(self, obs): + env = self.unwrapped + full_grid = env.grid.encode() + full_grid[env.agent_pos[0]][env.agent_pos[1]] = np.array([ + OBJECT_TO_IDX['agent'], + COLOR_TO_IDX['red'], + env.agent_dir + ]) + full_grid = np.rot90(full_grid, (obs['direction'] + 1), (1,0)) + full_grid = np.array(full_grid) + return { + 'mission': obs['mission'], + 'direction': obs['direction'], + 'image': full_grid + } + +class FlatObsWrapper(gym.core.ObservationWrapper): + """ + Encode mission strings using a one-hot scheme, + and combine these with observed images into one flat array + """ + + def __init__(self, env, maxStrLen=96): + super().__init__(env) + + self.maxStrLen = maxStrLen + self.numCharCodes = 27 + + imgSpace = env.observation_space.spaces['image'] + imgSize = reduce(operator.mul, imgSpace.shape, 1) + + self.observation_space = spaces.Box( + low=0, + high=255, + shape=(1, imgSize + self.numCharCodes * self.maxStrLen), + dtype='uint8' + ) + + self.cachedStr = None + self.cachedArray = None + + def observation(self, obs): + image = obs['image'] + mission = obs['mission'] + + # Cache the last-encoded mission string + if mission != self.cachedStr: + assert len(mission) <= self.maxStrLen, 'mission string too long ({} chars)'.format(len(mission)) + mission = mission.lower() + + strArray = np.zeros(shape=(self.maxStrLen, self.numCharCodes), dtype='float32') + + for idx, ch in enumerate(mission): + if ch >= 'a' and ch <= 'z': + chNo = ord(ch) - ord('a') + elif ch == ' ': + chNo = ord('z') - ord('a') + 1 + assert chNo < self.numCharCodes, '%s : %d' % (ch, chNo) + strArray[idx, chNo] = 1 + + self.cachedStr = mission + self.cachedArray = strArray + + obs = np.concatenate((image.flatten(), self.cachedArray.flatten())) + + return obs + +class ViewSizeWrapper(gym.core.Wrapper): + """ + Wrapper to customize the agent field of view size. + This cannot be used with fully observable wrappers. + """ + + def __init__(self, env, agent_view_size=7): + super().__init__(env) + + # Override default view size + env.unwrapped.agent_view_size = agent_view_size + + # Compute observation space with specified view size + observation_space = gym.spaces.Box( + low=0, + high=255, + shape=(agent_view_size, agent_view_size, 3), + dtype='uint8' + ) + + # Override the environment's observation space + self.observation_space = spaces.Dict({ + 'image': observation_space + }) + + def reset(self, **kwargs): + return self.env.reset(**kwargs) + + def step(self, action): + return self.env.step(action) \ No newline at end of file diff --git a/gym-minigrid/manual_control.py b/gym-minigrid/manual_control.py new file mode 100755 index 0000000..241338e --- /dev/null +++ b/gym-minigrid/manual_control.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 + +import time +import argparse +import numpy as np +import gym +import gym_minigrid +from gym_minigrid.wrappers import * +from gym_minigrid.window import Window + +def redraw(img): + if not args.agent_view: + img = env.render('rgb_array', tile_size=args.tile_size) + + window.show_img(img) + +def reset(): + if args.seed != -1: + env.seed(args.seed) + + obs = env.reset() + + if hasattr(env, 'mission'): + print('Mission: %s' % env.mission) + window.set_caption(env.mission) + + redraw(obs) + +def step(action): + obs, reward, done, info = env.step(action) + print('step=%s, reward=%.2f' % (env.step_count, reward)) + + if done: + print('done!') + reset() + else: + redraw(obs) + +def key_handler(event): + print('pressed', event.key) + + if event.key == 'escape': + window.close() + return + + if event.key == 'backspace': + reset() + return + + if event.key == 'left': + step(env.actions.left) + return + if event.key == 'right': + step(env.actions.right) + return + if event.key == 'up': + step(env.actions.forward) + return + + # Spacebar + if event.key == ' ': + step(env.actions.toggle) + return + if event.key == 'pageup': + step(env.actions.pickup) + return + if event.key == 'pagedown': + step(env.actions.drop) + return + + if event.key == 'enter': + step(env.actions.done) + return + +parser = argparse.ArgumentParser() +parser.add_argument( + "--env", + help="gym environment to load", + default='MiniGrid-MultiRoom-N6-v0' +) +parser.add_argument( + "--seed", + type=int, + help="random seed to generate the environment with", + default=-1 +) +parser.add_argument( + "--tile_size", + type=int, + help="size at which to render tiles", + default=32 +) +parser.add_argument( + '--agent_view', + default=False, + help="draw the agent sees (partially observable view)", + action='store_true' +) + +args = parser.parse_args() + +env = gym.make(args.env) + +if args.agent_view: + env = RGBImgPartialObsWrapper(env) + env = ImgObsWrapper(env) + +window = Window('gym_minigrid - ' + args.env) +window.reg_key_handler(key_handler) + +reset() + +# Blocking event loop +window.show(block=True) diff --git a/gym-minigrid/run_tests.py b/gym-minigrid/run_tests.py new file mode 100755 index 0000000..262821b --- /dev/null +++ b/gym-minigrid/run_tests.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 + +import random +import numpy as np +import gym +from gym_minigrid.register import env_list +from gym_minigrid.minigrid import Grid, OBJECT_TO_IDX + +# Test specifically importing a specific environment +from gym_minigrid.envs import DoorKeyEnv + +# Test importing wrappers +from gym_minigrid.wrappers import * + +############################################################################## + +print('%d environments registered' % len(env_list)) + +for env_idx, env_name in enumerate(env_list): + print('testing {} ({}/{})'.format(env_name, env_idx+1, len(env_list))) + + # Load the gym environment + env = gym.make(env_name) + env.max_steps = min(env.max_steps, 200) + env.reset() + env.render('rgb_array') + + # Verify that the same seed always produces the same environment + for i in range(0, 5): + seed = 1337 + i + env.seed(seed) + grid1 = env.grid + env.seed(seed) + grid2 = env.grid + assert grid1 == grid2 + + env.reset() + + # Run for a few episodes + num_episodes = 0 + while num_episodes < 5: + # Pick a random action + action = random.randint(0, env.action_space.n - 1) + + obs, reward, done, info = env.step(action) + + # Validate the agent position + assert env.agent_pos[0] < env.width + assert env.agent_pos[1] < env.height + + # Test observation encode/decode roundtrip + img = obs['image'] + grid, vis_mask = Grid.decode(img) + img2 = grid.encode(vis_mask=vis_mask) + assert np.array_equal(img, img2) + + # Test the env to string function + str(env) + + # Check that the reward is within the specified range + assert reward >= env.reward_range[0], reward + assert reward <= env.reward_range[1], reward + + if done: + num_episodes += 1 + env.reset() + + env.render('rgb_array') + + # Test the close method + env.close() + + env = gym.make(env_name) + env = ReseedWrapper(env) + for _ in range(10): + env.reset() + env.step(0) + env.close() + + env = gym.make(env_name) + env = ImgObsWrapper(env) + env.reset() + env.step(0) + env.close() + + # Test the fully observable wrapper + env = gym.make(env_name) + env = FullyObsWrapper(env) + env.reset() + obs, _, _, _ = env.step(0) + assert obs['image'].shape == env.observation_space.spaces['image'].shape + env.close() + + # RGB image observation wrapper + env = gym.make(env_name) + env = RGBImgPartialObsWrapper(env) + env.reset() + obs, _, _, _ = env.step(0) + assert obs['image'].mean() > 0 + env.close() + + env = gym.make(env_name) + env = FlatObsWrapper(env) + env.reset() + env.step(0) + env.close() + + env = gym.make(env_name) + env = ViewSizeWrapper(env, 5) + env.reset() + env.step(0) + env.close() + + # Test the wrappers return proper observation spaces. + wrappers = [ + RGBImgObsWrapper, + RGBImgPartialObsWrapper, + OneHotPartialObsWrapper + ] + for wrapper in wrappers: + env = wrapper(gym.make(env_name)) + obs_space, wrapper_name = env.observation_space, wrapper.__name__ + assert isinstance( + obs_space, spaces.Dict + ), "Observation space for {0} is not a Dict: {1}.".format( + wrapper_name, obs_space + ) + # This should not fail either + ImgObsWrapper(env) + +############################################################################## + +print('testing agent_sees method') +env = gym.make('MiniGrid-DoorKey-6x6-v0') +goal_pos = (env.grid.width - 2, env.grid.height - 2) + +# Test the "in" operator on grid objects +assert ('green', 'goal') in env.grid +assert ('blue', 'key') not in env.grid + +# Test the env.agent_sees() function +env.reset() +for i in range(0, 500): + action = random.randint(0, env.action_space.n - 1) + obs, reward, done, info = env.step(action) + + grid, _ = Grid.decode(obs['image']) + goal_visible = ('green', 'goal') in grid + + agent_sees_goal = env.agent_sees(*goal_pos) + assert agent_sees_goal == goal_visible + if done: + env.reset() diff --git a/gym-minigrid/setup.py b/gym-minigrid/setup.py new file mode 100644 index 0000000..d7570f7 --- /dev/null +++ b/gym-minigrid/setup.py @@ -0,0 +1,14 @@ +from setuptools import setup + +setup( + name='gym_minigrid', + version='1.0.1', + keywords='memory, environment, agent, rl, openaigym, openai-gym, gym', + url='https://github.com/maximecb/gym-minigrid', + description='Minimalistic gridworld package for OpenAI Gym', + packages=['gym_minigrid', 'gym_minigrid.envs'], + install_requires=[ + 'gym>=0.9.6', + 'numpy>=1.15.0' + ] +) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..841a3fb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,20 @@ +sentencepiece>=0.1.91 +tensorboard==2.7.0 +tensorboard-data-server==0.6.1 +tensorboard-plugin-wit==1.8.0 +tensorboardX==1.8 +torch>1.8.1 +protobuf==3.20.* +pyyaml +transformers +accelerate +scipy +openai +matplotlib +colorama +termcolor +imageio +wandb +ipython +tqdm==4.64.0 +datasets diff --git a/scripts/train_ppo_baseline.sh b/scripts/train_ppo_baseline.sh new file mode 100755 index 0000000..f670907 --- /dev/null +++ b/scripts/train_ppo_baseline.sh @@ -0,0 +1,18 @@ +#!/bin/sh +export BABYAI_STORAGE='storage' +export DLP_STORAGE='storage' +#export PYTHONPATH=$PYTHONPATH:/gpfswork/rech/imi/uez56by/code/DLP/babyai +#export PYTHONPATH=$PYTHONPATH:/gpfswork/rech/imi/uez56by/code/DLP/gym-minigrid +eval "$(conda shell.bash hook)" +conda activate dlp +python babyai/scripts/train_rl.py \ +--arch expert_filmcnn \ +--env $1 \ +--hrl vanilla \ +--log-interval 1 --save-interval 15 --val-interval 15 --val-episodes 128 \ +--procs 64 --frames-per-proc 40 --recurrence 20 \ +--seed $4 \ +--number-actions $3 \ +--frames 400000 \ +--model $2-nbr_actions-$3-PPO-NoPre-$4 \ +#--wb diff --git a/v0.13.2/accelerate-0.13.2/.github/ISSUE_TEMPLATE/bug-report.yml b/v0.13.2/accelerate-0.13.2/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..3ed39ac --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,58 @@ +name: "\U0001F41B Bug Report" +description: Submit a bug report to help us improve Accelerate +body: + - type: textarea + id: system-info + attributes: + label: System Info + description: Please share your accelerate configuration with us. You can run the command `accelerate env` and copy-paste its outputs below + render: Shell + placeholder: accelerate version, OS, python version, numpy version, torch version, and accelerate's configuration + validations: + required: true + + - type: checkboxes + id: information-scripts-examples + attributes: + label: Information + description: 'The problem arises when using:' + options: + - label: "The official example scripts" + - label: "My own modified scripts" + + - type: checkboxes + id: information-tasks + attributes: + label: Tasks + description: "The tasks I am working on are:" + options: + - label: "One of the scripts in the examples/ folder of Accelerate or an officially supported `no_trainer` script in the `examples` folder of the `transformers` repo (such as `run_no_trainer_glue.py`)" + - label: "My own task or dataset (give details below)" + + - type: textarea + id: reproduction + validations: + required: true + attributes: + label: Reproduction + description: | + Please provide a code sample that reproduces the problem you ran into. It can be a Colab link or just a code snippet. + If you have code snippets, error messages, stack traces please provide them here as well. + Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting + Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code. + + placeholder: | + Steps to reproduce the behavior: + + 1. + 2. + 3. + + - type: textarea + id: expected-behavior + validations: + required: true + attributes: + label: Expected behavior + description: "A clear and concise description of what you would expect to happen." + render: Shell diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/build-docker-images-release.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/build-docker-images-release.yml new file mode 100644 index 0000000..654259f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/build-docker-images-release.yml @@ -0,0 +1,64 @@ +name: Build Docker images (releases) + +on: + workflow_dispatch: + release: + types: [published] + +concurrency: + group: docker-image-builds + cancel-in-progress: false + +jobs: + get-version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.step1.outputs.version }} + steps: + - uses: actions/checkout@v3 + - id: step1 + run: echo "::set-output name=version::$(python setup.py --version)" + + version-cpu: + name: "Latest Accelerate CPU [version]" + runs-on: ubuntu-latest + needs: get-version + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Check out code + uses: actions/checkout@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and Push CPU + uses: docker/build-push-action@v2 + with: + context: ./docker/accelerate-cpu + push: true + tags: huggingface/accelerate-cpu:${{needs.get-version.outputs.version}} + + version-cuda: + name: "Latest Accelerate GPU [version]" + runs-on: ubuntu-latest + needs: get-version + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Check out code + uses: actions/checkout@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and Push GPU + uses: docker/build-push-action@v2 + with: + context: ./docker/accelerate-gpu + push: true + tags: huggingface/accelerate-gpu:${{needs.get-version.outputs.version}} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/build_and_run_tests.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/build_and_run_tests.yml new file mode 100644 index 0000000..abf9f38 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/build_and_run_tests.yml @@ -0,0 +1,45 @@ +name: Trigger docker images and run tests + +on: + push: + branches: + - main + workflow_dispatch: + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + check-for-source: + runs-on: ubuntu-latest + name: Check if setup was changed + outputs: + changed: ${{ steps.was_changed.outputs.changed }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: "2" + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v22.2 + + - name: Was setup changed + id: was_changed + run: | + for file in ${{ steps.changed-files.outputs.all_changed_files }}; do + if [ `basename "${file}"` == "setup.py" ]; then + echo ::set-output name=changed::"1" + fi + done + + build-docker-containers: + needs: check-for-source + if: (github.event_name == 'push') && (needs.check-for-source.outputs.changed == '1') + uses: ./.github/workflows/build_docker_images.yml + secrets: inherit + + run-merge-tests: + needs: build-docker-containers + if: always() + uses: ./.github/workflows/run_merge_tests.yml \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/build_docker_images.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/build_docker_images.yml new file mode 100644 index 0000000..c207f55 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/build_docker_images.yml @@ -0,0 +1,54 @@ +name: Build Docker images (scheduled) + +on: + workflow_dispatch: + workflow_call: + schedule: + - cron: "0 1 * * *" + +concurrency: + group: docker-image-builds + cancel-in-progress: false + +jobs: + latest-cpu: + name: "Latest Accelerate CPU [dev]" + runs-on: ubuntu-latest + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Check out code + uses: actions/checkout@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and Push CPU + uses: docker/build-push-action@v2 + with: + context: ./docker/accelerate-cpu + push: true + tags: huggingface/accelerate-cpu + + latest-cuda: + name: "Latest Accelerate GPU [dev]" + runs-on: ubuntu-latest + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Check out code + uses: actions/checkout@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and Push GPU + uses: docker/build-push-action@v2 + with: + context: ./docker/accelerate-gpu + push: true + tags: huggingface/accelerate-gpu \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/build_documentation.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/build_documentation.yml new file mode 100644 index 0000000..082ece2 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/build_documentation.yml @@ -0,0 +1,17 @@ +name: Build documentation + +on: + push: + branches: + - main + - doc-builder* + - v*-release + +jobs: + build: + uses: huggingface/doc-builder/.github/workflows/build_main_documentation.yml@main + with: + commit_sha: ${{ github.sha }} + package: accelerate + secrets: + token: ${{ secrets.HUGGINGFACE_PUSH }} diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/build_pr_documentation.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/build_pr_documentation.yml new file mode 100644 index 0000000..dc56751 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/build_pr_documentation.yml @@ -0,0 +1,16 @@ +name: Build PR Documentation + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + build: + uses: huggingface/doc-builder/.github/workflows/build_pr_documentation.yml@main + with: + commit_sha: ${{ github.event.pull_request.head.sha }} + pr_number: ${{ github.event.number }} + package: accelerate diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/delete_doc_comment.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/delete_doc_comment.yml new file mode 100644 index 0000000..da61d21 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/delete_doc_comment.yml @@ -0,0 +1,13 @@ +name: Delete dev documentation + +on: + pull_request: + types: [ closed ] + + +jobs: + delete: + uses: huggingface/doc-builder/.github/workflows/delete_doc_comment.yml@main + with: + pr_number: ${{ github.event.number }} + package: accelerate diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/nightly.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/nightly.yml new file mode 100644 index 0000000..277a81d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/nightly.yml @@ -0,0 +1,88 @@ +name: Self-hosted runner with slow tests (scheduled) + +on: + workflow_dispatch: + schedule: + - cron: "0 2 * * *" + +env: + RUN_SLOW: "yes" + IS_GITHUB_CI: "1" + +jobs: + run_all_tests_single_gpu: + runs-on: [self-hosted, docker-gpu, multi-gpu] + env: + CUDA_VISIBLE_DEVICES: "0" + container: + image: huggingface/accelerate-gpu:latest + options: --gpus all --shm-size "16gb" + defaults: + run: + working-directory: accelerate/ + shell: bash + steps: + - name: Update clone & pip install + run: | + source activate accelerate + git config --global --add safe.directory '*' + git fetch && git checkout ${{ github.sha }} + pip install -e . --no-deps + pip install pytest-reportlog + + - name: Run test on GPUs + run: | + source activate accelerate + make test + - name: Run examples on GPUs + run: | + source activate accelerate + pip uninstall comet_ml -y + make test_examples + + - name: Generate Report + if: always() + run: | + python utils/log_reports.py >> $GITHUB_STEP_SUMMARY + + run_all_tests_multi_gpu: + runs-on: [self-hosted, docker-gpu, multi-gpu] + env: + CUDA_VISIBLE_DEVICES: "0,1" + container: + image: huggingface/accelerate-gpu:latest + options: --gpus all --shm-size "16gb" + defaults: + run: + working-directory: accelerate/ + shell: bash + steps: + - name: Update clone + run: | + source activate accelerate + git config --global --add safe.directory '*' + git fetch && git checkout ${{ github.sha }} + pip install -e . --no-deps + pip install pytest-reportlog + + - name: Run core and big modeling tests on GPUs + run: | + source activate accelerate + make test_big_modeling + make test_core + + - name: Run Integration tests on GPUs + run: | + source activate accelerate + make test_integrations + + - name: Run examples on GPUs + run: | + source activate accelerate + pip uninstall comet_ml -y + make test_examples + + - name: Generate Report + if: always() + run: | + python utils/log_reports.py >> $GITHUB_STEP_SUMMARY \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/quality.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/quality.yml new file mode 100644 index 0000000..5d4707b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/quality.yml @@ -0,0 +1,17 @@ +name: Quality Check + +on: [pull_request] + +jobs: + quality: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.7 + uses: actions/setup-python@v3 + with: + python-version: 3.7 + - name: Install Python dependencies + run: pip install -e .[quality] + - name: Run Quality check + run: make quality \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/run_merge_tests.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/run_merge_tests.yml new file mode 100644 index 0000000..a794cd7 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/run_merge_tests.yml @@ -0,0 +1,79 @@ +name: Self-hosted runner tests (push to "main") + +on: + workflow_call: + workflow_dispatch: + +env: + TESTING_MOCKED_DATALOADERS: "1" + IS_GITHUB_CI: "1" + +jobs: + run_all_tests_single_gpu: + runs-on: [self-hosted, docker-gpu, multi-gpu] + env: + CUDA_VISIBLE_DEVICES: "0" + container: + image: huggingface/accelerate-gpu:latest + options: --gpus all --shm-size "16gb" + defaults: + run: + working-directory: accelerate/ + shell: bash + steps: + - name: Update clone & pip install + run: | + source activate accelerate + git config --global --add safe.directory '*' + git fetch && git checkout ${{ github.sha }} + pip install -e .[testing,test_trackers] + pip install pytest-reportlog + + - name: Run test on GPUs + run: | + source activate accelerate + make test + - name: Run examples on GPUs + run: | + source activate accelerate + pip uninstall comet_ml -y + make test_examples + + - name: Generate Report + if: always() + run: | + python utils/log_reports.py >> $GITHUB_STEP_SUMMARY + + run_all_tests_multi_gpu: + runs-on: [self-hosted, docker-gpu, multi-gpu] + container: + image: huggingface/accelerate-gpu:latest + options: --gpus all --shm-size "16gb" + defaults: + run: + working-directory: accelerate/ + shell: bash + steps: + - name: Update clone + run: | + source activate accelerate + git config --global --add safe.directory '*' + git fetch && git checkout ${{ github.sha }} + pip install -e .[testing,test_trackers] + pip install pytest-reportlog + + - name: Run test on GPUs + run: | + source activate accelerate + make test + + - name: Run examples on GPUs + run: | + source activate accelerate + pip uninstall comet_ml -y + make test_examples + + - name: Generate Report + if: always() + run: | + python utils/log_reports.py >> $GITHUB_STEP_SUMMARY \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/stale.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/stale.yml new file mode 100644 index 0000000..c98ce0b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/stale.yml @@ -0,0 +1,28 @@ +name: Stale Bot + +on: + schedule: + - cron: "0 15 * * *" + workflow_dispatch: + +jobs: + close_stale_issues: + name: Close Stale Issues + if: github.repository == 'huggingface/accelerate' + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.7 + + - name: Install requirements + run: | + pip install PyGithub + - name: Close stale issues + run: | + python utils/stale.py \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.github/workflows/test.yml b/v0.13.2/accelerate-0.13.2/.github/workflows/test.yml new file mode 100644 index 0000000..593eec7 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.github/workflows/test.yml @@ -0,0 +1,70 @@ +name: Run Tests + +on: + pull_request: + paths: + - "src/**" + - "tests/**" + - ".github/**" + - "examples/**" + - "setup.py" + types: [opened, synchronize, reopened] + +env: + HF_HOME: ~/hf_cache + TESTING_MOCKED_DATALOADERS: "1" + IS_GITHUB_CI: "1" + +jobs: + run-tests: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + pytorch-version: [ + latest, + minimum + ] + test-kind: [ + test_prod, + test_core, + test_big_modeling, + test_deepspeed, + test_fsdp, + test_example_differences, + test_checkpoint_step, + test_checkpoint_epoch, + test_rest + ] + steps: + - uses: actions/checkout@v3 + - name: Set up python 3.7 + uses: actions/setup-python@v3 + with: + python-version: 3.7 + + - name: Activate python cache + uses: actions/cache@v3 + with: + path: | + ${{ env.pythonLocation }} + ${{ env.HF_HOME }} + key: ${{ env.pythonLocation }}-${{ matrix.test-kind }}-${{ hashFiles('setup.py') }} + + - name: Install the library + run: | + pip install --upgrade pip + if [[ ${{ matrix.test-kind }} = test_prod ]]; then pip install -e .[test_prod]; fi + if [[ ${{ matrix.test-kind }} != test_prod ]]; then pip install -e .[testing,test_trackers]; fi + if [[ ${{ matrix.test-kind }} = test_rest ]]; then pip uninstall comet_ml -y; fi + if [[ ${{ matrix.pytorch-version }} = minimum ]]; then pip install torch==1.6.0; fi + pip install pytest-reportlog + + - name: Run Tests + run: | + make ${{ matrix.test-kind }} + + - name: Generate Report + if: always() + run: | + python utils/log_reports.py >> $GITHUB_STEP_SUMMARY \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/.gitignore b/v0.13.2/accelerate-0.13.2/.gitignore new file mode 100644 index 0000000..da99824 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/.gitignore @@ -0,0 +1,141 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# VSCode +.vscode + +# IntelliJ +.idea + +# Mac .DS_Store +.DS_Store + +# More test things +wandb \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/CODE_OF_CONDUCT.md b/v0.13.2/accelerate-0.13.2/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c8ad966 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/CODE_OF_CONDUCT.md @@ -0,0 +1,129 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +feedback@huggingface.co. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/v0.13.2/accelerate-0.13.2/CONTRIBUTING.md b/v0.13.2/accelerate-0.13.2/CONTRIBUTING.md new file mode 100644 index 0000000..fcc7d9b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/CONTRIBUTING.md @@ -0,0 +1,235 @@ + + +# How to contribute to 🤗 Accelerate? + +Everyone is welcome to contribute, and we value everybody's contribution. Code +is thus not the only way to help the community. Answering questions, helping +others, reaching out and improving the documentations are immensely valuable to +the community. + +It also helps us if you spread the word: reference the library from blog posts +on the awesome projects it made possible, shout out on Twitter every time it has +helped you, or simply star the repo to say "thank you". + +Whichever way you choose to contribute, please be mindful to respect our +[code of conduct](https://github.com/huggingface/accelerate/blob/main/CODE_OF_CONDUCT.md). + +## You can contribute in so many ways! + +Some of the ways you can contribute to Accelerate: +* Fixing outstanding issues with the existing code; +* Contributing to the examples or to the documentation; +* Submitting issues related to bugs or desired new features. + +## Submitting a new issue or feature request + +Do your best to follow these guidelines when submitting an issue or a feature +request. It will make it easier for us to come back to you quickly and with good +feedback. + +### Did you find a bug? + +The 🤗 Accelerate library is robust and reliable thanks to the users who notify us of +the problems they encounter. So thank you for reporting an issue. + +First, we would really appreciate it if you could **make sure the bug was not +already reported** (use the search bar on Github under Issues). + +Did not find it? :( So we can act quickly on it, please follow these steps: + +* Include your **OS type and version**, the versions of **Python** and **PyTorch**. +* A short, self-contained, code snippet that allows us to reproduce the bug in + less than 30s; +* Provide the with your Accelerate configuration (located by default in `~/.cache/huggingface/accelerate/default_config.yaml`) + +### Do you want a new feature? + +A good feature request addresses the following points: + +1. Motivation first: +* Is it related to a problem/frustration with the library? If so, please explain + why. Providing a code snippet that demonstrates the problem is best. +* Is it related to something you would need for a project? We'd love to hear + about it! +* Is it something you worked on and think could benefit the community? + Awesome! Tell us what problem it solved for you. +2. Write a *full paragraph* describing the feature; +3. Provide a **code snippet** that demonstrates its future use; +4. In case this is related to a paper, please attach a link; +5. Attach any additional information (drawings, screenshots, etc.) you think may help. + +If your issue is well written we're already 80% of the way there by the time you +post it. + +## Submitting a pull request (PR) + +Before writing code, we strongly advise you to search through the existing PRs or +issues to make sure that nobody is already working on the same thing. If you are +unsure, it is always a good idea to open an issue to get some feedback. + +You will need basic `git` proficiency to be able to contribute to +🤗 Accelerate. `git` is not the easiest tool to use but it has the greatest +manual. Type `git --help` in a shell and enjoy. If you prefer books, [Pro +Git](https://git-scm.com/book/en/v2) is a very good reference. + +Follow these steps to start contributing: + +1. Fork the [repository](https://github.com/huggingface/accelerate) by + clicking on the 'Fork' button on the repository's page. This creates a copy of the code + under your GitHub user account. + +2. Clone your fork to your local disk, and add the base repository as a remote. The following command + assumes you have your public SSH key uploaded to GitHub. See the following guide for more + [information](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). + + ```bash + $ git clone git@github.com:/accelerate.git + $ cd accelerate + $ git remote add upstream https://github.com/huggingface/accelerate.git + ``` + +3. Create a new branch to hold your development changes, and do this for every new PR you work on. + + Start by synchronizing your `main` branch with the `upstream/main` branch (ore details in the [GitHub Docs](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/syncing-a-fork)): + + ```bash + $ git checkout main + $ git fetch upstream + $ git merge upstream/main + ``` + + Once your `main` branch is synchronized, create a new branch from it: + + ```bash + $ git checkout -b a-descriptive-name-for-my-changes + ``` + + **Do not** work on the `main` branch. + +4. Set up a development environment by running the following command in a conda or a virtual environment you've created for working on this library: + + ```bash + $ pip install -e ".[quality]" + ``` + + (If accelerate was already installed in the virtual environment, remove + it with `pip uninstall accelerate` before reinstalling it in editable + mode with the `-e` flag.) + +5. Develop the features on your branch. + + As you work on the features, you should make sure that the test suite + passes. You should run the tests impacted by your changes like this (see + below an explanation regarding the environment variable): + + ```bash + $ pytest tests/.py + ``` + + > For the following commands leveraging the `make` utility, we recommend using the WSL system when running on + > Windows. More information [here](https://docs.microsoft.com/en-us/windows/wsl/about). + + You can also run the full suite with the following command. + + ```bash + $ make test + ``` + + `accelerate` relies on `black` and `isort` to format its source code + consistently. After you make changes, apply automatic style corrections and code verifications + that can't be automated in one go with: + + This target is also optimized to only work with files modified by the PR you're working on. + + If you prefer to run the checks one after the other, the following command apply the + style corrections: + + ```bash + $ make style + ``` + + `accelerate` also uses `flake8` and a few custom scripts to check for coding mistakes. Quality + control runs in CI, however you can also run the same checks with: + + ```bash + $ make quality + ``` + + Once you're happy with your changes, add changed files using `git add` and + make a commit with `git commit` to record your changes locally: + + ```bash + $ git add modified_file.py + $ git commit + ``` + + Please write [good commit messages](https://chris.beams.io/posts/git-commit/). + + It is a good idea to sync your copy of the code with the original + repository regularly. This way you can quickly account for changes: + + ```bash + $ git fetch upstream + $ git rebase upstream/main + ``` + + Push the changes to your account using: + + ```bash + $ git push -u origin a-descriptive-name-for-my-changes + ``` + +6. Once you are satisfied (**and the checklist below is happy too**), go to the + webpage of your fork on GitHub. Click on 'Pull request' to send your changes + to the project maintainers for review. + +7. It's ok if maintainers ask you for changes. It happens to core contributors + too! So everyone can see the changes in the Pull request, work in your local + branch and push the changes to your fork. They will automatically appear in + the pull request. + + +### Checklist + +1. The title of your pull request should be a summary of its contribution; +2. If your pull request addresses an issue, please mention the issue number in + the pull request description to make sure they are linked (and people + consulting the issue know you are working on it); +3. To indicate a work in progress please prefix the title with `[WIP]`, or mark + the PR as a draft PR. These are useful to avoid duplicated work, and to differentiate + it from PRs ready to be merged; +4. Make sure existing tests pass; +5. Add high-coverage tests. No quality testing = no merge. + +See an example of a good PR here: https://github.com/huggingface/accelerate/pull/255 + +### Tests + +An extensive test suite is included to test the library behavior and several examples. Library tests can be found in +the [tests folder](https://github.com/huggingface/accelerate/tree/main/tests). + +We use `pytest` in order to run the tests. From the root of the +repository, here's how to run tests with `pytest` for the library: + +```bash +$ python -m pytest -sv ./tests +``` + +In fact, that's how `make test` is implemented (sans the `pip install` line)! + +You can specify a smaller set of tests in order to test only the feature +you're working on. \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/LICENSE b/v0.13.2/accelerate-0.13.2/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/v0.13.2/accelerate-0.13.2/Makefile b/v0.13.2/accelerate-0.13.2/Makefile new file mode 100644 index 0000000..52c594a --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/Makefile @@ -0,0 +1,64 @@ +.PHONY: quality style test docs + +check_dirs := tests src examples benchmarks + +# Check that source code meets quality standards + +extra_quality_checks: + python utils/check_copies.py + python utils/check_dummies.py + python utils/check_repo.py + python utils/style_doc.py src/accelerate docs/source --max_len 119 + +# this target runs checks on all files +quality: + black --check $(check_dirs) + isort --check-only $(check_dirs) + flake8 $(check_dirs) + python utils/style_doc.py src/accelerate docs/source --max_len 119 --check_only + +# Format source code automatically and check is there are any problems left that need manual fixing +style: + black $(check_dirs) + isort $(check_dirs) + python utils/style_doc.py src/accelerate docs/source --max_len 119 + +# Run tests for the library +test: + python -m pytest -s -v ./tests/ --ignore=./tests/test_examples.py $(if $(IS_GITHUB_CI),--report-log 'all.log',) + +test_big_modeling: + python -m pytest -s -v ./tests/test_big_modeling.py $(if $(IS_GITHUB_CI),--report-log 'big_modeling.log',) + +test_core: + python -m pytest -s -v ./tests/ --ignore=./tests/test_examples.py --ignore=./tests/deepspeed --ignore=./tests/test_big_modeling.py \ + --ignore=./tests/fsdp $(if $(IS_GITHUB_CI),--report-log 'core.log',) + +test_deepspeed: + python -m pytest -s -v ./tests/deepspeed $(if $(IS_GITHUB_CI),--report-log 'deepspeed.log',) + +test_fsdp: + python -m pytest -s -v ./tests/fsdp $(if $(IS_GITHUB_CI),--report-log 'fsdp.log',) + +test_examples: + python -m pytest -s -v ./tests/test_examples.py $(if $(IS_GITHUB_CI),--report-log 'examples.log',) + +# Broken down example tests for the CI runners +test_integrations: + python -m pytest -s -v ./tests/deepspeed ./tests/fsdp $(if $(IS_GITHUB_CI),--report-log 'integrations.log',) + +test_example_differences: + python -m pytest -s -v ./tests/test_examples.py::ExampleDifferenceTests $(if $(IS_GITHUB_CI),--report-log 'example_diff.log',) + +test_checkpoint_epoch: + python -m pytest -s -v ./tests/test_examples.py::FeatureExamplesTests -k "by_epoch" $(if $(IS_GITHUB_CI),--report-log 'checkpoint_epoch.log',) + +test_checkpoint_step: + python -m pytest -s -v ./tests/test_examples.py::FeatureExamplesTests -k "by_step" $(if $(IS_GITHUB_CI),--report-log 'checkpoint_step.log',) + +# Same as test but used to install only the base dependencies +test_prod: + $(MAKE) test_core + +test_rest: + python -m pytest -s -v ./tests/test_examples.py::FeatureExamplesTests -k "not by_step and not by_epoch" $(if $(IS_GITHUB_CI),--report-log 'rest.log',) diff --git a/v0.13.2/accelerate-0.13.2/README.md b/v0.13.2/accelerate-0.13.2/README.md new file mode 100644 index 0000000..deddf29 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/README.md @@ -0,0 +1,258 @@ + + +

      +
      + +
      +

      + +

      + + + License + + + Documentation + + + GitHub release + + + Contributor Covenant + +

      + +

      +

      Run your *raw* PyTorch training script on any kind of device +

      + +

      + +

      + +## Easy to integrate + +🤗 Accelerate was created for PyTorch users who like to write the training loop of PyTorch models but are reluctant to write and maintain the boilerplate code needed to use multi-GPUs/TPU/fp16. + +🤗 Accelerate abstracts exactly and only the boilerplate code related to multi-GPUs/TPU/fp16 and leaves the rest of your code unchanged. + +Here is an example: + +```diff + import torch + import torch.nn.functional as F + from datasets import load_dataset ++ from accelerate import Accelerator + ++ accelerator = Accelerator() +- device = 'cpu' ++ device = accelerator.device + + model = torch.nn.Transformer().to(device) + optimizer = torch.optim.Adam(model.parameters()) + + dataset = load_dataset('my_dataset') + data = torch.utils.data.DataLoader(dataset, shuffle=True) + ++ model, optimizer, data = accelerator.prepare(model, optimizer, data) + + model.train() + for epoch in range(10): + for source, targets in data: + source = source.to(device) + targets = targets.to(device) + + optimizer.zero_grad() + + output = model(source) + loss = F.cross_entropy(output, targets) + +- loss.backward() ++ accelerator.backward(loss) + + optimizer.step() +``` + +As you can see in this example, by adding 5-lines to any standard PyTorch training script you can now run on any kind of single or distributed node setting (single CPU, single GPU, multi-GPUs and TPUs) as well as with or without mixed precision (fp16). + +In particular, the same code can then be run without modification on your local machine for debugging or your training environment. + +🤗 Accelerate even handles the device placement for you (which requires a few more changes to your code, but is safer in general), so you can even simplify your training loop further: + +```diff + import torch + import torch.nn.functional as F + from datasets import load_dataset ++ from accelerate import Accelerator + +- device = 'cpu' ++ accelerator = Accelerator() + +- model = torch.nn.Transformer().to(device) ++ model = torch.nn.Transformer() + optimizer = torch.optim.Adam(model.parameters()) + + dataset = load_dataset('my_dataset') + data = torch.utils.data.DataLoader(dataset, shuffle=True) + ++ model, optimizer, data = accelerator.prepare(model, optimizer, data) + + model.train() + for epoch in range(10): + for source, targets in data: +- source = source.to(device) +- targets = targets.to(device) + + optimizer.zero_grad() + + output = model(source) + loss = F.cross_entropy(output, targets) + +- loss.backward() ++ accelerator.backward(loss) + + optimizer.step() +``` + +Want to learn more? Check out the [documentation](https://huggingface.co/docs/accelerate) or have look at our [examples](https://github.com/huggingface/accelerate/tree/main/examples). + +## Launching script + +🤗 Accelerate also provides an optional CLI tool that allows you to quickly configure and test your training environment before launching the scripts. No need to remember how to use `torch.distributed.launch` or to write a specific launcher for TPU training! +On your machine(s) just run: + +```bash +accelerate config +``` + +and answer the questions asked. This will generate a config file that will be used automatically to properly set the default options when doing + +```bash +accelerate launch my_script.py --args_to_my_script +``` + +For instance, here is how you would run the GLUE example on the MRPC task (from the root of the repo): + +```bash +accelerate launch examples/nlp_example.py +``` + +This CLI tool is **optional**, and you can still use `python my_script.py` or `python -m torch.distributed.launch my_script.py` at your convenance. + +## Launching multi-CPU run using MPI + +🤗 Here is another way to launch multi-CPU run using MPI. You can learn how to install Open MPI on [this page](https://www.open-mpi.org/faq/?category=building#easy-build). You can use Intel MPI or MVAPICH as well. +Once you have MPI setup on your cluster, just run: + +```bash +mpirun -np 2 python examples/nlp_example.py +``` + +## Launching training using DeepSpeed + +🤗 Accelerate supports training on single/multiple GPUs using DeepSpeed. To use it, you don't need to change anything in your training code; you can set everything using just `accelerate config`. However, if you desire to tweak your DeepSpeed related args from your python script, we provide you the `DeepSpeedPlugin`. + +```python +from accelerator import Accelerator, DeepSpeedPlugin + +# deepspeed needs to know your gradient accumulation steps before hand, so don't forget to pass it +# Remember you still need to do gradient accumulation by yourself, just like you would have done without deepspeed +deepspeed_plugin = DeepSpeedPlugin(zero_stage=2, gradient_accumulation_steps=2) +accelerator = Accelerator(fp16=True, deepspeed_plugin=deepspeed_plugin) + +# How to save your 🤗 Transformer? +accelerator.wait_for_everyone() +unwrapped_model = accelerator.unwrap_model(model) +unwrapped_model.save_pretrained(save_dir, save_function=accelerator.save, state_dict=accelerator.get_state_dict(model)) +``` + +Note: DeepSpeed support is experimental for now. In case you get into some problem, please open an issue. + +## Launching your training from a notebook + +🤗 Accelerate also provides a `notebook_launcher` function you can use in a notebook to launch a distributed training. This is especially useful for Colab or Kaggle notebooks with a TPU backend. Just define your training loop in a `training_function` then in your last cell, add: + +```python +from accelerate import notebook_launcher + +notebook_launcher(training_function) +``` + +An example can be found in [this notebook](https://github.com/huggingface/notebooks/blob/main/examples/accelerate_examples/simple_nlp_example.ipynb). [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/accelerate_examples/simple_nlp_example.ipynb) + +## Why should I use 🤗 Accelerate? + +You should use 🤗 Accelerate when you want to easily run your training scripts in a distributed environment without having to renounce full control over your training loop. This is not a high-level framework above PyTorch, just a thin wrapper so you don't have to learn a new library, In fact the whole API of 🤗 Accelerate is in one class, the `Accelerator` object. + +## Why shouldn't I use 🤗 Accelerate? + +You shouldn't use 🤗 Accelerate if you don't want to write a training loop yourself. There are plenty of high-level libraries above PyTorch that will offer you that, 🤗 Accelerate is not one of them. + +## Frameworks using 🤗 Accelerate + +If you like the simplicity of 🤗 Accelerate but would prefer a higher-level abstraction around your training loop, some frameworks that are built on top of 🤗 Accelerate are listed below: + +* [Animus](https://github.com/Scitator/animus) is a minimalistic framework to run machine learning experiments. Animus highlights common "breakpoints" in ML experiments and provides a unified interface for them within [IExperiment](https://github.com/Scitator/animus/blob/main/animus/core.py#L76). +* [Catalyst](https://github.com/catalyst-team/catalyst#getting-started) is a PyTorch framework for Deep Learning Research and Development. It focuses on reproducibility, rapid experimentation, and codebase reuse so you can create something new rather than write yet another train loop. Catalyst provides a [Runner](https://catalyst-team.github.io/catalyst/api/core.html#runner) to connect all parts of the experiment: hardware backend, data transformations, model train, and inference logic. +* [fastai](https://github.com/fastai/fastai#installing) is a PyTorch framework for Deep Learning that simplifies training fast and accurate neural nets using modern best practices. fastai provides a [Learner](https://docs.fast.ai/learner.html#Learner) to handle the training, fine-tuning, and inference of deep learning algorithms. +* [Kornia](https://kornia.readthedocs.io/en/latest/get-started/introduction.html) is a differentiable library that allows classical computer vision to be integrated into deep learning models. Kornia provides a [Trainer](https://kornia.readthedocs.io/en/latest/x.html#kornia.x.Trainer) with the specific purpose to train and fine-tune the supported deep learning algorithms within the library. +* [pytorch-accelerated](https://github.com/Chris-hughes10/pytorch-accelerated) is a lightweight training library, with a streamlined feature set centred around a general-purpose [Trainer](https://pytorch-accelerated.readthedocs.io/en/latest/trainer.html), that places a huge emphasis on simplicity and transparency; enabling users to understand exactly what is going on under the hood, but without having to write and maintain the boilerplate themselves! + + +## Installation + +This repository is tested on Python 3.6+ and PyTorch 1.4.0+ + +You should install 🤗 Accelerate in a [virtual environment](https://docs.python.org/3/library/venv.html). If you're unfamiliar with Python virtual environments, check out the [user guide](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/). + +First, create a virtual environment with the version of Python you're going to use and activate it. + +Then, you will need to install PyTorch: refer to the [official installation page](https://pytorch.org/get-started/locally/#start-locally) regarding the specific install command for your platform. Then 🤗 Accelerate can be installed using pip as follows: + +```bash +pip install accelerate +``` + +## Supported integrations + +- CPU only +- multi-CPU on one node (machine) +- multi-CPU on several nodes (machines) +- single GPU +- multi-GPU on one node (machine) +- multi-GPU on several nodes (machines) +- TPU +- FP16 with native AMP (apex on the roadmap) +- DeepSpeed support (Experimental) +- PyTorch Fully Sharded Data Parallel (FSDP) support (Experimental) + +## Citing 🤗 Accelerate + +If you use 🤗 Accelerate in your publication, please cite it by using the following BibTeX entry. + +```bibtex +@Misc{accelerate, + title = {Accelerate: Training and inference at scale made simple, efficient and adaptable.}, + author = {Sylvain Gugger, Lysandre Debut, Thomas Wolf, Philipp Schmid, Zachary Mueller, Sourab Mangrulkar}, + howpublished = {\url{https://github.com/huggingface/accelerate}}, + year = {2022} +} +``` diff --git a/v0.13.2/accelerate-0.13.2/benchmarks/README.md b/v0.13.2/accelerate-0.13.2/benchmarks/README.md new file mode 100644 index 0000000..243e9df --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/benchmarks/README.md @@ -0,0 +1,46 @@ +# Big model inference benchmarks + +Running inference with Accelerate on big models. + +## Setup + +These benchmarks use the `transformers` library: + +```bash +pip install transformers +``` + +To reproduce or test a new setup, run + +```py +python inference_acc.py model_name +``` + +This script supports `gpt-j-6b`, `gpt-neox`, `opt` (30B version) and `T0pp` out of the box, but you can specify any valid checkpoint for `model_name`. + +To force a different `torch_dtype` than the one in the config: `--torch_dtype xxx`. + +If you get an error linked to disk offload, you need to add the option `--disk-offload` + +## Results + +On a setup with two Titan RTXs (24GB of RAM) and 32GB of RAM, we get the following benchmarks (T0pp does not run in float16, which is why it's not included). + +| Model | Model load time | Generation time | dtype | GPU 0 use | GPU 1 use | CPU use | Disk offload | +|:-----:|:---------------:|:---------------:|:-----:|:---------:|:---------:|:-------:|:------------:| +| GPT-J-6B | 8.7s | 0.05s per token | float16 | 11.7GB | 0GB | 0GB | no | +| GPT-J-6B | 12.4s | 0.06s per token | float32 | 21.9GB | 1.5GB | 0GB | no | +| GPT-Neo-X-20B | 30.9s | 0.08s per token | float16 | 21.5GB | 18GB | 0GB | no | +| GPT-Neo-X-20B | 78.2s | 10.72s per token | float32 | 20.3GB | 22.7 GB | 24.4GB | yes | +| T0pp (11B) | 29.4s | 0.05s per token | float32 | 21.1GB | 21.3GB | 0GB | no | +| OPT-30B | 34.5s | 2.37s per token | float16 | 20.7GB | 22.3GB | 14.1GB | no | +| OPT-30B | 112.3s | 33.9s per token | float32 | 20.2GB | 21.2GB | 23.5GB | yes | + +Note on the results: +- using two GPUs instead of one does not slow down generation +- using CPU offload slows down a bit (see OPT-30b) +- using disk offload slows down a lot (need to implement prefetching) + +You will also note that Accelerate does not use anymore GPU and CPU RAM than necessary: +- peak GPU memory is exactly the size of the model put on a given GPU +- peak CPU memory is either the size of the biggest checkpoint shard or the part of the model offloaded on CPU, whichever is bigger. \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/benchmarks/big_model_inference.py b/v0.13.2/accelerate-0.13.2/benchmarks/big_model_inference.py new file mode 100644 index 0000000..cb832d1 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/benchmarks/big_model_inference.py @@ -0,0 +1,143 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import time + +import torch + +import transformers +from accelerate.utils import compute_module_sizes +from measures_util import end_measure, log_measures, start_measure +from transformers import AutoConfig, AutoModelForCausalLM, AutoModelForSeq2SeqLM, AutoTokenizer + + +DEFAULT_MODELS = { + "gpt-j-6b": {"is_causal": True, "model": "sgugger/sharded-gpt-j-6B", "tokenizer": "EleutherAI/gpt-j-6B"}, + "gpt-neox": {"is_causal": True, "model": "EleutherAI/gpt-neox-20b"}, + "opt": {"is_causal": True, "model": "facebook/opt-30b"}, + "T0pp": {"is_causal": False, "model": "bigscience/T0pp", "model_revision": "sharded"}, +} + +PROMPTS = [ + "Hello, my name is", + "Are unicorns real? Unicorns are", + "For the first time in several years,", + "My name is Julien and I am", + "The goal of life is", + "Whenever I'm sad, I like to", +] + + +def parse_args(): + parser = argparse.ArgumentParser(description="Run and time generations on a big model using Accelerate.") + parser.add_argument("model_name", type=str, default=None, help="The name of the model to try.") + parser.add_argument( + "--tokenizer_name", type=str, default=None, help="The name of the tokenizer (if different from the model." + ) + parser.add_argument("--is_causal", type=bool, default=None, help="Whether or not the model is causal.") + parser.add_argument( + "--model_revision", type=str, default=None, help="The revision to use for the model checkpoint." + ) + parser.add_argument("--torch_dtype", type=str, default=None, help="The dtype for the model.") + parser.add_argument("--disk_offload", action="store_true") + + args = parser.parse_args() + + # Sanitize args + if args.model_name in DEFAULT_MODELS: + defaults = DEFAULT_MODELS[args.model_name] + args.model_name = defaults["model"] + if args.tokenizer_name is None: + args.tokenizer_name = defaults.get("tokenizer", args.model_name) + if args.is_causal is None: + args.is_causal = defaults["is_causal"] + if args.model_revision is None: + args.model_revision = defaults.get("model_revision", "main") + + if args.is_causal is None: + raise ValueError("Could not infer the default for `--is_causal`, pass either True or False for it.") + if args.tokenizer_name is None: + args.tokenizer_name = args.model_name + if args.model_revision is None: + args.model_revision = "main" + + return args + + +def main(): + transformers.utils.logging.set_verbosity_error() + args = parse_args() + + if args.torch_dtype is None: + config = AutoConfig.from_pretrained(args.model_name) + torch_dtype = getattr(config, "torch_dtype", torch.float32) + else: + torch_dtype = getattr(torch, args.torch_dtype) + model_cls = AutoModelForCausalLM if args.is_causal else AutoModelForSeq2SeqLM + kwargs = { + "torch_dtype": torch_dtype, + "revision": args.model_revision, + } + if args.disk_offload: + kwargs["offload_folder"] = "tmp_offload" + kwargs["offload_state_dict"] = True + + start_measures = start_measure() + model = model_cls.from_pretrained(args.model_name, device_map="auto", **kwargs) + end_measures = end_measure(start_measures) + log_measures(end_measures, "Model loading") + + module_sizes = compute_module_sizes(model) + device_size = {v: 0 for v in model.hf_device_map.values()} + for module, device in model.hf_device_map.items(): + device_size[device] += module_sizes[module] + message = "\n".join([f"- {device}: {size // 2**20}MiB" for device, size in device_size.items()]) + print(f"\nTheoretical use:\n{message}") + + tokenizer = AutoTokenizer.from_pretrained(args.tokenizer_name) + + start_measures = start_measure() + generation_times = [] + gen_tokens = [] + texts_outs = [] + for prompt in PROMPTS: + inputs = tokenizer(prompt, return_tensors="pt").to(0) + tokens = inputs["input_ids"][0].tolist() + before_generate = time.time() + outputs = model.generate(inputs["input_ids"]) + after_generate = time.time() + outputs = outputs[0].tolist() + num_gen_tokens = len(outputs) if outputs[: len(tokens)] != tokens else len(outputs) - len(tokens) + generation_time = after_generate - before_generate + + text_out = tokenizer.decode(outputs, skip_special_tokens=True) + texts_outs.append(text_out) + generation_times.append(generation_time) + gen_tokens.append(num_gen_tokens) + print(f"Prompt: {prompt}\nGeneration {text_out}\nIn {generation_time:.2f}s for {num_gen_tokens} tokens\n") + + end_measures = end_measure(start_measures) + log_measures(end_measures, "Model generation") + + generation_times_per_token = [gen / tok for gen, tok in zip(generation_times, gen_tokens)] + avg_gen = sum(generation_times_per_token) / len(generation_times) + print(f"Average time of generation per token: {avg_gen:.2f}s") + print(f"First generation (avg time per token): {generation_times_per_token[0]:.2f}s") + avg_gen = sum(generation_times_per_token[1:]) / (len(generation_times_per_token) - 1) + print(f"Average time of generation per token (excluding the first): {avg_gen:.2f}s") + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/benchmarks/measures_util.py b/v0.13.2/accelerate-0.13.2/benchmarks/measures_util.py new file mode 100644 index 0000000..b6ac76b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/benchmarks/measures_util.py @@ -0,0 +1,86 @@ +import gc +import threading +import time + +import torch + +import psutil + + +class PeakCPUMemory: + def __init__(self): + self.process = psutil.Process() + self.peak_monitoring = False + + def peak_monitor(self): + self.cpu_memory_peak = -1 + + while True: + self.cpu_memory_peak = max(self.process.memory_info().rss, self.cpu_memory_peak) + + # can't sleep or will not catch the peak right (this comment is here on purpose) + if not self.peak_monitoring: + break + + def start(self): + self.peak_monitoring = True + self.thread = threading.Thread(target=self.peak_monitor) + self.thread.daemon = True + self.thread.start() + + def stop(self): + self.peak_monitoring = False + self.thread.join() + return self.cpu_memory_peak + + +cpu_peak_tracker = PeakCPUMemory() + + +def start_measure(): + # Time + measures = {"time": time.time()} + + gc.collect() + torch.cuda.empty_cache() + + # CPU mem + measures["cpu"] = psutil.Process().memory_info().rss + cpu_peak_tracker.start() + + # GPU mem + for i in range(torch.cuda.device_count()): + measures[str(i)] = torch.cuda.memory_allocated(i) + torch.cuda.reset_peak_memory_stats() + + return measures + + +def end_measure(start_measures): + # Time + measures = {"time": time.time() - start_measures["time"]} + + gc.collect() + torch.cuda.empty_cache() + + # CPU mem + measures["cpu"] = (psutil.Process().memory_info().rss - start_measures["cpu"]) / 2**20 + measures["cpu-peak"] = (cpu_peak_tracker.stop() - start_measures["cpu"]) / 2**20 + + # GPU mem + for i in range(torch.cuda.device_count()): + measures[str(i)] = (torch.cuda.memory_allocated(i) - start_measures[str(i)]) / 2**20 + measures[f"{i}-peak"] = (torch.cuda.max_memory_allocated(i) - start_measures[str(i)]) / 2**20 + + return measures + + +def log_measures(measures, description): + print(f"{description}:") + print(f"- Time: {measures['time']:.2f}s") + for i in range(torch.cuda.device_count()): + print(f"- GPU {i} allocated: {measures[str(i)]:.2f}MiB") + peak = measures[f"{i}-peak"] + print(f"- GPU {i} peak: {peak:.2f}MiB") + print(f"- CPU RAM allocated: {measures['cpu']:.2f}MiB") + print(f"- CPU RAM peak: {measures['cpu-peak']:.2f}MiB") diff --git a/v0.13.2/accelerate-0.13.2/docker/accelerate-cpu/Dockerfile b/v0.13.2/accelerate-0.13.2/docker/accelerate-cpu/Dockerfile new file mode 100644 index 0000000..a872e6f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docker/accelerate-cpu/Dockerfile @@ -0,0 +1,35 @@ +# Builds CPU-only Docker image of PyTorch +# Uses multi-staged approach to reduce size +# Stage 1 +FROM python:3.7-slim as compile-image + +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt update +RUN apt-get install -y --no-install-recommends \ + build-essential \ + git \ + gcc + +# Setup virtual environment for Docker +ENV VIRTUAL_ENV=/opt/venv +RUN python3 -m venv ${VIRTUAL_ENV} +# Make sure we use the virtualenv +ENV PATH="${VIRTUAL_ENV}/bin:$PATH" +WORKDIR /workspace +# Install specific CPU torch wheel to save on space +RUN python3 -m pip install --upgrade --no-cache-dir pip +RUN python3 -m pip install --no-cache-dir \ + jupyter \ + git+https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers] \ + --extra-index-url https://download.pytorch.org/whl/cpu + +# Stage 2 +FROM python:3.7-slim AS build-image +COPY --from=compile-image /opt/venv /opt/venv +RUN useradd -ms /bin/bash user +USER user + +# Make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" +CMD ["/bin/bash"] \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docker/accelerate-gpu/Dockerfile b/v0.13.2/accelerate-0.13.2/docker/accelerate-gpu/Dockerfile new file mode 100644 index 0000000..44aa94b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docker/accelerate-gpu/Dockerfile @@ -0,0 +1,42 @@ +# Builds GPU docker image of PyTorch +# Uses multi-staged approach to reduce size +# Stage 1 +# Use base conda image to reduce time +FROM continuumio/miniconda3:latest AS compile-image +# Specify py version +ENV PYTHON_VERSION=3.7.3 +# Install apt libs +RUN apt-get update && \ + apt-get install -y curl git wget && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists* + +# Create our conda env +RUN conda create --name accelerate python=${PYTHON_VERSION} ipython jupyter pip +# We don't install pytorch here yet since CUDA isn't available +# instead we use the direct torch wheel +ENV PATH /opt/conda/envs/accelerate/bin:$PATH +# Activate our bash shell +RUN chsh -s /bin/bash +SHELL ["/bin/bash", "-c"] +# Activate the conda env and install torch + accelerate +RUN source activate accelerate && \ + python3 -m pip install --no-cache-dir \ + git+https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers] \ + --extra-index-url https://download.pytorch.org/whl/cu113 + +# Stage 2 +FROM nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04 AS build-image +COPY --from=compile-image /opt/conda /opt/conda +ENV PATH /opt/conda/bin:$PATH + +# Install apt libs +RUN apt-get update && \ + apt-get install -y curl git wget && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists* + +RUN echo "source activate accelerate" >> ~/.profile + +# Activate the virtualenv +CMD ["/bin/bash"] \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/Makefile b/v0.13.2/accelerate-0.13.2/docs/Makefile new file mode 100644 index 0000000..8879933 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = source +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/_toctree.yml b/v0.13.2/accelerate-0.13.2/docs/source/_toctree.yml new file mode 100644 index 0000000..8160cb4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/_toctree.yml @@ -0,0 +1,74 @@ +- sections: + - local: index + title: 🤗 Accelerate + - local: basic_tutorials/install + title: Installation + - local: quicktour + title: Quicktour + title: Getting started +- sections: + - local: basic_tutorials/overview + title: Overview + - local: basic_tutorials/migration + title: Migrating to 🤗 Accelerate + - local: basic_tutorials/launch + title: Launching distributed code + - local: basic_tutorials/notebook + title: Launching distributed training from Jupyter Notebooks + title: Tutorials +- sections: + - local: usage_guides/gradient_accumulation + title: Performing gradient accumulation + - local: usage_guides/fsdp + title: Fully Sharded Data Parallelism + - local: usage_guides/checkpoint + title: Saving and loading training states + - local: usage_guides/deepspeed + title: How to use DeepSpeed + - local: usage_guides/tracking + title: Using experiment trackers + - local: usage_guides/big_modeling + title: How to use large models with small resources + - local: usage_guides/memory + title: How to avoid CUDA Out-of-Memory + - local: usage_guides/sagemaker + title: Using 🤗 Accelerate on SageMaker + - local: usage_guides/mps + title: How to use Apple Silicon M1 GPUs + - local: usage_guides/training_zoo + title: 🤗 Accelerate Example Zoo + title: How-To Guides +- sections: + - local: concept_guides/performance + title: Comparing performance across distributed setups + - local: concept_guides/gradient_synchronization + title: Gradient synchronization + - local: concept_guides/deferring_execution + title: Executing and deferring jobs + - local: concept_guides/training_tpu + title: TPU best practices + title: Concepts and fundamentals +- sections: + - local: package_reference/accelerator + title: Main Accelerator class + - local: package_reference/state + title: Stateful configuration classes + - local: package_reference/cli + title: The Command Line + - local: package_reference/torch_wrappers + title: Torch wrapper classes + - local: package_reference/tracking + title: Experiment trackers + - local: package_reference/launchers + title: Distributed launchers + - local: package_reference/deepspeed + title: DeepSpeed utilities + - local: package_reference/logging + title: Logging + - local: package_reference/big_modeling + title: Working with large models + - local: package_reference/kwargs + title: Kwargs handlers + - local: package_reference/utilities + title: Utility functions and classes + title: "Reference" \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/install.mdx b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/install.mdx new file mode 100644 index 0000000..19630f5 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/install.mdx @@ -0,0 +1,99 @@ + + +# Installation and Configuration + +Before you start, you will need to setup your environment, install the appropriate packages, and configure 🤗 Accelerate. 🤗 Accelerate is tested on **Python 3.7+**. + +## Installing 🤗 Accelerate + +🤗 Accelerate is available on pypi and conda, as well as on GitHub. Details to install from each are below: + +### pip + +To install 🤗 Accelerate from pypi, perform: + +```bash +pip install accelerate +``` + +### conda + +🤗 Accelerate can also be installed with conda with: + +```bash +conda install -c conda-forge accelerate +``` + +### Source + +New features are added every day that haven't been released yet. To try them out yourself, install +from the GitHub repository: + +```bash +pip install git+https://github.com/huggingface/accelerate +``` + +If you're working on contributing to the library or wish to play with the source code and see live +results as you run the code, an editable version can be installed from a locally-cloned version of the +repository: + +```bash +git clone https://github.com/huggingface/accelerate +cd accelerate +pip install -e . +``` + +## Configuring 🤗 Accelerate + +After installing, you need to configure 🤗 Accelerate for how the current system is setup for training. +To do so run the following and answer the questions prompted to you: + +```bash +accelerate config +``` + +To write a barebones configuration that doesn't include options such as DeepSpeed configuration or running on TPUs, you can quickly run: + +```bash +python -c "from accelerate.utils import write_basic_config; write_basic_config(mixed_precision='fp16')" +``` +🤗 Accelerate will automatically utilize the maximum number of GPUs available and set the mixed precision mode. + +To check that your configuration looks fine, run: + +```bash +accelerate env +``` + +An example output is shown below, which describes two GPUs on a single machine with no mixed precision being used: + +```bash +- `Accelerate` version: 0.11.0.dev0 +- Platform: Linux-5.10.0-15-cloud-amd64-x86_64-with-debian-11.3 +- Python version: 3.7.12 +- Numpy version: 1.19.5 +- PyTorch version (GPU?): 1.12.0+cu102 (True) +- `Accelerate` default config: + - compute_environment: LOCAL_MACHINE + - distributed_type: MULTI_GPU + - mixed_precision: no + - use_cpu: False + - num_processes: 2 + - machine_rank: 0 + - num_machines: 1 + - main_process_ip: None + - main_process_port: None + - main_training_function: main + - deepspeed_config: {} + - fsdp_config: {} +``` \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/launch.mdx b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/launch.mdx new file mode 100644 index 0000000..741920f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/launch.mdx @@ -0,0 +1,178 @@ + + +# Launching your 🤗 Accelerate scripts + +In the previous tutorial, you were introduced to how to modify your current training script to use 🤗 Accelerate. +The final version of that code is shown below: + +```python +from accelerate import Accelerator + +accelerator = Accelerator() + +model, optimizer, training_dataloader, scheduler = accelerator.prepare( + model, optimizer, training_dataloader, scheduler +) + +for batch in training_dataloader: + optimizer.zero_grad() + inputs, targets = batch + outputs = model(inputs) + loss = loss_function(outputs, targets) + accelerator.backward(loss) + optimizer.step() + scheduler.step() +``` + +But how do you run this code and have it utilize the special hardware available to it? + +First you should rewrite the above code into a function, and make it callable as a script. For example: + +```diff + from accelerate import Accelerator + ++ def main(): + accelerator = Accelerator() + + model, optimizer, training_dataloader, scheduler = accelerator.prepare( + model, optimizer, training_dataloader, scheduler + ) + + for batch in training_dataloader: + optimizer.zero_grad() + inputs, targets = batch + outputs = model(inputs) + loss = loss_function(outputs, targets) + accelerator.backward(loss) + optimizer.step() + scheduler.step() + ++ if __name__ == "__main__": ++ main() +``` + +Next you need to launch it with `accelerate launch`. + + + + It's recommended you run `accelerate config` before using `accelerate launch` to configure your environment to your liking. + Otherwise 🤗 Accelerate will use very basic defaults depending on your system setup. + + + + +## Using accelerate launch + +🤗 Accelerate has a special CLI command to help you launch your code in your system through `accelerate launch`. +This command wraps around all of the different commands needed to launch your script on various platforms, without you having to remember what each of them are. + + + + If you are familiar with launching scripts in PyTorch yourself such as with `torchrun`, you can still do this. It is not required to use `accelerate launch`. + + + +You can launch your script quickly by using: + +```bash +accelerate launch {script_name.py} --arg1 --arg2 ... +``` + +Just put `accelerate launch` at the start of your command, and pass in additional arguments and parameters to your script afterwards like normal! + +Since this runs the various torch spawn methods, all of the expected environment variables can be modified here as well. +For example, here is how to use `accelerate launch` with a single GPU: + +```bash +CUDA_VISIBLE_DEVICES="0" accelerate launch {script_name.py} --arg1 --arg2 ... +``` + +You can also use `accelerate launch` without performing `accelerate config` first, but you may need to manually pass in the right configuration parameters. +In this case, 🤗 Accelerate will make some hyperparameter decisions for you, e.g., if GPUs are available, it will use all of them by default without the mixed precision. +Here is how you would use all GPUs and train with mixed precision disabled: + +```bash +accelerate launch --multi_gpu {script_name.py} {--arg1} {--arg2} ... +``` + +To get more specific you should pass in the needed parameters yourself. For instance, here is how you +would also launch that same script on two GPUs using mixed precision while avoiding all of the warnings: + +```bash +accelerate launch --multi_gpu --mixed_precision=fp16 --num_processes=2 {script_name.py} {--arg1} {--arg2} ... +``` + +For a complete list of parameters you can pass in, run: + +```bash +accelerate launch -h +``` + + + + Even if you are not using 🤗 Accelerate in your code, you can still use the launcher for starting your scripts! + + + +For a visualization of this difference, that earlier `accelerate launch` on multi-gpu would look something like so with `torchrun`: + +```bash +MIXED_PRECISION="fp16" torchrun --nproc_per_node=2 --num_machines=1 {script_name.py} {--arg1} {--arg2} ... +``` + +## Why you should always use `accelerate config` + +Why is it useful to the point you should **always** run `accelerate config`? + +Remember that earlier call to `accelerate launch` as well as `torchrun`? +Post configuration, to run that script with the needed parts you just need to use `accelerate launch` outright, without passing anything else in: + +```bash +accelerate launch {script_name.py} {--arg1} {--arg2} ... +``` + + +## Custom Configurations + +As briefly mentioned earlier, `accelerate launch` should be mostly used through combining set configurations +made with the `accelerate config` command. These configs are saved to a `default_config.yaml` file in your cache folder for 🤗 Accelerate. +This cache folder is located at (with decreasing order of priority): + +- The content of your environment variable `HF_HOME` suffixed with `accelerate`. +- If it does not exist, the content of your environment variable `XDG_CACHE_HOME` suffixed with + `huggingface/accelerate`. +- If this does not exist either, the folder `~/.cache/huggingface/accelerate`. + +To have multiple configurations, the flag `--config_file` can be passed to the `accelerate launch` command paired +with the location of the custom yaml. + +An example yaml may look something like the following for two GPUs on a single machine using `fp16` for mixed precision: +```yaml +compute_environment: LOCAL_MACHINE +deepspeed_config: {} +distributed_type: MULTI_GPU +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: fp16 +num_machines: 1 +num_processes: 2 +use_cpu: false +``` + +Launching a script from the location of that custom yaml file looks like the following: +```bash +accelerate launch --config_file {path/to/config/my_config_file.yaml} {script_name.py} {--arg1} {--arg2} ... +``` \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/migration.mdx b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/migration.mdx new file mode 100644 index 0000000..ab703c9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/migration.mdx @@ -0,0 +1,123 @@ + + +# Migrating your code to 🤗 Accelerate + +This tutorial will detail how to easily convert existing PyTorch code to use 🤗 Accelerate! +You'll see that by just changing a few lines of code, 🤗 Accelerate can perform its magic and get you on +your way towards running your code on distributed systems with ease! + +## The base training loop + +To begin, write out a very basic PyTorch training loop. + + + + We are under the presumption that `training_dataloader`, `model`, `optimizer`, `scheduler`, and `loss_function` have been defined beforehand. + + + +```python +device = "cuda" +model.to(device) + +for batch in training_dataloader: + optimizer.zero_grad() + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = model(inputs) + loss = loss_function(outputs, targets) + loss.backward() + optimizer.step() + scheduler.step() +``` + +## Add in 🤗 Accelerate + +To start using 🤗 Accelerate, first import and create an [`Accelerator`] instance: +```python +from accelerate import Accelerator + +accelerator = Accelerator() +``` +[`Accelerator`] is the main force behind utilizing all the possible options for distributed training! + +### Setting the right device + +The [`Accelerator`] class knows the right device to move any PyTorch object to at any time, so you should +change the definition of `device` to come from [`Accelerator`]: + +```diff +- device = 'cuda' ++ device = accelerator.device + model.to(device) +``` + +### Preparing your objects + +Next you need to pass all of the important objects related to training into [`~Accelerator.prepare`]. 🤗 Accelerate will +make sure everything is setup in the current environment for you to start training: + +``` +model, optimizer, training_dataloader, scheduler = accelerator.prepare( + model, optimizer, training_dataloader, scheduler +) +``` +These objects are returned in the same order they were sent in with. By default when using `device_placement=True`, all of the objects that can be sent to the right device will be. +If you need to work with data that isn't passed to [~Accelerator.prepare] but should be on the active device, you should pass in the `device` you made earlier. + + + + Accelerate will only prepare objects that inherit from their respective PyTorch classes (such as `torch.optim.Optimizer`). + + + +### Modifying the training loop + +Finally, three lines of code need to be changed in the training loop. 🤗 Accelerate's DataLoader classes will automatically handle the device placement by default, +and [`~Accelerator.backward`] should be used for performing the backward pass: + +```diff +- inputs = inputs.to(device) +- targets = targets.to(device) + outputs = model(inputs) + loss = loss_function(outputs, targets) +- loss.backward() ++ accelerator.backward(loss) +``` + +With that, your training loop is now ready to use 🤗 Accelerate! + +## The finished code + +Below is the final version of the converted code: + +```python +from accelerate import Accelerator + +accelerator = Accelerator() + +model, optimizer, training_dataloader, scheduler = accelerator.prepare( + model, optimizer, training_dataloader, scheduler +) + +for batch in training_dataloader: + optimizer.zero_grad() + inputs, targets = batch + outputs = model(inputs) + loss = loss_function(outputs, targets) + accelerator.backward(loss) + optimizer.step() + scheduler.step() +``` + diff --git a/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/notebook.mdx b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/notebook.mdx new file mode 100644 index 0000000..903a992 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/notebook.mdx @@ -0,0 +1,429 @@ + + +# Launching Multi-Node Training from a Jupyter Environment + +This tutorial teaches you how to fine tune a computer vision model with 🤗 Accelerate from a Jupyter Notebook on a distributed system. +You will also learn how to setup a few requirements needed for ensuring your environment is configured properly, your data has been prepared properly, and finally how to launch training. + + + + This tutorial is also available as a Jupyter Notebook [here](https://github.com/huggingface/notebooks/blob/main/examples/accelerate_examples/simple_cv_example.ipynb) + + + +## Configuring the Environment + +Before any training can be performed, a 🤗 Accelerate config file must exist in the system. Usually this can be done by running the following in a terminal and answering the prompts: + +```bash +accelerate config +``` + +However, if general defaults are fine and you are *not* running on a TPU, 🤗Accelerate has a utility to quickly write your GPU configuration into a config file via [`utils.write_basic_config`]. + +The following code will restart Jupyter after writing the configuration, as CUDA code was called to perform this. + + + + CUDA can't be initialized more than once on a multi-node system. It's fine to debug in the notebook and have calls to CUDA, but in order to finally train a full cleanup and restart will need to be performed. + + + +```python +import os +from accelerate.utils import write_basic_config + +write_basic_config() # Write a config file +os._exit(00) # Restart the notebook +``` + +## Preparing the Dataset and Model + +Next you should prepare your dataset. As mentioned at earlier, great care should be taken when preparing the `DataLoaders` and model to make sure that **nothing** is put on *any* GPU. + +If you do, it is recommended to put that specific code into a function and call that from within the notebook launcher interface, which will be shown later. + +Make sure the dataset is downloaded based on the directions [here](https://github.com/huggingface/accelerate/tree/main/examples#simple-vision-example) + +```python +import os, re, torch, PIL +import numpy as np + +from torch.optim.lr_scheduler import OneCycleLR +from torch.utils.data import DataLoader, Dataset +from torchvision.transforms import Compose, RandomResizedCrop, Resize, ToTensor + +from accelerate import Accelerator +from accelerate.utils import set_seed +from timm import create_model +``` + +First you need to create a function to extract the class name based on a filename: + +```python +import os + +data_dir = "../../images" +fnames = os.listdir(data_dir) +fname = fnames[0] +print(fname) +``` + +```python out +beagle_32.jpg +``` + +In the case here, the label is `beagle`. Using regex you can extract the label from the filename: + +```python +import re + + +def extract_label(fname): + stem = fname.split(os.path.sep)[-1] + return re.search(r"^(.*)_\d+\.jpg$", stem).groups()[0] +``` + +```python +extract_label(fname) +``` + +And you can see it properly returned the right name for our file: + +```python out +"beagle" +``` + +Next a `Dataset` class should be made to handle grabbing the image and the label: + +```python +class PetsDataset(Dataset): + def __init__(self, file_names, image_transform=None, label_to_id=None): + self.file_names = file_names + self.image_transform = image_transform + self.label_to_id = label_to_id + + def __len__(self): + return len(self.file_names) + + def __getitem__(self, idx): + fname = self.file_names[idx] + raw_image = PIL.Image.open(fname) + image = raw_image.convert("RGB") + if self.image_transform is not None: + image = self.image_transform(image) + label = extract_label(fname) + if self.label_to_id is not None: + label = self.label_to_id[label] + return {"image": image, "label": label} +``` + +Now to build the dataset. Outside the training function you can find and declare all the filenames and labels and use them as references inside the +launched function: + +```python +fnames = [os.path.join("../../images", fname) for fname in fnames if fname.endswith(".jpg")] +``` + +Next gather all the labels: + +```python +all_labels = [extract_label(fname) for fname in fnames] +id_to_label = list(set(all_labels)) +id_to_label.sort() +label_to_id = {lbl: i for i, lbl in enumerate(id_to_label)} +``` + +Next, you should make a `get_dataloaders` function that will return your built dataloaders for you. As mentioned earlier, if data is automatically +sent to the GPU or a TPU device when building your `DataLoaders`, they must be built using this method. + +```python +def get_dataloaders(batch_size: int = 64): + "Builds a set of dataloaders with a batch_size" + random_perm = np.random.permutation(len(fnames)) + cut = int(0.8 * len(fnames)) + train_split = random_perm[:cut] + eval_split = random_perm[:cut] + + # For training a simple RandomResizedCrop will be used + train_tfm = Compose([RandomResizedCrop((224, 224), scale=(0.5, 1.0)), ToTensor()]) + train_dataset = PetsDataset([fnames[i] for i in train_split], image_transform=train_tfm, label_to_id=label_to_id) + + # For evaluation a deterministic Resize will be used + eval_tfm = Compose([Resize((224, 224)), ToTensor()]) + eval_dataset = PetsDataset([fnames[i] for i in eval_split], image_transform=eval_tfm, label_to_id=label_to_id) + + # Instantiate dataloaders + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=batch_size, num_workers=4) + eval_dataloader = DataLoader(eval_dataset, shuffle=False, batch_size=batch_size * 2, num_workers=4) + return train_dataloader, eval_dataloader +``` + +Finally, you should import the scheduler to be used later: + +```python +from torch.optim.lr_scheduler import CosineAnnealingLR +``` + +## Writing the Training Function + +Now you can build the training loop. [`notebook_launcher`] works by passing in a function to call that will be ran across the distributed system. + +Here is a basic training loop for the animal classification problem: + + + + The code has been split up to allow for explainations on each section. A full version that can be copy and pasted will be available at the end + + + + +```python +def training_loop(mixed_precision="fp16", seed: int = 42, batch_size: int = 64): + set_seed(seed) + accelerator = Accelerator(mixed_precision=mixed_precision) +``` + +First you should set the seed and create an [`Accelerator`] object as early in the training loop as possible. + + + + If training on the TPU, your training loop should take in the model as a parameter and it should be instantiated + outside of the training loop function. See the [TPU best practices](../concept_guides/training_tpu) + to learn why + + + +Next you should build your dataloaders and create your model: + +```python + train_dataloader, eval_dataloader = get_dataloaders(batch_size) + model = create_model("resnet50d", pretrained=True, num_classes=len(label_to_id)) +``` + + + + You build the model here so that the seed also controls the new weight initialization + + + +As you are performing transfer learning in this example, the encoder of the model starts out frozen so the head of the model can be +trained only initially: + +```python + for param in model.parameters(): + param.requires_grad = False + for param in model.get_classifier().parameters(): + param.requires_grad = True +``` + +Normalizing the batches of images will make training a little faster: + +```python + mean = torch.tensor(model.default_cfg["mean"])[None, :, None, None] + std = torch.tensor(model.default_cfg["std"])[None, :, None, None] +``` + +To make these constants available on the active device, you should set it to the Accelerator's device: + +```python + mean = mean.to(accelerator.device) + std = std.to(accelerator.device) +``` + +Next instantiate the rest of the PyTorch classes used for training: + +```python + optimizer = torch.optim.Adam(params=model.parameters(), lr=3e-2 / 25) + lr_scheduler = OneCycleLR(optimizer=optimizer, max_lr=3e-2, epochs=5, steps_per_epoch=len(train_dataloader)) +``` + +Before passing everything to [`~Accelerator.prepare`]. + + + + There is no specific order to remember, you just need to unpack the objects in the same order you gave them to the prepare method. + + + +```python + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) +``` + +Now train the model: + +```python + for epoch in range(5): + model.train() + for batch in train_dataloader: + inputs = (batch["image"] - mean) / std + outputs = model(inputs) + loss = torch.nn.functional.cross_entropy(outputs, batch["label"]) + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() +``` + +The evaluation loop will look slightly different compared to the training loop. The number of elements passed as well as the overall +total accuracy of each batch will be added to two constants: + +```python + model.eval() + accurate = 0 + num_elems = 0 +``` + +Next you have the rest of your standard PyTorch loop: + +```python + for batch in eval_dataloader: + inputs = (batch["image"] - mean) / std + with torch.no_grad(): + outputs = model(inputs) + predictions = outputs.argmax(dim=-1) +``` + +Before finally the last major difference. + +When performing distributed evaluation, the predictions and labels need to be passed through +[`~Accelerator.gather`] so that all of the data is available on the current device and a properly calculated metric can be achieved: + +```python + accurate_preds = accelerator.gather(predictions) == accelerator.gather(batch["label"]) + num_elems += accurate_preds.shape[0] + accurate += accurate_preds.long().sum() +``` + +Now you just need to calculate the actual metric for this problem, and you can print it on the main process using [`~Accelerator.print`]: + +```python + eval_metric = accurate.item() / num_elems + accelerator.print(f"epoch {epoch}: {100 * eval_metric:.2f}") +``` + +A full version of this training loop is available below: + +```python +def training_loop(mixed_precision="fp16", seed: int = 42, batch_size: int = 64): + set_seed(seed) + # Initialize accelerator + accelerator = Accelerator(mixed_precision=mixed_precision) + # Build dataloaders + train_dataloader, eval_dataloader = get_dataloaders(batch_size) + + # Instantiate the model (you build the model here so that the seed also controls new weight initaliziations) + model = create_model("resnet50d", pretrained=True, num_classes=len(label_to_id)) + + # Freeze the base model + for param in model.parameters(): + param.requires_grad = False + for param in model.get_classifier().parameters(): + param.requires_grad = True + + # You can normalize the batches of images to be a bit faster + mean = torch.tensor(model.default_cfg["mean"])[None, :, None, None] + std = torch.tensor(model.default_cfg["std"])[None, :, None, None] + + # To make this constant available on the active device, set it to the accelerator device + mean = mean.to(accelerator.device) + std = std.to(accelerator.device) + + # Intantiate the optimizer + optimizer = torch.optim.Adam(params=model.parameters(), lr=3e-2 / 25) + + # Instantiate the learning rate scheduler + lr_scheduler = OneCycleLR(optimizer=optimizer, max_lr=3e-2, epochs=5, steps_per_epoch=len(train_dataloader)) + + # Prepare everything + # There is no specific order to remember, you just need to unpack the objects in the same order you gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now you train the model + for epoch in range(5): + model.train() + for batch in train_dataloader: + inputs = (batch["image"] - mean) / std + outputs = model(inputs) + loss = torch.nn.functional.cross_entropy(outputs, batch["label"]) + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + accurate = 0 + num_elems = 0 + for batch in eval_dataloader: + inputs = (batch["image"] - mean) / std + with torch.no_grad(): + outputs = model(inputs) + predictions = outputs.argmax(dim=-1) + accurate_preds = accelerator.gather(predictions) == accelerator.gather(batch["label"]) + num_elems += accurate_preds.shape[0] + accurate += accurate_preds.long().sum() + + eval_metric = accurate.item() / num_elems + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}: {100 * eval_metric:.2f}") +``` + +## Using the notebook_launcher + +All that's left is to use the [`notebook_launcher`]. + +You pass in the function, the arguments (as a tuple), and the number of processes to train on. (See the [documentation](../package_reference/launchers) for more information) + +```python +from accelerate import notebook_launcher +``` + +```python +args = ("fp16", 42, 64) +notebook_launcher(training_loop, args, num_processes=2) +``` + +In the case of running on the TPU, it would look like so: + +```python +model = create_model("resnet50d", pretrained=True, num_classes=len(label_to_id)) + +args = (model, "fp16", 42, 64) +notebook_launcher(training_loop, args, num_processes=8) +``` + +As it's running it will print the progress as well as state how many devices you ran on. This tutorial was ran with two GPUs: + +```python out +Launching training on 2 GPUs. +epoch 0: 88.12 +epoch 1: 91.73 +epoch 2: 92.58 +epoch 3: 93.90 +epoch 4: 94.71 +``` + +And that's it! + +## Conclusion + +This notebook showed how to perform distributed training from inside of a Jupyter Notebook. Some key notes to remember: + +- Make sure to save any code that use CUDA (or CUDA imports) for the function passed to [`notebook_launcher`] +- Set the `num_processes` to be the number of devices used for training (such as number of GPUs, CPUs, TPUs, etc) +- If using the TPU, declare your model outside the training loop function \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/overview.mdx b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/overview.mdx new file mode 100644 index 0000000..59ff9cb --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/basic_tutorials/overview.mdx @@ -0,0 +1,21 @@ + + +# Overview + +Welcome to the 🤗 Accelerate tutorials! These introductory guides will help catch you up to speed on working with 🤗 Accelerate. +You'll learn how to modify your code to have it work with the API seamlessly, how to launch your script properly, +and more! + +These tutorials assume some basic knowledge of Python and familiarity with the PyTorch framework. + +If you have any questions about 🤗 Accelerate, feel free to join and ask the community on our [forum](https://discuss.huggingface.co/c/accelerate/18). \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/deferring_execution.mdx b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/deferring_execution.mdx new file mode 100644 index 0000000..cb80ee0 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/deferring_execution.mdx @@ -0,0 +1,107 @@ + + +# Deferring Executions + +When you run your usual script, instructions are executed in order. Using 🤗 Accelerate to deploy your script on several +GPUs at the same time introduces a complication: while each process executes all instructions in order, some may be +faster than others. + +You might need to wait for all processes to have reached a certain point before executing a given instruction. For +instance, you shouldn't save a model before being sure every process is done with training, and you wouldn't want to +continue training before all the model weights have been loaded in. To do this, just write the following line in your code: + +``` +accelerator.wait_for_everyone() +``` + +This instruction will block all the processes that arrive first until all the other processes have reached that +point (if you run your script on just one GPU or CPU, this won't do anything). + +A few example cases for when to use this utility are listed below: + + + + Some of these are utilized with the [`~Accelerator.main_process_first`] context manager, which utilizes [`~Accelerator.wait_for_everyone`] to + run a particular set of code on the main process beforehand before triggering and launching the other processes + + + +## Downloading a Dataset + +When downloading a dataset, you should download it first on the main process and then loading the cached dataset in afterwards + + + + `load_dataset` will perform a lock under the hood to stop multiple downloads from happening at once, but if you are downloading something + not using this library you should use this method. + + + +```python +with accelerator.main_process_first(): + datasets = load_dataset("glue", "mrpc") +``` + +Under the hood this is the same as calling: + +```python +# First do something on the main process +if accelerator.is_main_process: + datasets = load_dataset("glue", "mrpc") +else: + accelerator.wait_for_everyone() + +# And then send it to the rest of them +if not accelerator.is_main_process: + datasets = load_dataset("glue", "mrpc") +else: + accelerator.wait_for_everyone() +``` + +## Saving the `state_dict` + +When saving the `state_dict` of the model, since you would normally save one file on just the main process +you should specify that: + +```python +if accelerator.is_main_process: + model = accelerator.unwrap_model(model) + torch.save(model.state_dict(), "weights.pth") +``` + +## Loading in the `state_dict` + +When loading in the `state_dict` to a model, optimizer, or scheduler, you should wait +for all workers to have the weights loaded in before moving on to training + +```python +with accelerator.main_process_first(): + state = torch.load("weights.pth") + model.load_state_dict(state) +``` + +## Applying a multi-worker CPU operation + +Applying a `map()` operation on multiple workers, such as tokenizing should be done on the +main process first, and then propagated to each one. + +```python +datasets = load_dataset("glue", "mrpc") + +with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) +``` \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/gradient_synchronization.mdx b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/gradient_synchronization.mdx new file mode 100644 index 0000000..ea4de3d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/gradient_synchronization.mdx @@ -0,0 +1,119 @@ + + +# Gradient Synchronization + +PyTorch's distributed module operates by communicating back and forth between all of the GPUs in your system. +This communication takes time, and ensuring all processes know the states of each other happens at particular triggerpoints +when using the `ddp` module. + +These triggerpoints are added to the PyTorch model, specifically their `forward()` and `backward()` methods. +This happens when the model is wrapped with `DistributedDataParallel`: +```python +import torch.nn as nn +from torch.nn.parallel import DistributedDataParallel + +model = nn.Linear(10, 10) +ddp_model = DistributedDataParallel(model) +``` +In 🤗 Accelerate this conversion happens automatically when calling [`~Accelerator.prepare`] and passing in your model. + +```diff ++ from accelerate import Accelerator ++ accelerator = Accelerator() + import torch.nn as nn +- from torch.nn.parallel import DistributedDataParallel + + model = nn.Linear(10,10) ++ model = accelerator.prepare(model) +``` + +## The slowdown in gradient accumulation + +You now understand that PyTorch adds hooks to the `forward` and `backward` method of your PyTorch model when +training in a distributed setup. But how does this risk slowing down your code? + +In DDP (distributed data parallel), the specific order in which processes are performed and ran are expected +at specific points and these must also occur at roughly the same time before moving on. + +The most direct example is when you update all of the parameters in a model through `.backward()`. All instances of the model +need to have updated their gradients, collated, and updated again before moving onto the next batch of data. But when performing +gradient accumulation, you accumulate `n` losses and skip `.backward()` until `n` batches have been reached. This +can cause a significant slowdown since all the processes need to communicate with them more times than needed. How +can you avoid this overhead? + +## Solving the slowdown problem + +Since you are skipping these batches, their gradients do not need to be synchronized until the point where `.backward()` is actually called. +PyTorch cannot automagically tell when you need to do this, but they do provide a tool to help through the [`no_sync`](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html#torch.nn.parallel.DistributedDataParallel.no_sync) context manager +that is added to your model after converting it to DDP. + +Under this context manager, PyTorch will skip synchronizing the gradients when `.backward()` is called, and the first call to `.backward()` outside this +context manager will trigger the synchronization. See an example below: +```python +ddp_model, dataloader = accelerator.prepare(model, dataloader) + +for index, batch in enumerate(dataloader): + inputs, targets = batch + # Trigger gradient synchronization on the last batch + if index != (len(dataloader) - 1): + with ddp_model.no_sync(): + # Gradients only accumulate + outputs = ddp_model(inputs) + loss = loss_func(outputs) + accelerator.backward(loss) + else: + # Gradients finally sync + outputs = ddp_model(inputs) + loss = loss_func(outputs) + accelerator.backward(loss) +``` + +In 🤗 Accelerate to make this an API that can be called no matter the training device (though it may not do anything if you are not in a distributed system!), +`ddp_model.no_sync` gets replaced with [`~Accelerator.no_sync`] and operates the same way: + +```diff + ddp_model, dataloader = accelerator.prepare(model, dataloader) + + for index, batch in enumerate(dataloader): + inputs, targets = batch + # Trigger gradient synchronization on the last batch + if index != (len(dataloader)-1): +- with ddp_model.no_sync(): ++ with accelerator.no_sync(model): + # Gradients only accumulate + outputs = ddp_model(inputs) + loss = loss_func(outputs, targets) + accelerator.backward(loss) + else: + # Gradients finally sync + outputs = ddp_model(inputs) + loss = loss_func(outputs) + accelerator.backward(loss) +``` + +As you may expect, the [`~Accelerator.accumulate`] function wraps around this conditional check by keeping track of the current batch number, leaving you with the final +gradient accumulation API: + +```python +ddp_model, dataloader = accelerator.prepare(model, dataloader) + +for batch in dataloader: + with accelerator.accumulate(model): + optimizer.zero_grad() + inputs, targets = batch + outputs = model(inputs) + loss = loss_function(outputs, targets) + accelerator.backward(loss) +``` + +As a result, you should either use *`accelerator.accumulate` or `accelerator.no_sync`* when it comes to API choice. \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/performance.mdx b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/performance.mdx new file mode 100644 index 0000000..c974b32 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/performance.mdx @@ -0,0 +1,91 @@ + + +# Comparing performance between different device setups + +Evaluating and comparing the performance from different setups can be quite tricky if you don't know what to look for. +For example, you cannot run the same script with the same batch size across TPU, multi-GPU, and single-GPU with Accelerate +and expect your results to line up. + +But why? + +There's three reasons for this that this tutorial will cover: + +1. **Setting the right seeds** +2. **Observed Batch Sizes** +3. **Learning Rates** + +## Setting the Seed + +While this issue has not come up as much, make sure to use [`utils.set_seed`] to fully set the seed in all distributed cases so training will be reproducable: + +```python +from accelerate import set_seed + +set_seed(42) +``` + +Why is this important? Under the hood this will set **5** different seed settings: + +```python + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + # ^^ safe to call this function even if cuda is not available + if is_tpu_available(): + xm.set_rng_state(seed) +``` + +The random state, numpy's state, torch, torch's cuda state, and if TPUs are available torch_xla's cuda state. + +## Observed Batch Sizes + +When training with Accelerate, the batch size passed to the dataloader is the **batch size per GPU**. What this entails is +a batch size of 64 on two GPUs is truly a batch size of 128. As a result, when testing on a single GPU this needs to be accounted for, +as well as similarly for TPUs. + +The below table can be used as a quick reference to try out different batch sizes: + + + +In this example there are two GPUs for "Multi-GPU" and a TPU pod with 8 workers + + + +| Single GPU Batch Size | Multi-GPU Equivalent Batch Size | TPU Equivalent Batch Size | +|-----------------------|---------------------------------|---------------------------| +| 256 | 128 | 32 | +| 128 | 64 | 16 | +| 64 | 32 | 8 | +| 32 | 16 | 4 | + +## Learning Rates + +As noted in multiple sources[[1](https://aws.amazon.com/blogs/machine-learning/scalable-multi-node-deep-learning-training-using-gpus-in-the-aws-cloud/)][[2](https://docs.nvidia.com/clara/tlt-mi_archive/clara-train-sdk-v2.0/nvmidl/appendix/training_with_multiple_gpus.html)], the learning rate should be scaled *linearly* based on the number of devices present. The below +snippet shows doing so with Accelerate: + + + +Since users can have their own learning rate schedulers defined, we leave this up to the user to decide if they wish to scale their +learning rate or not. + + + +```python +learning_rate = 1e-3 +accelerator = Accelerator() +learning_rate *= accelerator.num_processes + +optimizer = AdamW(params=model.parameters(), lr=learning_rate) +``` + diff --git a/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/training_tpu.mdx b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/training_tpu.mdx new file mode 100644 index 0000000..7fe54b1 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/concept_guides/training_tpu.mdx @@ -0,0 +1,164 @@ + + +# Training on TPUs with 🤗 Accelerate + +Training on TPUs can be slightly different than training on multi-gpu, even with 🤗 Accelerate. This guide aims to show you +where you should be careful and why, as well as the best practices in general. + +## Training in a Notebook + +The main carepoint when training on TPUs comes from the [`notebook_launcher`]. As mentioned in the [notebook tutorial](../usage_guides/notebook), you need to +restructure your training code into a function that can get passed to the [`notebook_launcher`] function and be careful about not declaring any tensors on the GPU. + +While on a TPU that last part is not as important, a critical part to understand is that when you launch code from a notebook you do so through a process called **forking**. +When launching from the command-line, you perform **spawning**, where a python process is not currently running and you *spawn* a new process in. Since your Jupyter notebook is already +utilizing a python process, you need to *fork* a new process from it to launch your code. + +Where this becomes important is in regards to declaring your model. On forked TPU processes, it is recommended that you instantiate your model *once* and pass this into your +training function. This is different than training on GPUs where you create `n` models that have their gradients synced and back-propagated at certain moments. Instead one +model instance is shared between all the nodes and it is passed back and forth. This is important especially when training on low-resource TPUs such as those provided in Kaggle kernels or +on Google Colaboratory. + +Below is an example of a training function passed to the [`notebook_launcher`] if training on CPUs or GPUs: + + + + This code snippet is based off the one from the `simple_nlp_example` notebook found [here](https://github.com/huggingface/notebooks/blob/main/examples/accelerate/simple_nlp_example.ipynb) with slight + modifications for the sake of simplicity + + + +```python +def training_function(): + # Initialize accelerator + accelerator = Accelerator() + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=2) + train_dataloader, eval_dataloader = create_dataloaders( + train_batch_size=hyperparameters["train_batch_size"], eval_batch_size=hyperparameters["eval_batch_size"] + ) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=hyperparameters["learning_rate"]) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader + ) + + num_epochs = hyperparameters["num_epochs"] + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + outputs = model(**batch) + loss = outputs.loss + accelerator.backward(loss) + + optimizer.step() + optimizer.zero_grad() +``` + +```python +from accelerate import notebook_launcher + +notebook_launcher(training_function) +``` + + + + The `notebook_launcher` will default to 8 processes if 🤗 Accelerate has been configured for a TPU + + + +If you use this example and declare the model *inside* the training loop, then on a low-resource system you will potentially see an error +like: + +``` +ProcessExitedException: process 0 terminated with signal SIGSEGV +``` + +This error is *extremely* cryptic but the basic explanation is you ran out of system RAM. You can avoid this entirely by reconfiguring the training function to +accept a single `model` argument, and declare it in an outside cell: + +```python +# In another Jupyter cell +model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=2) +``` + +```diff ++ def training_function(model): + # Initialize accelerator + accelerator = Accelerator() +- model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=2) + train_dataloader, eval_dataloader = create_dataloaders( + train_batch_size=hyperparameters["train_batch_size"], eval_batch_size=hyperparameters["eval_batch_size"] + ) + ... +``` + +And finally calling the training function with: + +```diff + from accelerate import notebook_launcher +- notebook_launcher(training_function) ++ notebook_launcher(training_function, (model,)) +``` + + + + The above workaround is only needed when launching a TPU instance from a Jupyter Notebook on a low-resource server such as Google Colaboratory or Kaggle. If + using a script or launching on a much beefier server declaring the model beforehand is not needed. + + + +## Mixed Precision and Global Variables + +As mentioned in the [mixed precision tutorial](../usage_guides/mixed_precision), 🤗 Accelerate supports fp16 and bf16, both of which can be used on TPUs. +That being said, ideally `bf16` should be utilized as it is extremely efficient to use. + +There are two "layers" when using `bf16` and 🤗 Accelerate on TPUs, at the base level and at the operation level. + +At the base level, this is enabled when passing `mixed_precision="bf16"` to `Accelerator`, such as: +```python +accelerator = Accelerator(mixed_precision="bf16") +``` +By default this will cast `torch.float` and `torch.double` to `bfloat16` on TPUs. +The specific configuration being set is an environmental variable of `XLA_USE_BF16` is set to `1`. + +There is a further configuration you can perform which is setting the `XLA_DOWNCAST_BF16` environmental variable. If set to `1`, then +`torch.float` is `bfloat16` and `torch.double` is `float32`. + +This is performed in the `Accelerator` object when passing `downcast_bf16=True`: +```python +accelerator = Accelerator(mixed_precision="bf16", downcast_bf16=True) +``` + +Using downcasting instead of bf16 everywhere is good for when you are trying to calculate metrics, log values, and more where raw bf16 tensors would be unusable. + +## Training Times on TPUs + +As you launch your script, you may notice that training seems exceptionally slow at first. This is because TPUs +first run through a few batches of data to see how much memory to allocate before finally utilizing this configured +memory allocation extremely efficiently. + +If you notice that your evaluation code to calculate the metrics of your model takes longer due to a larger batch size being used, +it is recommended to keep the batch size the same as the training data if it is too slow. Otherwise the memory will reallocate to this +new batch size after the first few iterations. + + + + Just because the memory is allocated does not mean it will be used or that the batch size will increase when going back to your training dataloader. + + \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/imgs/accelerate_logo.png b/v0.13.2/accelerate-0.13.2/docs/source/imgs/accelerate_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9111ac178c8a4f117c5e84063a74a01c23becd GIT binary patch literal 12653 zcmX}SbzD^4_clyOr_votOQ%R9-7Vc9jYxNcbR*r3Al)F{CEY0@T|>jWxxc^X{R3v^ zd}hwsvDVsGtnZ5Q5@^VT$WTyFXi}1&l%b$tP{DgGM0oIjdJKI83JN;VLR3^yN>r5G z-oehy!rBxHiZ<3OmS3`4h`3i@rGOF#Av}!7q*xyJQvr`OPPjo%EsmBGOVcGvD#trI zrYL`_&d%uG(tz-q3iJwp@*C*Qot^wWN~$Mjy4ujQ^+vLjWB%h+Xpy`w)f%feik!oe zy~ajd4fODO6b6{0p_G)YDhl~{?5D)~*QaM!OkFjt56L0-`5xmfJ>kQ`vuYg=i4{KBU>d zs>c<8xohwXKd7fZflmJT`!t@3Anxt01#%F~skiuA0xZ0(-zsNA!>oWjnJ=nSohK|Y zG0c|OklwYci-Nh`bEd`BHSDdf!-{FD1{K&Acq18!Pf)+0s-S9o?0en86(oB}&2L}_ z=U)DxMQGDp!9@f|DLFBOzc9FXAIQj%Vyi)Zt*ur&@qUy- zlp+uO6)30J^I8e}RjlFH+Y;1>?A$G;h%I3dIN$tHULV z)xR^LG6^{Juv;U8%WtVsbK;e9aah~kaFe|LslA)otb09O;xVSA`BR+%#!rYG6Y!lLHi1oKZ?XbVM){|j0+ z%Bzk{gFS>NBuo}eePJ2ayDB!h{NG5liBOYx2OenB zrTvGdNLVZxdzRrIv!J`7SW*5PxIIHar%_;SV$1_~vA~q4b{#qlRwp-hYh5;{e<`u5 z_^(;0#O!mJGK_V!z0PeEahz#2kwJ^%Q7gks%g|=HH+WL32>+Wpi8TxM6I2LkK=qbf z!`TsZ&i8d=7$;oCsiAmre^%@vne_)|15Qqx^h-Bl`1c7A{{OAq7xRFe3Pkkrpz?8F zarpvBaA?_YGIBK4BrZY=@@etzTMk+Un=XUz!NaTm#dJny|NUyh7GCsB_~t9GY9aT7 zd|5IooENm>bfzf0j6P2?230?y-5VD{oq7>Av;QWES)15tkO-k8)}}qu{`E1Buvs7B z$xTSJKWg<4nS(rMdlscDPlOJ_-KtU2fA_~nW#Yy!H@o>uF>q77;R5|g!GMc?P$zu+U}jC2qTeb9o(q0xx&E)~+!>e3B%f@vCp?6T5NArF(8g@$dtp zrKP3o{ZT^(FC<<;pi|c}4e1q(u(kmQ;X;)$0{4m|R>O)j5p{gYR8*Z4yyzq}55)h` z+?y41A8uB9d@c%tf7v?O88H$FTVuh2q(-xSy3ze`KFlmn(&Bui6&D}>8u69?Sn!PH z-}TObk@OGoRmT0*R&y2df@ZsD!OfI6XY%)opH37*kKwUhNYUKL0!WRI1c#SU>2!^a zr~4v_w4ELxM@zjKV3Qo_wlpXaC6t66Pb z+lMg%)Lm!&Vl+e1OCH6Hy?jeH(MI@Ik$-~K)15i}AFsCOYs?kO?s>lLpdz3XW4aLf z39VOQIT9kLWfF*w#w``%&nNSDgy+Q=dy39 zl4doVibI8;Ys@0&A80WV`I0aMZhQqF_Z4*YFow{AYp;)FRLiC@7v$WLPY%Dx3+>@R zvPitdhwK*ydECz5rE%FfNa;V{^b1PL$Y8mUfPmR!gAeFMq(dio$gO~Fo-o3+gpO2r zT$?c`--? sHhe!A}1oTCPDP8y-EbTFcD$jxhcmF*(Hs`8J(j_U-2oPUnU zhYaN{yegZa3BfAwTvMgOt`1MXrrm?*`v`o+-av-o)3a)x1!I9vk->*2{{*Gw{Tn@m z3y!ekbIZ#kOox-2YRCT$C$k&(p9l7Pvrwf;Y%?y2*TUnO#`n^r4`AfoLE^KLlJ)9#h)uRk3T>Auhn&SIjT1 za#$rDTCB6;FV%m^$Hw^1n5&YKT zF@RE1QVI+Tngo&j=FOYX$Ve(KE?gfUABq~((y}rs8JVr^!T9{bLWje7RyH;^Nd*NO zUf$H>m6oYWeZkGGt?$v%MG9F0mwS`2by{-fc{O`omURyQrs*Ju3*D=29v@s!$>9V1 zo*wVN{Y}(hGa0}PMkfiYtgM{crDbBGW?%?UPbdB}H3goOS6m$0)g_{=tjv-k+tb(g zhL~9P^Jn}v_bW< zTy!Fk{Q_xEy_E6cTjAt58a(W{;4|M=U!?Krdgq=aFGUS3sGZiUttoT*K5c_qlyZZ- zPXAPo+wW~FI-cD90|NM;`i`TTT`xwtQ$D)bh95Z}FIzP17K0gq)fVUebh1#htGt@j z)AI@U{pa5abSfr9rD|$whie^KKeZdq=Q^J1dLfKK79Hn949kvFa;OAsuOh|sBn6q< zZ*mXsHH|O9k`JCFG3gHZ!=dmw3k$ z${lhz=ykm^ci6Q={P*u)zKaod9q-$}%N{3f#Qg561J)NNH+@8Qm_$Uw0T=>%svA|2 zMBENbHVu;m^L}JdQXmt*lyVM-VVbO}YY+9&X2doTYr=;NX_QA}xRICrRho(4^b_n8p+q z7WRYP9Q~v7p`zn*JaURVIUP`XUJO8tt0Ob(-SZz3$J!`QmO}uj!Jiz(|D3 zX`a*7m#XC9$6KZbGv1cxYb#tRgK{l%ong9+V=7Cm*=H4IS(U{T)5S_xN|dXst9+1o zHIDnrg>q@Lg>b(z-T%>LdOMKeEg4`13wZ>{8ccr~ZLw(VkSYC4j}9i6P_UZUIgb(pci zRVU2dCH-Y)z39hVzn_E-a2HPv-j-#K8G-rmakFP_JT9)z6e@Shd>dmk`wXWbH@>T& zGTu~ZEMX^e#_USzaebV);tVRs<>A8Aag9}FoBHG}NTr3st&-Bx&D-59ms>1%mGaM3 z{v8j0nWv|x9qCf$erosIG_1@PIwU10f7^=W=B@iuN0Xt1N5o~l9?89G|8HJ60G{)% zX~BA@Zcfj5rc~|7-OFq=wO~(xW+$EDHy-$Qk;$k#(9yJE_@-H(YGsM*K z-@%D@ad%MJP(~_vvktrJ^XyfWX~d_rW7qMRB>1p_aYTJE%Dr}YDG*g($o}u;;97Ru z%>d}genSKXh7d!0t?}zynWXpoF$WxWt9+tk!#dwstj(d_!Kq$pj$8DwRoxA*b#2U7RF9P}1-0BrVRRC(}GdEdeyTuzP>Y1)p>{?s;Y&~0`78c*@ztwfZn<0=TBuD`}oa&o31@WY}~ zSPWrafam`HenMiRAzMmuNeP9ZU{;&QH5-_i*kc=jg<-8UnbhCpNiZU=T zFm|`11$V&g5|WaPI0!*vg8)&~(UFywM%MSfr2>nj{w}S>y@bz5KvUc3fV}KVF!jzy zLR{;ogi){HlFxI?te(WebG8U-#ACCmw=f}$_g;B`$9~tJsW0YSz+uM!S z@6Bo!?$!e^=y{(@)ym2f6B9=vppuk-bUCgiM1@~?^uC(W$WY$_Q__iTeF0iOot&IT zA#UIlJ=mMf)8)b-85|ghS-B3wVKBKq_}=`v$|#63CGpAQZoi0#-%d#>_E3OYF4bgo zY%Ga0v$T}{AdX7L%Qts{$tC@ zS>AV2^}Sg?ehdJFoo16aoe1f8ejGP7z6H6f+2l}g2+8t-5WEybZ*T9>dX*AY9hVg+ zPXPL>@8zYXEm`4LuuPelnawx4g2Gxg8rHl$!UuETU}0%?c=P8;L?_Lh0HQI!p)f0g zC+E>YD0*B570~&6?fJ#Hl%{Mh#4TN_w zALqmuxIbiHu-P5U2#=0dsIh^^AYI-g4JmZp&2T9$E3>+;dYR@~a79^VduoA9@{nbV z)f|&1>sTiBMTKq)kM~1k`O^#C>We00)}9?0kX%R+*Z8URSM{7w;}4EgmFKMkIO62R z#Nfs7MY)`^4_bPa@Oz=_B zKT50BF=?o}B?kLEatDgic{eU9)_+zdmOe9HfnW}maoBt-Ai4OKwmj}`gGv=tD5STS z-_XE~A^7m?P~aNCpV+q&TKq}N%Q{bxhK@mR|EB9z52ccXBKQu#FH9RAk6TW76JM$> zr`7DhKN>#1^o1I8h9oDDxYcVLyfsbJYK~&Mhl_RLMOogd(6I2?a|cRgGdH)lu`w~f zM^e~9LUXTqUZ5Eo8p^r<8p{$?5EqA+h$1$etI+iX5$Jh2DbafOuZ-_)^B0kK6IgAXt7n$x8Z3D%~x;b;Kx_v*ISkE#g@XZR!o9V z(BV(_XBF8T+Mp(ie?F|C_1f6ikvQ%AeGMM~PF0m6c`6EuPSfBZ#+Qm4#!&HP<}*5( z!26aXz+v}hf2OJI0+eVz@`JUfzaNW;NXFHbCnqQ86#@blK7MGY!EXZ=Ffr|syb}vH zb5qkQ+ZA5TUC)gmJVaz<2kF%%yAItXjct(IW&mR(vqja@=*r;%s<)eJRbeq%Y*T@s zk(`W2K|v817+Cu~0zN?4d8r8td)oi}i{X`#3tA$@CDF`Yw8_#5H z`J<_$L+tagMP{l!QrUWr94+|7^ZNB``DlqjJ;Va|$St{(`xD*x(Wxnuqyr|nzpvTr z2RLOxEQrd>M;Tq$G3-e<<8xXjY)S@334O16XYLdGLji49Wtc%Ipm%)f?-262-CorI zf92Mdj~I)MH=mT%+j$>Zg`ZVta2>P7M$cdQ!Id9(I((It;a?2i`>NLD%CUH4c4p^K zVEVo!X0q&mBh5WdQ zGnVbkI6cWN{(${qlGwhZoR_rsP1$5a+m)_0*>>Z$ke&b2B4M+nW0M!)A%nLL`7cl| zc1GW_u_-G(Yv{QZ3~i7ZiNG+*9JRT`u0!bABD(yQyw`o^U&TzOqn> zmoVRI#d$yYK{_SvT_LW%9m-7I=tn-wf7AJyXVg~_4$L8y4M74nrYx!-O`NCuo9e2v zYbT~_EvB%u-tzGLppr=%K*w4HWlJKO)O7xrVc59Z=g;%hnQ`?!QzlG|jB49(=MdWr zn(C6sZ;>n0flQ0?c;CN&@9F7roNp~FFMmfv6H;FO9@L((dYh&BS__r3`^0;9wGo;E zQg~6p`wlt!WFl0;y2LUBjnlONn`;vR_b+gSPTD>62ic2-=eg2ocdp9>RB)dGN5o02 zs5jm0`5v|z*70;_RfHP6X>?1Z`M1xxfisi3<_`-;r1%t*!_j;dY}w2|)yvQcv0>R% zj*^w_jz-r)K-|DGIUg++(1yt%9evQ}o$^$+Wtmp@$57NmE5K1ShAGdU^6$j+e-Qrp zU?fYRwpa+?onWPW<# z<5CA5(~e1ucB<24t{C6LX?HcFfjREl@83c|^;{M(b_ zd@%d(VmHgj3~YaOcf`l|kk0rWm0>ORcf3D*En@Uho5U2=Xc!A|8Kwz0bO`cyrTPNj zsxzq0NUy2QZ2qv{IQLdV-J9_&mT6TV#kcb~7}AF`Zsi=c?Ug-L8#VPJq|33XiY;l* zk+tt+ksc4}VzY?AE#ufJ)sjMJT0p-eT%TQq11X*9c`l_&pQ!TO+SZ0M_tk|uv$a{v zn~jy3`5MvfiX&x(5p`5k7g?9~EgxU2T;$G7nFhQ4x{z(-MzAwG?(%5&y3|F9DTe4N zi^be??_m&U)5P-42(ASMC!Ek}&?rGKj-o1)m&;&fZm?p&b}W=Cy{o0Wz_+AcqpC&y z5yZMMiHEjE9hwF1x+EGf z4EensNGY^T$*4g)wBuFJElXcOm;@E_`U45!?0)T8Z*oV1Dur@ss%NKp~dzYSX+{4X-x zfIdUM?Fn5VLG&!}J6fjQn~Zsngre=FV^7XLy+w=h)j(lS=)l`0QOWAIlKK#TLyszFfZA&uM%k%f+@ZRG}tX8G4uc znm&;Oa)IvUCh^-(^G{ztX@kh=Ut6cML~P!Fl9?XIA4px-p%=!vW3p?ZYnxzgCh zFirF%15*XuR@}&la&mH#$%D{^1|xuGw5ZR#JEvcZ3l~bdl>Gg#979YTWb^SQAJR99 zWVR*B!q)}^OtmKr1A1S(3p0CNRY*fR_R(ozzL%U?auDX?4nRr*o~TeW(k0Rx3M|}g z_DOY4D3nUbN63#1e_3Hs+604mEEpA2AGpC+CB$#9?*312IR5=_rmShdFwJCz9B4$Q z*Y^jN9nHNrAe5-m)_~}>KjKKG+c;zZR5kO3YSZea@l5_SI27E8A_cOAe%ghD|66`E z^X{gV7$)}qwqD9MJ;XmBf5-}CU;9a?*(2M9ETXsb?w34nVtHjKokP8vx2v9X({9|X zCniS-*OXhe5F8r!Ff3KeyQ()p{P~uxJq%F}rJ}K#exJC06_X4h#gmv1+MSH9;S;QJ z&YSntDH=DTdu|Qih$M7B$;n0b^Z&J;|K$fjUhIz_^G4cKIr`cSwguJIZ`$tm-YqpUyrc6v$ldPVf9$SIX_U_%g2|$UPoesn$B@u;%gWl*s5YjEsytFgkiPkZ|*I=~AO}nHE6nXv8WOg%~_W(Gb0lGJA>9N^^ba#ES zMrT3_uxEK1p^&t+bP*?hAX9=NR~le+ZRPbKoARa-HODhP?m~j&i^hw@9|+OI^NoK* ztr9&nOG!nC4IgxjzxQpl|K+t?ejVG2F;l0!S!lrTY=}aS^Xb(B5!&uh{#Gp$GAC;a zk+}FLj(RA~f*6??li7QoF?YIzKk5)n*ua~B(p*g(=XbZaw_&R!0)SfEB$agsu@=thBaUx73jU1dJrF zu{x_chsUeAk5?wnr|ZIct{ZSb#RddhB5xHFsMrsWk7pMb2Qg^YB6#N|B_**(QZkZ~ z_IG?Q=2)&r?3)DZdPi#IUX>jc(EtkjVlRACTdqI^-=-1oDpYpKK2h7)T3YS*%G;tk z@4i^WzroQV^RjO*-=H28;>T8-_JCrdRtR%Y`mpA&d_REj6BmZ?j0ro*Z(rnN|F<;e zh$ACGt;p%VqS!qIIr422o`|oKA&;K{9mp$w1RC(-v~(7yRnlQE%K8htdAK=aTt#GV zk@bEGzdD#>_j&RJT6w7}Dvd(scFRe7{ERa&8TTBU<==h-alE(GzzjSqMo5kOmF3Q8 zT0hW{aE4oKmbmJz7bqEmZUMLL2V&&nqYIT|&PX?T@>YNJM>Qb^8X5^DON)Z==C}!o z_`zw5U6t+@`$|oSPnICGo7t)5c1iafin}wcU{<&WbT#s!C^}~<$~{~Rh~!9YKL?#` zhEl2%F)KRyjniO z+NY4NUgQAr_)GULh?;n4jzF}qQcwc@;<4o(`2@ua2vx1krIiqq>+X?;Zb!@GM3#P+ zk}t7-cZY`;86=w)5!DGFid5rs1f#r{Z^n~8PqQx_CBFo1jx1MqCI0~I2cX=S?%_8n z^iLHjXqbe)u<|fxb-R`3#D-OO8TF;Xc$#7QnIj7}g&!=!kS1>Hc_C%xxWi3e@x0jl z{C5kF<5_}a0i6?uC^-{Be6?DPK+2C@@djdMb=IFq@wb3YW#-ORK-JaN*_d6bs;W9J z-kNmWWi7#WFj{w2s-n=e2X7ioaK0fT+C*dJFA$si5|=q-Gexy1PK>P~S;=bs9WnL| zoo)~EHjZ#4R@0^8V|;jj(s5FIF}P|V z={4*ft6@dah_Po~Ue@*2-U#nAJZw}Gj_gEPazbm#EG>>(bLgt}Ift(aK1UKNU13_c z?l`@eCO%FpRw=twKaZKw;lj_2GQ`NjRY|0_Uo=~kZoSH@@ITSrKMDDEQ%lwf|LHt? z7S0*X#K_S5ld=fuvkFS!Ub;fiQdjSLv78#n_}y#EF~v1lzD$sdMy2SnuNW?p0zl!X=-=4ih2(A*%GKlxG-gq+gq z+6oD`0M#iaNNj@YZVtqva=o@xEE;)5Ev>Kx>%K1>ammU3KtgTWiu!2MA|pIRh)+PU zu<>8ucwe`y(OEu&m0~v^BZeHW$S5hjrjAF-n;f{k*nKhUfbN{*az~QQqstWFh>WnJDt;t{ob^3zJp;QOGF38=6?sQ|=$E z_dWA9+Qlb>j?5(jEVG(grKxoULyGKgvalp5=6|w>#K(SEk<&u`i}IU!r3bs-aKx1v zs`w*)%~o&%cz7?u|B!8m*(jmeSo(tPIdIkFV?TNW#mMvFtiPH|^rvpiYyq5Y!i$mF z+m~E4_yEip=XsT*e5v>w;J+2@U1^$`Q3JOzZpImC%zS4(SQ+YgcI~&+-*(3mXSm+J z4ans8sMi|%^G7)tgG^paD^(kx<)rS@RR{Zk#O+@VXfqD`fXL1A5h_=;MW|bBxb`WNf#hqsSHa; zx!OO~dxHwM1$3K{sYu~{K@ANAwFaF2{Uk1@T`0_s0~ofWshsj|mV9zMpxj(+hBMc< zlmnRjl42y8B`SL&1b%*gVb=t;R4-alE(CbPOsx3rfZX76i#1<(R_l*mp~qsD1`lep zWCr_+;Pa6BGu2kohKz{Z_egv``o=`tIfv3k(#0H3Pq-8KOP}h1n_2H2AL2u6M!c|T z75BSRD~dAwG2Qu2B5dY;@@%MxNX=37v!1)vBj*ivHa2XW)Kp->9u_fcfHNGU_k^^; zZjGrdL%r;8ig~8tYOC83Zy{(a_zEOqUZ?V+!Scy3uIGa^IQ#`o{@~2S!o%BD4}YnU zw(YlOh4LATW{&`tYCz!E0C`u@(Ru&;VRk7^g3N20%Ax*}wGRtLx$;&GC>`H+<;9MGLB2}SGz07(XR)LBxVYl- zgxwN=OSV7+ngP}1h%E{D${93Sp4AJjC>e5QZF&mI%5Ok=IkxaUK7eEmTMKHy0}#gX z60&61FsN6;YTWnB?ZQl~@@jjV&))Og1&)e}iu7aFAzE;zkE5q`$o6QA8hsF&C9!ju z*1_)w_IH;-pvwoD-cpx4&ORg}LT&U?cmGt^B<5hd7y@60>>eH8XL+kh*piWB5aXDj z^olO63S$z=y?*@3H#L<|z5H{|-VcV#)@o5(@??GQCQ5F7kN~-qTnji8*2D!^Mb;P|b6G->fKz!gzqX9+Aq(6#;gi9faNk>9f7WKs$0j^cx z@Lf8$9ch-&(}%OOGa%#IKR;d%^V)*%hK+$BCKLN0mzrB#JYf8?T`^OiM*T`X>8x2e ziADklgVj=zg6lUJ^x zB2nXheVjBUa7Bzx!kZ7Q(wcFBvM&g~7+!Xyq$pF_G2%}f0byjYwq08yfJ`qqEP3ep zux8w0Z-SywHf8hAzpp@flP@y9yW9t@5$8Y$Ym`+7_J?_vS0B)|R!b8)kG=yP?j1Gt zIdJ+0^ybry24X0z!D$c9auJb#qC0=Z5k|8F^}jxT2b%xI)BQ<<^l_3%?uwfL0Qk4s zM;(!57_jhNzpb*@OcXsj_kY?SBG8cq%&{mgydUY~`<3ppGU9LNHsNXRnY|zP>1u zvf@WzV5OHLk&%#$0@HA0f2zn0U75R2+?ebUbZs#Uk*7Lu?@0$Q{2l~iWqnOfOt|{{zfUd*9{Qkiyqe;Dt zghlQ~xtr1v&rq@^97=pCC4It0`5J=Z2aztO64#N8RL6?Pys3^a) zz(R_3AJNA*>UZh1-m`!4V2UOAe%~FEV=-lf-ImEb-m$JfC|BMf>-(m3ua7)ehaf4W5Qf#*ViXSM4&3GsDK`n zx15}b2?^M2?CgLo82c8}d0Hv$|z6La(U)KqD3 zZh#!$x!j-H{`)sJB}EFj1TSqXY;18Lm}SoUdU|N-AzMg@x*U#k>o`zfJFh5$DmIM-0>f|IIZ>NhCDkdW=MNb|qpg2*HO-J>Fy?24G$T*ki7caK zk3!XSQ{yJWmu^uEQ*UWpOW9wE|JSW~`sr}Ac5mqjEjZ$Y;*JopxYozTjtP3EGG>BE zwXGmV{GzfVxnenIBFcpwr`xj?6sKxSM2Jh3l!d>*oc@gu;SUTyV+t;tR|&VB1RqP26ewN<~nb^&{3SoFWYg;X^vKoZN7^kl%&jy5%mPiXp#}-HKSMC zaK{&CyS)D*cl5S$QDI2?>m5SzH(GZbo>#Uvucvugw_b)ifrJY0JLEX;gr&+Ar#4Q5 z?XHKmsKc^TpP{NwUW8d{%?D3thu8+g!K-NXk6ltr)_}{e3O)?Oua{b@Yn;eEkaL-D zU%FPwAj)^7O>s)HF~Wze(F|p8tH&A(3|E+j4Ij!9#bE8Hy|<4_i17AbOhTj`m5OU# z>;w_1AgeoMNQkW;6NGwCcnWW9S9o=tW1z`CcA{+EMc>z@@rMN%BKck*Jgj6T%^yKu zW0ahVluuY%f}zcCP~Cr-1T^6oCYs@FXN81W&PB2PCZp^UGIeankfSX&&Tf4(_VlXI zEaF|IB7Wnm%^hE9Mza*qqK3#@)oCBwd=Yc!BB@R1MyjQgZcOox^x;8R7cEJIg)^R5 z6bn9;wzyts)|Q30@JVfoTsm*zbxDCS@msFeOJy-Bea;`>Qn{^bSATSa;f-@MEoj}4!R|8Y)ewkQT7kU$#|I&tSG0Mm+^eE}Vg6M>_s zjgDiUs_EMzb@J@hmBR;TiPHI*Ud@|BzgRN|1?FeRrNSB!Dw3izv9m(pq8TdA^OsXD z-!ZajdJBwCx*t?`xKH@ML}VLI+zW?hKogR&mi@P-L1^&WLkdE(yaRd+HgVP{{>&i^ zf^a@GQ`ze8x}(_>Kx@+Eb?}dUOb5P4|QrlRd z&DyUKL5nQ-3#)XcvOJaW=)&w(!K_qf;OSRPPBFGGir)$T@7J__I#dLhy@FD7g)-41 zriA#zsj)(^!QPl$gv|=Upn)@>GT;|#q24~{C4^RG~z=^iOGMe5Haxo F{{SlV_8kBK literal 0 HcmV?d00001 diff --git a/v0.13.2/accelerate-0.13.2/docs/source/imgs/course_banner.png b/v0.13.2/accelerate-0.13.2/docs/source/imgs/course_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..45773d164c4c009d4c0d9a0c37cb93613b1a9160 GIT binary patch literal 80305 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 literal 0 HcmV?d00001 diff --git a/v0.13.2/accelerate-0.13.2/docs/source/index.mdx b/v0.13.2/accelerate-0.13.2/docs/source/index.mdx new file mode 100644 index 0000000..1664fd7 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/index.mdx @@ -0,0 +1,71 @@ + + +# Accelerate + +🤗 Accelerate is a library that enables the same PyTorch code to be run across any distributed configuration by adding just four lines of code! In short, training and inference at scale made simple, efficient and adaptable. + +```diff ++ from accelerate import Accelerator ++ accelerator = Accelerator() + ++ model, optimizer, training_dataloader, scheduler = accelerator.prepare( ++ model, optimizer, training_dataloader, scheduler ++ ) + + for batch in training_dataloader: + optimizer.zero_grad() + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = model(inputs) + loss = loss_function(outputs, targets) ++ accelerator.backward(loss) + optimizer.step() + scheduler.step() +``` + +Built on `torch_xla` and `torch.distributed`, 🤗 Accelerate takes care of the heavy lifting, so you don't have to write any custom code to adapt to these platforms. +Convert existing codebases to utilize [DeepSpeed](usage_guides/deepspeed), perform [fully sharded data parallelism](usage_guides/fsdp), and have automatic support for mixed-precision training! + + + + To get a better idea of this process, make sure to check out the [Tutorials](basic_tutorials/overview)! + + + + +This code can then be launched on any system through Accelerate's CLI interface: +```bash +accelerate launch {my_script.py} +``` + +

      diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/accelerator.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/accelerator.mdx new file mode 100644 index 0000000..fb20f1a --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/accelerator.mdx @@ -0,0 +1,163 @@ + + +# Accelerator + +The [`Accelerator`] is the main class provided by 🤗 Accelerate. +It serves at the main entrypoint for the API. + +## Quick adaptation of your code + +To quickly adapt your script to work on any kind of setup with 🤗 Accelerate just: + +1. Initialize an [`Accelerator`] object (that we will call `accelerator` throughout this page) as early as possible in your script. +2. Pass your dataloader(s), model(s), optimizer(s), and scheduler(s) to the [`~Accelerator.prepare`] method. +3. Remove all the `.cuda()` or `.to(device)` from your code and let the `accelerator` handle the device placement for you. + + + + Step three is optional, but considered a best practice. + + + +4. Replace `loss.backward()` in your code with `accelerator.backward(loss)` +5. Gather your predictions and labels before storing them or using them for metric computation using [`~Accelerator.gather`] + + + + Step five is mandatory when using distributed evaluation + + + +In most cases this is all that is needed. The next section lists a few more advanced use cases and nice features +you should search for and replace by the corresponding methods of your `accelerator`: + +## Advanced recommendations + +### Printing + +`print` statements should be replaced by [`~Accelerator.print`] to be printed once per process + +```diff +- print("My thing I want to print!") ++ accelerator.print("My thing I want to print!") +``` + +### Executing processes + +#### Once on a single server + +For statements that should be executed once per server, use [`~Accelerator.is_local_main_process`]: + +```python +if accelerator.is_local_main_process: + do_thing_once_per_server() +``` + +A function can be wrapped using the [`~Accelerator.on_local_main_process`] function to achieve the same +behavior on a function's execution: + +```python +@accelerator.on_local_main_process +def do_my_thing(): + "Something done once per server" + do_thing_once_per_server() +``` + +#### Only ever once across all servers + +For statements that should only ever be executed once, use [`~Accelerator.is_main_process`]: + +```python +if accelerator.is_main_process: + do_thing_once() +``` + +A function can be wrapped using the [`~Accelerator.on_main_process`] function to achieve the same +behavior on a function's execution: + +```python +@accelerator.on_main_process +def do_my_thing(): + "Something done once per server" + do_thing_once() +``` + +#### On specific processes + +If a function should be ran on a specific overall or local process index, there are similar decorators +to achieve this: + +```python +@accelerator.on_local_process(local_process_idx=0) +def do_my_thing(): + "Something done on process index 0 on each server" + do_thing_on_index_zero_on_each_server() +``` + +```python +@accelerator.on_process(process_index=0) +def do_my_thing(): + "Something done on process index 0" + do_thing_on_index_zero() +``` + +### Synchronicity control + +Use [`~Accelerator.wait_for_everyone`] to make sure all processes join that point before continuing. (Useful before a model save for instance) + +### Saving and loading + +Use [`~Accelerator.unwrap_model`] before saving to remove all special model wrappers added during the distributed process. + +```python +model = MyModel() +model = accelerator.prepare(model) +# Unwrap +model = accelerator.unwrap_model(model) +``` + +Use [`~Accelerator.save`] instead of `torch.save`: + +```diff + state_dict = model.state_dict() +- torch.save(state_dict, "my_state.pkl") ++ accelerator.save(state_dict, "my_state.pkl") +``` + +### Operations + +Use [`~Accelerator.clip_grad_norm_`] instead of ``torch.nn.utils.clip_grad_norm_`` and [`~Accelerator.clip_grad_value_`] instead of ``torch.nn.utils.clip_grad_value`` + +### Gradient Accumulation + +To perform gradient accumulation use [`~Accelerator.accumulate`] and specify a gradient_accumulation_steps. +This will also automatically ensure the gradients are synced or unsynced when on +multi-device training, check if the step should actually be performed, and auto-scale the loss: + +```diff +- accelerator = Accelerator() ++ accelerator = Accelerator(gradient_accumulation_steps=2) + + for (input, label) in training_dataloader: ++ with accelerator.accumulate(model): + predictions = model(input) + loss = loss_function(predictions, labels) + accelerator.backward(loss) + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + +## Overall API documentation: + +[[autodoc]] Accelerator \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/big_modeling.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/big_modeling.mdx new file mode 100644 index 0000000..e54ac08 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/big_modeling.mdx @@ -0,0 +1,41 @@ + + +# Working with large models + +## Dispatching and Offloading Models + +[[autodoc]] big_modeling.init_empty_weights +[[autodoc]] big_modeling.cpu_offload +[[autodoc]] big_modeling.disk_offload +[[autodoc]] big_modeling.dispatch_model +[[autodoc]] big_modeling.load_checkpoint_and_dispatch + +## Model Hooks + +### Hook Classes + +[[autodoc]] hooks.ModelHook +[[autodoc]] hooks.AlignDevicesHook +[[autodoc]] hooks.SequentialHook + +### Adding Hooks + +[[autodoc]] hooks.add_hook_to_module +[[autodoc]] hooks.attach_execution_device_hook +[[autodoc]] hooks.attach_align_device_hook +[[autodoc]] hooks.attach_align_device_hook_on_blocks + +### Removing Hooks + +[[autodoc]] hooks.remove_hook_from_module +[[autodoc]] hooks.remove_hook_from_submodules \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/cli.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/cli.mdx new file mode 100644 index 0000000..a9e955d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/cli.mdx @@ -0,0 +1,153 @@ + + +# The Command Line + +Below is a list of all the available commands 🤗 Accelerate with their parameters + +## accelerate config + +**Command**: + +`accelerate config` or `accelerate-config` + +Launches a series of prompts to create and save a `default_config.yml` configuration file for your training system. Should +always be ran first on your machine. + +**Usage**: + +```bash +accelerate config [arguments] +``` + +**Optional Arguments**: +* `--config_file CONFIG_FILE` (`str`) -- The path to use to store the config file. Will default to a file named default_config.yaml in the cache location, which is the content + of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have such an environment variable, your cache directory + (`~/.cache` or the content of `XDG_CACHE_HOME`) suffixed with `huggingface`. +* `-h`, `--help` (`bool`) -- Show a help message and exit + +## accelerate env + +**Command**: + +`accelerate env` or `accelerate-env` + +Lists the contents of the passed 🤗 Accelerate configuration file. Should always be used when opening an issue on the [GitHub repository](https://github.com/huggingface/accelerate). + +**Usage**: + +```bash +accelerate env [arguments] +``` + +**Optional Arguments**: +* `--config_file CONFIG_FILE` (`str`) -- The path to use to store the config file. Will default to a file named default_config.yaml in the cache location, which is the content + of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have such an environment variable, your cache directory + (`~/.cache` or the content of `XDG_CACHE_HOME`) suffixed with `huggingface`. +* `-h`, `--help` (`bool`) -- Show a help message and exit + +## accelerate launch + +**Command**: + +`accelerate launch` or `accelerate-launch` + +Launches a specified script on a distributed system with the right parameters. + +**Usage**: + +```bash +accelerate launch [arguments] {training_script} --{training_script-argument-1} --{training_script-argument-2} ... +``` + +**Positional Arguments**: + +- `{training_script}` -- The full path to the script to be launched in parallel +- `--{training_script-argument-1}` -- Arguments of the training script + +**Optional Arguments**: + +* `-h`, `--help` (`bool`) -- Show a help message and exit +* `--config_file CONFIG_FILE` (`str`)-- The config file to use for the default values in the launching script. +* `--cpu` (`bool`) -- Whether or not to force the training on the CPU. +* `--mixed_precision {no,fp16,bf16}` (`str`) -- Whether or not to use mixed precision training. Choose between FP16 and BF16 (bfloat16) training. BF16 training is only supported on + Nvidia Ampere GPUs and PyTorch 1.10 or later. +* `--multi_gpu` (`bool`, defaults to `False`) -- Whether or not this should launch a distributed GPU training. +* `-m`, `--module` (`bool`) -- Change each process to interpret the launch script as a Python module, executing with the same behavior as 'python -m'. +* `--no_python` (`bool`) -- Skip prepending the training script with 'python' - just execute it directly. Useful when the script is not a Python script. + +The rest of these arguments are configured through `accelerate config` and are read in from the specified `--config_file` (or default configuration) for their +values. They can also be passed in manually. + +**Machine Configuration Arguments**: + +The following arguments are useful for customization of worker machines +* `--machine_rank MACHINE_RANK` (`int`) -- The rank of the machine on which this script is launched. +* `--num_machines NUM_MACHINES` (`int`) -- The total number of machines used in this training. +* `--num_processes NUM_PROCESSES` (`int`) -- The total number of processes to be launched in parallel. +* `--gpu_ids` (`str`) -- What GPUs (by id) should be used for training on this machine as a comma-seperated list +* `--main_process_ip MAIN_PROCESS_IP` (`str`) -- The IP address of the machine of rank 0. +* `--main_process_port MAIN_PROCESS_PORT` (`int`) -- The port to use to communicate with the machine of rank 0. +* `--num_cpu_threads_per_process NUM_CPU_THREADS_PER_PROCESS` (`int`) -- The number of CPU threads per process. Can be tuned for optimal performance. + + +**DeepSpeed Arguments**: + +The following arguments are only useful when `use_deepspeed` is passed: +* `--use_deepspeed` (`bool`) -- Whether to use deepspeed. +* `--deepspeed_config_file DEEPSPEED_CONFIG_FILE` (`str`) -- DeepSpeed config file. +* `--zero_stage ZERO_STAGE` (`str`) -- DeepSpeed's ZeRO optimization stage +* `--offload_optimizer_device OFFLOAD_OPTIMIZER_DEVICE` (`str`) -- Decides where (none|cpu|nvme) to offload optimizer states +* `--offload_param_device OFFLOAD_PARAM_DEVICE` (`str`) -- Decides where (none|cpu|nvme) to offload parameters +* `--gradient_accumulation_steps GRADIENT_ACCUMULATION_STEPS` (`int`) -- Number of gradient_accumulation_steps used in your training script +* `--gradient_clipping GRADIENT_CLIPPING` (`float`) -- gradient clipping value used in your training script +The following arguments are related to using ZeRO Stage-3 +* `--zero3_init_flag ZERO3_INIT_FLAG` (`bool`) -- Decides Whether (true|false) to enable `deepspeed.zero.Init` for constructing massive models +* `--zero3_save_16bit_model ZERO3_SAVE_16BIT_MODEL` (`bool`) -- Decides Whether (true|false) to save 16-bit model weights when using ZeRO Stage-3 + +**Fully Sharded Data Parallelism Arguments**: + +The following arguments are only useful when `use_fdsp` is passed: +* `--use_fsdp` (`bool`) -- Whether to use fsdp. +* `--offload_params OFFLOAD_PARAMS` (`bool`) -- Decides Whether (true|false) to offload parameters and gradients to CPU. +* `--min_num_params MIN_NUM_PARAMS` (`int`) -- FSDP's minimum number of parameters for Default Auto Wrapping. +* `--sharding_strategy SHARDING_STRATEGY` (`str`) -- FSDP's Sharding Strategy. + +**TPU Arguments**: + +The following arguments are only useful when `tpu` is passed: +* `--tpu` (`bool`) - Whether or not this should launch a TPU training. +* `--main_training_function MAIN_TRAINING_FUNCTION` (`str`) -- The name of the main function to be executed in your script. + +**AWS SageMaker Arguments**: + +The following arguments are only useful when training in SageMaker +* `--aws_access_key_id AWS_ACCESS_KEY_ID` (`str`) -- The AWS_ACCESS_KEY_ID used to launch the Amazon SageMaker training job +* `--aws_secret_access_key AWS_SECRET_ACCESS_KEY` (`str`) -- The AWS_SECRET_ACCESS_KEY used to launch the Amazon SageMaker training job + +## accelerate test + +`accelerate test` or `accelerate-test` + +Runs `accelerate/test_utils/test_script.py` to verify that 🤗 Accelerate has been properly configured on your system and runs. + +**Usage**: + +```bash +accelerate test [arguments] +``` + +**Optional Arguments**: +* `--config_file CONFIG_FILE` (`str`) -- The path to use to store the config file. Will default to a file named default_config.yaml in the cache location, which is the content + of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have such an environment variable, your cache directory + (`~/.cache` or the content of `XDG_CACHE_HOME`) suffixed with `huggingface`. +* `-h`, `--help` (`bool`) -- Show a help message and exit diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/deepspeed.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/deepspeed.mdx new file mode 100644 index 0000000..fee886f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/deepspeed.mdx @@ -0,0 +1,25 @@ + + +# Utilities for DeepSpeed + +[[autodoc]] utils.DeepSpeedPlugin + +[[autodoc]] utils.DummyOptim + +[[autodoc]] utils.DummyScheduler + +[[autodoc]] utils.DeepSpeedEngineWrapper + +[[autodoc]] utils.DeepSpeedOptimizerWrapper + +[[autodoc]] utils.DeepSpeedSchedulerWrapper diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/kwargs.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/kwargs.mdx new file mode 100644 index 0000000..04f58af --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/kwargs.mdx @@ -0,0 +1,29 @@ + + +# Kwargs Handlers + +The following objects can be passed to the main [`Accelerator`] to customize how some PyTorch objects +related to distributed training or mixed precision are created. + + +## DistributedDataParallelKwargs + +[[autodoc]] DistributedDataParallelKwargs + +## GradScalerKwargs + +[[autodoc]] GradScalerKwargs + +## InitProcessGroupKwargs + +[[autodoc]] InitProcessGroupKwargs diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/launchers.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/launchers.mdx new file mode 100644 index 0000000..6f37f0a --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/launchers.mdx @@ -0,0 +1,19 @@ + + +# Launchers + +Functions for launching training on distributed processes. + + +[[autodoc]] accelerate.notebook_launcher +[[autodoc]] accelerate.debug_launcher \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/logging.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/logging.mdx new file mode 100644 index 0000000..675af41 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/logging.mdx @@ -0,0 +1,24 @@ + + +# Logging with Accelerate + +Accelerate has its own logging utility to handle logging while in a distributed system. +To utilize this replace cases of `logging` with `accelerate.logging`: +```diff +- import logging ++ from accelerate.logging import get_logger +- logger = logging.getLogger(__name__) ++ logger = get_logger(__name__) +``` + +[[autodoc]] logging.get_logger \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/state.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/state.mdx new file mode 100644 index 0000000..f1f5ef9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/state.mdx @@ -0,0 +1,23 @@ + + +# Stateful Classes + +Below are variations of a [singleton class](https://en.wikipedia.org/wiki/Singleton_pattern) in the sense that all +instances share the same state, which is initialized on the first instantiation. + +These classes are immutable and store information about certain configurations or +states. + +[[autodoc]] state.AcceleratorState + +[[autodoc]] state.GradientState \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/torch_wrappers.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/torch_wrappers.mdx new file mode 100644 index 0000000..4ac8ae5 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/torch_wrappers.mdx @@ -0,0 +1,33 @@ + + +# Wrapper classes for torch Dataloaders, Optimizers, and Schedulers + +The internal classes Accelerate uses to prepare objects for distributed training +when calling [`~Accelerator.prepare`]. + +## Datasets and DataLoaders + +[[autodoc]] data_loader.prepare_data_loader + +[[autodoc]] data_loader.BatchSamplerShard +[[autodoc]] data_loader.IterableDatasetShard +[[autodoc]] data_loader.DataLoaderShard +[[autodoc]] data_loader.DataLoaderDispatcher + +## Optimizers + +[[autodoc]] optimizer.AcceleratedOptimizer + +## Schedulers + +[[autodoc]] scheduler.AcceleratedScheduler \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/tracking.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/tracking.mdx new file mode 100644 index 0000000..5e7a97f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/tracking.mdx @@ -0,0 +1,26 @@ + + +# Experiment Tracking + +## The Base Tracker Class + +[[autodoc]] tracking.GeneralTracker + +## Integrated Trackers + +[[autodoc]] tracking.TensorBoardTracker + - __init__ +[[autodoc]] tracking.WandBTracker + - __init__ +[[autodoc]] tracking.CometMLTracker + - __init__ diff --git a/v0.13.2/accelerate-0.13.2/docs/source/package_reference/utilities.mdx b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/utilities.mdx new file mode 100644 index 0000000..0c64953 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/package_reference/utilities.mdx @@ -0,0 +1,95 @@ + + +# Helpful Utilities + +Below are a variety of utility functions that 🤗 Accelerate provides, broken down by use-case. + +## Data Classes + +These are basic dataclasses used throughout 🤗 Accelerate and they can be passed in as parameters. + +[[autodoc]] utils.DistributedType + +[[autodoc]] utils.LoggerType + +[[autodoc]] utils.PrecisionType + +## Data Manipulation and Operations + +These include data operations that mimic the same `torch` ops but can be used on distributed processes. + +[[autodoc]] utils.broadcast + +[[autodoc]] utils.concatenate + +[[autodoc]] utils.gather + +[[autodoc]] utils.pad_across_processes + +[[autodoc]] utils.reduce + +[[autodoc]] utils.send_to_device + +## Environment Checks + +These functionalities check the state of the current working environment including information about the operating system itself, what it can support, and if particular dependencies are installed. + +[[autodoc]] utils.is_bf16_available + +[[autodoc]] utils.is_torch_version + +[[autodoc]] utils.is_tpu_available + +## Environment Configuration + +[[autodoc]] utils.write_basic_config + +When setting up 🤗 Accelerate for the first time, rather than running `accelerate config` [~utils.write_basic_config] can be used as an alternative for quick configuration. + +## Memory + +[[autodoc]] utils.get_max_memory + +[[autodoc]] utils.find_executable_batch_size + +## Modeling + +These utilities relate to interacting with PyTorch models + +[[autodoc]] utils.extract_model_from_parallel + +[[autodoc]] utils.get_max_layer_size + +[[autodoc]] utils.offload_state_dict + + +## Parallel + +These include general utilities that should be used when working in parallel. + +[[autodoc]] utils.extract_model_from_parallel + +[[autodoc]] utils.save + +[[autodoc]] utils.wait_for_everyone + + +## Random + +These utilities relate to setting and synchronizing of all the random states. + +[[autodoc]] utils.set_seed + +[[autodoc]] utils.synchronize_rng_state + +[[autodoc]] utils.synchronize_rng_states diff --git a/v0.13.2/accelerate-0.13.2/docs/source/quicktour.mdx b/v0.13.2/accelerate-0.13.2/docs/source/quicktour.mdx new file mode 100644 index 0000000..6d92e79 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/quicktour.mdx @@ -0,0 +1,501 @@ + + +# Quick tour + +Let's have a look at the 🤗 Accelerate main features and traps to avoid. + +## Main use + +To use 🤗 Accelerate in your own script, you have to change four things: + +1. Import the [`Accelerator`] main class and instantiate one in an `accelerator` object: + +```python +from accelerate import Accelerator + +accelerator = Accelerator() +``` + +This should happen as early as possible in your training script as it will initialize everything necessary for +distributed training. You don't need to indicate the kind of environment you are in (just one machine with a GPU, one +machines with several GPUs, several machines with multiple GPUs or a TPU), the library will detect this automatically. + +2. Remove the call `.to(device)` or `.cuda()` for your model and input data. The `accelerator` object +will handle this for you and place all those objects on the right device for you. If you know what you're doing, you +can leave those `.to(device)` calls but you should use the device provided by the `accelerator` object: +`accelerator.device`. + +To fully deactivate the automatic device placement, pass along `device_placement=False` when initializing your +[`Accelerator`]. + + + + If you place your objects manually on the proper device, be careful to create your optimizer after putting your + model on `accelerator.device` or your training will fail on TPU. + + + +3. Pass all objects relevant to training (optimizer, model, training dataloader, learning rate scheduler) to the +[`~Accelerator.prepare`] method. This will make sure everything is ready for training. + +```python +model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, lr_scheduler +) +``` + +In particular, your training dataloader will be sharded across all GPUs/TPU cores available so that each one sees a +different portion of the training dataset. Also, the random states of all processes will be synchronized at the +beginning of each iteration through your dataloader, to make sure the data is shuffled the same way (if you decided to +use `shuffle=True` or any kind of random sampler). + + + + The actual batch size for your training will be the number of devices used multiplied by the batch size you set in + your script: for instance training on 4 GPUs with a batch size of 16 set when creating the training dataloader will + train at an actual batch size of 64. + + + +Alternatively, you can use the option `split_batches=True` when creating initializing your +[`Accelerator`], in which case the batch size will always stay the same, whether your run your +script on 1, 2, 4 or 64 GPUs. + +You should execute this instruction as soon as all objects for training are created, before starting your actual +training loop. + + + + You should only pass the learning rate scheduler to [`~Accelerator.prepare`] when the scheduler needs to be stepped + at each optimizer step. + + + + + + Your training dataloader may change length when going through this method: if you run on X GPUs, it will have its + length divided by X (since your actual batch size will be multiplied by X), unless you set + `split_batches=True`. + + + +Any instruction using your training dataloader length (for instance if you want to log the number of total training +steps) should go after the call to [`~Accelerator.prepare`]. + +You can perfectly send your dataloader to [`~Accelerator.prepare`] on its own, but it's best to send the +model and optimizer to [`~Accelerator.prepare`] together. + +You may or may not want to send your validation dataloader to [`~Accelerator.prepare`], depending on +whether you want to run distributed evaluation or not (see below). + +4. Replace the line `loss.backward()` by `accelerator.backward(loss)`. + +And you're all set! With all these changes, your script will run on your local machine as well as on multiple GPUs or a +TPU! You can either use your favorite tool to launch the distributed training, or you can use the 🤗 Accelerate +launcher. + + +## Distributed evaluation + +You can perform regular evaluation in your training script, if you leave your validation dataloader out of the +[`~Accelerator.prepare`] method. In this case, you will need to put the input data on the +`accelerator.device` manually. + +To perform distributed evaluation, send along your validation dataloader to the [`~Accelerator.prepare`] +method: + +```python +validation_dataloader = accelerator.prepare(validation_dataloader) +``` + +As for your training dataloader, it will mean that (should you run your script on multiple devices) each device will +only see part of the evaluation data. This means you will need to group your predictions together. This is very easy to +do with the [`~Accelerator.gather_for_metrics`] method. + +```python +for inputs, targets in validation_dataloader: + predictions = model(inputs) + # Gather all predictions and targets + all_predictions, all_targets = accelerator.gather_for_metrics((predictions, targets)) + # Example of use with a *Datasets.Metric* + metric.add_batch(all_predictions, all_targets) +``` + + + + Similar to the training dataloader, passing your validation dataloader through + [`~Accelerator.prepare`] may change it: if you run on X GPUs, it will have its length divided by X + (since your actual batch size will be multiplied by X), unless you set `split_batches=True`. + + + +Any instruction using your training dataloader length (for instance if you need the number of total training steps +to create a learning rate scheduler) should go after the call to [`~Accelerator.prepare`]. + +Some data at the end of the dataset may be duplicated so the batch can be divided equally among all workers. As a result, metrics +should be calculated through the [`~Accelerator.gather_for_metrics`] method to automatically remove the duplicated data while gathering. + + + + If for some reason you don't wish to have this automatically done, [`~Accelerator.gather`] can be used instead to gather + the data across all processes and this can manually be done instead. + + + + + + + The [`~Accelerator.gather`] and [`~Accelerator.gather_for_metrics`] methods require the tensors to be all the same size on each process. If + you have tensors of different sizes on each process (for instance when dynamically padding to the maximum length in + a batch), you should use the [`~Accelerator.pad_across_processes`] method to pad you tensor to the + biggest size across processes. + + + +## Launching your distributed script + +You can use the regular commands to launch your distributed training (like `torch.distributed.launch` for +PyTorch), they are fully compatible with 🤗 Accelerate. The only caveat here is that 🤗 Accelerate uses the environment +to determine all useful information, so `torch.distributed.launch` should be used with the flag `--use_env`. + +🤗 Accelerate also provides a CLI tool that unifies all launchers, so you only have to remember one command. To use it, +just run: + +```bash +accelerate config +``` + +on your machine and reply to the questions asked. This will save a *default_config.yaml* file in your cache folder for +🤗 Accelerate. That cache folder is (with decreasing order of priority): + +- The content of your environment variable `HF_HOME` suffixed with *accelerate*. +- If it does not exist, the content of your environment variable `XDG_CACHE_HOME` suffixed with + *huggingface/accelerate*. +- If this does not exist either, the folder *~/.cache/huggingface/accelerate* + +You can also specify with the flag `--config_file` the location of the file you want to save. + +Once this is done, you can test everything is going well on your setup by running: + +```bash +accelerate test +``` + +This will launch a short script that will test the distributed environment. If it runs fine, you are ready for the next +step! + +Note that if you specified a location for the config file in the previous step, you need to pass it here as well: + +```bash +accelerate test --config_file path_to_config.yaml +``` + +Now that this is done, you can run your script with the following command: + +```bash +accelerate launch path_to_script.py --args_for_the_script +``` + +If you stored the config file in a non-default location, you can indicate it to the launcher like his: + +```bash +accelerate launch --config_file path_to_config.yaml path_to_script.py --args_for_the_script +``` + +You can also override any of the arguments determined by your config file. +To see the complete list of parameters that you can pass in, run `accelerate launch -h`. + +Check out the [Launch tutorial](basic_tutorials/launch) for more information about launching your scripts. + + +## Launching training from a notebook + +In Accelerate 0.3.0, a new [`notebook_launcher`] has been introduced to help you launch your training +function from a notebook. This launcher supports launching a training with TPUs on Colab or Kaggle, as well as training +on several GPUs (if the machine on which you are running your notebook has them). + +Just define a function responsible for your whole training and/or evaluation in a cell of the notebook, then execute a +cell with the following code: + +```python +from accelerate import notebook_launcher + +notebook_launcher(training_function) +``` + + + + Your [`Accelerator`] object should only be defined inside the training function. This is because the + initialization should be done inside the launcher only. + + + +Check out the [Notebook Launcher tutorial](basic_tutorials/notebook) for more information about training on TPUs. + + +## Training on TPU + +If you want to launch your script on TPUs, there are a few caveats you should be aware of. Behind the scenes, the TPUs +will create a graph of all the operations happening in your training step (forward pass, backward pass and optimizer +step). This is why your first step of training will always be very long as building and compiling this graph for +optimizations takes some time. + +The good news is that this compilation will be cached so the second step and all the following will be much faster. The +bad news is that it only applies if all of your steps do exactly the same operations, which implies: + +- having all tensors of the same length in all your batches +- having static code (i.e., not a for loop of length that could change from step to step) + +Having any of the things above change between two steps will trigger a new compilation which will, once again, take a +lot of time. In practice, that means you must take special care to have all your tensors in your inputs of the same +shape (so no dynamic padding for instance if you are in an NLP problem) and should not use layers with for loops that +have different lengths depending on the inputs (such as an LSTM) or the training will be excruciatingly slow. + +To introduce special behavior in your script for TPUs you can check the `distributed_type` of your +`accelerator`: + +```python docstyle-ignore +from accelerate import DistributedType + +if accelerator.distributed_type == DistributedType.TPU: + # do something of static shape +else: + # go crazy and be dynamic +``` + +The [NLP example](https://github.com/huggingface/accelerate/blob/main/examples/nlp_example.py) shows an example in a +situation with dynamic padding. + +One last thing to pay close attention to: if your model has tied weights (such as language models which tie the weights +of the embedding matrix with the weights of the decoder), moving this model to the TPU (either yourself or after you +passed your model to [`~Accelerator.prepare`]) will break the tying. You will need to retie the weights +after. You can find an example of this in the [run_clm_no_trainer](https://github.com/huggingface/transformers/blob/master/examples/pytorch/language-modeling/run_clm.py) script in +the Transformers repository. + +Check out the [TPU tutorial](concept_guides/training_tpu) for more information about training on TPUs. + + +## Other caveats + +We list here all smaller issues you could have in your script conversion and how to resolve them. + +### Execute a statement only on one processes + +Some of your instructions only need to run for one process on a given server: for instance a data download or a log +statement. To do this, wrap the statement in a test like this: + +```python docstyle-ignore +if accelerator.is_local_main_process: + # Is executed once per server +``` + +Another example is progress bars: to avoid having multiple progress bars in your output, you should only display one on +the local main process: + +```python +from tqdm.auto import tqdm + +progress_bar = tqdm(range(args.max_train_steps), disable=not accelerator.is_local_main_process) +``` + +The *local* means per machine: if you are running your training on two servers with several GPUs, the instruction will +be executed once on each of those servers. If you need to execute something only once for all processes (and not per +machine) for instance, uploading the final model to the 🤗 model hub, wrap it in a test like this: + +```python docstyle-ignore +if accelerator.is_main_process: + # Is executed once only +``` + +For printing statements you only want executed once per machine, you can just replace the `print` function by +`accelerator.print`. + + +### Defer execution + +When you run your usual script, instructions are executed in order. Using 🤗 Accelerate to deploy your script on several +GPUs at the same time introduces a complication: while each process executes all instructions in order, some may be +faster than others. + +You might need to wait for all processes to have reached a certain point before executing a given instruction. For +instance, you shouldn't save a model before being sure every process is done with training. To do this, just write the +following line in your code: + +``` +accelerator.wait_for_everyone() +``` + +This instruction will block all the processes that arrive first until all the other processes have reached that +point (if you run your script on just one GPU or CPU, this won't do anything). + + +### Saving/loading a model + +Saving the model you trained might need a bit of adjustment: first you should wait for all processes to reach that +point in the script as shown above, and then, you should unwrap your model before saving it. This is because when going +through the [`~Accelerator.prepare`] method, your model may have been placed inside a bigger model, +which deals with the distributed training. This in turn means that saving your model state dictionary without taking +any precaution will take that potential extra layer into account, and you will end up with weights you can't load back +in your base model. + +This is why it's recommended to *unwrap* your model first. Here is an example: + +``` +accelerator.wait_for_everyone() +unwrapped_model = accelerator.unwrap_model(model) +accelerator.save(unwrapped_model.state_dict(), filename) +``` + +If your script contains logic to load a checkpoint, we also recommend you load your weights in the unwrapped model +(this is only useful if you use the load function after making your model go through +[`~Accelerator.prepare`]). Here is an example: + +``` +unwrapped_model = accelerator.unwrap_model(model) +unwrapped_model.load_state_dict(torch.load(filename)) +``` + +Note that since all the model parameters are references to tensors, this will load your weights inside `model`. + +## Saving/loading entire states + +When training your model, you may want to save the current state of the model, optimizer, random generators, and potentially LR schedulers to be restored in the _same script_. +You can use [`~Accelerator.save_state`] and [`~Accelerator.load_state`] respectively to do so, just by simply passing in a save location. +If you have registered any other stateful items to be stored through [`~Accelerator.register_for_checkpointing`] they will also be saved and/or loaded. + + + + Every object passed to [`~Accelerator.register_for_checkpointing`] must have a `load_state_dict` and `state_dict` function to be stored + + + + +### Gradient clipping + +If you are using gradient clipping in your script, you should replace the calls to +`torch.nn.utils.clip_grad_norm_` or `torch.nn.utils.clip_grad_value_` with [`~Accelerator.clip_grad_norm_`] +and [`~Accelerator.clip_grad_value_`] respectively. + + +### Mixed Precision training + +If you are running your training in Mixed Precision with 🤗 Accelerate, you will get the best result with your loss being +computed inside your model (like in Transformer models for instance). Every computation outside of the model will be +executed in full precision (which is generally what you want for loss computation, especially if it involves a +softmax). However you might want to put your loss computation inside the *accelerator.autocast* context manager: + +``` +with accelerator.autocast(): + loss = complex_loss_function(outputs, target): +``` + +Another caveat with Mixed Precision training is that the gradient will skip a few updates at the beginning and +sometimes during training: because of the dynamic loss scaling strategy, there are points during training where the +gradients have overflown, and the loss scaling factor is reduced to avoid this happening again at the next step. + +This means that you may update your learning rate scheduler when there was no update, which is fine in general, but may +have an impact when you have very little training data, or if the first learning rate values of your scheduler are very +important. In this case, you can skip the learning rate scheduler updates when the optimizer step was not done like +this: + +``` +if not accelerator.optimizer_step_was_skipped: + lr_scheduler.step() +``` + +### Gradient Accumulation + +To perform gradient accumulation use [`~Accelerator.accumulate`] and specify a `gradient_accumulation_steps`. +This will also automatically ensure the gradients are synced or unsynced when on multi-device training, check if the step should +actually be performed, and auto-scale the loss: + +```python +accelerator = Accelerator(gradient_accumulation_steps=2) +model, optimizer, training_dataloader = accelerator.prepare(model, optimizer, training_dataloader) + +for input, label in training_dataloader: + with accelerator.accumulate(model): + predictions = model(input) + loss = loss_function(predictions, label) + accelerator.backward(loss) + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + +### DeepSpeed + +DeepSpeed support is experimental, so the underlying API will evolve in the near future and may have some slight +breaking changes. In particular, 🤗 Accelerate does not support DeepSpeed config you have written yourself yet, this +will be added in a next version. + + + + The [`notebook_launcher`] does not support the DeepSpeed integration yet. + + + +## Internal mechanism + +Internally, the library works by first analyzing the environment in which the script is launched to determine which +kind of distributed setup is used, how many different processes there are and which one the current script is in. All +that information is stored in the [`~AcceleratorState`]. + +This class is initialized the first time you instantiate an [`~Accelerator`] as well as performing any +specific initialization your distributed setup needs. Its state is then uniquely shared through all instances of +[`~state.AcceleratorState`]. + +Then, when calling [`~Accelerator.prepare`], the library: + +- wraps your model(s) in the container adapted for the distributed setup, +- wraps your optimizer(s) in a [`~optimizer.AcceleratedOptimizer`], +- creates a new version of your dataloader(s) in a [`~data_loader.DataLoaderShard`]. + +While the model(s) and optimizer(s) are just put in simple wrappers, the dataloader(s) are re-created. This is mostly +because PyTorch does not let the user change the `batch_sampler` of a dataloader once it's been created and the +library handles the sharding of your data between processes by changing that `batch_sampler` to yield every other +`num_processes` batches. + +The [`~data_loader.DataLoaderShard`] subclasses `DataLoader` to add the following functionality: + +- it synchronizes the appropriate random number generator of all processes at each new iteration, to ensure any + randomization (like shuffling) is done the exact same way across processes. +- it puts the batches on the proper device before yielding them (unless you have opted out of + `device_placement=True`). + +The random number generator synchronization will by default synchronize: + +- the `generator` attribute of a given sampler (like the PyTorch `RandomSampler`) for PyTorch >= 1.6 +- the main random number generator in PyTorch <=1.5.1 + +You can choose which random number generator(s) to synchronize with the `rng_types` argument of the main +[`Accelerator`]. In PyTorch >= 1.6, it is recommended to rely on a local `generator` to avoid +setting the same seed in the main random number generator in all processes. + + + + Synchronization of the main torch (or CUDA or XLA) random number generator will affect any other potential random + artifacts you could have in your dataset (like random data augmentation) in the sense that all processes will get + the same random numbers from the torch random modules (so will apply the same random data augmentation if it's + controlled by torch). + + + + + + The randomization part of your custom sampler, batch sampler or iterable dataset should be done using a local + `torch.Generator` object (in PyTorch >= 1.6), see the traditional `RandomSampler`, as an example. + + + +For more details about the internals, see the [Internals page](package_reference/torch_wrappers). diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/big_modeling.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/big_modeling.mdx new file mode 100644 index 0000000..1e13849 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/big_modeling.mdx @@ -0,0 +1,294 @@ + + +# Handling big models + +When loading a pretrained model in PyTorch, the usual workflow looks like this: + +```py +import torch + +my_model = ModelClass(...) +state_dict = torch.load(checkpoint_file) +my_model.load_state_dict(state_dict) +``` + +In plain English, those steps are: +1. Create the model with randomly initialized weights +2. Load the model weights (in a dictionary usually called a state dict) from the disk +3. Load those weights inside the model + +While this works very well for regularly sized models, this workflow has some clear limitations when we deal with a huge model: in step 1, we load a full version of the model in RAM, and spend some time randomly initializing the weights (which will be discarded in step 3). In step 2, we load another full version of the model in RAM, with the pretrained weights. If you're loading a model with 6 billions parameters, this means you will need 24GB of RAM for each copy of the model, so 48GB in total (half of it to load the model in FP16). + + + + This API is quite new and still in its experimental stage. While we strive to provide a stable API, it's possible some small parts of the public API will change in the future. + + + +## How the Process Works: A Quick Overview + + + +## How the Process Works: Working with Code + +### Instantiating an empty model + +The first tool 🤗 Accelerate introduces to help with big models is a context manager [`init_empty_weights`] that helps you initialize a model without using any RAM, so that step 1 can be done on models of any size. Here is how it works: + +```py +from accelerate import init_empty_weights + +with init_empty_weights(): + my_model = ModelClass(...) +``` + +For instance: + +```py +with init_empty_weights(): + model = nn.Sequential(*[nn.Linear(10000, 10000) for _ in range(1000)]) +``` + +initializes an empty model with a bit more than 100B parameters. Behind the scenes, this relies on the meta device introduced in PyTorch 1.9. During the initialization under the context manager, each time a parameter is created, it is instantly moved on that device. + + + + You can't move a model initialized like this on CPU or another device directly, since it doesn't have any data. It's also very likely that a forward pass with that empty model will fail, as not all operations are supported on the meta device. + + + +### Sharded checkpoints + +It's possible your model is so big that even a single copy won't fit in RAM. That doesn't mean it can't be loaded: if you have one or several GPUs, this is more memory available to store your model. In this case, it's better if your checkpoint is split in several smaller files that we call checkpoint shards. + +🤗 Accelerate will handle sharded checkpoints as long as you follow the following format: your checkpoint should be in a folder, with several files containing the partial state dicts, and there should be an index in the JSON format that contains a dictionary mapping parameter names to the file containing their weights. For instance we could have a folder containing: + +```bash +first_state_dict.bin +index.json +second_state_dict.bin +``` + +with index.json being the following file: + +``` +{ + "linear1.weight": "first_state_dict.bin", + "linear1.bias": "first_state_dict.bin", + "linear2.weight": "second_state_dict.bin", + "linear2.bias": "second_state_dict.bin" +} +``` + +and `first_state_dict.bin` containing the weights for `"linear1.weight"` and `"linear1.bias"`, `second_state_dict.bin` the ones for `"linear2.weight"` and `"linear2.bias"` + +### Loading weights + +The second tool 🤗 Accelerate introduces is a function [`load_checkpoint_and_dispatch`], that will allow you to load a checkpoint inside your empty model. This supports full checkpoints (a single file containing the whole state dict) as well as sharded checkpoints. It will also automatically dispatch those weights across the devices you have available (GPUs, CPU RAM), so if you are loading a sharded checkpoint, the maximum RAM usage will be the size of the biggest shard. + +Here is how we can use this to load the [GPT-J-6B](https://huggingface.co/EleutherAI/gpt-j-6B) model. You clone the sharded version of this model with: + +```bash +git clone https://huggingface.co/sgugger/sharded-gpt-j-6B +cd sharded-gpt-j-6B +git-lfs install +git pull +``` + +then we can initialize the model with + +```py +from accelerate import init_empty_weights +from transformers import AutoConfig, AutoModelForCausalLM + +checkpoint = "EleutherAI/gpt-j-6B" +config = AutoConfig.from_pretrained(checkpoint) + +with init_empty_weights(): + model = AutoModelForCausalLM.from_config(config) +``` + +and load the checkpoint we just downloaded with: + +```py +from accelerate import load_checkpoint_and_dispatch + +model = load_checkpoint_and_dispatch( + model, "sharded-gpt-j-6B", device_map="auto", no_split_module_classes=["GPTJBlock"] +) +``` + +By passing `device_map="auto"`, we tell 🤗 Accelerate to determine automatically where to put each layer of the model depending on the available resources: +- first we use the maximum space available on the GPU(s) +- if we still need space, we store the remaining weights on the CPU +- if there is not enough RAM, we store the remaining weights on the hard drive as memory-mapped tensors + +`no_split_module_classes=["GPTJBlock"]` indicates that the modules that are `GPTJBlock` should not be split on different devices. You should set here all blocks that include a residual connection of some kind. + +You can see the `device_map` that 🤗 Accelerate picked by accessing the `hf_device_map` attribute of your model: + +```py +model.hf_device_map +``` + +```python out +{'transformer.wte': 0, + 'transformer.drop': 0, + 'transformer.h.0': 0, + 'transformer.h.1': 0, + 'transformer.h.2': 0, + 'transformer.h.3': 0, + 'transformer.h.4': 0, + 'transformer.h.5': 0, + 'transformer.h.6': 0, + 'transformer.h.7': 0, + 'transformer.h.8': 0, + 'transformer.h.9': 0, + 'transformer.h.10': 0, + 'transformer.h.11': 0, + 'transformer.h.12': 0, + 'transformer.h.13': 0, + 'transformer.h.14': 0, + 'transformer.h.15': 0, + 'transformer.h.16': 0, + 'transformer.h.17': 0, + 'transformer.h.18': 0, + 'transformer.h.19': 0, + 'transformer.h.20': 0, + 'transformer.h.21': 0, + 'transformer.h.22': 0, + 'transformer.h.23': 0, + 'transformer.h.24': 1, + 'transformer.h.25': 1, + 'transformer.h.26': 1, + 'transformer.h.27': 1, + 'transformer.ln_f': 1, + 'lm_head': 1} + ``` + +You can also design your `device_map` yourself, if you prefer to explicitly decide where each layer should be. In this case, the command above becomes: + +```py +model = load_checkpoint_and_dispatch(model, "sharded-gpt-j-6B", device_map=my_device_map) +``` + +### Run the model + +Now that we have done this, our model lies across several devices, and maybe the hard drive. But it can still be used as a regular PyTorch model: + +```py +from transformers import AutoTokenizer + +tokenizer = AutoTokenizer.from_pretrained(checkpoint) +inputs = tokenizer("Hello, my name is", return_tensors="pt") +inputs = inputs.to(0) +output = model.generate(inputs["input_ids"]) +tokenizer.decode(output[0].tolist()) +``` + +Behind the scenes, 🤗 Accelerate added hooks to the model, so that: +- at each layer, the inputs are put on the right device (so even if your model is spread across several GPUs, it works) +- for the weights offloaded on the CPU, they are put on a GPU just before the forward pass, and cleaned up just after +- for the weights offloaded on the hard drive, they are loaded in RAM then put on a GPU just before the forward pass, and cleaned up just after + +This way, you model can run for inference even if it doesn't fit on one of the GPUs or the CPU RAM! + + + + This only supports inference of your model, not training. Most of the computation happens behind `torch.no_grad()` context managers to avoid spending some GPU memory with intermediate activations. + + + +### Designing a device map + +You can let 🤗 Accelerate handle the device map computation by setting `device_map` to one of the supported options (`"auto"`, `"balanced"`, `"balanced_low_0"`, `"sequential"`) or create one yourself, if you want more control over where each layer should go. + + + + You can derive all sizes of the model (and thus compute a `device_map`) on a model that is on the meta device. + + + +All the options will produce the same result when you don't have enough GPU memory to accommodate the whole model (which is to fit everything that can on the GPU, then offload weights on the CPU or even on the disk if there is not enough RAM). + +When you have more GPU memory available than the model size, here the difference between each option: +- `"auto"` and `"balanced"` evenly split the model on all available GPUs, making it possible for you to use a batch size greater than 1. +- `"balanced_low_0"` evenly splits the model on all GPUs except the first one, and only puts on GPU 0 what does not fit on the others. This option is great when you need to use GPU 0 for some processing of the outputs, like when using the `generate` function for Transformers models +- `"sequential"` will fit what it can on GPU 0, then move on GPU 1 and so forth (so won't use the last GPUs if it doesn't need to). + + + + The options `"auto"` and `"balanced"` produce the same results for now, but the behavior of `"auto"` might change in the future if we find a strategy that makes more sense, while `"balanced"` will stay stable. + + + +First note that you can limit the memory used on each GPU by using the `max_memory` argument (available in [`infer_auto_device_map`] and in all functions using it). When setting `max_memory`, you should pass along a dictionary containing the GPU identifiers (for instance `0`, `1` etc.) and the `"cpu"` key for the maximum RAM you want used for CPU offload. The values can either be an integer (in bytes) or a string representing a number with its unit, such as `"10GiB"` or `"10GB"`. + +Here is an example where we don't want to use more than 10GiB on each of two GPUs and no more than 30GiB of CPU RAM for the model weights: + +```python +from accelerate import infer_auto_device_map + +device_map = infer_auto_device_map(my_model, max_memory={0: "10GiB", 1: "10GiB", "cpu": "30GiB"}) +``` + + + + When a first allocation happens in PyTorch, it loads CUDA kernels which take about 1-2GB of memory depending on the GPU. Therefore you always have less usable memory than the actual size of the GPU. To see how much memory is actually used do `torch.ones(1).cuda()` and look at the memory usage. + + Therefore when you create memory maps with `max_memory` make sure to adjust the avaialble memory accordingly to avoid out-of-memory errors. + + + +Additionally, if you do some additional operations with your outputs without placing them back on the CPU (for instance inside the `generate` method of Transformers) and if you placed your inputs on a GPU, that GPU will consume more memory than the others (Accelerate always place the output back to the device of the input). Therefore if you would like to optimize the maximum batch size and you have many GPUs, give the first GPU less memory. For example, with BLOOM-176B on 8x80 A100 setup the close to ideal map is: + +```python +max_memory = {0: "30GIB", 1: "46GIB", 2: "46GIB", 3: "46GIB", 4: "46GIB", 5: "46GIB", 6: "46GIB", 7: "46GIB"} +``` +as you can see we gave the remaining 7 GPUs ~50% more memory than GPU 0. + +If you opt to fully design the `device_map` yourself, it should be a dictionary with keys being module names of your model and values being a valid device identifier (for instance an integer for the GPUs) or `"cpu"` for CPU offload, `"disk"` for disk offload. The keys need to cover the whole model, you can then define your device map as you wish: for instance if your model has two blocks (let's say `block1` and `block2`) which each contain three linear layers (let's say `linear1`, `linear2` and `linear3`), a valid device map can be: + +```python +device_map = {"block1": 0, "block2": 1} +``` + +another one that is valid could be: + +```python +device_map = {"block1": 0, "block2.linear1": 0, "block2.linear2": 1, "block2.linear3": 1} +``` + +On the other hand, this one is not valid as it does not cover every parameter of the model: + +```python +device_map = {"block1": 0, "block2.linear1": 1, "block2.linear2": 1} +``` + + + + To be the most efficient, make sure your device map puts the parameters on the GPUs in a sequential manner (e.g. don't put one of the first weights on GPU 0, then weights on GPU 1 and the last weight back to GPU 0) to avoid making many transfers of data between the GPUs. + + + +## Limits and further development + +We are aware of the current limitations in the API: + +- While this could theoretically work on just one CPU with potential disk offload, you need at least one GPU to run this API. This will be fixed in further development. +- [`infer_auto_device_map`] (or `device_map="auto"` in [`load_checkpoint_and_dispatch`]) tries to maximize GPU and CPU RAM it sees available when you execute it. While PyTorch is very good at managing GPU RAM efficiently (and giving it back when not needed), it's not entirely true with Python and CPU RAM. Therefore, an automatically computed device map might be too intense on the CPU. Move a few modules to the disk device if you get crashes due to lack of RAM. +- [`infer_auto_device_map`] (or `device_map="auto"` in [`load_checkpoint_and_dispatch`]) attributes devices sequentially (to avoid moving things back and forth) so if your first layer is bigger than the size of the GPU you have, it will end up with everything on the CPU/Disk. +- [`load_checkpoint_and_dispatch`] and [`load_checkpoint_in_model`] do not perform any check on the correctness of your state dict compared to your model at the moment (this will be fixed in a future version), so you may get some weird errors if trying to load a checkpoint with mismatched or missing keys. +- The model parallelism used when your model is split on several GPUs is naive and not optimized, meaning that only one GPU works at a given time and the other sits idle. +- When weights are offloaded on the CPU/hard drive, there is no pre-fetching (yet, we will work on this for future versions) which means the weights are put on the GPU when they are needed and not before. +- Hard-drive offloading might be very slow if the hardware you run on does not have fast communication between disk and CPU (like NVMes). \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/checkpoint.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/checkpoint.mdx new file mode 100644 index 0000000..7d6bbbf --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/checkpoint.mdx @@ -0,0 +1,60 @@ + + +# Checkpointing + +When training a PyTorch model with 🤗 Accelerate, you may often want to save and continue a state of training. Doing so requires +saving and loading the model, optimizer, RNG generators, and the GradScaler. Inside 🤗 Accelerate are two convenience functions to achieve this quickly: +- Use [`~Accelerator.save_state`] for saving everything mentioned above to a folder location +- Use [`~Accelerator.load_state`] for loading everything stored from an earlier `save_state` + +It should be noted that the expectation is that those states come from the same training script, they should not be from two separate scripts. + +- By using [`~Accelerator.register_for_checkpointing`], you can register custom objects to be automatically stored or loaded from the two prior functions, +so long as the object has a `state_dict` **and** a `load_state_dict` functionality. This could include objects such as a learning rate scheduler. + +Below is a brief example using checkpointing to save and reload a state during training: + +```python +from accelerate import Accelerator +import torch + +accelerator = Accelerator() + +my_scheduler = torch.optim.lr_scheduler.StepLR(my_optimizer, step_size=1, gamma=0.99) +my_model, my_optimizer, my_training_dataloader = accelerate.prepare(my_model, my_optimizer, my_training_dataloader) + +# Register the LR scheduler +accelerate.register_for_checkpointing(my_scheduler) + +# Save the starting state +accelerate.save_state("my/save/path") + +device = accelerator.device +my_model.to(device) + +# Perform training +for epoch in range(num_epochs): + for batch in my_training_dataloader: + my_optimizer.zero_grad() + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = my_model(inputs) + loss = my_loss_function(outputs, targets) + accelerator.backward(loss) + my_optimizer.step() + my_scheduler.step() + +# Restore previous state +accelerate.load_state("my/save/path") +``` diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/deepspeed.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/deepspeed.mdx new file mode 100644 index 0000000..29561c7 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/deepspeed.mdx @@ -0,0 +1,494 @@ + + +# DeepSpeed + +[DeepSpeed](https://github.com/microsoft/DeepSpeed) implements everything described in the [ZeRO paper](https://arxiv.org/abs/1910.02054). Currently it provides full support for: + +1. Optimizer state partitioning (ZeRO stage 1) +2. Gradient partitioning (ZeRO stage 2) +3. Parameter partitioning (ZeRO stage 3) +4. Custom mixed precision training handling +5. A range of fast CUDA-extension-based optimizers +6. ZeRO-Offload to CPU and Disk/NVMe + +ZeRO-Offload has its own dedicated paper: [ZeRO-Offload: Democratizing Billion-Scale Model Training](https://arxiv.org/abs/2101.06840). And NVMe-support is described in the paper [ZeRO-Infinity: Breaking the GPU +Memory Wall for Extreme Scale Deep Learning](https://arxiv.org/abs/2104.07857). + +DeepSpeed ZeRO-2 is primarily used only for training, as its features are of no use to inference. + +DeepSpeed ZeRO-3 can be used for inference as well, since it allows huge models to be loaded on multiple GPUs, which +won't be possible on a single GPU. + +🤗 Accelerate integrates [DeepSpeed](https://github.com/microsoft/DeepSpeed) via 2 options: + +1. Integration of the DeepSpeed features via `deepspeed config file` specification in `accelerate config` . You just supply your custom config file or use our template. Most of + this document is focused on this feature. This supports all the core features of DeepSpeed and gives user a lot of flexibility. + User may have to change few lines of code depending on the config. +2. Integration via `deepspeed_plugin`.This supports subset of the DeepSpeed features and uses default options for the rest of the configurations. + User need not change any code and is good for those who are fine with most of the default settings of DeepSpeed. + +## What is integrated? + +Training: + +1. DeepSpeed ZeRO training supports the full ZeRO stages 1, 2 and 3 as well as CPU/Disk offload of optimizer states, gradients and parameters. +Below is a short description of Data Parallelism using ZeRO - Zero Redundancy Optimizer along with diagram from this [blog post](https://www.microsoft.com/en-us/research/blog/zero-deepspeed-new-system-optimizations-enable-training-models-with-over-100-billion-parameters/) +![ZeRO Data Parallelism](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/parallelism-zero.png) + +(Source: [link](https://www.microsoft.com/en-us/research/blog/zero-deepspeed-new-system-optimizations-enable-training-models-with-over-100-billion-parameters/)) + + a. **Stage 1** : Shards optimizer states across data parallel workers/GPUs + + b. **Stage 2** : Shards optimizer states + gradients across data parallel workers/GPUs + + c. **Stage 3**: Shards optimizer states + gradients + model parameters across data parallel workers/GPUs + + d. **Optimizer Offload**: Offloads the gradients + optimizer states to CPU/Disk building on top of ZERO Stage 2 + + e. **Param Offload**: Offloads the model parameters to CPU/Disk building on top of ZERO Stage 3 + +Note: With respect to Disk Offload, the disk should be an NVME for decent speed but it technically work on any Disk + +Inference: + +1. DeepSpeed ZeRO Inference supports ZeRO stage 3 with ZeRO-Infinity. It uses the same ZeRO protocol as training, but + it doesn't use an optimizer and a lr scheduler and only stage 3 is relevant. For more details see: + [deepspeed-zero-inference](#deepspeed-zero-inference). + + +## How it works? + +**Pre-Requisites**: Install DeepSpeed version >=0.6.5. Please refer to the [DeepSpeed Installation details](https://github.com/microsoft/DeepSpeed#installation) +for more information. + +We will first look at easy to use integration via `accelerate config`. +Followed by more flexible and feature rich `deepspeed config file` integration. + +### Accelerate DeepSpeed Plugin +On your machine(s) just run: + +```bash +accelerate config +``` + +and answer the questions asked. It will ask whether you want to use a config file for DeepSpeed to which you should answer no. Then answer the following questions to generate a basic DeepSpeed config. +This will generate a config file that will be used automatically to properly set the +default options when doing + +```bash +accelerate launch my_script.py --args_to_my_script +``` + +For instance, here is how you would run the NLP example `examples/nlp_example.py` (from the root of the repo) with DeepSpeed Plugin: + +**ZeRO Stage-2 DeepSpeed Plugin Example** +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: + gradient_accumulation_steps: 1 + gradient_clipping: 1.0 + offload_optimizer_device: none + offload_param_device: none + zero3_init_flag: true + zero_stage: 2 +distributed_type: DEEPSPEED +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: fp16 +num_machines: 1 +num_processes: 2 +use_cpu: false +``` + +```bash +accelerate launch examples/nlp_example.py --mixed_precision fp16 +``` + +**ZeRO Stage-3 with CPU Offload DeepSpeed Plugin Example** +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: + gradient_accumulation_steps: 1 + gradient_clipping: 1.0 + offload_optimizer_device: cpu + offload_param_device: cpu + zero3_init_flag: true + zero3_save_16bit_model: true + zero_stage: 3 +distributed_type: DEEPSPEED +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: fp16 +num_machines: 1 +num_processes: 2 +use_cpu: false +``` + +```bash +accelerate launch examples/nlp_example.py --mixed_precision fp16 +``` + +Currently, `Accelerate` supports following config through the CLI: + +```bash +`zero_stage`: [0] Disabled, [1] optimizer state partitioning, [2] optimizer+gradient state partitioning and [3] optimizer+gradient+parameter partitioning +`gradient_accumulation_steps`: Number of training steps to accumulate gradients before averaging and applying them. +`gradient_clipping`: Enable gradient clipping with value. +`offload_optimizer_device`: [none] Disable optimizer offloading, [cpu] offload optimizer to CPU, [nvme] offload optimizer to NVMe SSD. Only applicable with ZeRO >= Stage-2. +`offload_param_device`: [none] Disable parameter offloading, [cpu] offload parameters to CPU, [nvme] offload parameters to NVMe SSD. Only applicable with ZeRO Stage-3. +`zero3_init_flag`: Decides whether to enable `deepspeed.zero.Init` for constructing massive models. Only applicable with ZeRO Stage-3. +`zero3_save_16bit_model`: Decides whether to save 16-bit model weights when using ZeRO Stage-3. +`mixed_precision`: `no` for FP32 training, `fp16` for FP16 mixed-precision training and `bf16` for BF16 mixed-precision training. +``` +To be able to tweak more options, you will need to use a DeepSpeed config file. + +### DeepSpeed Config File +On your machine(s) just run: + +```bash +accelerate config +``` + +and answer the questions asked. It will ask whether you want to use a config file for deepspeed to which you answer yes +and provide the path to the deepspeed config file. +This will generate a config file that will be used automatically to properly set the +default options when doing + +```bash +accelerate launch my_script.py --args_to_my_script +``` + +For instance, here is how you would run the NLP example `examples/by_feature/deepspeed_with_config_support.py` (from the root of the repo) with DeepSpeed Config File: + +**ZeRO Stage-2 DeepSpeed Config File Example** +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: + deepspeed_config_file: /home/ubuntu/accelerate/examples/configs/deepspeed_config_templates/zero_stage2_config.json + zero3_init_flag: true +distributed_type: DEEPSPEED +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: fp16 +num_machines: 1 +num_processes: 2 +use_cpu: false +``` + +with the contents of `zero_stage2_config.json` being: +```json +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 2, + "allgather_partitions": true, + "allgather_bucket_size": 2e8, + "overlap_comm": true, + "reduce_scatter": true, + "reduce_bucket_size": "auto", + "contiguous_gradients": true + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} +``` + +```bash +accelerate launch examples/by_feature/deepspeed_with_config_support.py \ +--config_name "gpt2-large" \ +--tokenizer_name "gpt2-large" \ +--dataset_name "wikitext" \ +--dataset_config_name "wikitext-2-raw-v1" \ +--block_size 128 \ +--output_dir "./clm/clm_deepspeed_stage2_accelerate" \ +--learning_rate 5e-4 \ +--per_device_train_batch_size 24 \ +--per_device_eval_batch_size 24 \ +--num_train_epochs 3 \ +--with_tracking \ +--report_to "wandb"\ +``` + +**ZeRO Stage-3 with CPU offload DeepSpeed Config File Example** +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: + deepspeed_config_file: /home/ubuntu/accelerate/examples/configs/deepspeed_config_templates/zero_stage3_offload_config.json + zero3_init_flag: true +distributed_type: DEEPSPEED +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: fp16 +num_machines: 1 +num_processes: 2 +use_cpu: false +``` +with the contents of `zero_stage3_offload_config.json` being: +```json +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto" + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 3, + "offload_optimizer": { + "device": "cpu", + "pin_memory": true + }, + "offload_param": { + "device": "cpu", + "pin_memory": true + }, + "overlap_comm": true, + "contiguous_gradients": true, + "reduce_bucket_size": "auto", + "stage3_prefetch_bucket_size": "auto", + "stage3_param_persistence_threshold": "auto", + "sub_group_size": 1e9, + "stage3_max_live_parameters": 1e9, + "stage3_max_reuse_distance": 1e9, + "stage3_gather_16bit_weights_on_model_save": "auto" + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} +``` + +```bash +accelerate launch examples/by_feature/deepspeed_with_config_support.py \ +--config_name "gpt2-large" \ +--tokenizer_name "gpt2-large" \ +--dataset_name "wikitext" \ +--dataset_config_name "wikitext-2-raw-v1" \ +--block_size 128 \ +--output_dir "./clm/clm_deepspeed_stage3_offload_accelerate" \ +--learning_rate 5e-4 \ +--per_device_train_batch_size 32 \ +--per_device_eval_batch_size 32 \ +--num_train_epochs 3 \ +--with_tracking \ +--report_to "wandb"\ +``` + +**Important code changes when using DeepSpeed Config File** + +1. DeepSpeed Optimizers and Schedulers. For more information on these, +see the [DeepSpeed Optimizers](https://deepspeed.readthedocs.io/en/latest/optimizers.html) and [DeepSpeed Schedulers](https://deepspeed.readthedocs.io/en/latest/schedulers.html) documentation. +We will look at the changes needed in the code when using these. + + a. DS Optim + DS Scheduler: The case when both `optimizer` and `scheduler` keys present in the DeepSpeed config file. + In this situation, those will be used and user has to use `accelerate.utils.DummyOptim` and `accelerate.utils.DummyScheduler` to replace the PyTorch/Custom optimizers and schedulers in their code. + Below is the snippet from `examples/by_feature/deepspeed_with_config_support.py` showing this: + ```python + # Creates Dummy Optimizer if `optimizer` was spcified in the config file else creates Adam Optimizer + optimizer_cls = ( + torch.optim.AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + optimizer = optimizer_cls(optimizer_grouped_parameters, lr=args.learning_rate) + + # Creates Dummy Scheduler if `scheduler` was spcified in the config file else creates `args.lr_scheduler_type` Scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + lr_scheduler = get_scheduler( + name=args.lr_scheduler_type, + optimizer=optimizer, + num_warmup_steps=args.num_warmup_steps, + num_training_steps=args.max_train_steps, + ) + else: + lr_scheduler = DummyScheduler( + optimizer, total_num_steps=args.max_train_steps, warmup_num_steps=args.num_warmup_steps + ) + ``` + b. Custom Optim + Custom Scheduler: The case when both `optimizer` and `scheduler` keys are absent in the DeepSpeed config file. + In this situation, no code changes are needed from the user and this is the case when using integration via DeepSpeed Plugin. + In the above example we can see that the code remains unchanged if the `optimizer` and `scheduler` keys are absent in the DeepSpeed config file. + + c. Custom Optim + DS Scheduler: The case when only `scheduler` key is present in the DeepSpeed config file. + In this situation, user has to use `accelerate.utils.DummyScheduler` to replace the PyTorch/Custom scheduler in their code. + + d. DS Optim + Custom Scheduler: The case when only `optimizer` key is present in the DeepSpeed config file. + This will result in an error because you can only use DS Scheduler when using DS Optim. + +2. Notice the `auto` values in the above example DeepSpeed config files. These are automatically handled by `prepare` method +based on model, dataloaders, dummy optimizer and dummy schedulers provided to `prepare` method. +Only the `auto` fields specified in above examples are handled by `prepare` method and the rest have to be explicitly specified by the user. + +## Saving and loading + +1. Saving and loading of models is unchanged for ZeRO Stage-1 and Stage-2. + +2. under ZeRO Stage-3, `state_dict` contains just the placeholders since the model weights are partitioned across multiple GPUs. +ZeRO Stage-3 has 2 options: + + a. Saving the entire 16bit model weights to directly load later on using `model.load_state_dict(torch.load(pytorch_model.bin))`. + For this, either set `zero_optimization.stage3_gather_16bit_weights_on_model_save` to True in DeepSpeed Config file or set + `zero3_save_16bit_model` to True in DeepSpeed Plugin. + **Note that this option requires consolidation of the weights on one GPU it can be slow and memory demanding, so only use this feature when needed.** + Below is the snippet from `examples/by_feature/deepspeed_with_config_support.py` showing this: + ```python + unwrapped_model = accelerator.unwrap_model(model) + + # New Code # + # Saves the whole/unpartitioned fp16 model when in ZeRO Stage-3 to the output directory if + # `stage3_gather_16bit_weights_on_model_save` is True in DeepSpeed Config file or + # `zero3_save_16bit_model` is True in DeepSpeed Plugin. + # For Zero Stages 1 and 2, models are saved as usual in the output directory. + # The model name saved is `pytorch_model.bin` + unwrapped_model.save_pretrained( + args.output_dir, + is_main_process=accelerator.is_main_process, + save_function=accelerator.save, + state_dict=accelerator.get_state_dict(model), + ) + ``` + + b. To get 32bit weights, first save the model using `model.save_checkpoint()`. + Below is the snippet from `examples/by_feature/deepspeed_with_config_support.py` showing this: + ```python + success = model.save_checkpoint(PATH, ckpt_id, checkpoint_state_dict) + status_msg = "checkpointing: PATH={}, ckpt_id={}".format(PATH, ckpt_id) + if success: + logging.info(f"Success {status_msg}") + else: + logging.warning(f"Failure {status_msg}") + ``` + This will create ZeRO model and optimizer partitions along with `zero_to_fp32.py` script in checkpoint directory. + You can use this script to do offline consolidation. + It requires no configuration files or GPUs. Here is an example of its usage: + ```bash + $ cd /path/to/checkpoint_dir + $ ./zero_to_fp32.py . pytorch_model.bin + Processing zero checkpoint at global_step1 + Detected checkpoint of type zero stage 3, world_size: 2 + Saving fp32 state dict to pytorch_model.bin (total_numel=60506624) + ``` + To get 32bit model for saving/inference, you can perform: + ```python + from deepspeed.utils.zero_to_fp32 import load_state_dict_from_zero_checkpoint + + unwrapped_model = accelerator.unwrap_model(model) + fp32_model = load_state_dict_from_zero_checkpoint(unwrapped_model, checkpoint_dir) + ``` + If you are only interested in the `state_dict`, you can do the following: + ```python + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir) + ``` + Note that all these functions require ~2x memory (general RAM) of the size of the final checkpoint. + +## ZeRO Inference +DeepSpeed ZeRO Inference supports ZeRO stage 3 with ZeRO-Infinity. +It uses the same ZeRO protocol as training, but it doesn't use an optimizer and a lr scheduler and only stage 3 is relevant. +With accelerate integration, you just need to prepare the model and dataloader as shown below: + +```python +model, eval_dataloader = accelerator.prepare(model, eval_dataloader) +``` + +## Few caveats to be aware of + +1. Current integration doesn’t support Pipeline Parallelism of DeepSpeed. +2. Current integration doesn’t support `mpu`, limiting the tensor parallelism which is supported in Megatron-LM. +3. Current integration doesn’t support multiple models. + +## DeepSpeed Resources + +The documentation for the internals related to deepspeed can be found [here](../package_reference/deepspeed). + +- [Project's github](https://github.com/microsoft/deepspeed) +- [Usage docs](https://www.deepspeed.ai/getting-started/) +- [API docs](https://deepspeed.readthedocs.io/en/latest/index.html) +- [Blog posts](https://www.microsoft.com/en-us/research/search/?q=deepspeed) + +Papers: + +- [ZeRO: Memory Optimizations Toward Training Trillion Parameter Models](https://arxiv.org/abs/1910.02054) +- [ZeRO-Offload: Democratizing Billion-Scale Model Training](https://arxiv.org/abs/2101.06840) +- [ZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning](https://arxiv.org/abs/2104.07857) + +Finally, please, remember that, 🤗 `Accelerate` only integrates DeepSpeed, therefore if you +have any problems or questions with regards to DeepSpeed usage, please, file an issue with [DeepSpeed GitHub](https://github.com/microsoft/DeepSpeed/issues). + diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/fsdp.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/fsdp.mdx new file mode 100644 index 0000000..a561e4e --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/fsdp.mdx @@ -0,0 +1,125 @@ + + +# Fully Sharded Data Parallel + +To accelerate training huge models on larger batch sizes, we can use a fully sharded data parallel model. +This type of data parallel paradigm enables fitting more data and larger models by sharding the optimizer states, gradients and parameters. +To read more about it and the benefits, check out the [Fully Sharded Data Parallel blog](https://pytorch.org/blog/introducing-pytorch-fully-sharded-data-parallel-api/). +We have integrated the latest PyTorch's Fully Sharded Data Parallel (FSDP) training feature. +All you need to do is enable it through the config. + +## How it works out of the box + +On your machine(s) just run: + +```bash +accelerate config +``` + +and answer the questions asked. This will generate a config file that will be used automatically to properly set the +default options when doing + +```bash +accelerate launch my_script.py --args_to_my_script +``` + +For instance, here is how you would run the NLP example (from the root of the repo) with FSDP enabled: + +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: {} +distributed_type: FSDP +downcast_bf16: 'no' +fsdp_config: + fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP + fsdp_backward_prefetch_policy: BACKWARD_PRE + fsdp_offload_params: false + fsdp_sharding_strategy: 1 + fsdp_state_dict_type: FULL_STATE_DICT + fsdp_transformer_layer_cls_to_wrap: GPT2Block +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: 'no' +num_machines: 1 +num_processes: 2 +use_cpu: false +``` + +```bash +accelerate launch examples/nlp_example.py +``` + +Currently, `Accelerate` supports the following config through the CLI: + +```bash +`Sharding Strategy`: [1] FULL_SHARD (shards optimizer states, gradients and parameters), [2] SHARD_GRAD_OP (shards optimizer states and gradients), [3] NO_SHARD +`Offload Params`: Decides Whether to offload parameters and gradients to CPU +`Auto Wrap Policy`: [1] TRANSFORMER_BASED_WRAP, [2] SIZE_BASED_WRAP, [3] NO_WRAP +`Transformer Layer Class to Wrap`: When using `TRANSFORMER_BASED_WRAP`, user specifies transformer layer class name (case-sensitive) to wrap ,e.g, `BertLayer`, `GPTJBlock`, `T5Block`... +`Min Num Params`: minimum number of parameters when using `SIZE_BASED_WRAP` +`Backward Prefetch`: [1] BACKWARD_PRE, [2] BACKWARD_POST, [3] NO_PREFETCH +`State Dict Type`: [1] FULL_STATE_DICT, [2] LOCAL_STATE_DICT, [3] SHARDED_STATE_DICT +``` + +## A few caveats to be aware of + +- PyTorch FSDP auto wraps sub-modules, flattens the parameters and shards the parameters in place. + Due to this, any optimizer created before model wrapping gets broken and occupies more memory. + Hence, it is highly recommended and efficient to prepare the model before creating the optimizer. + `Accelerate` will automatically wrap the model and create an optimizer for you in case of single model with a warning message. + > FSDP Warning: When using FSDP, it is efficient and recommended to call prepare for the model before creating the optimizer + +However, below is the recommended way to prepare model and optimizer while using FSDP: + +```diff + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) ++ model = accelerator.prepare(model) + + optimizer = torch.optim.AdamW(params=model.parameters(), lr=lr) + +- model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( +- model, optimizer, train_dataloader, eval_dataloader, lr_scheduler +- ) + ++ optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( ++ optimizer, train_dataloader, eval_dataloader, lr_scheduler ++ ) +``` + +- In case of a single model, if you have created the optimizer with multiple parameter groups and called prepare with them together, + then the parameter groups will be lost and the following warning is displayed: + > FSDP Warning: When using FSDP, several parameter groups will be conflated into + > a single one due to nested module wrapping and parameter flattening. + + This is because parameter groups created before wrapping will have no meaning post wrapping due to parameter flattening of nested FSDP modules into 1D arrays (which can consume many layers). + For instance, below are the named parameters of an FSDP model on GPU 0 (When using 2 GPUs. Around 55M (110M/2) params in 1D arrays as this will have the 1st shard of the parameters). + Here, if one has applied no weight decay for [bias, LayerNorm.weight] the named parameters of an unwrapped BERT model, + it can't be applied to the below FSDP wrapped model as there are no named parameters with either of those strings and + the parameters of those layers are concatenated with parameters of various other layers. + ``` + { + '_fsdp_wrapped_module.flat_param': torch.Size([494209]), + '_fsdp_wrapped_module._fpw_module.bert.embeddings.word_embeddings._fsdp_wrapped_module.flat_param': torch.Size([11720448]), + '_fsdp_wrapped_module._fpw_module.bert.encoder._fsdp_wrapped_module.flat_param': torch.Size([42527232]) + } + ``` + + +- In case of multiple models, it is necessary to prepare the models before creating optimizers or else it will throw an error. +Then pass the optimizers to the prepare call in the same order as corresponding models else `accelerator.save_state()` and `accelerator.load_state()` will result in wrong/unexpected behaviour. +- This feature is incompatible with `--predict_with_generate` in the `run_translation.py` script of 🤗 `Transformers` library. + +For more control, users can leverage the `FullyShardedDataParallelPlugin`. After creating an instance of this class, users can pass it to the Accelerator class instantiation. +For more information on these options, please refer to the PyTorch [FullyShardedDataParallel](https://github.com/pytorch/pytorch/blob/0df2e863fbd5993a7b9e652910792bd21a516ff3/torch/distributed/fsdp/fully_sharded_data_parallel.py#L236) code. diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/gradient_accumulation.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/gradient_accumulation.mdx new file mode 100644 index 0000000..798e158 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/gradient_accumulation.mdx @@ -0,0 +1,130 @@ + + +# Performing gradient accumulation with 🤗 Accelerate + +Gradient accumulation is a technique where you can train on bigger batch sizes than +your machine would normally be able to fit into memory. This is done by accumulating gradients over +several batches, and only stepping the optimizer after a certain number of batches have been performed. + +While technically standard gradient accumulation code would work fine in a distributed setup, it is not the most efficient +method for doing so and you may experience considerable slowdowns! + +In this tutorial you will see how to quickly setup gradient accumulation and perform it with the utilities provided in 🤗 Accelerate, +which can total to adding just one new line of code! + +This example will use a very simplistic PyTorch training loop that performs gradient accumulation every two batches: + +```python +device = "cuda" +model.to(device) + +gradient_accumulation_steps = 2 + +for index, batch in enumerate(training_dataloader): + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = model(inputs) + loss = loss_function(outputs, targets) + loss = loss / gradient_accumulation_steps + loss.backward() + if (index + 1) % gradient_accumulation_steps == 0: + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + +## Converting it to 🤗 Accelerate + +First the code shown earlier will be converted to utilize 🤗 Accelerate without the special gradient accumulation helper: + +```diff ++ from accelerate import Accelerator ++ accelerator = Accelerator() + ++ model, optimizer, training_dataloader, scheduler = accelerator.prepare( ++ model, optimizer, training_dataloader, scheduler ++ ) + + for index, batch in enumerate(training_dataloader): + inputs, targets = batch +- inputs = inputs.to(device) +- targets = targets.to(device) + outputs = model(inputs) + loss = loss_function(outputs, targets) + loss = loss / gradient_accumulation_steps ++ accelerator.backward(loss) + if (index+1) % gradient_accumulation_steps == 0: + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + + + + In its current state, this code is not going to perform gradient accumulation efficiently due to a process called gradient synchronization. Read more about that in the [Concepts tutorial](concept_guides/gradient_synchronization)! + + + +## Letting 🤗 Accelerate handle gradient accumulation + +All that is left now is to let 🤗 Accelerate handle the gradient accumulation for us. To do so you should pass in a `gradient_accumulation_steps` parameter to [`Accelerator`], dictating the number +of steps to perform before each call to `step()` and how to automatically adjust the loss during the call to [`~Accelerator.backward`]: + +```diff + from accelerate import Accelerator +- accelerator = Accelerator() ++ accelerator = Accelerator(gradient_accumulation_steps=2) +``` + +From here you can use the [`~Accelerator.accumulate`] context manager from inside your training loop to automatically perform the gradient accumulation for you! +You just wrap it around the entire training part of our code: + +```diff +- for index, batch in enumerate(training_dataloader): ++ for batch in training_dataloader: ++ with accelerator.accumulate(model): + inputs, targets = batch + outputs = model(inputs) +``` + +You can remove all the special checks for the step number and the loss adjustment: + +```diff +- loss = loss / gradient_accumulation_steps + accelerator.backward(loss) +- if (index+1) % gradient_accumulation_steps == 0: + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + +As you can see the [`Accelerator`] is able to keep track of the batch number you are on and it will automatically know whether to step through the prepared optimizer and how to adjust the loss. + +## The finished code + +Below is the finished implementation for performing gradient accumulation with 🤗 Accelerate + +```python +for batch in training_dataloader: + with accelerator.accumulate(model): + inputs, targets = batch + outputs = model(inputs) + loss = loss_function(outputs, targets) + accelerator.backward(loss) + optimizer.step() + scheduler.step() + optimizer.zero_grad() +``` + +To learn more about what magic this wraps around, read the [Gradient Synchronization concept guide](/concept_guides/gradient_synchronization) \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/memory.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/memory.mdx new file mode 100644 index 0000000..213a2f6 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/memory.mdx @@ -0,0 +1,55 @@ + + +# Memory Utilities + +One of the most frustrating errors when it comes to running training scripts is hitting "CUDA Out-of-Memory", +as the entire script needs to be restarted, progress is lost, and typically a developer would want to simply +start their script and let it run. + +`Accelerate` provides a utility heavily based on [toma](https://github.com/BlackHC/toma) to give this capability. + +## find_executable_batch_size + +This algorithm operates with exponential decay, decreasing the batch size in half after each failed run on some +training script. To use it, restructure your training function to include an inner function that includes this wrapper, +and build your dataloaders inside it. At a minimum, this could look like 4 new lines of code. +> Note: The inner function *must* take in the batch size as the first parameter, but we do not pass one to it when called. The wrapper handles this for us + +It should also be noted that anything which will consume CUDA memory and passed to the `accelerator` **must** be declared inside the inner function, +such as models and optimizers. + +```diff +def training_function(args): + accelerator = Accelerator() + ++ @find_executable_batch_size(starting_batch_size=args.batch_size) ++ def inner_training_loop(batch_size): ++ nonlocal accelerator # Ensure they can be used in our context ++ accelerator.free_memory() # Free all lingering references + model = get_model() + model.to(accelerator.device) + optimizer = get_optimizer() + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + lr_scheduler = get_scheduler( + optimizer, + num_training_steps=len(train_dataloader)*num_epochs + ) + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + train(model, optimizer, train_dataloader, lr_scheduler) + validate(model, eval_dataloader) ++ inner_training_loop() +``` + +To find out more, check the documentation [here](../package_reference/utilities#accelerate.find_executable_batch_size). diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/mps.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/mps.mdx new file mode 100644 index 0000000..7a7f8a6 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/mps.mdx @@ -0,0 +1,82 @@ + + +# Accelerated PyTorch Training on Mac + +With PyTorch v1.12 release, developers and researchers can take advantage of Apple silicon GPUs for significantly faster model training. +This unlocks the ability to perform machine learning workflows like prototyping and fine-tuning locally, right on Mac. +Apple's Metal Performance Shaders (MPS) as a backend for PyTorch enables this and can be used via the new `"mps"` device. +This will map computational graphs and primitives on the MPS Graph framework and tuned kernels provided by MPS. +For more information please refer official documents [Introducing Accelerated PyTorch Training on Mac](https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/) +and [MPS BACKEND](https://pytorch.org/docs/stable/notes/mps.html). + +### Benefits of Training and Inference using Apple Silicon Chips + +1. Enables users to train larger networks or batch sizes locally +2. Reduces data retrieval latency and provides the GPU with direct access to the full memory store due to unified memory architecture. +Therefore, improving end-to-end performance. +3. Reduces costs associated with cloud-based development or the need for additional local GPUs. + +**Pre-requisites**: To install torch with mps support, +please follow this nice medium article [GPU-Acceleration Comes to PyTorch on M1 Macs](https://medium.com/towards-data-science/gpu-acceleration-comes-to-pytorch-on-m1-macs-195c399efcc1). + + +## How it works out of the box + +On your machine(s) just run: + +```bash +accelerate config +``` + +and answer the questions asked, specifically choose `MPS` for the query: + +``` + Which type of machine are you using?. + ``` + +This will generate a config file that will be used automatically to properly set +the default options when doing `accelerate launch`, such as the one shown below: + +```bash +compute_environment: LOCAL_MACHINE +deepspeed_config: {} +distributed_type: MPS +downcast_bf16: 'no' +fsdp_config: {} +machine_rank: 0 +main_process_ip: null +main_process_port: null +main_training_function: main +mixed_precision: 'no' +num_machines: 1 +num_processes: 1 +use_cpu: false +``` + +After this configuration has been made, here is how you run the CV example +(from the root of the repo) with MPS enabled: + +```bash +accelerate launch /examples/cv_example.py --data_dir images +``` + +## A few caveats to be aware of + +1. We strongly recommend to install PyTorch >= 1.13 (nightly version at the time of writing) on your MacOS machine. +It has major fixes related to model correctness and performance improvements for transformer based models. +Please refer to https://github.com/pytorch/pytorch/issues/82707 for more details. +2. Distributed setups `gloo` and `nccl` are not working with `mps` device. +This means that currently only single GPU of `mps` device type can be used. + +Finally, please, remember that, 🤗 `Accelerate` only integrates MPS backend, therefore if you +have any problems or questions with regards to MPS backend usage, please, file an issue with [PyTorch GitHub](https://github.com/pytorch/pytorch/issues). \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/sagemaker.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/sagemaker.mdx new file mode 100644 index 0000000..0afe52e --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/sagemaker.mdx @@ -0,0 +1,169 @@ + + +# Amazon SageMaker + +Hugging Face and Amazon introduced new [Hugging Face Deep Learning Containers (DLCs)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#huggingface-training-containers) to +make it easier than ever to train Hugging Face Transformer models in [Amazon SageMaker](https://aws.amazon.com/sagemaker/). + +## Getting Started + +### Setup & Installation + + +Before you can run your 🤗 Accelerate scripts on Amazon SageMaker you need to sign up for an AWS account. If you do not +have an AWS account yet learn more [here](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-set-up.html). + +After you have your AWS Account you need to install the `sagemaker` sdk for 🤗 Accelerate with: + +```bash +pip install "accelerate[sagemaker]" --upgrade +``` + +🤗 Accelerate currently uses the 🤗 DLCs, with `transformers`, `datasets` and `tokenizers` pre-installed. 🤗 +Accelerate is not in the DLC yet (will soon be added!) so to use it within Amazon SageMaker you need to create a +`requirements.txt` in the same directory where your training script is located and add it as dependency: + +``` +accelerate +``` + +You should also add any other dependencies you have to this `requirements.txt`. + + +### Configure 🤗 Accelerate + +You can configure the launch configuration for Amazon SageMaker the same as you do for non SageMaker training jobs with +the 🤗 Accelerate CLI: + +```bash +accelerate config +# In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 1 +``` + +🤗 Accelerate will go through a questionnaire about your Amazon SageMaker setup and create a config file you can edit. + + + + 🤗 Accelerate is not saving any of your credentials. + + + +### Prepare a 🤗 Accelerate fine-tuning script + +The training script is very similar to a training script you might run outside of SageMaker, but to save your model +after training you need to specify either `/opt/ml/model` or use `os.environ["SM_MODEL_DIR"]` as your save +directory. After training, artifacts in this directory are uploaded to S3: + + +```diff +- torch.save('/opt/ml/model`) ++ accelerator.save('/opt/ml/model') +``` + + + + SageMaker doesn’t support argparse actions. If you want to use, for example, boolean hyperparameters, you need to + specify type as bool in your script and provide an explicit True or False value for this hyperparameter. [[REF]](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#prepare-a-pytorch-training-script). + + + +### Launch Training + +You can launch your training with 🤗 Accelerate CLI with: + +``` +accelerate launch path_to_script.py --args_to_the_script +``` + +This will launch your training script using your configuration. The only thing you have to do is provide all the +arguments needed by your training script as named arguments. + +**Examples** + + + + If you run one of the example scripts, don't forget to add `accelerator.save('/opt/ml/model')` to it. + + + +```bash +accelerate launch ./examples/sagemaker_example.py +``` + +Outputs: + +``` +Configuring Amazon SageMaker environment +Converting Arguments to Hyperparameters +Creating Estimator +2021-04-08 11:56:50 Starting - Starting the training job... +2021-04-08 11:57:13 Starting - Launching requested ML instancesProfilerReport-1617883008: InProgress +......... +2021-04-08 11:58:54 Starting - Preparing the instances for training......... +2021-04-08 12:00:24 Downloading - Downloading input data +2021-04-08 12:00:24 Training - Downloading the training image.................. +2021-04-08 12:03:39 Training - Training image download completed. Training in progress.. +........ +epoch 0: {'accuracy': 0.7598039215686274, 'f1': 0.8178438661710037} +epoch 1: {'accuracy': 0.8357843137254902, 'f1': 0.882249560632689} +epoch 2: {'accuracy': 0.8406862745098039, 'f1': 0.8869565217391304} +........ +2021-04-08 12:05:40 Uploading - Uploading generated training model +2021-04-08 12:05:40 Completed - Training job completed +Training seconds: 331 +Billable seconds: 331 +You can find your model data at: s3://your-bucket/accelerate-sagemaker-1-2021-04-08-11-56-47-108/output/model.tar.gz +``` + +## Advanced Features + +### Distributed Training: Data Parallelism + +Set up the accelerate config by running `accelerate config` and answer the SageMaker questions and set it up. +To use SageMaker DDP, select it when asked +`What is the distributed mode? ([0] No distributed training, [1] data parallelism):`. +Example config below: +```yaml +base_job_name: accelerate-sagemaker-1 +compute_environment: AMAZON_SAGEMAKER +distributed_type: DATA_PARALLEL +ec2_instance_type: ml.p3.16xlarge +iam_role_name: xxxxx +image_uri: null +mixed_precision: fp16 +num_machines: 1 +profile: xxxxx +py_version: py38 +pytorch_version: 1.10.2 +region: us-east-1 +transformers_version: 4.17.0 +use_cpu: false +``` + +### Distributed Training: Model Parallelism + +*currently in development, will be supported soon.* + +### Python packages and dependencies + +🤗 Accelerate currently uses the 🤗 DLCs, with `transformers`, `datasets` and `tokenizers` pre-installed. If you +want to use different/other Python packages you can do this by adding them to the `requirements.txt`. These packages +will be installed before your training script is started. + +### Remote scripts: Use scripts located on Github + +*undecided if feature is needed. Contact us if you would like this feature.* + +### Use Spot Instances + +*undecided if feature is needed. Contact us if you would like this feature.* diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/tracking.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/tracking.mdx new file mode 100644 index 0000000..cc5c174 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/tracking.mdx @@ -0,0 +1,200 @@ + + +# Tracking + +There are a large number of experiment tracking API's available, however getting them all to work with in a multi-processing environment can oftentimes be complex. +🤗 Accelerate provides a general tracking API that can be used to log useful items during your script through [`Accelerator.log`] + +## Integrated Trackers + +Currently `Accelerate` supports three trackers out-of-the-box: + +- TensorBoard +- WandB +- CometML + +To use any of them, pass in the selected type(s) to the `log_with` parameter in [`Accelerate`]: +```python +from accelerate import Accelerator +from accelerate.utils import LoggerType + +accelerator = Accelerator(log_with="all") # For all available trackers in the environment +accelerator = Accelerator(log_with="wandb") +accelerator = Accelerator(log_with=["wandb", LoggerType.TENSORBOARD]) +``` + +At the start of your experiment [`Accelerator.init_trackers`] should be used to setup your project, and potentially add any experiment hyperparameters to be logged: +```python +hps = {"num_iterations": 5, "learning_rate": 1e-2} +accelerator.init_trackers("my_project", config=hps) +``` + +When you are ready to log any data, [`Accelerator.log`] should be used. +A `step` can also be passed in to correlate the data with a particular step in the training loop. +```python +accelerator.log({"train_loss": 1.12, "valid_loss": 0.8}, step=1) +``` + +Once you've finished training, make sure to run [`Accelerator.end_training`] so that all the trackers can run their finish functionalities if they have any. +```python +accelerator.end_training() +``` + + +A full example is below: +```python +from accelerate import Accelerator + +accelerator = Accelerator(log_with="all") +config = { + "num_iterations": 5, + "learning_rate": 1e-2, + "loss_function": str(my_loss_function), +} + +accelerator.init_trackers("example_project", config=config) + +my_model, my_optimizer, my_training_dataloader = accelerate.prepare(my_model, my_optimizer, my_training_dataloader) +device = accelerator.device +my_model.to(device) + +for iteration in config["num_iterations"]: + for step, batch in my_training_dataloader: + my_optimizer.zero_grad() + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = my_model(inputs) + loss = my_loss_function(outputs, targets) + accelerator.backward(loss) + my_optimizer.step() + accelerator.log({"training_loss": loss}, step=step) +accelerator.end_training() +``` + + +## Implementing Custom Trackers + +To implement a new tracker to be used in `Accelerator`, a new one can be made through implementing the [`GeneralTracker`] class. +Every tracker must implement three functions and have three properties: + - `__init__`: + - Should store a `run_name` and initialize the tracker API of the integrated library. + - If a tracker stores their data locally (such as TensorBoard), a `logging_dir` parameter can be added. + - `store_init_configuration`: + - Should take in a `values` dictionary and store them as a one-time experiment configuration + - `log`: + - Should take in a `values` dictionary and a `step`, and should log them to the run + + - `name` (`str`): + - A unique string name for the tracker, such as `"wandb"` for the wandb tracker. + - This will be used for interacting with this tracker specifically + - `requires_logging_directory` (`bool`): + - Whether a `logging_dir` is needed for this particular tracker and if it uses one. + - `tracker`: + - This should be implemented as a `@property` function + - Should return the internal tracking mechanism the library uses, such as the `run` object for `wandb`. + +A brief example can be seen below with an integration with Weights and Biases, containing only the relevant information: +```python +from accelerate.tracking import GeneralTracker +from typing import Optional + +import wandb + + +class MyCustomTracker(GeneralTracker): + name = "wandb" + requires_logging_directory = False + + def __init__(self, run_name: str): + self.run_name = run_name + run = wandb.init(self.run_name) + + @property + def tracker(self): + return self.run.run + + def store_init_configuration(self, values: dict): + wandb.config(values) + + def log(self, values: dict, step: Optional[int] = None): + wandb.log(values, step=step) +``` + +When you are ready to build your `Accelerator` object, pass in an **instance** of your tracker to [`Accelerator.log_with`] to have it automatically +be used with the API: + +```python +tracker = MyCustomTracker("some_run_name") +accelerator = Accelerator(log_with=tracker) +``` + +These also can be mixed with existing trackers, including with `"all"`: + +```python +tracker = MyCustomTracker("some_run_name") +accelerator = Accelerator(log_with=[tracker, "all"]) +``` + +## Accessing the internal tracker + +If some custom interactions with a tracker might be wanted directly, you can quickly access one using the +[`Accelerator.get_tracker`] method. Just pass in the string corresponding to a tracker's `.name` attribute +and it will return that tracker on the main process. + +This example shows doing so with wandb: + +```python +wandb_tracker = accelerator.get_tracker("wandb") +``` + +From there you can interact with `wandb`'s `run` object like normal: + + + Make sure to only interact with trackers on the main process! + + + +```python +if accelerator.is_main_process: + wandb_run.log_artifact(some_artifact_to_log) +``` + +## When a wrapper cannot work + +If a library has an API that does not follow a strict `.log` with an overall dictionary such as Neptune.AI, logging can be done manually under an `if accelerator.is_main_process` statement: +```diff + from accelerate import Accelerator ++ import neptune.new as neptune + + accelerator = Accelerator() ++ run = neptune.init(...) + + my_model, my_optimizer, my_training_dataloader = accelerate.prepare(my_model, my_optimizer, my_training_dataloader) + device = accelerator.device + my_model.to(device) + + for iteration in config["num_iterations"]: + for batch in my_training_dataloader: + my_optimizer.zero_grad() + inputs, targets = batch + inputs = inputs.to(device) + targets = targets.to(device) + outputs = my_model(inputs) + loss = my_loss_function(outputs, targets) + total_loss += loss + accelerator.backward(loss) + my_optimizer.step() ++ if accelerator.is_main_process: ++ run["logs/training/batch/loss"].log(loss) +``` diff --git a/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/training_zoo.mdx b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/training_zoo.mdx new file mode 100644 index 0000000..cc388ac --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/docs/source/usage_guides/training_zoo.mdx @@ -0,0 +1,107 @@ + + +# Example Zoo + +Below contains a non-exhuastive list of tutorials and scripts showcasing Accelerate + +## Official Accelerate Examples: + +### Basic Examples + +These examples showcase the base features of Accelerate and are a great starting point + +- [Barebones NLP example](https://github.com/huggingface/accelerate/blob/main/examples/nlp_example.py) +- [Barebones computer vision example](https://github.com/huggingface/accelerate/blob/main/examples/cv_example.py) + +### Feature Specific Examples + +These examples showcase specific features that the Accelerate framework offers + +- [Automatic memory-aware gradient accumulation](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/automatic_gradient_accumulation.py) +- [Checkpointing states](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/checkpointing.py) +- [Cross validation](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/cross_validation.py) +- [DeepSpeed](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/deepspeed_with_config_support.py) +- [Fully Sharded Data Parallelism](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/fsdp_with_peak_mem_tracking.py) +- [Gradient accumulation](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/gradient_accumulation.py) +- [Memory-aware batch size finder](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/memory.py) +- [Metric Computation](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/multi_process_metrics.py) +- [Using Trackers](https://github.com/huggingface/accelerate/blob/main/examples/by_feature/tracking.py) + +### Full Examples + +These examples showcase every feature in Accelerate at once that was shown in "Feature Specific Examples" + +- [Complete NLP example](https://github.com/huggingface/accelerate/blob/main/examples/complete_nlp_example.py) +- [Complete computer vision example](https://github.com/huggingface/accelerate/blob/main/examples/complete_cv_example.py) +- [Causal language model fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_clm_no_trainer.py) +- [Masked language model fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm_no_trainer.py) +- [Speech pretraining example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/speech-pretraining/run_wav2vec2_pretraining_no_trainer.py) +- [Translation fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/translation/run_translation_no_trainer.py) +- [Text classification fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-classification/run_glue_no_trainer.py) +- [Semantic segmentation fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/semantic-segmentation/run_semantic_segmentation_no_trainer.py) +- [Question answering fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa_no_trainer.py) +- [Beam search question answering fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa_beam_search_no_trainer.py) +- [Multiple choice question answering fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/multiple-choice/run_swag_no_trainer.py) +- [Named entity recognition fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/token-classification/run_ner_no_trainer.py) +- [Image classification fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/image-classification/run_image_classification_no_trainer.py) +- [Summarization fine-tuning example](https://github.com/huggingface/transformers/blob/main/examples/pytorch/summarization/run_summarization_no_trainer.py) + +## Integration Examples + +These are tutorials from libraries that integrate with 🤗 Accelerate: + +### Catalyst + +- [Distributed training tutorial with Catalyst](https://catalyst-team.github.io/catalyst/tutorials/ddp.html) + +### DALLE2-pytorch + +- [Fine-tuning DALLE2](https://github.com/lucidrains/DALLE2-pytorch#usage) + +### 🤗 diffusers + +- [Performing textual inversion with diffusers](https://github.com/huggingface/diffusers/tree/main/examples/textual_inversion) +- [Training DreamBooth with diffusers](https://github.com/huggingface/diffusers/tree/main/examples/dreambooth) + +### fastai + +- [Distributed training from Jupyter Notebooks with fastai](https://docs.fast.ai/tutorial.distributed.html) +- [Basic distributed training examples with fastai](https://docs.fast.ai/examples/distributed_app_examples.html) + +### GradsFlow + +- [Auto Image Classification with GradsFlow](https://docs.gradsflow.com/en/latest/examples/nbs/01-ImageClassification/) + +### imagen-pytorch + +- [Fine-tuning Imagen](https://github.com/lucidrains/imagen-pytorch#usage) + +### Kornia + +- [Fine-tuning vision models with Kornia's Trainer](https://kornia.readthedocs.io/en/latest/get-started/training.html) + +### PyTorch Accelerated + +- [Quickstart distributed training tutorial with PyTorch Accelerated](https://pytorch-accelerated.readthedocs.io/en/latest/quickstart.html) + +### PyTorch3D + +- [Perform Deep Learning with 3D data](https://pytorch3d.org/tutorials/) + +### Tez + +- [Leaf disease detection with Tez and Accelerate](https://www.kaggle.com/code/abhishek/tez-faster-and-easier-training-for-leaf-detection/notebook) + +### trlx + +- [How to implement a sentiment learning task with trlx](https://github.com/CarperAI/trlx#example-how-to-add-a-task) \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/README.md b/v0.13.2/accelerate-0.13.2/examples/README.md new file mode 100644 index 0000000..6a3c0a1 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/README.md @@ -0,0 +1,212 @@ + + +# In this folder we showcase various full examples using 🤗 Accelerate + +## Simple NLP example + +The [nlp_example.py](./nlp_example.py) script is a simple example to train a Bert model on a classification task ([GLUE's MRPC](https://www.microsoft.com/en-us/download/details.aspx?id=52398)). + +Prior to running it you should install 🤗 Dataset and 🤗 Transformers: + +```bash +pip install datasets evaluate transformers +``` + +The same script can be run in any of the following configurations: +- single CPU or single GPU +- multi GPUs (using PyTorch distributed mode) +- (multi) TPUs +- fp16 (mixed-precision) or fp32 (normal precision) + +To run it in each of these various modes, use the following commands: +- single CPU: + * from a server without GPU + ```bash + python ./nlp_example.py + ``` + * from any server by passing `cpu=True` to the `Accelerator`. + ```bash + python ./nlp_example.py --cpu + ``` + * from any server with Accelerate launcher + ```bash + accelerate launch --cpu ./nlp_example.py + ``` +- single GPU: + ```bash + python ./nlp_example.py # from a server with a GPU + ``` +- with fp16 (mixed-precision) + * from any server by passing `fp16=True` to the `Accelerator`. + ```bash + python ./nlp_example.py --fp16 + ``` + * from any server with Accelerate launcher + ```bash + accelerate launch --fp16 ./nlp_example.py +- multi GPUs (using PyTorch distributed mode) + * With Accelerate config and launcher + ```bash + accelerate config # This will create a config file on your server + accelerate launch ./nlp_example.py # This will run the script on your server + ``` + * With traditional PyTorch launcher + ```bash + python -m torch.distributed.launch --nproc_per_node 2 --use_env ./nlp_example.py + ``` +- multi GPUs, multi node (several machines, using PyTorch distributed mode) + * With Accelerate config and launcher, on each machine: + ```bash + accelerate config # This will create a config file on each server + accelerate launch ./nlp_example.py # This will run the script on each server + ``` + * With PyTorch launcher only + ```bash + python -m torch.distributed.launch --nproc_per_node 2 \ + --use_env \ + --node_rank 0 \ + --master_addr master_node_ip_address \ + ./nlp_example.py # On the first server + python -m torch.distributed.launch --nproc_per_node 2 \ + --use_env \ + --node_rank 1 \ + --master_addr master_node_ip_address \ + ./nlp_example.py # On the second server + ``` +- (multi) TPUs + * With Accelerate config and launcher + ```bash + accelerate config # This will create a config file on your TPU server + accelerate launch ./nlp_example.py # This will run the script on each server + ``` + * In PyTorch: + Add an `xmp.spawn` line in your script as you usually do. + + +## Simple vision example + +The [cv_example.py](./cv_example.py) script is a simple example to fine-tune a ResNet-50 on a classification task ([Ofxord-IIT Pet Dataset](https://www.robots.ox.ac.uk/~vgg/data/pets/)). + +The same script can be run in any of the following configurations: +- single CPU or single GPU +- multi GPUs (using PyTorch distributed mode) +- (multi) TPUs +- fp16 (mixed-precision) or fp32 (normal precision) + +Prior to running it you should install timm and torchvision: + +```bash +pip install timm torchvision +``` + +and you should download the data with the following commands: + +```bash +wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +tar -xzf images.tar.gz +``` + +To run it in each of these various modes, use the following commands: +- single CPU: + * from a server without GPU + ```bash + python ./cv_example.py --data_dir path_to_data + ``` + * from any server by passing `cpu=True` to the `Accelerator`. + ```bash + python ./cv_example.py --data_dir path_to_data --cpu + ``` + * from any server with Accelerate launcher + ```bash + accelerate launch --cpu ./cv_example.py --data_dir path_to_data + ``` +- single GPU: + ```bash + python ./cv_example.py # from a server with a GPU + ``` +- with fp16 (mixed-precision) + * from any server by passing `fp16=True` to the `Accelerator`. + ```bash + python ./cv_example.py --data_dir path_to_data --fp16 + ``` + * from any server with Accelerate launcher + ```bash + accelerate launch --fp16 ./cv_example.py --data_dir path_to_data +- multi GPUs (using PyTorch distributed mode) + * With Accelerate config and launcher + ```bash + accelerate config # This will create a config file on your server + accelerate launch ./cv_example.py --data_dir path_to_data # This will run the script on your server + ``` + * With traditional PyTorch launcher + ```bash + python -m torch.distributed.launch --nproc_per_node 2 --use_env ./cv_example.py --data_dir path_to_data + ``` +- multi GPUs, multi node (several machines, using PyTorch distributed mode) + * With Accelerate config and launcher, on each machine: + ```bash + accelerate config # This will create a config file on each server + accelerate launch ./cv_example.py --data_dir path_to_data # This will run the script on each server + ``` + * With PyTorch launcher only + ```bash + python -m torch.distributed.launch --nproc_per_node 2 \ + --use_env \ + --node_rank 0 \ + --master_addr master_node_ip_address \ + ./cv_example.py --data_dir path_to_data # On the first server + python -m torch.distributed.launch --nproc_per_node 2 \ + --use_env \ + --node_rank 1 \ + --master_addr master_node_ip_address \ + ./cv_example.py --data_dir path_to_data # On the second server + ``` +- (multi) TPUs + * With Accelerate config and launcher + ```bash + accelerate config # This will create a config file on your TPU server + accelerate launch ./cv_example.py --data_dir path_to_data # This will run the script on each server + ``` + * In PyTorch: + Add an `xmp.spawn` line in your script as you usually do. + +### Simple vision example (GANs) + +- [huggan project](https://github.com/huggingface/community-events/tree/main/huggan) + +### Using AWS SageMaker integration +- [Examples showcasing AWS SageMaker integration of 🤗 Accelerate.](https://github.com/pacman100/accelerate-aws-sagemaker) + +## Finer Examples + +While the first two scripts are extremely barebones when it comes to what you can do with accelerate, more advanced features are documented in two other locations. + +### `by_feature` examples + +These scripts are *individual* examples highlighting one particular feature or use-case within Accelerate. They all stem from the [nlp_example.py](./nlp_example.py) script, and any changes or modifications is denoted with a `# New Code #` comment. + +Read the README.md file located in the `by_feature` folder for more information. + +### `complete_*` examples + +These two scripts contain *every* single feature currently available in Accelerate in one place, as one giant script. + +New arguments that can be passed include: + +- `checkpointing_steps`, whether the various states should be saved at the end of every `n` steps, or `"epoch"` for each epoch. States are then saved to folders named `step_{n}` or `epoch_{n}` +- `resume_from_checkpoint`, should be used if you want to resume training off of a previous call to the script and passed a `checkpointing_steps` to it. +- `with_tracking`, should be used if you want to log the training run using all available experiment trackers in your environment. Currently supported trackers include TensorBoard, Weights and Biases, and CometML. diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/README.md b/v0.13.2/accelerate-0.13.2/examples/by_feature/README.md new file mode 100644 index 0000000..689127a --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/README.md @@ -0,0 +1,80 @@ +# What are these scripts? + +All scripts in this folder originate from the `nlp_example.py` file, as it is a very simplistic NLP training example using Accelerate with zero extra features. + +From there, each further script adds in just **one** feature of Accelerate, showing how you can quickly modify your own scripts to implement these capabilities. + +A full example with all of these parts integrated together can be found in the `complete_nlp_example.py` script and `complete_cv_example.py` script. + +Adjustments to each script from the base `nlp_example.py` file can be found quickly by searching for "# New Code #" + +## Example Scripts by Feature and their Arguments + +### Base Example (`../nlp_example.py`) + +- Shows how to use `Accelerator` in an extremely simplistic PyTorch training loop +- Arguments available: + - `mixed_precision`, whether to use mixed precision. ("no", "fp16", or "bf16") + - `cpu`, whether to train using only the CPU. (yes/no/1/0) + +All following scripts also accept these arguments in addition to their added ones. + +These arguments should be added at the end of any method for starting the python script (such as `python`, `accelerate launch`, `python -m torch.distributed.launch`), such as: + +```bash +accelerate launch ../nlp_example.py --mixed_precision fp16 --cpu 0 +``` + +### Checkpointing and Resuming Training (`checkpointing.py`) + +- Shows how to use `Accelerator.save_state` and `Accelerator.load_state` to save or continue training +- **It is assumed you are continuing off the same training script** +- Arguments available: + - `checkpointing_steps`, after how many steps the various states should be saved. ("epoch", 1, 2, ...) + - `output_dir`, where saved state folders should be saved to, default is current working directory + - `resume_from_checkpoint`, what checkpoint folder to resume from. ("epoch_0", "step_22", ...) + +These arguments should be added at the end of any method for starting the python script (such as `python`, `accelerate launch`, `python -m torch.distributed.launch`), such as: + +(Note, `resume_from_checkpoint` assumes that we've ran the script for one epoch with the `--checkpointing_steps epoch` flag) + +```bash +accelerate launch ./checkpointing.py --checkpointing_steps epoch output_dir "checkpointing_tutorial" --resume_from_checkpoint "checkpointing_tutorial/epoch_0" +``` + +### Cross Validation (`cross_validation.py`) + +- Shows how to use `Accelerator.free_memory` and run cross validation efficiently with `datasets`. +- Arguments available: + - `num_folds`, the number of folds the training dataset should be split into. + +These arguments should be added at the end of any method for starting the python script (such as `python`, `accelerate launch`, `python -m torch.distributed.launch`), such as: + +```bash +accelerate launch ./cross_validation.py --num_folds 2 +``` + +### Experiment Tracking (`tracking.py`) + +- Shows how to use `Accelerate.init_trackers` and `Accelerator.log` +- Can be used with Weights and Biases, TensorBoard, or CometML. +- Arguments available: + - `with_tracking`, whether to load in all available experiment trackers from the environment. + +These arguments should be added at the end of any method for starting the python script (such as `python`, `accelerate launch`, `python -m torch.distributed.launch`), such as: + +```bash +accelerate launch ./tracking.py --with_tracking +``` + +### Gradient Accumulation (`gradient_accumulation.py`) + +- Shows how to use `Accelerator.no_sync` to prevent gradient averaging in a distributed setup. +- Arguments available: + - `gradient_accumulation_steps`, the number of steps to perform before the gradients are accumulated and the optimizer and scheduler are stepped + zero_grad + +These arguments should be added at the end of any method for starting the python script (such as `python`, `accelerate launch`, `python -m torch.distributed.launch`), such as: + +```bash +accelerate launch ./gradient_accumulation.py --gradient_accumulation_steps 5 +``` \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/automatic_gradient_accumulation.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/automatic_gradient_accumulation.py new file mode 100644 index 0000000..d6e0cf0 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/automatic_gradient_accumulation.py @@ -0,0 +1,232 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +# New Code # +import evaluate +from accelerate import Accelerator, DistributedType +from accelerate.utils import find_executable_batch_size +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing how to combine both the gradient accumulation +# and automatic batch size finder utilities of Accelerate to perfrom +# automatic gradient accumulation +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + observed_batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + # New Code # + # We use the `find_executable_batch_size` decorator, passing in the desired observed batch size + # to train on. If a CUDA OOM error occurs, it will retry this loop cutting the batch size in + # half each time. From this, we can calculate the number of gradient accumulation steps needed + # and modify the Accelerator object as a result + @find_executable_batch_size(starting_batch_size=int(observed_batch_size)) + def inner_training_loop(batch_size): + # Since we need to modify the outside accelerator object, we need to bring it + # to the local scope + nonlocal accelerator + + # We can calculate the number of gradient accumulation steps based on the current + # batch size vs the starting batch size + num_gradient_accumulation_steps = observed_batch_size // batch_size + + # And then set it in the Accelerator directly: + accelerator.gradient_accumulation_steps = num_gradient_accumulation_steps + + # Next we need to free all of the stored model references in the Accelerator each time + accelerator.free_memory() + + # And set the seed so our results are reproducable each reset + set_seed(seed) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs), + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # And perform gradient accumulation + with accelerator.accumulate(model): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + # New Code # + # And call it at the end with no arguments + # Note: You could also refactor this outside of your training loop function + inner_training_loop() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + # New Code # + # We modify the starting batch size to be an observed batch size of 256, to guarentee an initial CUDA OOM + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 256} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/checkpointing.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/checkpointing.py new file mode 100644 index 0000000..bffd843 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/checkpointing.py @@ -0,0 +1,303 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing the checkpointing capability, +# and builds off the `nlp_example.py` script. +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To help focus on the differences in the code, building `DataLoaders` +# was refactored into its own function. +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + # New Code # + # Parse out whether we are saving every epoch or after a certain number of batches + if hasattr(args.checkpointing_steps, "isdigit"): + if args.checkpointing_steps == "epoch": + checkpointing_steps = args.checkpointing_steps + elif args.checkpointing_steps.isdigit(): + checkpointing_steps = int(args.checkpointing_steps) + else: + raise ValueError( + f"Argument `checkpointing_steps` must be either a number or `epoch`. `{args.checkpointing_steps}` passed." + ) + else: + checkpointing_steps = None + + set_seed(seed) + + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + metric = evaluate.load("glue", "mrpc") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # New Code # + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + + # We need to load the checkpoint back in before training here with `load_state` + # The total number of epochs is adjusted based on where the state is being loaded from, + # as we assume continuation of the same training script + if args.resume_from_checkpoint: + if args.resume_from_checkpoint is not None or args.resume_from_checkpoint != "": + accelerator.print(f"Resumed from checkpoint: {args.resume_from_checkpoint}") + accelerator.load_state(args.resume_from_checkpoint) + path = os.path.basename(args.resume_from_checkpoint) + else: + # Get the most recent checkpoint + dirs = [f.name for f in os.scandir(os.getcwd()) if f.is_dir()] + dirs.sort(key=os.path.getctime) + path = dirs[-1] # Sorts folders by date modified, most recent checkpoint is the last + # Extract `epoch_{i}` or `step_{i}` + training_difference = os.path.splitext(path)[0] + + if "epoch" in training_difference: + starting_epoch = int(training_difference.replace("epoch_", "")) + 1 + resume_step = None + else: + resume_step = int(training_difference.replace("step_", "")) + starting_epoch = resume_step // len(train_dataloader) + resume_step -= starting_epoch * len(train_dataloader) + + # Now we train the model + for epoch in range(starting_epoch, num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # New Code # + # We need to skip steps until we reach the resumed step during the first epoch + if args.resume_from_checkpoint and epoch == starting_epoch: + if resume_step is not None and step < resume_step: + overall_step += 1 + continue + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + # New Code # + overall_step += 1 + + # New Code # + # We save the model, optimizer, lr_scheduler, and seed states by calling `save_state` + # These are saved to folders named `step_{overall_step}` + # Will contain files: "pytorch_model.bin", "optimizer.bin", "scheduler.bin", and "random_states.pkl" + # If mixed precision was used, will also save a "scalar.bin" file + if isinstance(checkpointing_steps, int): + output_dir = f"step_{overall_step}" + if overall_step % checkpointing_steps == 0: + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True` (the default). + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + # New Code # + # We save the model, optimizer, lr_scheduler, and seed states by calling `save_state` + # These are saved to folders named `epoch_{epoch}` + # Will contain files: "pytorch_model.bin", "optimizer.bin", "scheduler.bin", and "random_states.pkl" + # If mixed precision was used, will also save a "scalar.bin" file + if checkpointing_steps == "epoch": + output_dir = f"epoch_{epoch}" + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/cross_validation.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/cross_validation.py new file mode 100644 index 0000000..87f804c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/cross_validation.py @@ -0,0 +1,268 @@ +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +from typing import List + +import numpy as np +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import DatasetDict, load_dataset + +# New Code # +# We'll be using StratifiedKFold for this example +from sklearn.model_selection import StratifiedKFold +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing how to perform Cross Validation, +# and builds off the `nlp_example.py` script. +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To help focus on the differences in the code, building `DataLoaders` +# was refactored into its own function. +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + +# New Code # +# We need a different `get_dataloaders` function that will build dataloaders by index + + +def get_fold_dataloaders( + accelerator: Accelerator, dataset: DatasetDict, train_idxs: List[int], valid_idxs: List[int], batch_size: int = 16 +): + """ + Gets a set of train, valid, and test dataloaders for a particular fold + + Args: + accelerator (`Accelerator`): + The main `Accelerator` object + train_idxs (list of `int`): + The split indices for the training dataset + valid_idxs (list of `int`): + The split indices for the validation dataset + batch_size (`int`): + The size of the minibatch. Default is 16 + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = DatasetDict( + { + "train": dataset["train"].select(train_idxs), + "validation": dataset["train"].select(valid_idxs), + "test": dataset["validation"], + } + ) + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + test_dataloader = DataLoader( + tokenized_datasets["test"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader, test_dataloader + + +def training_function(config, args): + # New Code # + test_predictions = [] + # Download the dataset + datasets = load_dataset("glue", "mrpc") + # Create our splits + kfold = StratifiedKFold(n_splits=int(args.num_folds)) + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + set_seed(seed) + + # New Code # + # Create our folds: + folds = kfold.split(np.zeros(datasets["train"].num_rows), datasets["train"]["label"]) + test_references = [] + # Iterate over them + for i, (train_idxs, valid_idxs) in enumerate(folds): + train_dataloader, eval_dataloader, test_dataloader = get_fold_dataloaders( + accelerator, + datasets, + train_idxs, + valid_idxs, + ) + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + # New Code # + # We also run predictions on the test set at the very end + fold_predictions = [] + for step, batch in enumerate(test_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + fold_predictions.append(predictions.cpu()) + if i == 0: + # We need all of the test predictions + test_references.append(references.cpu()) + # Use accelerator.print to print only on the main process. + test_predictions.append(torch.cat(fold_predictions, dim=0)) + # We now need to release all our memory and get rid of the current model, optimizer, etc + accelerator.free_memory() + # New Code # + # Finally we check the accuracy of our folded results: + test_references = torch.cat(test_references, dim=0) + preds = torch.stack(test_predictions, dim=0).sum(dim=0).div(int(args.num_folds)).argmax(dim=-1) + test_metric = metric.compute(predictions=preds, references=test_references) + accelerator.print("Average test metrics from all folds:", test_metric) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + # New Code # + parser.add_argument("--num_folds", type=int, default=3, help="The number of splits to perform across the dataset") + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/deepspeed_with_config_support.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/deepspeed_with_config_support.py new file mode 100755 index 0000000..36ace84 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/deepspeed_with_config_support.py @@ -0,0 +1,734 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for causal language modeling (GPT, GPT-2, CTRL, ...) +on a text file or a dataset without using HuggingFace Trainer. + +Here is the full list of checkpoints on the hub that can be fine-tuned by this script: +https://huggingface.co/models?filter=text-generation +""" +# You can also adapt this script on your own causal language modeling task. Pointers for this are left as comments. + +import argparse +import json +import logging +import math +import os +import random +from itertools import chain +from pathlib import Path + +import torch +from torch.utils.data import DataLoader + +import datasets +import transformers +from accelerate import Accelerator, DistributedType +from accelerate.logging import get_logger +from accelerate.utils import DummyOptim, DummyScheduler, set_seed +from datasets import load_dataset +from huggingface_hub import Repository +from tqdm.auto import tqdm +from transformers import ( + CONFIG_MAPPING, + MODEL_MAPPING, + AutoConfig, + AutoModelForCausalLM, + AutoTokenizer, + SchedulerType, + default_data_collator, + get_scheduler, +) +from transformers.utils import get_full_repo_name +from transformers.utils.versions import require_version + + +logger = get_logger(__name__) + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt") + +MODEL_CONFIG_CLASSES = list(MODEL_MAPPING.keys()) +MODEL_TYPES = tuple(conf.model_type for conf in MODEL_CONFIG_CLASSES) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Finetune a transformers model on a causal language modeling task") + parser.add_argument( + "--dataset_name", + type=str, + default=None, + help="The name of the dataset to use (via the datasets library).", + ) + parser.add_argument( + "--dataset_config_name", + type=str, + default=None, + help="The configuration name of the dataset to use (via the datasets library).", + ) + parser.add_argument( + "--train_file", type=str, default=None, help="A csv or a json file containing the training data." + ) + parser.add_argument( + "--validation_file", type=str, default=None, help="A csv or a json file containing the validation data." + ) + parser.add_argument( + "--validation_split_percentage", + default=5, + help="The percentage of the train set used as validation set in case there's no validation split", + ) + parser.add_argument( + "--model_name_or_path", + type=str, + help="Path to pretrained model or model identifier from huggingface.co/models.", + required=False, + ) + parser.add_argument( + "--config_name", + type=str, + default=None, + help="Pretrained config name or path if not the same as model_name", + ) + parser.add_argument( + "--tokenizer_name", + type=str, + default=None, + help="Pretrained tokenizer name or path if not the same as model_name", + ) + parser.add_argument( + "--use_slow_tokenizer", + action="store_true", + help="If passed, will use a slow tokenizer (not backed by the 🤗 Tokenizers library).", + ) + parser.add_argument( + "--per_device_train_batch_size", + type=int, + default=8, + help="Batch size (per device) for the training dataloader.", + ) + parser.add_argument( + "--per_device_eval_batch_size", + type=int, + default=8, + help="Batch size (per device) for the evaluation dataloader.", + ) + parser.add_argument( + "--learning_rate", + type=float, + default=5e-5, + help="Initial learning rate (after the potential warmup period) to use.", + ) + parser.add_argument("--weight_decay", type=float, default=0.0, help="Weight decay to use.") + parser.add_argument("--num_train_epochs", type=int, default=3, help="Total number of training epochs to perform.") + parser.add_argument( + "--max_train_steps", + type=int, + default=None, + help="Total number of training steps to perform. If provided, overrides num_train_epochs.", + ) + parser.add_argument( + "--gradient_accumulation_steps", + type=int, + default=1, + help="Number of updates steps to accumulate before performing a backward/update pass.", + ) + parser.add_argument( + "--lr_scheduler_type", + type=SchedulerType, + default="linear", + help="The scheduler type to use.", + choices=["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"], + ) + parser.add_argument( + "--num_warmup_steps", type=int, default=0, help="Number of steps for the warmup in the lr scheduler." + ) + parser.add_argument("--output_dir", type=str, default=None, help="Where to store the final model.") + parser.add_argument("--seed", type=int, default=None, help="A seed for reproducible training.") + parser.add_argument( + "--model_type", + type=str, + default=None, + help="Model type to use if training from scratch.", + choices=MODEL_TYPES, + ) + parser.add_argument( + "--block_size", + type=int, + default=None, + help=( + "Optional input sequence length after tokenization. The training dataset will be truncated in block of" + " this size for training. Default to the model max input length for single sentence inputs (take into" + " account special tokens)." + ), + ) + parser.add_argument( + "--preprocessing_num_workers", + type=int, + default=None, + help="The number of processes to use for the preprocessing.", + ) + parser.add_argument( + "--overwrite_cache", type=bool, default=False, help="Overwrite the cached training and evaluation sets" + ) + parser.add_argument( + "--no_keep_linebreaks", action="store_true", help="Do not keep line breaks when using TXT files." + ) + parser.add_argument("--push_to_hub", action="store_true", help="Whether or not to push the model to the Hub.") + parser.add_argument( + "--hub_model_id", type=str, help="The name of the repository to keep in sync with the local `output_dir`." + ) + parser.add_argument("--hub_token", type=str, help="The token to use to push to the Model Hub.") + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + # New Code # + # Whether to load the best model at the end of training + parser.add_argument( + "--load_best_model", + action="store_true", + help="Whether to load the best model at the end of training", + ) + parser.add_argument( + "--with_tracking", + action="store_true", + help="Whether to enable experiment trackers for logging.", + ) + parser.add_argument( + "--report_to", + type=str, + default="all", + help=( + 'The integration to report the results and logs to. Supported platforms are `"tensorboard"`,' + ' `"wandb"` and `"comet_ml"`. Use `"all"` (default) to report to all integrations.' + "Only applicable when `--with_tracking` is passed." + ), + ) + args = parser.parse_args() + + # Sanity checks + if args.dataset_name is None and args.train_file is None and args.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + else: + if args.train_file is not None: + extension = args.train_file.split(".")[-1] + assert extension in ["csv", "json", "txt"], "`train_file` should be a csv, json or txt file." + if args.validation_file is not None: + extension = args.validation_file.split(".")[-1] + assert extension in ["csv", "json", "txt"], "`validation_file` should be a csv, json or txt file." + + if args.push_to_hub: + assert args.output_dir is not None, "Need an `output_dir` to create a repo when `--push_to_hub` is passed." + + return args + + +# New Code # +def checkpoint_model(checkpoint_folder, ckpt_id, model, epoch, last_global_step, **kwargs): + """Utility function for checkpointing model + optimizer dictionaries + The main purpose for this is to be able to resume training from that instant again + """ + checkpoint_state_dict = { + "epoch": epoch, + "last_global_step": last_global_step, + } + # Add extra kwargs too + checkpoint_state_dict.update(kwargs) + + success = model.save_checkpoint(checkpoint_folder, ckpt_id, checkpoint_state_dict) + status_msg = f"checkpointing: checkpoint_folder={checkpoint_folder}, ckpt_id={ckpt_id}" + if success: + logging.info(f"Success {status_msg}") + else: + logging.warning(f"Failure {status_msg}") + return + + +# New Code # +def load_training_checkpoint(model, load_dir, tag=None, **kwargs): + """Utility function for checkpointing model + optimizer dictionaries + The main purpose for this is to be able to resume training from that instant again + """ + _, checkpoint_state_dict = model.load_checkpoint(load_dir, tag=tag, **kwargs) + epoch = checkpoint_state_dict["epoch"] + last_global_step = checkpoint_state_dict["last_global_step"] + del checkpoint_state_dict + return (epoch, last_global_step) + + +# New Code # +def evaluate(args, model, eval_dataloader, accelerator, eval_dataset): + model.eval() + losses = [] + for step, batch in enumerate(eval_dataloader): + with torch.no_grad(): + outputs = model(**batch) + + loss = outputs.loss + losses.append(accelerator.gather(loss.repeat(args.per_device_eval_batch_size))) + + losses = torch.cat(losses) + losses = losses[: len(eval_dataset)] + try: + eval_loss = torch.mean(losses) + perplexity = math.exp(eval_loss) + except OverflowError: + perplexity = float("inf") + return perplexity, eval_loss + + +def main(): + args = parse_args() + + # Initialize the accelerator. We will let the accelerator handle device placement for us in this example. + # If we're using tracking, we also need to initialize it here and it will by default pick up all supported trackers + # in the environment + accelerator = ( + Accelerator(log_with=args.report_to, logging_dir=args.output_dir) if args.with_tracking else Accelerator() + ) + # Make one log on every process with the configuration for debugging. + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + level=logging.INFO, + ) + logger.info(accelerator.state, main_process_only=False) + if accelerator.is_local_main_process: + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_info() + else: + datasets.utils.logging.set_verbosity_error() + transformers.utils.logging.set_verbosity_error() + + # If passed along, set the training seed now. + if args.seed is not None: + set_seed(args.seed) + + # Handle the repository creation + if accelerator.is_main_process: + if args.push_to_hub: + if args.hub_model_id is None: + repo_name = get_full_repo_name(Path(args.output_dir).name, token=args.hub_token) + else: + repo_name = args.hub_model_id + repo = Repository(args.output_dir, clone_from=repo_name) + + with open(os.path.join(args.output_dir, ".gitignore"), "w+") as gitignore: + if "step_*" not in gitignore: + gitignore.write("step_*\n") + if "epoch_*" not in gitignore: + gitignore.write("epoch_*\n") + elif args.output_dir is not None: + os.makedirs(args.output_dir, exist_ok=True) + accelerator.wait_for_everyone() + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset(args.dataset_name, args.dataset_config_name) + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + args.dataset_name, + args.dataset_config_name, + split=f"train[:{args.validation_split_percentage}%]", + ) + raw_datasets["train"] = load_dataset( + args.dataset_name, + args.dataset_config_name, + split=f"train[{args.validation_split_percentage}%:]", + ) + else: + data_files = {} + dataset_args = {} + if args.train_file is not None: + data_files["train"] = args.train_file + if args.validation_file is not None: + data_files["validation"] = args.validation_file + extension = args.train_file.split(".")[-1] + if extension == "txt": + extension = "text" + dataset_args["keep_linebreaks"] = not args.no_keep_linebreaks + raw_datasets = load_dataset(extension, data_files=data_files, **dataset_args) + # If no validation data is there, validation_split_percentage will be used to divide the dataset. + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + extension, + data_files=data_files, + split=f"train[:{args.validation_split_percentage}%]", + **dataset_args, + ) + raw_datasets["train"] = load_dataset( + extension, + data_files=data_files, + split=f"train[{args.validation_split_percentage}%:]", + **dataset_args, + ) + + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # In distributed training, the .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + if args.config_name: + config = AutoConfig.from_pretrained(args.config_name) + elif args.model_name_or_path: + config = AutoConfig.from_pretrained(args.model_name_or_path) + else: + config = CONFIG_MAPPING[args.model_type]() + logger.warning("You are instantiating a new config instance from scratch.") + + if args.tokenizer_name: + tokenizer = AutoTokenizer.from_pretrained(args.tokenizer_name, use_fast=not args.use_slow_tokenizer) + elif args.model_name_or_path: + tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path, use_fast=not args.use_slow_tokenizer) + else: + raise ValueError( + "You are instantiating a new tokenizer from scratch. This is not supported by this script." + "You can do it from another script, save it, and load it from here, using --tokenizer_name." + ) + + if args.model_name_or_path: + model = AutoModelForCausalLM.from_pretrained( + args.model_name_or_path, + from_tf=bool(".ckpt" in args.model_name_or_path), + config=config, + ) + else: + logger.info("Training new model from scratch") + model = AutoModelForCausalLM.from_config(config) + + model.resize_token_embeddings(len(tokenizer)) + + # Preprocessing the datasets. + # First we tokenize all the texts. + column_names = raw_datasets["train"].column_names + text_column_name = "text" if "text" in column_names else column_names[0] + + def tokenize_function(examples): + return tokenizer(examples[text_column_name]) + + with accelerator.main_process_first(): + tokenized_datasets = raw_datasets.map( + tokenize_function, + batched=True, + num_proc=args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not args.overwrite_cache, + desc="Running tokenizer on dataset", + ) + + if args.block_size is None: + block_size = tokenizer.model_max_length + if block_size > 1024: + logger.warning( + f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " + "Picking 1024 instead. You can change that default value by passing --block_size xxx." + ) + block_size = 1024 + else: + if args.block_size > tokenizer.model_max_length: + logger.warning( + f"The block_size passed ({args.block_size}) is larger than the maximum length for the model" + f"({tokenizer.model_max_length}). Using block_size={tokenizer.model_max_length}." + ) + block_size = min(args.block_size, tokenizer.model_max_length) + + # Main data processing function that will concatenate all texts from our dataset and generate chunks of block_size. + def group_texts(examples): + # Concatenate all texts. + concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} + total_length = len(concatenated_examples[list(examples.keys())[0]]) + # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can + # customize this part to your needs. + if total_length >= block_size: + total_length = (total_length // block_size) * block_size + # Split by chunks of max_len. + result = { + k: [t[i : i + block_size] for i in range(0, total_length, block_size)] + for k, t in concatenated_examples.items() + } + result["labels"] = result["input_ids"].copy() + return result + + # Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a remainder + # for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value might be slower + # to preprocess. + # + # To speed up this part, we use multiprocessing. See the documentation of the map method for more information: + # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map + + with accelerator.main_process_first(): + lm_datasets = tokenized_datasets.map( + group_texts, + batched=True, + num_proc=args.preprocessing_num_workers, + load_from_cache_file=not args.overwrite_cache, + desc=f"Grouping texts in chunks of {block_size}", + ) + + train_dataset = lm_datasets["train"] + eval_dataset = lm_datasets["validation"] + + # Log a few random samples from the training set: + for index in random.sample(range(len(train_dataset)), 3): + logger.info(f"Sample {index} of the training set: {train_dataset[index]}.") + + # DataLoaders creation: + train_dataloader = DataLoader( + train_dataset, shuffle=True, collate_fn=default_data_collator, batch_size=args.per_device_train_batch_size + ) + eval_dataloader = DataLoader( + eval_dataset, collate_fn=default_data_collator, batch_size=args.per_device_eval_batch_size + ) + + # Optimizer + # Split weights in two groups, one with weight decay and the other not. + no_decay = ["bias", "LayerNorm.weight"] + optimizer_grouped_parameters = [ + { + "params": [p for n, p in model.named_parameters() if not any(nd in n for nd in no_decay)], + "weight_decay": args.weight_decay, + }, + { + "params": [p for n, p in model.named_parameters() if any(nd in n for nd in no_decay)], + "weight_decay": 0.0, + }, + ] + # New Code # + # Creates Dummy Optimizer if `optimizer` was specified in the config file else creates Adam Optimizer + optimizer_cls = ( + torch.optim.AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + optimizer = optimizer_cls(optimizer_grouped_parameters, lr=args.learning_rate) + + # On TPU, the tie weights in our model have been disconnected, so we need to restore the ties. + if accelerator.distributed_type == DistributedType.TPU: + model.tie_weights() + + # Scheduler and math around the number of training steps. + + # New Code + # Get gradient accumulation steps from deepspeed config if available + if accelerator.state.deepspeed_plugin is not None: + args.gradient_accumulation_steps = accelerator.state.deepspeed_plugin.deepspeed_config[ + "gradient_accumulation_steps" + ] + + num_update_steps_per_epoch = math.ceil(len(train_dataloader) / args.gradient_accumulation_steps) + if args.max_train_steps is None: + args.max_train_steps = args.num_train_epochs * num_update_steps_per_epoch + else: + args.num_train_epochs = math.ceil(args.max_train_steps / num_update_steps_per_epoch) + + # New Code # + # Creates Dummy Scheduler if `scheduler` was specified in the config file else creates `args.lr_scheduler_type` Scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + lr_scheduler = get_scheduler( + name=args.lr_scheduler_type, + optimizer=optimizer, + num_warmup_steps=args.num_warmup_steps, + num_training_steps=args.max_train_steps, + ) + else: + lr_scheduler = DummyScheduler( + optimizer, total_num_steps=args.max_train_steps, warmup_num_steps=args.num_warmup_steps + ) + + # Prepare everything with our `accelerator`. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # We need to recalculate our total training steps as the size of the training dataloader may have changed. + num_update_steps_per_epoch = math.ceil(len(train_dataloader) / args.gradient_accumulation_steps) + args.max_train_steps = args.num_train_epochs * num_update_steps_per_epoch + + # Figure out how many steps we should save the Accelerator states + if hasattr(args.checkpointing_steps, "isdigit"): + checkpointing_steps = args.checkpointing_steps + if args.checkpointing_steps.isdigit(): + checkpointing_steps = int(args.checkpointing_steps) + else: + checkpointing_steps = None + + # We need to initialize the trackers we use, and also store our configuration. + # The trackers initializes automatically on the main process. + if args.with_tracking: + experiment_config = vars(args) + # TensorBoard cannot log Enums, need the raw value + experiment_config["lr_scheduler_type"] = experiment_config["lr_scheduler_type"].value + accelerator.init_trackers("clm_no_trainer", experiment_config) + + # Train! + total_batch_size = args.per_device_train_batch_size * accelerator.num_processes * args.gradient_accumulation_steps + + logger.info("***** Running training *****") + logger.info(f" Num examples = {len(train_dataset)}") + logger.info(f" Num Epochs = {args.num_train_epochs}") + logger.info(f" Instantaneous batch size per device = {args.per_device_train_batch_size}") + logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_batch_size}") + logger.info(f" Gradient Accumulation steps = {args.gradient_accumulation_steps}") + logger.info(f" Total optimization steps = {args.max_train_steps}") + # Only show the progress bar once on each machine. + progress_bar = tqdm(range(args.max_train_steps), disable=not accelerator.is_local_main_process) + completed_steps = 0 + starting_epoch = 0 + best_metric = None + best_metric_checkpoint = None + + # Potentially load in the weights and states from a previous save + if args.resume_from_checkpoint: + # New Code # + # Loads the DeepSpeed checkpoint from the specified path + _, last_global_step = load_training_checkpoint( + model, + args.resume_from_checkpoint, + **{"load_optimizer_states": True, "load_lr_scheduler_states": True}, + ) + accelerator.print(f"Resumed from checkpoint: {args.resume_from_checkpoint}") + resume_step = last_global_step + starting_epoch = resume_step // len(train_dataloader) + resume_step -= starting_epoch * len(train_dataloader) + + for epoch in range(starting_epoch, args.num_train_epochs): + model.train() + if args.with_tracking: + total_loss = 0 + for step, batch in enumerate(train_dataloader): + # We need to skip steps until we reach the resumed step + if args.resume_from_checkpoint and epoch == starting_epoch: + if resume_step is not None and step < resume_step: + completed_steps += 1 + continue + outputs = model(**batch) + loss = outputs.loss + # We keep track of the loss at each epoch + if args.with_tracking: + total_loss += loss.detach().float() + loss = loss / args.gradient_accumulation_steps + accelerator.backward(loss) + if step % args.gradient_accumulation_steps == 0 or step == len(train_dataloader) - 1: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + progress_bar.update(1) + completed_steps += 1 + + if isinstance(checkpointing_steps, int): + if completed_steps % checkpointing_steps == 0: + output_dir = f"step_{completed_steps }" + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + if completed_steps >= args.max_train_steps: + break + + perplexity, eval_loss = evaluate(args, model, eval_dataloader, accelerator, eval_dataset) + logger.info(f"epoch {epoch}: perplexity: {perplexity} eval_loss: {eval_loss}") + + if args.with_tracking: + accelerator.log( + { + "perplexity": perplexity, + "eval_loss": eval_loss, + "train_loss": total_loss.item() / len(train_dataloader), + "epoch": epoch, + "step": completed_steps, + }, + step=completed_steps, + ) + + # New Code # + # Save the DeepSpeed checkpoint to the specified path + checkpoint_model(args.output_dir, epoch, model, epoch, completed_steps) + + # New Code # + # Tracks the best checkpoint and best metric + if best_metric is None or best_metric > perplexity: + best_metric = perplexity + best_metric_checkpoint = os.path.join(args.output_dir, str(epoch)) + accelerator.print(f"New best metric: {best_metric} at epoch {epoch}") + accelerator.print(f"best_metric_checkpoint: {best_metric_checkpoint}") + + # New Code # + # Loads the best checkpoint after the training is finished + if args.load_best_model: + _, last_global_step = load_training_checkpoint( + model, + "/".join(best_metric_checkpoint.split("/")[:-1]), + tag=best_metric_checkpoint.split("/")[-1], + **{"load_optimizer_states": True, "load_lr_scheduler_states": True}, + ) + + # New Code # + # Evaluates using the best checkpoint + perplexity, eval_loss = evaluate(args, model, eval_dataloader, accelerator, eval_dataset) + logger.info(f"Best model metrics: perplexity: {perplexity} eval_loss: {eval_loss}") + if perplexity != best_metric: + raise AssertionError( + f"Best metric {best_metric} does not match the metric {perplexity} of the loaded best model." + ) + + if args.output_dir is not None: + accelerator.wait_for_everyone() + unwrapped_model = accelerator.unwrap_model(model) + + # New Code # + # Saves the whole/unpartitioned fp16 model when in ZeRO Stage-3 to the output directory if + # `stage3_gather_16bit_weights_on_model_save` is True in DeepSpeed Config file or + # `zero3_save_16bit_model` is True in DeepSpeed Plugin. + # For Zero Stages 1 and 2, models are saved as usual in the output directory. + # The model name saved is `pytorch_model.bin` + unwrapped_model.save_pretrained( + args.output_dir, + is_main_process=accelerator.is_main_process, + save_function=accelerator.save, + state_dict=accelerator.get_state_dict(model), + ) + if accelerator.is_main_process: + tokenizer.save_pretrained(args.output_dir) + if args.push_to_hub: + repo.push_to_hub(commit_message="End of training", auto_lfs_prune=True) + + with open(os.path.join(args.output_dir, "all_results.json"), "w") as f: + json.dump({"perplexity": perplexity, "eval_loss": eval_loss.item()}, f) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/fsdp_with_peak_mem_tracking.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/fsdp_with_peak_mem_tracking.py new file mode 100644 index 0000000..4ae8e91 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/fsdp_with_peak_mem_tracking.py @@ -0,0 +1,381 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import gc +import os + +import torch +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# - FSDP +# +# This example also demonstrates the checkpointing and sharding capabilities +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +# New Code # +# Converting Bytes to Megabytes +def b2mb(x): + return int(x / 2**20) + + +# New Code # +# This context manager is used to track the peak memory usage of the process +class TorchTracemalloc: + def __enter__(self): + gc.collect() + torch.cuda.empty_cache() + torch.cuda.reset_max_memory_allocated() # reset the peak gauge to zero + self.begin = torch.cuda.memory_allocated() + return self + + def __exit__(self, *exc): + gc.collect() + torch.cuda.empty_cache() + self.end = torch.cuda.memory_allocated() + self.peak = torch.cuda.max_memory_allocated() + self.used = b2mb(self.end - self.begin) + self.peaked = b2mb(self.peak - self.begin) + # print(f"delta used/peak {self.used:4d}/{self.peaked:4d}") + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize accelerator + if args.with_tracking: + accelerator = Accelerator( + cpu=args.cpu, mixed_precision=args.mixed_precision, log_with="wandb", logging_dir=args.logging_dir + ) + else: + accelerator = Accelerator() + accelerator.print(accelerator.distributed_type) + + if hasattr(args.checkpointing_steps, "isdigit"): + if args.checkpointing_steps == "epoch": + checkpointing_steps = args.checkpointing_steps + elif args.checkpointing_steps.isdigit(): + checkpointing_steps = int(args.checkpointing_steps) + else: + raise ValueError( + f"Argument `checkpointing_steps` must be either a number or `epoch`. `{args.checkpointing_steps}` passed." + ) + else: + checkpointing_steps = None + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + # We need to initialize the trackers we use, and also store our configuration + if args.with_tracking: + experiment_config = vars(args) + accelerator.init_trackers("fsdp_glue_no_trainer", experiment_config) + + tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) + datasets = load_dataset("glue", "mrpc") + metric = evaluate.load("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + set_seed(seed) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained(args.model_name_or_path, return_dict=True) + # New Code # + # For FSDP feature, it is highly recommended and efficient to prepare the model before creating optimizer + model = accelerator.prepare(model) + accelerator.print(model) + + # Instantiate optimizer + # New Code # + # For FSDP feature, at present it doesn't support multiple parameter groups, + # so we need to create a single parameter group for the whole model + optimizer = torch.optim.AdamW(params=model.parameters(), lr=lr, weight_decay=2e-4) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=10, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # New Code # + # For FSDP feature, prepare everything except the model as we have already prepared the model + # before creating the optimizer + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + overall_step = 0 + + # Potentially load in the weights and states from a previous save + if args.resume_from_checkpoint: + if args.resume_from_checkpoint is not None or args.resume_from_checkpoint != "": + accelerator.print(f"Resumed from checkpoint: {args.resume_from_checkpoint}") + accelerator.load_state(args.resume_from_checkpoint) + path = os.path.basename(args.resume_from_checkpoint) + else: + # Get the most recent checkpoint + dirs = [f.name for f in os.scandir(os.getcwd()) if f.is_dir()] + dirs.sort(key=os.path.getctime) + path = dirs[-1] # Sorts folders by date modified, most recent checkpoint is the last + # Extract `epoch_{i}` or `step_{i}` + training_difference = os.path.splitext(path)[0] + + if "epoch" in training_difference: + num_epochs -= int(training_difference.replace("epoch_", "")) + resume_step = None + else: + resume_step = int(training_difference.replace("step_", "")) + num_epochs -= resume_step // len(train_dataloader) + # If resuming by step, we also need to know exactly how far into the DataLoader we went + resume_step = (num_epochs * len(train_dataloader)) - resume_step + + # Now we train the model + for epoch in range(num_epochs): + # New Code # + # context manager to track the peak memory usage during the training epoch + with TorchTracemalloc() as tracemalloc: + model.train() + if args.with_tracking: + total_loss = 0 + for step, batch in enumerate(train_dataloader): + # We need to skip steps until we reach the resumed step + if args.resume_from_checkpoint and epoch == 0: + if resume_step is not None and step < resume_step: + pass + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + # We keep track of the loss at each epoch + if args.with_tracking: + total_loss += loss.detach().float() + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + # accelerator.print(lr_scheduler.get_lr()) + + overall_step += 1 + + if isinstance(checkpointing_steps, int): + output_dir = f"step_{overall_step}" + if overall_step % checkpointing_steps == 0: + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + # New Code # + # Printing the GPU memory usage details such as allocated memory, peak memory, and total memory usage + accelerator.print("Memory before entering the train : {}".format(b2mb(tracemalloc.begin))) + accelerator.print("Memory consumed at the end of the train (end-begin): {}".format(tracemalloc.used)) + accelerator.print("Peak Memory consumed during the train (max-begin): {}".format(tracemalloc.peaked)) + accelerator.print( + "Total Peak Memory consumed during the train (max): {}".format( + tracemalloc.peaked + b2mb(tracemalloc.begin) + ) + ) + # Logging the peak memory usage of the GPU to the tracker + if args.with_tracking: + accelerator.log( + { + "train_total_peak_memory": tracemalloc.peaked + b2mb(tracemalloc.begin), + }, + step=epoch, + ) + + # New Code # + # context manager to track the peak memory usage during the evaluation + with TorchTracemalloc() as tracemalloc: + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + if args.with_tracking: + accelerator.log( + { + "accuracy": eval_metric["accuracy"], + "f1": eval_metric["f1"], + "train_loss": total_loss.item() / len(train_dataloader), + }, + step=epoch, + ) + + if checkpointing_steps == "epoch": + output_dir = f"epoch_{epoch}" + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + # New Code # + # Printing the GPU memory usage details such as allocated memory, peak memory, and total memory usage + accelerator.print("Memory before entering the eval : {}".format(b2mb(tracemalloc.begin))) + accelerator.print("Memory consumed at the end of the eval (end-begin): {}".format(tracemalloc.used)) + accelerator.print("Peak Memory consumed during the eval (max-begin): {}".format(tracemalloc.peaked)) + accelerator.print( + "Total Peak Memory consumed during the eval (max): {}".format(tracemalloc.peaked + b2mb(tracemalloc.begin)) + ) + # Logging the peak memory usage of the GPU to the tracker + if args.with_tracking: + accelerator.log( + { + "eval_total_peak_memory": tracemalloc.peaked + b2mb(tracemalloc.begin), + }, + step=epoch, + ) + + if args.with_tracking: + accelerator.end_training() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + parser.add_argument( + "--with_tracking", + action="store_true", + help="Whether to load in all available experiment trackers from the environment and use them for logging.", + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--logging_dir", + type=str, + default="logs", + help="Location on where to store experiment tracking logs`", + ) + parser.add_argument( + "--model_name_or_path", + type=str, + help="Path to pretrained model or model identifier from huggingface.co/models.", + required=True, + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 1, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/gradient_accumulation.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/gradient_accumulation.py new file mode 100644 index 0000000..170a885 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/gradient_accumulation.py @@ -0,0 +1,215 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate +# and perform gradient accumulation +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # New Code # + gradient_accumulation_steps = int(args.gradient_accumulation_steps) + # Initialize accelerator + accelerator = Accelerator( + cpu=args.cpu, mixed_precision=args.mixed_precision, gradient_accumulation_steps=gradient_accumulation_steps + ) + if accelerator.distributed_type == DistributedType.TPU and gradient_accumulation_steps > 1: + raise NotImplementedError( + "Gradient accumulation on TPUs is currently not supported. Pass `gradient_accumulation_steps=1`" + ) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs), + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + # New code # + # We use the new `accumulate` context manager to perform gradient accumulation + # We also currently do not support TPUs nor advise it as bugs were found on the XLA side when running our tests. + with accelerator.accumulate(model): + output = model(**batch) + loss = output.loss + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + # New Code # + parser.add_argument( + "--gradient_accumulation_steps", + type=int, + default=1, + help="The number of minibatches to be ran before gradients are accumulated.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/memory.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/memory.py new file mode 100644 index 0000000..684a328 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/memory.py @@ -0,0 +1,220 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +# New Code # +import evaluate +from accelerate import Accelerator, DistributedType +from accelerate.utils import find_executable_batch_size +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing how to ensure out-of-memory errors never +# interrupt training, and builds off the `nlp_example.py` script. +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + # New Code # + # We now can define an inner training loop function. It should take a batch size as the only parameter, + # and build the dataloaders in there. + # It also gets our decorator + @find_executable_batch_size(starting_batch_size=batch_size) + def inner_training_loop(batch_size): + # And now just move everything below under this function + # We need to bring in the Accelerator object from earlier + nonlocal accelerator + # And reset all of its attributes that could hold onto any memory: + accelerator.free_memory() + + # Then we can declare the model, optimizer, and everything else: + set_seed(seed) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs), + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + # New Code # + # And call it at the end with no arguments + # Note: You could also refactor this outside of your training loop function + inner_training_loop() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/multi_process_metrics.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/multi_process_metrics.py new file mode 100644 index 0000000..cb9534c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/multi_process_metrics.py @@ -0,0 +1,225 @@ +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing how to properly calculate the metrics on the +# validation dataset when in a distributed system, and builds off the +# `nlp_example.py` script. +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To help focus on the differences in the code, building `DataLoaders` +# was refactored into its own function. +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + samples_seen = 0 + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather((predictions, batch["labels"])) + # New Code # + # First we check if it's a distributed system + if accelerator.use_distributed: + # Then see if we're on the last batch of our eval dataloader + if step == len(eval_dataloader) - 1: + # Last batch needs to be truncated on distributed systems as it contains additional samples + predictions = predictions[: len(eval_dataloader.dataset) - samples_seen] + references = references[: len(eval_dataloader.dataset) - samples_seen] + else: + # Otherwise we add the number of samples seen + samples_seen += references.shape[0] + # All of this can be avoided if you use `Accelerator.gather_for_metrics` instead of `Accelerator.gather`: + # accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/by_feature/tracking.py b/v0.13.2/accelerate-0.13.2/examples/by_feature/tracking.py new file mode 100644 index 0000000..e446769 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/by_feature/tracking.py @@ -0,0 +1,263 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate, +# specifically showcasing the experiment tracking capability, +# and builds off the `nlp_example.py` script. +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To help focus on the differences in the code, building `DataLoaders` +# was refactored into its own function. +# New additions from the base script can be found quickly by +# looking for the # New Code # tags +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +# For testing only +if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + from accelerate.test_utils.training import mocked_dataloaders + + get_dataloaders = mocked_dataloaders # noqa: F811 + + +def training_function(config, args): + # For testing only + if os.environ.get("TESTING_MOCKED_DATALOADERS", None) == "1": + config["num_epochs"] = 2 + # Initialize Accelerator + + # New Code # + # We pass in "all" to `log_with` to grab all available trackers in the environment + # Note: If using a custom `Tracker` class, should be passed in here such as: + # >>> log_with = ["all", MyCustomTrackerClassInstance()] + if args.with_tracking: + accelerator = Accelerator( + cpu=args.cpu, mixed_precision=args.mixed_precision, log_with="all", logging_dir=args.logging_dir + ) + else: + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + set_seed(seed) + + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + metric = evaluate.load("glue", "mrpc") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # New Code # + # We need to initialize the trackers we use. Overall configurations can also be stored + if args.with_tracking: + run = os.path.split(__file__)[-1].split(".")[0] + accelerator.init_trackers(run, config) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + # New Code # + # For our tracking example, we will log the total loss of each epoch + if args.with_tracking: + total_loss = 0 + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + # New Code # + if args.with_tracking: + total_loss += loss.detach().float() + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True` (the default). + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + # New Code # + # To actually log, we call `Accelerator.log` + # The values passed can be of `str`, `int`, `float` or `dict` of `str` to `float`/`int` + if args.with_tracking: + accelerator.log( + { + "accuracy": eval_metric["accuracy"], + "f1": eval_metric["f1"], + "train_loss": total_loss.item() / len(train_dataloader), + "epoch": epoch, + }, + step=epoch, + ) + + # New Code # + # When a run is finished, you should call `accelerator.end_training()` + # to close all of the open trackers + if args.with_tracking: + accelerator.end_training() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + parser.add_argument( + "--with_tracking", + action="store_true", + help="Whether to load in all available experiment trackers from the environment and use them for logging.", + ) + parser.add_argument( + "--logging_dir", + type=str, + default="logs", + help="Location on where to store experiment tracking logs`", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/complete_cv_example.py b/v0.13.2/accelerate-0.13.2/examples/complete_cv_example.py new file mode 100644 index 0000000..8809815 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/complete_cv_example.py @@ -0,0 +1,315 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os +import re + +import numpy as np +import torch +from torch.optim.lr_scheduler import OneCycleLR +from torch.utils.data import DataLoader, Dataset + +import PIL +from accelerate import Accelerator +from timm import create_model +from torchvision.transforms import Compose, RandomResizedCrop, Resize, ToTensor + + +######################################################################## +# This is a fully working simple example to use Accelerate +# +# This example trains a ResNet50 on the Oxford-IIT Pet Dataset +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +# Function to get the label from the filename +def extract_label(fname): + stem = fname.split(os.path.sep)[-1] + return re.search(r"^(.*)_\d+\.jpg$", stem).groups()[0] + + +class PetsDataset(Dataset): + def __init__(self, file_names, image_transform=None, label_to_id=None): + self.file_names = file_names + self.image_transform = image_transform + self.label_to_id = label_to_id + + def __len__(self): + return len(self.file_names) + + def __getitem__(self, idx): + fname = self.file_names[idx] + raw_image = PIL.Image.open(fname) + image = raw_image.convert("RGB") + if self.image_transform is not None: + image = self.image_transform(image) + label = extract_label(fname) + if self.label_to_id is not None: + label = self.label_to_id[label] + return {"image": image, "label": label} + + +def training_function(config, args): + # Initialize accelerator + if args.with_tracking: + accelerator = Accelerator( + cpu=args.cpu, mixed_precision=args.mixed_precision, log_with="all", logging_dir=args.logging_dir + ) + else: + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + image_size = config["image_size"] + if not isinstance(image_size, (list, tuple)): + image_size = (image_size, image_size) + + # Parse out whether we are saving every epoch or after a certain number of batches + if hasattr(args.checkpointing_steps, "isdigit"): + if args.checkpointing_steps == "epoch": + checkpointing_steps = args.checkpointing_steps + elif args.checkpointing_steps.isdigit(): + checkpointing_steps = int(args.checkpointing_steps) + else: + raise ValueError( + f"Argument `checkpointing_steps` must be either a number or `epoch`. `{args.checkpointing_steps}` passed." + ) + else: + checkpointing_steps = None + + # We need to initialize the trackers we use, and also store our configuration + if args.with_tracking: + run = os.path.split(__file__)[-1].split(".")[0] + accelerator.init_trackers(run, config) + + # Grab all the image filenames + file_names = [os.path.join(args.data_dir, fname) for fname in os.listdir(args.data_dir) if fname.endswith(".jpg")] + + # Build the label correspondences + all_labels = [extract_label(fname) for fname in file_names] + id_to_label = list(set(all_labels)) + id_to_label.sort() + label_to_id = {lbl: i for i, lbl in enumerate(id_to_label)} + + # Set the seed before splitting the data. + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + + # Split our filenames between train and validation + random_perm = np.random.permutation(len(file_names)) + cut = int(0.8 * len(file_names)) + train_split = random_perm[:cut] + eval_split = random_perm[cut:] + + # For training we use a simple RandomResizedCrop + train_tfm = Compose([RandomResizedCrop(image_size, scale=(0.5, 1.0)), ToTensor()]) + train_dataset = PetsDataset( + [file_names[i] for i in train_split], image_transform=train_tfm, label_to_id=label_to_id + ) + + # For evaluation, we use a deterministic Resize + eval_tfm = Compose([Resize(image_size), ToTensor()]) + eval_dataset = PetsDataset([file_names[i] for i in eval_split], image_transform=eval_tfm, label_to_id=label_to_id) + + # Instantiate dataloaders. + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=batch_size, num_workers=4) + eval_dataloader = DataLoader(eval_dataset, shuffle=False, batch_size=batch_size, num_workers=4) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = create_model("resnet50d", pretrained=True, num_classes=len(label_to_id)) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Freezing the base model + for param in model.parameters(): + param.requires_grad = False + for param in model.get_classifier().parameters(): + param.requires_grad = True + + # We normalize the batches of images to be a bit faster. + mean = torch.tensor(model.default_cfg["mean"])[None, :, None, None].to(accelerator.device) + std = torch.tensor(model.default_cfg["std"])[None, :, None, None].to(accelerator.device) + + # Instantiate optimizer + optimizer = torch.optim.Adam(params=model.parameters(), lr=lr / 25) + + # Instantiate learning rate scheduler + lr_scheduler = OneCycleLR(optimizer=optimizer, max_lr=lr, epochs=num_epochs, steps_per_epoch=len(train_dataloader)) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + + # Potentially load in the weights and states from a previous save + if args.resume_from_checkpoint: + if args.resume_from_checkpoint is not None or args.resume_from_checkpoint != "": + accelerator.print(f"Resumed from checkpoint: {args.resume_from_checkpoint}") + accelerator.load_state(args.resume_from_checkpoint) + path = os.path.basename(args.resume_from_checkpoint) + else: + # Get the most recent checkpoint + dirs = [f.name for f in os.scandir(os.getcwd()) if f.is_dir()] + dirs.sort(key=os.path.getctime) + path = dirs[-1] # Sorts folders by date modified, most recent checkpoint is the last + # Extract `epoch_{i}` or `step_{i}` + training_difference = os.path.splitext(path)[0] + + if "epoch" in training_difference: + starting_epoch = int(training_difference.replace("epoch_", "")) + 1 + resume_step = None + else: + resume_step = int(training_difference.replace("step_", "")) + starting_epoch = resume_step // len(train_dataloader) + resume_step -= starting_epoch * len(train_dataloader) + + # Now we train the model + for epoch in range(starting_epoch, num_epochs): + model.train() + if args.with_tracking: + total_loss = 0 + for step, batch in enumerate(train_dataloader): + # We need to skip steps until we reach the resumed step + if args.resume_from_checkpoint and epoch == starting_epoch: + if resume_step is not None and step < resume_step: + overall_step += 1 + continue + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch = {k: v.to(accelerator.device) for k, v in batch.items()} + inputs = (batch["image"] - mean) / std + outputs = model(inputs) + loss = torch.nn.functional.cross_entropy(outputs, batch["label"]) + # We keep track of the loss at each epoch + if args.with_tracking: + total_loss += loss.detach().float() + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + overall_step += 1 + if isinstance(checkpointing_steps, int): + output_dir = f"step_{overall_step}" + if overall_step % checkpointing_steps == 0: + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + model.eval() + accurate = 0 + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch = {k: v.to(accelerator.device) for k, v in batch.items()} + inputs = (batch["image"] - mean) / std + with torch.no_grad(): + outputs = model(inputs) + predictions = outputs.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["label"])) + accurate_preds = predictions == references + accurate += accurate_preds.long().sum() + + eval_metric = accurate.item() / accelerator.gradient_state.samples_seen + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}: {100 * eval_metric:.2f}") + if args.with_tracking: + accelerator.log( + { + "accuracy": 100 * eval_metric, + "train_loss": total_loss.item() / len(train_dataloader), + "epoch": epoch, + }, + step=overall_step, + ) + if checkpointing_steps == "epoch": + output_dir = f"epoch_{epoch}" + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + + if args.with_tracking: + accelerator.end_training() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument("--data_dir", required=True, help="The data folder on disk.") + parser.add_argument("--fp16", action="store_true", help="If passed, will use FP16 training.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + parser.add_argument( + "--with_tracking", + action="store_true", + help="Whether to load in all available experiment trackers from the environment and use them for logging.", + ) + parser.add_argument( + "--logging_dir", + type=str, + default="logs", + help="Location on where to store experiment tracking logs`", + ) + args = parser.parse_args() + config = {"lr": 3e-2, "num_epochs": 3, "seed": 42, "batch_size": 64, "image_size": 224} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/complete_nlp_example.py b/v0.13.2/accelerate-0.13.2/examples/complete_nlp_example.py new file mode 100644 index 0000000..559a5c9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/complete_nlp_example.py @@ -0,0 +1,296 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# This example also demonstrates the checkpointing and sharding capabilities +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def training_function(config, args): + # Initialize accelerator + if args.with_tracking: + accelerator = Accelerator( + cpu=args.cpu, mixed_precision=args.mixed_precision, log_with="all", logging_dir=args.logging_dir + ) + else: + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + + if hasattr(args.checkpointing_steps, "isdigit"): + if args.checkpointing_steps == "epoch": + checkpointing_steps = args.checkpointing_steps + elif args.checkpointing_steps.isdigit(): + checkpointing_steps = int(args.checkpointing_steps) + else: + raise ValueError( + f"Argument `checkpointing_steps` must be either a number or `epoch`. `{args.checkpointing_steps}` passed." + ) + else: + checkpointing_steps = None + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + # We need to initialize the trackers we use, and also store our configuration + if args.with_tracking: + run = os.path.split(__file__)[-1].split(".")[0] + accelerator.init_trackers(run, config) + + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + metric = evaluate.load("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + set_seed(seed) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + + # Potentially load in the weights and states from a previous save + if args.resume_from_checkpoint: + if args.resume_from_checkpoint is not None or args.resume_from_checkpoint != "": + accelerator.print(f"Resumed from checkpoint: {args.resume_from_checkpoint}") + accelerator.load_state(args.resume_from_checkpoint) + path = os.path.basename(args.resume_from_checkpoint) + else: + # Get the most recent checkpoint + dirs = [f.name for f in os.scandir(os.getcwd()) if f.is_dir()] + dirs.sort(key=os.path.getctime) + path = dirs[-1] # Sorts folders by date modified, most recent checkpoint is the last + # Extract `epoch_{i}` or `step_{i}` + training_difference = os.path.splitext(path)[0] + + if "epoch" in training_difference: + starting_epoch = int(training_difference.replace("epoch_", "")) + 1 + resume_step = None + else: + resume_step = int(training_difference.replace("step_", "")) + starting_epoch = resume_step // len(train_dataloader) + resume_step -= starting_epoch * len(train_dataloader) + + # Now we train the model + for epoch in range(starting_epoch, num_epochs): + model.train() + if args.with_tracking: + total_loss = 0 + for step, batch in enumerate(train_dataloader): + # We need to skip steps until we reach the resumed step + if args.resume_from_checkpoint and epoch == starting_epoch: + if resume_step is not None and step < resume_step: + overall_step += 1 + continue + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + # We keep track of the loss at each epoch + if args.with_tracking: + total_loss += loss.detach().float() + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + overall_step += 1 + + if isinstance(checkpointing_steps, int): + output_dir = f"step_{overall_step}" + if overall_step % checkpointing_steps == 0: + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + if args.with_tracking: + accelerator.log( + { + "accuracy": eval_metric["accuracy"], + "f1": eval_metric["f1"], + "train_loss": total_loss.item() / len(train_dataloader), + "epoch": epoch, + }, + step=epoch, + ) + + if checkpointing_steps == "epoch": + output_dir = f"epoch_{epoch}" + if args.output_dir is not None: + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + + if args.with_tracking: + accelerator.end_training() + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + parser.add_argument( + "--with_tracking", + action="store_true", + help="Whether to load in all available experiment trackers from the environment and use them for logging.", + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--logging_dir", + type=str, + default="logs", + help="Location on where to store experiment tracking logs`", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/cv_example.py b/v0.13.2/accelerate-0.13.2/examples/cv_example.py new file mode 100644 index 0000000..1118a2f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/cv_example.py @@ -0,0 +1,211 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os +import re + +import numpy as np +import torch +from torch.optim.lr_scheduler import OneCycleLR +from torch.utils.data import DataLoader, Dataset + +import PIL +from accelerate import Accelerator +from timm import create_model +from torchvision.transforms import Compose, RandomResizedCrop, Resize, ToTensor + + +######################################################################## +# This is a fully working simple example to use Accelerate +# +# This example trains a ResNet50 on the Oxford-IIT Pet Dataset +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +# Function to get the label from the filename +def extract_label(fname): + stem = fname.split(os.path.sep)[-1] + return re.search(r"^(.*)_\d+\.jpg$", stem).groups()[0] + + +class PetsDataset(Dataset): + def __init__(self, file_names, image_transform=None, label_to_id=None): + self.file_names = file_names + self.image_transform = image_transform + self.label_to_id = label_to_id + + def __len__(self): + return len(self.file_names) + + def __getitem__(self, idx): + fname = self.file_names[idx] + raw_image = PIL.Image.open(fname) + image = raw_image.convert("RGB") + if self.image_transform is not None: + image = self.image_transform(image) + label = extract_label(fname) + if self.label_to_id is not None: + label = self.label_to_id[label] + return {"image": image, "label": label} + + +def training_function(config, args): + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + image_size = config["image_size"] + if not isinstance(image_size, (list, tuple)): + image_size = (image_size, image_size) + + # Grab all the image filenames + file_names = [os.path.join(args.data_dir, fname) for fname in os.listdir(args.data_dir) if fname.endswith(".jpg")] + + # Build the label correspondences + all_labels = [extract_label(fname) for fname in file_names] + id_to_label = list(set(all_labels)) + id_to_label.sort() + label_to_id = {lbl: i for i, lbl in enumerate(id_to_label)} + + # Set the seed before splitting the data. + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + + # Split our filenames between train and validation + random_perm = np.random.permutation(len(file_names)) + cut = int(0.8 * len(file_names)) + train_split = random_perm[:cut] + eval_split = random_perm[cut:] + + # For training we use a simple RandomResizedCrop + train_tfm = Compose([RandomResizedCrop(image_size, scale=(0.5, 1.0)), ToTensor()]) + train_dataset = PetsDataset( + [file_names[i] for i in train_split], image_transform=train_tfm, label_to_id=label_to_id + ) + + # For evaluation, we use a deterministic Resize + eval_tfm = Compose([Resize(image_size), ToTensor()]) + eval_dataset = PetsDataset([file_names[i] for i in eval_split], image_transform=eval_tfm, label_to_id=label_to_id) + + # Instantiate dataloaders. + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=batch_size, num_workers=4) + eval_dataloader = DataLoader(eval_dataset, shuffle=False, batch_size=batch_size, num_workers=4) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = create_model("resnet50d", pretrained=True, num_classes=len(label_to_id)) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Freezing the base model + for param in model.parameters(): + param.requires_grad = False + for param in model.get_classifier().parameters(): + param.requires_grad = True + + # We normalize the batches of images to be a bit faster. + mean = torch.tensor(model.default_cfg["mean"])[None, :, None, None].to(accelerator.device) + std = torch.tensor(model.default_cfg["std"])[None, :, None, None].to(accelerator.device) + + # Instantiate optimizer + optimizer = torch.optim.Adam(params=model.parameters(), lr=lr / 25) + + # Instantiate learning rate scheduler + lr_scheduler = OneCycleLR(optimizer=optimizer, max_lr=lr, epochs=num_epochs, steps_per_epoch=len(train_dataloader)) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch = {k: v.to(accelerator.device) for k, v in batch.items()} + inputs = (batch["image"] - mean) / std + outputs = model(inputs) + loss = torch.nn.functional.cross_entropy(outputs, batch["label"]) + accelerator.backward(loss) + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + accurate = 0 + num_elems = 0 + for _, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch = {k: v.to(accelerator.device) for k, v in batch.items()} + inputs = (batch["image"] - mean) / std + with torch.no_grad(): + outputs = model(inputs) + predictions = outputs.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["label"])) + accurate_preds = predictions == references + num_elems += accurate_preds.shape[0] + accurate += accurate_preds.long().sum() + + eval_metric = accurate.item() / num_elems + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}: {100 * eval_metric:.2f}") + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument("--data_dir", required=True, help="The data folder on disk.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument( + "--checkpointing_steps", + type=str, + default=None, + help="Whether the various states should be saved at the end of every n steps, or 'epoch' for each epoch.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + config = {"lr": 3e-2, "num_epochs": 3, "seed": 42, "batch_size": 64, "image_size": 224} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage1_config.json b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage1_config.json new file mode 100644 index 0000000..674420e --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage1_config.json @@ -0,0 +1,43 @@ +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 1, + "allgather_partitions": true, + "allgather_bucket_size": 2e8, + "overlap_comm": true, + "reduce_scatter": true, + "reduce_bucket_size": "auto", + "contiguous_gradients": true + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_config.json b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_config.json new file mode 100644 index 0000000..9597f84 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_config.json @@ -0,0 +1,43 @@ +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 2, + "allgather_partitions": true, + "allgather_bucket_size": 2e8, + "overlap_comm": true, + "reduce_scatter": true, + "reduce_bucket_size": "auto", + "contiguous_gradients": true + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_offload_config.json b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_offload_config.json new file mode 100644 index 0000000..98baede --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage2_offload_config.json @@ -0,0 +1,47 @@ +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 2, + "offload_optimizer": { + "device": "cpu", + "pin_memory": true + }, + "allgather_partitions": true, + "allgather_bucket_size": 2e8, + "overlap_comm": true, + "reduce_scatter": true, + "reduce_bucket_size": "auto", + "contiguous_gradients": true + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_config.json b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_config.json new file mode 100644 index 0000000..2ec6fff --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_config.json @@ -0,0 +1,44 @@ +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto" + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 3, + "overlap_comm": true, + "contiguous_gradients": true, + "reduce_bucket_size": "auto", + "stage3_prefetch_bucket_size": "auto", + "stage3_param_persistence_threshold": "auto", + "sub_group_size": 1e9, + "stage3_max_live_parameters": 1e9, + "stage3_max_reuse_distance": 1e9, + "stage3_gather_16bit_weights_on_model_save": "auto" + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_offload_config.json b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_offload_config.json new file mode 100644 index 0000000..edae8e6 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/deepspeed_config_templates/zero_stage3_offload_config.json @@ -0,0 +1,52 @@ +{ + "fp16": { + "enabled": true, + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto" + } + }, + "scheduler": { + "type": "WarmupDecayLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "total_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 3, + "offload_optimizer": { + "device": "cpu", + "pin_memory": true + }, + "offload_param": { + "device": "cpu", + "pin_memory": true + }, + "overlap_comm": true, + "contiguous_gradients": true, + "reduce_bucket_size": "auto", + "stage3_prefetch_bucket_size": "auto", + "stage3_param_persistence_threshold": "auto", + "sub_group_size": 1e9, + "stage3_max_live_parameters": 1e9, + "stage3_max_reuse_distance": 1e9, + "stage3_gather_16bit_weights_on_model_save": "auto" + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/examples/nlp_example.py b/v0.13.2/accelerate-0.13.2/examples/nlp_example.py new file mode 100644 index 0000000..a126b5d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/nlp_example.py @@ -0,0 +1,192 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +######################################################################## +# This is a fully working simple example to use Accelerate +# +# This example trains a Bert base model on GLUE MRPC +# in any of the following settings (with the same script): +# - single CPU or single GPU +# - multi GPUS (using PyTorch distributed mode) +# - (multi) TPUs +# - fp16 (mixed-precision) or fp32 (normal precision) +# +# To run it in each of these various modes, follow the instructions +# in the readme for examples: +# https://github.com/huggingface/accelerate/tree/main/examples +# +######################################################################## + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16): + """ + Creates a set of `DataLoader`s for the `glue` dataset, + using "bert-base-cased" as the tokenizer. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + """ + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + # starting with the main process first: + with accelerator.main_process_first(): + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +def training_function(config, args): + # Initialize accelerator + accelerator = Accelerator(cpu=args.cpu, mixed_precision=args.mixed_precision) + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + + metric = evaluate.load("glue", "mrpc") + + # If the batch size is too big we use gradient accumulation + gradient_accumulation_steps = 1 + if batch_size > MAX_GPU_BATCH_SIZE and accelerator.distributed_type != DistributedType.TPU: + gradient_accumulation_steps = batch_size // MAX_GPU_BATCH_SIZE + batch_size = MAX_GPU_BATCH_SIZE + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size) + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", return_dict=True) + + # We could avoid this line since the accelerator is set with `device_placement=True` (default value). + # Note that if you are placing tensors on devices manually, this line absolutely needs to be before the optimizer + # creation otherwise training will not work on TPU (`accelerate` will kindly throw an error to make us aware of that). + model = model.to(accelerator.device) + + # Instantiate optimizer + optimizer = AdamW(params=model.parameters(), lr=lr) + + # Instantiate scheduler + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=100, + num_training_steps=(len(train_dataloader) * num_epochs) // gradient_accumulation_steps, + ) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # Now we train the model + for epoch in range(num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + model.eval() + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"])) + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script.") + parser.add_argument( + "--mixed_precision", + type=str, + default="no", + choices=["no", "fp16", "bf16"], + help="Whether to use mixed precision. Choose" + "between fp16 and bf16 (bfloat16). Bf16 requires PyTorch >= 1.10." + "and an Nvidia Ampere GPU.", + ) + parser.add_argument("--cpu", action="store_true", help="If passed, will train on the CPU.") + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": 3, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/examples/requirements.txt b/v0.13.2/accelerate-0.13.2/examples/requirements.txt new file mode 100644 index 0000000..912986b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/examples/requirements.txt @@ -0,0 +1,3 @@ +accelerate # used to be installed in Amazon SageMaker environment +evaluate +datasets==2.3.2 \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_1.py b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_1.py new file mode 100644 index 0000000..81ec0c9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_1.py @@ -0,0 +1,108 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from manim import * + + +class Stage1(Scene): + def construct(self): + mem = Rectangle(height=0.5,width=0.5) + fill = Rectangle(height=0.46,width=0.46).set_stroke(width=0) + + cpu_left_col_base = [mem.copy() for i in range(6)] + cpu_right_col_base = [mem.copy() for i in range(6)] + cpu_left_col = VGroup(*cpu_left_col_base).arrange(UP, buff=0) + cpu_right_col = VGroup(*cpu_right_col_base).arrange(UP, buff=0) + cpu_rects = VGroup(cpu_left_col,cpu_right_col).arrange(RIGHT, buff=0) + cpu_text = Text("CPU", font_size=24) + cpu = Group(cpu_rects,cpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + cpu.move_to([-2.5,-.5,0]) + self.add(cpu) + + gpu_base = [mem.copy() for i in range(1)] + gpu_rect = VGroup(*gpu_base).arrange(UP,buff=0) + gpu_text = Text("GPU", font_size=24) + gpu = Group(gpu_rect,gpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + gpu.align_to(cpu, DOWN) + gpu.set_x(gpu.get_x() - 1) + + self.add(gpu) + + model_base = [mem.copy() for i in range(6)] + model_rect = VGroup(*model_base).arrange(RIGHT,buff=0) + + model_text = Text("Model", font_size=24) + model = Group(model_rect,model_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + model.move_to([3, -1., 0]) + + self.play( + Create(cpu_left_col, run_time=1), + Create(cpu_right_col, run_time=1), + Create(gpu_rect, run_time=1), + ) + + step_1 = MarkupText( + f"First, an empty model skeleton is loaded\ninto memory without using much RAM.", + font_size=24 + ) + + key = Square(side_length=2.2) + key.move_to([-5, 2, 0]) + + key_text = MarkupText( + f"Key:\n\n Empty Model", + font_size=18, + ) + + key_text.move_to([-5, 2.4, 0]) + + + step_1.move_to([2, 2, 0]) + self.play( + Write(step_1, run_time=2.5), + Write(key_text), + Write(key) + ) + + self.add(model) + + + cpu_targs = [] + first_animations = [] + second_animations = [] + for i,rect in enumerate(model_base): + + cpu_target = Rectangle(height=0.46,width=0.46).set_stroke(width=0.).set_fill(YELLOW, opacity=0.7) + cpu_target.move_to(rect) + cpu_target.generate_target() + cpu_target.target.height = 0.46/4 + cpu_target.target.width = 0.46/3 + + if i == 0: + cpu_target.target.next_to(cpu_left_col_base[0].get_corner(DOWN+LEFT), buff=0.02, direction=UP) + cpu_target.target.set_x(cpu_target.target.get_x()+0.1) + elif i == 3: + cpu_target.target.next_to(cpu_targs[0].target, direction=UP, buff=0.) + else: + cpu_target.target.next_to(cpu_targs[i-1].target, direction=RIGHT, buff=0.) + cpu_targs.append(cpu_target) + + first_animations.append(rect.animate(run_time=0.5).set_stroke(YELLOW)) + second_animations.append(MoveToTarget(cpu_target, run_time=1.5)) + + self.play(*first_animations) + self.play(*second_animations) + + + self.wait() \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_2.py b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_2.py new file mode 100644 index 0000000..a30e959 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_2.py @@ -0,0 +1,126 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from manim import * + +class Stage2(Scene): + def construct(self): + mem = Rectangle(height=0.5,width=0.5) + fill = Rectangle(height=0.46,width=0.46).set_stroke(width=0) + + cpu_left_col_base = [mem.copy() for i in range(6)] + cpu_right_col_base = [mem.copy() for i in range(6)] + cpu_left_col = VGroup(*cpu_left_col_base).arrange(UP, buff=0) + cpu_right_col = VGroup(*cpu_right_col_base).arrange(UP, buff=0) + cpu_rects = VGroup(cpu_left_col,cpu_right_col).arrange(RIGHT, buff=0) + cpu_text = Text("CPU", font_size=24) + cpu = Group(cpu_rects,cpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + cpu.move_to([-2.5,-.5,0]) + self.add(cpu) + + gpu_base = [mem.copy() for i in range(4)] + gpu_rect = VGroup(*gpu_base).arrange(UP,buff=0) + gpu_text = Text("GPU", font_size=24) + gpu = Group(gpu_rect,gpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + gpu.move_to([-1,-1,0]) + self.add(gpu) + + model_base = [mem.copy() for i in range(6)] + model_rect = VGroup(*model_base).arrange(RIGHT,buff=0) + + model_text = Text("Model", font_size=24) + model = Group(model_rect,model_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + model.move_to([3, -1., 0]) + self.add(model) + + cpu_targs = [] + for i,rect in enumerate(model_base): + rect.set_stroke(YELLOW) + # target = fill.copy().set_fill(YELLOW, opacity=0.7) + # target.move_to(rect) + # self.add(target) + + cpu_target = Rectangle(height=0.46/4,width=0.46/3).set_stroke(width=0.).set_fill(YELLOW, opacity=0.7) + + if i == 0: + cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN+LEFT), buff=0.02, direction=UP) + cpu_target.set_x(cpu_target.get_x()+0.1) + elif i == 3: + cpu_target.next_to(cpu_targs[0], direction=UP, buff=0.) + else: + cpu_target.next_to(cpu_targs[i-1], direction=RIGHT, buff=0.) + self.add(cpu_target) + cpu_targs.append(cpu_target) + + + + checkpoint_base = [mem.copy() for i in range(6)] + checkpoint_rect = VGroup(*checkpoint_base).arrange(RIGHT,buff=0) + + checkpoint_text = Text("Loaded Checkpoint", font_size=24) + checkpoint = Group(checkpoint_rect,checkpoint_text).arrange(DOWN, aligned_edge=DOWN, buff=0.4) + checkpoint.move_to([3, .5, 0]) + + key = Square(side_length=2.2) + key.move_to([-5, 2, 0]) + + key_text = MarkupText( + f"Key:\n\n Empty Model", + font_size=18, + ) + + key_text.move_to([-5, 2.4, 0]) + + self.add(key_text, key) + + blue_text = MarkupText( + f" Checkpoint", + font_size=18, + ) + + blue_text.next_to(key_text, DOWN*2.4, aligned_edge=key_text.get_left()) + + step_2 = MarkupText( + f'Next, a second model is loaded into memory,\nwith the weights of a single shard.', + font_size=24 + ) + step_2.move_to([2, 2, 0]) + self.play( + Write(step_2), + Write(blue_text) + ) + + self.play( + Write(checkpoint_text, run_time=1), + Create(checkpoint_rect, run_time=1) + ) + + first_animations = [] + second_animations = [] + for i,rect in enumerate(checkpoint_base): + target = fill.copy().set_fill(BLUE, opacity=0.7) + target.move_to(rect) + first_animations.append(GrowFromCenter(target, run_time=1)) + + cpu_target = target.copy() + cpu_target.generate_target() + if i < 5: + cpu_target.target.move_to(cpu_left_col_base[i+1]) + else: + cpu_target.target.move_to(cpu_right_col_base[i-5]) + second_animations.append(MoveToTarget(cpu_target, run_time=1.5)) + + self.play(*first_animations) + self.play(*second_animations) + self.wait() \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_3.py b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_3.py new file mode 100644 index 0000000..4ba20c4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_3.py @@ -0,0 +1,158 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from manim import * + +class Stage3(Scene): + def construct(self): + mem = Rectangle(height=0.5,width=0.5) + meta_mem = Rectangle(height=0.25,width=0.25) + fill = Rectangle(height=0.46,width=0.46).set_stroke(width=0) + + cpu_left_col_base = [mem.copy() for i in range(6)] + cpu_right_col_base = [mem.copy() for i in range(6)] + cpu_left_col = VGroup(*cpu_left_col_base).arrange(UP, buff=0) + cpu_right_col = VGroup(*cpu_right_col_base).arrange(UP, buff=0) + cpu_rects = VGroup(cpu_left_col,cpu_right_col).arrange(RIGHT, buff=0) + cpu_text = Text("CPU", font_size=24) + cpu = Group(cpu_rects,cpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + cpu.move_to([-2.5,-.5,0]) + self.add(cpu) + + gpu_base = [mem.copy() for i in range(4)] + gpu_rect = VGroup(*gpu_base).arrange(UP,buff=0) + gpu_text = Text("GPU", font_size=24) + gpu = Group(gpu_rect,gpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + gpu.move_to([-1,-1,0]) + self.add(gpu) + + model_base = [mem.copy() for i in range(6)] + model_rect = VGroup(*model_base).arrange(RIGHT,buff=0) + + model_text = Text("Model", font_size=24) + model = Group(model_rect,model_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + model.move_to([3, -1., 0]) + self.add(model) + + model_arr = [] + model_cpu_arr = [] + model_meta_arr = [] + + for i,rect in enumerate(model_base): + rect.set_stroke(YELLOW) + + cpu_target = Rectangle(height=0.46/4,width=0.46/3).set_stroke(width=0.).set_fill(YELLOW, opacity=0.7) + + if i == 0: + cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN+LEFT), buff=0.02, direction=UP) + cpu_target.set_x(cpu_target.get_x()+0.1) + elif i == 3: + cpu_target.next_to(model_cpu_arr[0], direction=UP, buff=0.) + else: + cpu_target.next_to(model_cpu_arr[i-1], direction=RIGHT, buff=0.) + self.add(cpu_target) + model_cpu_arr.append(cpu_target) + + self.add(*model_arr, *model_cpu_arr, *model_meta_arr) + + checkpoint_base = [mem.copy() for i in range(6)] + checkpoint_rect = VGroup(*checkpoint_base).arrange(RIGHT,buff=0) + + checkpoint_text = Text("Loaded Checkpoint", font_size=24) + checkpoint = Group(checkpoint_rect,checkpoint_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + checkpoint.move_to([3, .5, 0]) + + self.add(checkpoint) + + ckpt_arr = [] + ckpt_cpu_arr = [] + + for i,rect in enumerate(checkpoint_base): + target = fill.copy().set_fill(BLUE, opacity=0.7) + target.move_to(rect) + ckpt_arr.append(target) + + cpu_target = target.copy() + if i < 5: + cpu_target.move_to(cpu_left_col_base[i+1]) + else: + cpu_target.move_to(cpu_right_col_base[i-5]) + ckpt_cpu_arr.append(cpu_target) + self.add(*ckpt_arr, *ckpt_cpu_arr) + + key = Square(side_length=2.2) + key.move_to([-5, 2, 0]) + + key_text = MarkupText( + f"Key:\n\n Empty Model", + font_size=18, + ) + + key_text.move_to([-5, 2.4, 0]) + + self.add(key_text, key) + + blue_text = MarkupText( + f" Checkpoint", + font_size=18, + ) + + blue_text.next_to(key_text, DOWN*2.4, aligned_edge=key_text.get_left()) + self.add(blue_text) + + step_3 = MarkupText( + f'Based on the passed in configuration, weights are stored in\na variety of np.memmaps on disk or to a particular device.', + font_size=24 + ) + step_3.move_to([2, 2, 0]) + + disk_left_col_base = [meta_mem.copy() for i in range(6)] + disk_right_col_base = [meta_mem.copy() for i in range(6)] + disk_left_col = VGroup(*disk_left_col_base).arrange(UP, buff=0) + disk_right_col = VGroup(*disk_right_col_base).arrange(UP, buff=0) + disk_rects = VGroup(disk_left_col,disk_right_col).arrange(RIGHT, buff=0) + disk_text = Text("Disk", font_size=24) + disk = Group(disk_rects,disk_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + disk.move_to([-4.,-1.25,0]) + self.play( + Write(step_3, run_time=3), + Write(disk_text, run_time=1), + Create(disk_rects, run_time=1) + ) + + animations = [] + for i,rect in enumerate(ckpt_cpu_arr): + target = rect.copy() + target.generate_target() + target.target.move_to(disk_left_col_base[i]).scale(0.5) + animations.append(MoveToTarget(target, run_time=1.5)) + self.play(*animations) + + self.play(FadeOut(step_3)) + + step_4 = MarkupText( + f'Then, the checkpoint is removed from memory\nthrough garbage collection.', + font_size=24 + ) + step_4.move_to([2, 2, 0]) + + self.play( + Write(step_4, run_time=3) + ) + + self.play( + FadeOut(checkpoint_rect, checkpoint_text, *ckpt_arr, *ckpt_cpu_arr), + ) + + self.wait() \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_4.py b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_4.py new file mode 100644 index 0000000..3a79ad9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_4.py @@ -0,0 +1,156 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from manim import * + +class Stage4(Scene): + def construct(self): + mem = Rectangle(height=0.5,width=0.5) + fill = Rectangle(height=0.46,width=0.46).set_stroke(width=0) + meta_mem = Rectangle(height=0.25,width=0.25) + + cpu_left_col_base = [mem.copy() for i in range(6)] + cpu_right_col_base = [mem.copy() for i in range(6)] + cpu_left_col = VGroup(*cpu_left_col_base).arrange(UP, buff=0) + cpu_right_col = VGroup(*cpu_right_col_base).arrange(UP, buff=0) + cpu_rects = VGroup(cpu_left_col,cpu_right_col).arrange(RIGHT, buff=0) + cpu_text = Text("CPU", font_size=24) + cpu = Group(cpu_rects,cpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + cpu.move_to([-2.5,-.5,0]) + self.add(cpu) + + gpu_base = [mem.copy() for i in range(4)] + gpu_rect = VGroup(*gpu_base).arrange(UP,buff=0) + gpu_text = Text("GPU", font_size=24) + gpu = Group(gpu_rect,gpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + gpu.move_to([-1,-1,0]) + self.add(gpu) + + model_base = [mem.copy() for i in range(6)] + model_rect = VGroup(*model_base).arrange(RIGHT,buff=0) + + model_text = Text("Model", font_size=24) + model = Group(model_rect,model_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + model.move_to([3, -1., 0]) + self.add(model) + + model_cpu_arr = [] + model_meta_arr = [] + + for i,rect in enumerate(model_base): + rect.set_stroke(YELLOW) + + cpu_target = Rectangle(height=0.46/4,width=0.46/3).set_stroke(width=0.).set_fill(YELLOW, opacity=0.7) + + if i == 0: + cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN+LEFT), buff=0.02, direction=UP) + cpu_target.set_x(cpu_target.get_x()+0.1) + elif i == 3: + cpu_target.next_to(model_cpu_arr[0], direction=UP, buff=0.) + else: + cpu_target.next_to(model_cpu_arr[i-1], direction=RIGHT, buff=0.) + self.add(cpu_target) + model_cpu_arr.append(cpu_target) + + self.add(*model_cpu_arr, *model_meta_arr) + + disk_left_col_base = [meta_mem.copy() for i in range(6)] + disk_right_col_base = [meta_mem.copy() for i in range(6)] + disk_left_col = VGroup(*disk_left_col_base).arrange(UP, buff=0) + disk_right_col = VGroup(*disk_right_col_base).arrange(UP, buff=0) + disk_rects = VGroup(disk_left_col,disk_right_col).arrange(RIGHT, buff=0) + disk_text = Text("Disk", font_size=24) + disk = Group(disk_rects,disk_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + disk.move_to([-4.,-1.25,0]) + self.add(disk_text, disk_rects) + + cpu_disk_arr = [] + + for i in range(6): + target = fill.copy().set_fill(BLUE, opacity=0.8) + target.move_to(disk_left_col_base[i]).scale(0.5) + cpu_disk_arr.append(target) + + self.add(*cpu_disk_arr) + + key = Square(side_length=2.2) + key.move_to([-5, 2, 0]) + + key_text = MarkupText( + f"Key:\n\n Empty Model", + font_size=18, + ) + + key_text.move_to([-5, 2.4, 0]) + + self.add(key_text, key) + + blue_text = MarkupText( + f" Checkpoint", + font_size=18, + ) + + blue_text.next_to(key_text, DOWN*2.4, aligned_edge=key_text.get_left()) + self.add(blue_text) + + step_5 = MarkupText( + f'The offloaded weights are all sent to the CPU.', + font_size=24 + ) + step_5.move_to([2, 2, 0]) + + self.play(Write(step_5, run_time=3)) + + for i in range(6): + rect = cpu_disk_arr[i] + cp2 = rect.copy().set_fill(BLUE, opacity=0.8).scale(2.0) + cp2.generate_target() + cp2.target.move_to(model_base[i]) + + if i == 0: + rect.set_fill(BLUE, opacity=0.8) + rect.generate_target() + rect.target.move_to(cpu_left_col_base[0]).scale(2.0) + + self.remove(*model_meta_arr, + *model_cpu_arr, + ) + + else: + rect.generate_target() + rect.target.move_to(cpu_left_col_base[i]).scale(2.0) + self.play( + MoveToTarget(rect), + MoveToTarget(cp2), + model_base[i].animate.set_stroke(WHITE) + ) + self.play(FadeOut(step_5)) + + step_5 = MarkupText( + f'Finally, hooks are added to each weight in the model\nto transfer the weights from CPU to GPU\n\t\tand back when needed.', + font_size=24 + ) + step_5.move_to([2, 2, 0]) + + self.play(Write(step_5, run_time=3)) + + arrows = [] + animations = [] + for i in range(6): + a = Arrow(start=UP, end=DOWN, color=RED, buff=.5) + a.next_to(model_base[i].get_left(), UP, buff=0.2) + arrows.append(a) + animations.append(Write(a)) + self.play(*animations) + self.wait() \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_5.py b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_5.py new file mode 100644 index 0000000..8b2ff33 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/manim_animations/big_model_inference/stage_5.py @@ -0,0 +1,221 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from manim import * + +class Stage5(Scene): + def construct(self): + mem = Rectangle(height=0.5,width=0.5) + fill = Rectangle(height=0.46,width=0.46).set_stroke(width=0) + + meta_mem = Rectangle(height=0.25,width=0.25) + + cpu_left_col_base = [mem.copy() for i in range(6)] + cpu_right_col_base = [mem.copy() for i in range(6)] + cpu_left_col = VGroup(*cpu_left_col_base).arrange(UP, buff=0) + cpu_right_col = VGroup(*cpu_right_col_base).arrange(UP, buff=0) + cpu_rects = VGroup(cpu_left_col,cpu_right_col).arrange(RIGHT, buff=0) + cpu_text = Text("CPU", font_size=24) + cpu = Group(cpu_rects,cpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + cpu.move_to([-2.5,-.5,0]) + self.add(cpu) + + gpu_base = [mem.copy() for i in range(4)] + gpu_rect = VGroup(*gpu_base).arrange(UP,buff=0) + gpu_text = Text("GPU", font_size=24) + gpu = Group(gpu_rect,gpu_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + gpu.move_to([-1,-1,0]) + self.add(gpu) + + model_base = [mem.copy() for i in range(6)] + model_rect = VGroup(*model_base).arrange(RIGHT,buff=0) + + model_text = Text("Model", font_size=24) + model = Group(model_rect,model_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + model.move_to([3, -1., 0]) + self.add(model) + + model_arr = [] + model_cpu_arr = [] + + for i,rect in enumerate(model_base): + target = fill.copy().set_fill(BLUE, opacity=0.8) + target.move_to(rect) + model_arr.append(target) + + cpu_target = Rectangle(height=0.46,width=0.46).set_stroke(width=0.).set_fill(BLUE, opacity=0.8) + cpu_target.move_to(cpu_left_col_base[i]) + model_cpu_arr.append(cpu_target) + + self.add(*model_arr, *model_cpu_arr) + + disk_left_col_base = [meta_mem.copy() for i in range(6)] + disk_right_col_base = [meta_mem.copy() for i in range(6)] + disk_left_col = VGroup(*disk_left_col_base).arrange(UP, buff=0) + disk_right_col = VGroup(*disk_right_col_base).arrange(UP, buff=0) + disk_rects = VGroup(disk_left_col,disk_right_col).arrange(RIGHT, buff=0) + disk_text = Text("Disk", font_size=24) + disk = Group(disk_rects,disk_text).arrange(DOWN, buff=0.5, aligned_edge=DOWN) + disk.move_to([-4,-1.25,0]) + self.add(disk_text, disk_rects) + + key = Square(side_length=2.2) + key.move_to([-5, 2, 0]) + + key_text = MarkupText( + f"Key:\n\n Empty Model", + font_size=18, + ) + + key_text.move_to([-5, 2.4, 0]) + + self.add(key_text, key) + + blue_text = MarkupText( + f" Checkpoint", + font_size=18, + ) + + blue_text.next_to(key_text, DOWN*2.4, aligned_edge=key_text.get_left()) + self.add(blue_text) + + step_6 = MarkupText( + f'Now watch as an input is passed through the model\nand how the memory is utilized and handled.', + font_size=24 + ) + step_6.move_to([2, 2, 0]) + + self.play(Write(step_6)) + + input = Square(0.3) + input.set_fill(RED, opacity=1.) + input.set_stroke(width=0.) + input.next_to(model_base[0], LEFT, buff=.5) + + self.play(Write(input)) + + input.generate_target() + input.target.next_to(model_arr[0], direction=LEFT, buff=0.02) + self.play(MoveToTarget(input)) + + self.play(FadeOut(step_6)) + + + a = Arrow(start=UP, end=DOWN, color=RED, buff=.5) + a.next_to(model_arr[0].get_left(), UP, buff=0.2) + + model_cpu_arr[0].generate_target() + model_cpu_arr[0].target.move_to(gpu_rect[0]) + + step_7 = MarkupText( + f'As the input reaches a layer, the hook triggers\nand weights are moved from the CPU\nto the GPU and back.', + font_size=24 + ) + step_7.move_to([2, 2, 0]) + + self.play(Write(step_7, run_time=3)) + + circ_kwargs = {"run_time":1, "fade_in":True, "fade_out":True, "buff":0.02} + + self.play( + Write(a), + Circumscribe(model_arr[0], color=ORANGE, **circ_kwargs), + Circumscribe(model_cpu_arr[0], color=ORANGE, **circ_kwargs), + Circumscribe(gpu_rect[0], color=ORANGE, **circ_kwargs), + ) + self.play( + MoveToTarget(model_cpu_arr[0]) + ) + + a_c = a.copy() + for i in range(6): + a_c.next_to(model_arr[i].get_right()+0.02, UP, buff=0.2) + + input.generate_target() + input.target.move_to(model_arr[i].get_right()+0.02) + + grp = AnimationGroup( + FadeOut(a, run_time=.5), + MoveToTarget(input, run_time=.5), + FadeIn(a_c, run_time=.5), + lag_ratio=0.2 + ) + + self.play(grp) + + + model_cpu_arr[i].generate_target() + model_cpu_arr[i].target.move_to(cpu_left_col_base[i]) + + + if i < 5: + model_cpu_arr[i+1].generate_target() + model_cpu_arr[i+1].target.move_to(gpu_rect[0]) + if i >= 1: + circ_kwargs["run_time"] = .7 + + self.play( + Circumscribe(model_arr[i], **circ_kwargs), + Circumscribe(cpu_left_col_base[i], **circ_kwargs), + Circumscribe(cpu_left_col_base[i+1], color=ORANGE, **circ_kwargs), + Circumscribe(gpu_rect[0], color=ORANGE, **circ_kwargs), + Circumscribe(model_arr[i+1], color=ORANGE, **circ_kwargs), + ) + if i < 1: + self.play( + MoveToTarget(model_cpu_arr[i]), + MoveToTarget(model_cpu_arr[i+1]), + ) + else: + self.play( + MoveToTarget(model_cpu_arr[i], run_time=.7), + MoveToTarget(model_cpu_arr[i+1], run_time=.7), + ) + else: + model_cpu_arr[i].generate_target() + model_cpu_arr[i].target.move_to(cpu_left_col_base[-1]) + input.generate_target() + input.target.next_to(model_arr[-1].get_right(), RIGHT+0.02, buff=0.2) + + self.play( + Circumscribe(model_arr[-1], color=ORANGE, **circ_kwargs), + Circumscribe(cpu_left_col_base[-1], color=ORANGE, **circ_kwargs), + Circumscribe(gpu_rect[0], color=ORANGE, **circ_kwargs), + ) + + self.play( + MoveToTarget(model_cpu_arr[i]) + ) + + a = a_c + a_c = a_c.copy() + + input.generate_target() + input.target.next_to(model_base[-1], RIGHT+0.02, buff=.5) + self.play( + FadeOut(step_7), + FadeOut(a, run_time=.5), + ) + + step_8 = MarkupText( + f'Inference on a model too large for GPU memory\nis successfully completed.', font_size=24 + ) + step_8.move_to([2, 2, 0]) + + self.play( + Write(step_8, run_time=3), + MoveToTarget(input) + ) + + self.wait() \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/pyproject.toml b/v0.13.2/accelerate-0.13.2/pyproject.toml new file mode 100644 index 0000000..b7465bb --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/pyproject.toml @@ -0,0 +1,3 @@ +[tool.black] +line-length = 119 +target-version = ['py36'] diff --git a/v0.13.2/accelerate-0.13.2/setup.cfg b/v0.13.2/accelerate-0.13.2/setup.cfg new file mode 100644 index 0000000..37cf347 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/setup.cfg @@ -0,0 +1,19 @@ +[isort] +default_section = FIRSTPARTY +ensure_newline_before_comments = True +force_grid_wrap = 0 +include_trailing_comma = True +known_first_party = accelerate +known_third_party = + numpy + torch + torch_xla + +line_length = 119 +lines_after_imports = 2 +multi_line_output = 3 +use_parentheses = True + +[flake8] +ignore = E203, E722, E501, E741, W503, W605 +max-line-length = 119 diff --git a/v0.13.2/accelerate-0.13.2/setup.py b/v0.13.2/accelerate-0.13.2/setup.py new file mode 100644 index 0000000..4256405 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/setup.py @@ -0,0 +1,87 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from setuptools import setup +from setuptools import find_packages + +extras = {} +extras["quality"] = ["black ~= 22.0", "isort >= 5.5.4", "flake8 >= 3.8.3", "hf-doc-builder >= 0.3.0"] +extras["docs"] = [] +extras["test_prod"] = ["pytest", "pytest-xdist", "pytest-subtests", "parameterized"] +extras["test_dev"] = ["datasets", "evaluate", "transformers", "scipy", "sklearn", "deepspeed<0.7.0", "tqdm"] +extras["testing"] = extras["test_prod"] + extras["test_dev"] +extras["rich"] = ["rich"] + +extras["test_trackers"] = ["wandb", "comet-ml", "tensorboard"] +extras["dev"] = extras["quality"] + extras["testing"] + extras["rich"] + +extras["sagemaker"] = [ + "sagemaker", # boto3 is a required package in sagemaker +] + +setup( + name="accelerate", + version="0.13.2", + description="Accelerate", + # long_description=open("README.md", "r", encoding="utf-8").read(), + long_description_content_type="text/markdown", + keywords="deep learning", + license="Apache", + author="The HuggingFace team", + author_email="sylvain@huggingface.co", + url="https://github.com/huggingface/accelerate", + package_dir={"": "src"}, + packages=find_packages("src"), + entry_points={ + "console_scripts": [ + "accelerate=accelerate.commands.accelerate_cli:main", + "accelerate-config=accelerate.commands.config:main", + "accelerate-launch=accelerate.commands.launch:main", + ] + }, + python_requires=">=3.7.0", + install_requires=["numpy>=1.17", "packaging>=20.0", "psutil", "pyyaml", "torch>=1.4.0"], + extras_require=extras, + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + ], +) + +# Release checklist +# 1. Change the version in __init__.py and setup.py. +# 2. Commit these changes with the message: "Release: VERSION" +# 3. Add a tag in git to mark the release: "git tag VERSION -m 'Adds tag VERSION for pypi' " +# Push the tag to git: git push --tags origin main +# 4. Run the following commands in the top-level directory: +# python setup.py bdist_wheel +# python setup.py sdist +# 5. Upload the package to the pypi test server first: +# twine upload dist/* -r pypitest +# twine upload dist/* -r pypitest --repository-url=https://test.pypi.org/legacy/ +# 6. Check that you can install it in a virtualenv by running: +# pip install -i https://testpypi.python.org/pypi accelerate +# accelerate env +# accelerate test +# 7. Upload the final version to actual pypi: +# twine upload dist/* -r pypi +# 8. Add release notes to the tag in github once everything is looking hunky-dory. +# 9. Update the version in __init__.py, setup.py to the new version "-dev" and push to master diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/__init__.py new file mode 100644 index 0000000..92c8351 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/__init__.py @@ -0,0 +1,26 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +__version__ = "0.13.2" + +from .accelerator import Accelerator +from .big_modeling import cpu_offload, disk_offload, dispatch_model, init_empty_weights, load_checkpoint_and_dispatch +from .launchers import debug_launcher, notebook_launcher +from .utils import ( + DeepSpeedPlugin, + DistributedDataParallelKwargs, + DistributedType, + FullyShardedDataParallelPlugin, + GradScalerKwargs, + InitProcessGroupKwargs, + find_executable_batch_size, + infer_auto_device_map, + is_rich_available, + load_checkpoint_in_model, + synchronize_rng_states, +) + + +if is_rich_available(): + from .utils import rich diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/accelerator.py b/v0.13.2/accelerate-0.13.2/src/accelerate/accelerator.py new file mode 100644 index 0000000..2b65589 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/accelerator.py @@ -0,0 +1,1547 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import contextlib +import gc +import math +import os +import sys +import warnings +from contextlib import contextmanager +from functools import wraps +from typing import List, Optional, Union + +import torch + +from .checkpointing import load_accelerator_state, load_custom_state, save_accelerator_state, save_custom_state +from .data_loader import prepare_data_loader +from .logging import get_logger +from .optimizer import AcceleratedOptimizer +from .scheduler import AcceleratedScheduler +from .state import AcceleratorState, GradientState, parse_flag_from_env +from .tracking import LOGGER_TYPE_TO_CLASS, GeneralTracker, filter_trackers +from .utils import ( + MODEL_NAME, + DeepSpeedPlugin, + DistributedDataParallelKwargs, + DistributedType, + FullyShardedDataParallelPlugin, + GradScalerKwargs, + InitProcessGroupKwargs, + KwargsHandler, + LoggerType, + PrecisionType, + RNGType, + compare_versions, + convert_outputs_to_fp32, + extract_model_from_parallel, + gather, + get_pretty_name, + is_bf16_available, + is_deepspeed_available, + is_torch_version, + is_tpu_available, + pad_across_processes, + recursively_apply, + reduce, + save, + wait_for_everyone, +) + + +if is_deepspeed_available(): + import deepspeed + + from .utils import ( + DeepSpeedEngineWrapper, + DeepSpeedOptimizerWrapper, + DeepSpeedSchedulerWrapper, + DummyOptim, + DummyScheduler, + ) + +if is_tpu_available(check_device=False): + import torch_xla.distributed.xla_multiprocessing as xmp + +logger = get_logger(__name__) + + +class Accelerator: + """ + Creates an instance of an accelerator for distributed training (on multi-GPU, TPU) or mixed precision training. + + Args: + device_placement (`bool`, *optional*, defaults to `True`): + Whether or not the accelerator should put objects on device (tensors yielded by the dataloader, model, + etc...). + split_batches (`bool`, *optional*, defaults to `False`): + Whether or not the accelerator should split the batches yielded by the dataloaders across the devices. If + `True` the actual batch size used will be the same on any kind of distributed processes, but it must be a + round multiple of the `num_processes` you are using. If `False`, actual batch size used will be the one set + in your script multiplied by the number of processes. + mixed_precision (`str`, *optional*): + Whether or not to use mixed precision training (fp16 or bfloat16). Choose from 'no','fp16','bf16'. Will + default to the value in the environment variable `MIXED_PRECISION`, which will use the default value in the + accelerate config of the current system or the flag passed with the `accelerate.launch` command. 'fp16' + requires pytorch 1.6 or higher. 'bf16' requires pytorch 1.10 or higher. + gradient_accumulation_steps (`int`, *optional*, default to 1): + The number of steps that should pass before gradients are accumulated. A number > 1 should be combined with + `Accelerator.accumulate`. + cpu (`bool`, *optional*): + Whether or not to force the script to execute on CPU. Will ignore GPU available if set to `True` and force + the execution on one process only. + deepspeed_plugin (`DeepSpeedPlugin`, *optional*): + Tweak your DeepSpeed related args using this argument. This argument is optional and can be configured + directly using *accelerate config* + fsdp_plugin (`FullyShardedDataParallelPlugin`, *optional*): + Tweak your FSDP related args using this argument. This argument is optional and can be configured directly + using *accelerate config* + rng_types (list of `str` or [`~utils.RNGType`]): + The list of random number generators to synchronize at the beginning of each iteration in your prepared + dataloaders. Should be one or several of: + + - `"torch"`: the base torch random number generator + - `"cuda"`: the CUDA random number generator (GPU only) + - `"xla"`: the XLA random number generator (TPU only) + - `"generator"`: the `torch.Generator` of the sampler (or batch sampler if there is no sampler in your + dataloader) or of the iterable dataset (if it exists) if the underlying dataset is of that type. + + Will default to `["torch"]` for PyTorch versions <=1.5.1 and `["generator"]` for PyTorch versions >= 1.6. + log_with (list of `str`, [`~utils.LoggerType`] or [`~tracking.GeneralTracker`], *optional*): + A list of loggers to be setup for experiment tracking. Should be one or several of: + + - `"all"` + - `"tensorboard"` + - `"wandb"` + - `"comet_ml"` + If `"all"` is selected, will pick up all available trackers in the environment and initialize them. Can + also accept implementations of `GeneralTracker` for custom trackers, and can be combined with `"all"`. + logging_dir (`str`, `os.PathLike`, *optional*): + A path to a directory for storing logs of locally-compatible loggers. + dispatch_batches (`bool`, *optional*): + If set to `True`, the dataloader prepared by the Accelerator is only iterated through on the main process + and then the batches are split and broadcast to each process. Will default to `True` for `DataLoader` whose + underlying dataset is an `IterableDataset`, `False` otherwise. + step_scheduler_with_optimizer (`bool`, *optional`, defaults to `True`): + Set `True` if the learning rate scheduler is stepped at the same time as the optimizer, `False` if only + done under certain circumstances (at the end of each epoch, for instance). + kwargs_handlers (`List[KwargHandler]`, *optional*) + A list of `KwargHandler` to customize how the objects related to distributed training or mixed precision + are created. See [kwargs](kwargs) for more information. + + **Available attributes:** + + - **device** (`torch.device`) -- The device to use. + - **distributed_type** ([`~utils.DistributedType`]) -- The distributed training configuration. + - **local_process_index** (`int`) -- The process index on the current machine. + - **mixed_precision** (`str`) -- The configured mixed precision mode. + - **num_processes** (`int`) -- The total number of processes used for training. + - **optimizer_step_was_skipped** (`bool`) -- Whether or not the optimizer update was skipped (because of + gradient overflow in mixed precision), in which + case the learning rate should not be changed. + - **process_index** (`int`) -- The overall index of the current process among all processes. + - **state** ([`~state.AcceleratorState`]) -- The distributed setup state. + - **sync_gradients** (`bool`) -- Whether the gradients are currently being synced across all processes. + - **use_distributed** (`bool`) -- Whether the current configuration is for distributed training. + """ + + def __init__( + self, + device_placement: bool = True, + split_batches: bool = False, + fp16: bool = None, + mixed_precision: Union[PrecisionType, str] = None, + gradient_accumulation_steps: int = 1, + cpu: bool = False, + deepspeed_plugin: DeepSpeedPlugin = None, + fsdp_plugin: FullyShardedDataParallelPlugin = None, + rng_types: Optional[List[Union[str, RNGType]]] = None, + log_with: Optional[List[Union[str, LoggerType, GeneralTracker]]] = None, + logging_dir: Optional[Union[str, os.PathLike]] = None, + dispatch_batches: Optional[bool] = None, + step_scheduler_with_optimizer: bool = True, + kwargs_handlers: Optional[List[KwargsHandler]] = None, + ): + self.logging_dir = logging_dir + trackers = filter_trackers(log_with, self.logging_dir) + if len(trackers) < 1 and log_with is not None: + warnings.warn(f"`log_with={log_with}` was passed but no supported trackers are currently installed.") + self.log_with = trackers + + if mixed_precision is not None: + mixed_precision = str(mixed_precision) + if mixed_precision not in PrecisionType: + raise ValueError( + f"Unknown mixed_precision mode: {mixed_precision}. Choose between {PrecisionType.list()}" + ) + + if fp16: + warnings.warn('fp16=True is deprecated. Use mixed_precision="fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + if deepspeed_plugin is None: # init from env variables + deepspeed_plugin = DeepSpeedPlugin() if os.environ.get("USE_DEEPSPEED", "false") == "true" else None + else: + assert isinstance( + deepspeed_plugin, DeepSpeedPlugin + ), "`deepspeed_plugin` must be a DeepSpeedPlugin object." + os.environ["USE_DEEPSPEED"] = "true" # use DeepSpeed if plugin is provided + if deepspeed_plugin: + if not is_deepspeed_available(): + raise ImportError("DeepSpeed is not installed => run `pip install deepspeed` or build it from source.") + if compare_versions("deepspeed", "<", "0.6.5"): + raise ImportError("DeepSpeed version must be >= 0.6.5. Please update DeepSpeed.") + + mixed_precision = os.environ.get("MIXED_PRECISION", "no") if mixed_precision is None else mixed_precision + deepspeed_plugin.set_mixed_precision(mixed_precision) + deepspeed_plugin.set_deepspeed_weakref() + + if os.environ.get("USE_FSDP", "false") == "true" or isinstance(fsdp_plugin, FullyShardedDataParallelPlugin): + if is_torch_version("<", "1.12.0"): + raise ValueError("FSDP requires PyTorch >= 1.12.0") + + if fsdp_plugin is None: # init from env variables + fsdp_plugin = FullyShardedDataParallelPlugin() if os.environ.get("USE_FSDP", "false") == "true" else None + else: + if not isinstance(fsdp_plugin, FullyShardedDataParallelPlugin): + raise TypeError("`fsdp_plugin` must be a FullyShardedDataParallelPlugin object.") + os.environ["USE_FSDP"] = "true" # use FSDP if plugin is provided + + # Kwargs handlers + self.ddp_handler = None + self.scaler_handler = None + self.init_handler = None + if kwargs_handlers is not None: + for handler in kwargs_handlers: + assert isinstance(handler, KwargsHandler), f"Unsupported kwargs handler passed: {handler}." + if isinstance(handler, DistributedDataParallelKwargs): + if self.ddp_handler is not None: + raise ValueError("You can only pass one `DistributedDataParallelKwargs` in `kwargs_handler`.") + else: + self.ddp_handler = handler + elif isinstance(handler, GradScalerKwargs): + if self.scaler_handler is not None: + raise ValueError("You can only pass one `GradScalerKwargs` in `kwargs_handler`.") + else: + self.scaler_handler = handler + elif isinstance(handler, InitProcessGroupKwargs): + if self.init_handler is not None: + raise ValueError("You can only pass one `InitProcessGroupKwargs` in `kwargs_handler`.") + else: + self.init_handler = handler + + kwargs = self.init_handler.to_kwargs() if self.init_handler is not None else {} + self.state = AcceleratorState( + mixed_precision=mixed_precision, + cpu=cpu, + deepspeed_plugin=deepspeed_plugin, + fsdp_plugin=fsdp_plugin, + _from_accelerator=True, + **kwargs, + ) + + if ( + (mixed_precision != "bf16") + and getattr(self.state, "downcast_bfloat", False) + and (self.state.distributedType != DistributedType.TPU) + ): + raise ValueError("Can only use `downcast_bf16` when using `mixed_precision='bf16'` and on a TPU") + + if gradient_accumulation_steps > 1: + if self.state.distributed_type == DistributedType.TPU: + raise NotImplementedError( + "Gradient accumulation on TPU is not supported. Pass in `gradient_accumulation_steps=1`" + ) + + self.gradient_accumulation_steps = gradient_accumulation_steps + self.device_placement = device_placement + self.split_batches = split_batches + self.dispatch_batches = dispatch_batches + if dispatch_batches is True and is_torch_version("<", "1.8.0"): + raise ImportError( + "Using `DataLoaderDispatcher` requires PyTorch 1.8.0 minimum. You have {torch.__version__}." + ) + self.step_scheduler_with_optimizer = step_scheduler_with_optimizer + + # Mixed precision attributes + self.scaler = None + self.native_amp = False + err = "{mode} mixed precision requires {requirement}" + if self.state.mixed_precision == "fp16": + self.native_amp = True + if not torch.cuda.is_available() and not parse_flag_from_env("USE_MPS_DEVICE"): + raise ValueError(err.format(mode="fp16", requirement="a GPU")) + kwargs = self.scaler_handler.to_kwargs() if self.scaler_handler is not None else {} + if self.distributed_type == DistributedType.FSDP: + from torch.distributed.fsdp.sharded_grad_scaler import ShardedGradScaler + + self.scaler = ShardedGradScaler(**kwargs) + else: + self.scaler = torch.cuda.amp.GradScaler(**kwargs) + elif self.state.mixed_precision == "bf16" and self.distributed_type != DistributedType.FSDP: + self.native_amp = is_bf16_available(True) + if mixed_precision == "bf16" and not self.native_amp and not is_tpu_available(): + raise ValueError(err.format(mode="bf16", requirement="PyTorch >= 1.10 and a supported device.")) + + # Only on the GPU do we care about scaling the gradients + if torch.cuda.is_available() and self.device.type != "cpu": + kwargs = self.scaler_handler.to_kwargs() if self.scaler_handler is not None else {} + self.scaler = torch.cuda.amp.GradScaler(**kwargs) + + # Start of internal step tracking + self.step = 0 + self.gradient_state = GradientState() + + # Internal references to the training objects + self._optimizers = [] + self._models = [] + self._schedulers = [] + self._custom_objects = [] + + # RNG Types + self.rng_types = rng_types + if self.rng_types is None: + self.rng_types = ["generator"] + + @property + def use_distributed(self): + """ + Whether the Accelerator is configured for distributed training + """ + return self.distributed_type != DistributedType.NO and self.num_processes > 1 + + @property + def distributed_type(self): + return self.state.distributed_type + + @property + def num_processes(self): + return self.state.num_processes + + @property + def process_index(self): + return self.state.process_index + + @property + def local_process_index(self): + return self.state.local_process_index + + @property + def device(self): + return self.state.device + + @property + def is_main_process(self): + """True for one process only.""" + return self.process_index == 0 + + @property + def is_local_main_process(self): + """True for one process per server.""" + return self.local_process_index == 0 + + @property + def use_fp16(self): + return self.mixed_precision != "no" + + @property + def mixed_precision(self): + if self.distributed_type == DistributedType.DEEPSPEED: + config = self.state.deepspeed_plugin.deepspeed_config + if config.get("fp16", {}).get("enabled", False): + mixed_precision = "fp16" + elif config.get("bf16", {}).get("enabled", False): + mixed_precision = "bf16" + else: + mixed_precision = "no" + else: + mixed_precision = self.state.mixed_precision + return mixed_precision + + def on_main_process(func): + """ + A decorator that will run the decorated function on the main process only. + """ + + @wraps(func) + def wrapper(self, *args, **kwargs): + if self.is_main_process or not self.use_distributed: + return func(self, *args, **kwargs) + + return wrapper + + def on_local_main_process(func): + """ + A decorator that will run the decorated function on the local main process only. + """ + + @wraps(func) + def wrapper(self, *args, **kwargs): + if self.is_local_main_process or not self.use_distributed: + return func(self, *args, **kwargs) + + return wrapper + + def on_process(process_idx): + """ + A decorator that will run the decorated function on a given process index only. + """ + + def decorator(func): + @wraps(func) + def wrapper(self, *args, **kwargs): + if self.process_idx == process_idx or not self.use_distributed: + return func(self, *args, **kwargs) + + return wrapper + + return decorator + + def on_local_process(local_process_idx): + """ + A decorator that will run the decorated function on a given local process index only. + """ + + def decorator(func): + @wraps(func) + def wrapper(self, *args, **kwargs): + if self.local_process_idx == local_process_idx or not self.use_distributed: + return func(self, *args, **kwargs) + + return wrapper + + return decorator + + def _goes_first(self, is_main): + if not is_main: + self.wait_for_everyone() + + yield + + if is_main: + self.wait_for_everyone() + + @contextmanager + def main_process_first(self): + """ + Lets the main process go first inside a with block. + + The other processes will enter the with block after the main process exits. + """ + yield from self._goes_first(self.is_main_process) + + @contextmanager + def local_main_process_first(self): + """ + Lets the local main process go inside a with block. + + The other processes will enter the with block after the main process exits. + """ + yield from self._goes_first(self.is_local_main_process) + + @contextmanager + def no_sync(self, model): + """ + A context manager to disable gradient synchronizations across DDP processes by calling + `torch.nn.parallel.DistributedDataParallel.no_sync`. + + If `model` is not in DDP, this context manager does nothing + + Args: + model (`torch.nn.Module`): + PyTorch Module that was prepared with `Accelerator.prepare` + + Example: + + ```python + >>> from accelerate import Accelerator + + >>> accelerator = Accelerator() + >>> dataloader, model, optimizer = accelerator.prepare(dataloader, model, optimizer) + >>> input_a = next(iter(dataloader)) + >>> input_b = next(iter(dataloader)) + + >>> with accelerator.no_sync(): + ... outputs = model(input_a) + ... loss = loss_func(outputs) + ... accelerator.backward(loss) + ... # No synchronization across processes, only accumulate gradients + >>> outputs = model(input_b) + >>> accelerator.backward(loss) + >>> # Synchronization across all processes + >>> optimizer.step() + >>> optimizer.zero_grad() + ``` + """ + context = contextlib.nullcontext + if self.use_distributed: + context = getattr(model, "no_sync", context) + + with context(): + yield + + def _do_sync(self): + "Sets the right `sync_gradients` context and either resets or increases `self.step`" + if self.gradient_state.end_of_dataloader: + self.step = 0 + self.gradient_state._set_sync_gradients(True) + else: + self.step += 1 + self.gradient_state._set_sync_gradients((self.step % self.gradient_accumulation_steps) == 0) + + @property + def sync_gradients(self): + return self.gradient_state.sync_gradients + + @contextmanager + def accumulate(self, model): + """ + A context manager that will lightly wrap around and perform gradient accumulation automatically + + Args: + model (`torch.nn.Module`): + PyTorch Module that was prepared with `Accelerator.prepare` + + Example: + + ```python + >>> from accelerate import Accelerator + + >>> accelerator = Accelerator(gradient_accumulation_steps=2) + >>> dataloader, model, optimizer, scheduler = accelerator.prepare(dataloader, model, optimizer, scheduler) + + >>> with accelerator.accumulate(): + ... for input, output in dataloader: + ... outputs = model(input) + ... loss = loss_func(outputs) + ... loss.backward() + ... optimizer.step() + ... scheduler.step() + ... optimizer.zero_grad() + ``` + """ + self._do_sync() + if self.sync_gradients: + context = contextlib.nullcontext + else: + context = self.no_sync + + with context(model): + yield + + def print(self, *args, **kwargs): + """ + Use in replacement of `print()` to only print once per server. + """ + if self.is_local_main_process: + print(*args, **kwargs) + + def _prepare_one(self, obj, first_pass=False, device_placement=None): + # First pass of preparation: DataLoader, model, optimizer + if first_pass: + if isinstance(obj, torch.utils.data.DataLoader): + return self.prepare_data_loader(obj, device_placement=device_placement) + elif isinstance(obj, torch.nn.Module): + return self.prepare_model(obj, device_placement=device_placement) + elif isinstance(obj, torch.optim.Optimizer): + optimizer = self.prepare_optimizer(obj, device_placement=device_placement) + return optimizer + # Second pass of preparation: LR scheduler (which need the full list of optimizers) + elif isinstance(obj, torch.optim.lr_scheduler._LRScheduler): + scheduler = self.prepare_scheduler(obj) + return scheduler + # Return the unprocessed object if previous criteria was not met + return obj + + def _prepare_fsdp(self, *args): + result = [] + for obj in args: + if isinstance(obj, torch.nn.Module): + model = obj + break + optimizers = [] + + self._schedulers = [] + self._models = [] + intermediate_result = [] + for obj in args: + if isinstance(obj, torch.optim.Optimizer): + if len(obj.param_groups) > 1: + logger.warn( + "FSDP Warning: When using FSDP, several parameter groups will be conflated into " + "a single one due to nested module wrapping and parameter flattening." + ) + optimizer = obj.optimizer.__class__(model.parameters(), **obj.optimizer.defaults) + obj = self.prepare_optimizer(optimizer) + optimizers.append(obj) + elif isinstance(obj, torch.nn.Module): + self._models.append(obj) + intermediate_result.append(obj) + + for obj in intermediate_result: + if isinstance(obj, AcceleratedScheduler): + obj.optimizer = optimizers + for i, opt in enumerate(self._optimizers): + if getattr(obj.scheduler, "optimizer", None) == opt.optimizer: + obj.scheduler.optimizer = optimizers[i] + obj.optimizers = [optimizers[i]] + break + self._schedulers.append(obj) + result.append(obj) + self._optimizers = optimizers + return tuple(result) + + def prepare(self, *args, device_placement=None): + """ + Prepare all objects passed in `args` for distributed training and mixed precision, then return them in the same + order. + + Args: + *args (list of objects): + Any of the following type of objects: + + - `torch.utils.data.DataLoader`: PyTorch Dataloader + - `torch.nn.Module`: PyTorch Module + - `torch.optim.Optimizer`: PyTorch Optimizer + - `torch.optim.lr_scheduler._LRScheduler`: PyTorch LR Scheduler + + device_placement (`List[bool]`, *optional*): + Used to customize whether automatic device placement should be performed for each object passed. Needs + to be a list of the same length as `args`. + + + + You don't need to prepare a model if you only use it for inference without any kind of mixed precision + + + """ + if device_placement is None: + device_placement = [None for _ in args] + elif self.distributed_type == DistributedType.DEEPSPEED: + raise ValueError("You can't customize device placements with DeepSpeed.") + elif len(device_placement) != len(args): + raise ValueError( + f"`device_placement` should be a list with {len(args)} elements (the number of objects passed)." + ) + + if self.distributed_type == DistributedType.FSDP: + model_count = 0 + optimizer_present = False + for obj in args: + if isinstance(obj, torch.nn.Module): + model_count += 1 + if isinstance(obj, torch.optim.Optimizer): + optimizer_present = True + if model_count > 1 and optimizer_present: + raise ValueError( + "For FSDP to work with multiple models (>1), " + "prepare must be called for all the models before optimizers are created. " + "Then pass the optimizers to the prepare call in the same order as corresponding models." + ) + elif model_count == 1 and optimizer_present: + logger.warn( + "FSDP Warning: When using FSDP, " + "it is efficient and recommended to call prepare for the model before creating the optimizer" + ) + + # On TPUs, putting the model on the XLA device will create new parameters, so the corresponding optimizer will + # have parameters disconnected from the model (so no training :-( ). + # If the model and optimizer have parameters on different devices we raise an error. + if self.distributed_type == DistributedType.TPU: + model_device, optimizer_device = self._get_devices() + if model_device is not None and optimizer_device is not None and model_device != optimizer_device: + raise ValueError( + "The model and the optimizer parameters are not on the same device, which probably means you " + "created an optimizer around your model **before** putting on the device. Make sure the line " + "model.to(device) is before the optimizer creation in your script or remove it entirely and use " + "the flag default value for `device_placement` in your `Accelerator` to let it handle that " + "part for you." + ) + + # If we're dealing with device placement, this deals with that by... + tpu_should_fix_optimizer = self.device_placement and self.distributed_type == DistributedType.TPU + if tpu_should_fix_optimizer: + # 1. grabbing old model parameters + old_named_params = self._get_named_parameters(*args) + + if self.distributed_type == DistributedType.DEEPSPEED: + result = self._prepare_deepspeed(*args) + else: + result = tuple( + self._prepare_one(obj, first_pass=True, device_placement=d) for obj, d in zip(args, device_placement) + ) + result = tuple(self._prepare_one(obj, device_placement=d) for obj, d in zip(result, device_placement)) + + if tpu_should_fix_optimizer: + # 2. grabbing new model parameters + new_named_params = self._get_named_parameters(*result) + # 3. building a map from the first to the second + mapping = {p: new_named_params[n] for n, p in old_named_params.items()} + # 4. using that map to update the parameters of the optimizer + for obj in result: + if isinstance(obj, torch.optim.Optimizer): + obj._switch_parameters(mapping) + + if self.distributed_type == DistributedType.FSDP and model_count == 1 and optimizer_present: + result = self._prepare_fsdp(*result) + + return result if len(result) > 1 else result[0] + + def prepare_model(self, model: torch.nn.Module, device_placement=None): + """ + Prepares a PyTorch model for training in any distributed setup. It is recommended to use + [`Accelerator.prepare`] instead. + + Args: + model (`torch.nn.Module`): + A PyTorch model to prepare. You don't need to prepare a model if it is used only for inference without + any kind of mixed precision + device_placement (`bool`, *optional*): + Whether or not to place the model on the proper device. Will default to `self.device_placement`. + """ + if device_placement is None: + device_placement = self.device_placement and self.distributed_type != DistributedType.FSDP + self._models.append(model) + if device_placement: + model = model.to(self.device) + if self.distributed_type == DistributedType.MULTI_GPU: + kwargs = self.ddp_handler.to_kwargs() if self.ddp_handler is not None else {} + model = torch.nn.parallel.DistributedDataParallel( + model, device_ids=[self.local_process_index], output_device=self.local_process_index, **kwargs + ) + elif self.distributed_type == DistributedType.FSDP: + from torch.distributed.fsdp.fully_sharded_data_parallel import FullyShardedDataParallel as FSDP + + # Check if the model is already a FSDP model due to `Manual Wrapping` and if so, + # don't wrap it again + if type(model) != FSDP: + self.state.fsdp_plugin.set_auto_wrap_policy(model) + fsdp_plugin = self.state.fsdp_plugin + model = FSDP( + model, + sharding_strategy=fsdp_plugin.sharding_strategy, + cpu_offload=fsdp_plugin.cpu_offload, + auto_wrap_policy=fsdp_plugin.auto_wrap_policy, + backward_prefetch=fsdp_plugin.backward_prefetch, + mixed_precision=fsdp_plugin.mixed_precision_policy, + ignored_modules=fsdp_plugin.ignored_modules, + ) + if not fsdp_plugin.cpu_offload.offload_params: + model.to(self.device) + self._models[-1] = model + elif self.distributed_type == DistributedType.MULTI_CPU: + kwargs = self.ddp_handler.to_kwargs() if self.ddp_handler is not None else {} + model = torch.nn.parallel.DistributedDataParallel(model, **kwargs) + if self.native_amp: + if self.mixed_precision == "fp16" and is_torch_version(">=", "1.10"): + model.forward = torch.cuda.amp.autocast(dtype=torch.float16)(model.forward) + elif self.mixed_precision == "bf16" and self.distributed_type != DistributedType.TPU: + device_type = "cuda" if torch.cuda.is_available() else "cpu" + model.forward = torch.autocast(device_type=device_type, dtype=torch.bfloat16)(model.forward) + else: + model.forward = torch.cuda.amp.autocast()(model.forward) + model.forward = convert_outputs_to_fp32(model.forward) + if self.distributed_type == DistributedType.TPU and self.state.fork_launched: + model = xmp.MpModelWrapper(model).to(self.device) + return model + + def _prepare_deepspeed(self, *args): + + deepspeed_plugin = self.state.deepspeed_plugin + + if deepspeed_plugin.deepspeed_config["train_micro_batch_size_per_gpu"] == "auto": + result = [ + self._prepare_one(obj, first_pass=True) if isinstance(obj, torch.utils.data.DataLoader) else obj + for obj in args + ] + + batch_sizes = [obj.batch_size for obj in args if hasattr(obj, "batch_size")] + if self.split_batches: + batch_sizes = [batch_size // self.num_processes for batch_size in batch_sizes] + if len(batch_sizes) == 0: + raise ValueError( + "You must specify a training or evaluation dataloader in `accelerate.prepare()` when using DeepSpeed." + ) + + batch_size_per_device = min(batch_sizes) if deepspeed_plugin.is_train_batch_min else max(batch_sizes) + if len(batch_sizes) > 1: + logger.info( + "Since you passed both train and evaluation dataloader, `is_train_batch_min` (here " + f"{deepspeed_plugin.is_train_batch_min} will decide the `train_batch_size` ({batch_size_per_device})." + ) + else: + batch_size_per_device = deepspeed_plugin.deepspeed_config["train_micro_batch_size_per_gpu"] + result = [obj for obj in args] + + if self.gradient_accumulation_steps != deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"]: + logger.info( + f"Updating DeepSpeed's gradient accumulation steps to {self.gradient_accumulation_steps} from " + f"{deepspeed_plugin.deepspeed_config['gradient_accumulation_steps']}." + ) + deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] = self.gradient_accumulation_steps + config_kwargs = { + "train_micro_batch_size_per_gpu": batch_size_per_device, + "train_batch_size": batch_size_per_device + * deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] + * self.num_processes, + "gradient_clipping": 1.0, + "zero_optimization.stage3_gather_16bit_weights_on_model_save": False, + } + + model = None + optimizer = None + scheduler = None + for obj in result: + if isinstance(obj, torch.nn.Module): + model = obj + elif isinstance(obj, (torch.optim.Optimizer, DummyOptim)): + optimizer = obj + elif (isinstance(obj, (torch.optim.lr_scheduler._LRScheduler, DummyScheduler))) or ( + type(obj).__name__ in deepspeed.runtime.lr_schedules.VALID_LR_SCHEDULES + ): + scheduler = obj + + if optimizer is not None: + if "optimizer" in deepspeed_plugin.deepspeed_config and not isinstance(optimizer, (DummyOptim)): + raise ValueError( + "You cannot specify an optimizer in the config file and in the code at the same time. " + "Please remove the optimizer from the config file or " + "create `accelerate.utils.DummyOptim` in the code." + ) + elif "optimizer" not in deepspeed_plugin.deepspeed_config and isinstance(optimizer, (DummyOptim)): + raise ValueError( + "You cannot create a `DummyOptim` without specifying an optimizer in the config file." + ) + + if isinstance(optimizer, (torch.optim.Optimizer)): + deepspeed_plugin.deepspeed_config["zero_allow_untested_optimizer"] = True + + if scheduler is not None: + if "scheduler" in deepspeed_plugin.deepspeed_config and not isinstance(scheduler, (DummyScheduler)): + raise ValueError( + "You cannot specify a scheduler in the config file and in the code at the same time. " + "Please remove the scheduler from the config file or " + "create `accelerate.utils.DummyScheduler` in the code." + ) + elif "scheduler" not in deepspeed_plugin.deepspeed_config and isinstance(scheduler, (DummyScheduler)): + raise ValueError( + "You cannot create a `DummyScheduler` without specifying a scheduler in the config file." + ) + + if optimizer is not None and scheduler is not None: + if isinstance(optimizer, (DummyOptim)) and not isinstance(scheduler, (DummyScheduler)): + raise ValueError( + "You can only specify `accelerate.utils.DummyScheduler` in the code when using " + "`accelerate.utils.DummyOptim`." + ) + + if model is not None: + if hasattr(model, "config") and hasattr(model.config, "hidden_size"): + hidden_size = model.config.hidden_size + config_kwargs.update( + { + "zero_optimization.reduce_bucket_size": hidden_size * hidden_size, + "zero_optimization.stage3_prefetch_bucket_size": 0.9 * hidden_size * hidden_size, + "zero_optimization.stage3_param_persistence_threshold": 10 * hidden_size, + } + ) + + if isinstance(optimizer, (DummyOptim)): + config_kwargs.update( + {"optimizer.params.lr": optimizer.lr, "optimizer.params.weight_decay": optimizer.weight_decay} + ) + if isinstance(scheduler, (DummyScheduler)): + config_kwargs.update( + { + "scheduler.params.warmup_min_lr": 0, + "scheduler.params.warmup_max_lr": scheduler.optimizer.lr, + "scheduler.params.warmup_num_steps": scheduler.warmup_num_steps, + } + ) + if scheduler.total_num_steps is not None: + config_kwargs["scheduler.params.total_num_steps"] = ( + math.ceil(scheduler.total_num_steps / self.num_processes) + if not self.split_batches + else scheduler.total_num_steps + ) + deepspeed_plugin.deepspeed_config_process(must_match=False, **config_kwargs) + self.deepspeed_config = deepspeed_plugin.deepspeed_config + kwargs = dict(model=model, config_params=self.deepspeed_config) + if optimizer is not None: + if isinstance(optimizer, (DummyOptim)): + kwargs["model_parameters"] = optimizer.params + else: + kwargs["optimizer"] = optimizer + if scheduler is not None: + if type(scheduler).__name__ in deepspeed.runtime.lr_schedules.VALID_LR_SCHEDULES: + kwargs["lr_scheduler"] = scheduler + + engine, optimizer, _, lr_scheduler = deepspeed.initialize(**kwargs) + if optimizer is not None: + optimizer = DeepSpeedOptimizerWrapper(optimizer) + if scheduler is not None: + if lr_scheduler is None: + scheduler = AcceleratedScheduler( + scheduler, + optimizer, + step_with_optimizer=self.step_scheduler_with_optimizer, + split_batches=self.split_batches, + ) + else: + scheduler = DeepSpeedSchedulerWrapper(lr_scheduler, optimizer) + + for i in range(len(result)): + if isinstance(result[i], torch.nn.Module): + result[i] = engine + elif isinstance(result[i], (torch.optim.Optimizer, DummyOptim)): + result[i] = optimizer + elif (isinstance(result[i], (torch.optim.lr_scheduler._LRScheduler, DummyScheduler))) or ( + type(result[i]).__name__ in deepspeed.runtime.lr_schedules.VALID_LR_SCHEDULES + ): + result[i] = scheduler + # pointing for deepspeed_engine_wrapped.backward() + self.deepspeed_engine_wrapped = DeepSpeedEngineWrapper(engine) + self._models.append(engine) + if optimizer is not None: + self._optimizers.append(optimizer) + if scheduler is not None: + self._schedulers.append(scheduler) + if len(self._models) > 1: + raise AssertionError( + "You can't use same `Accelerator()` instance with multiple models when using DeepSpeed" + ) + return tuple(result) + + def prepare_data_loader(self, data_loader: torch.utils.data.DataLoader, device_placement=None): + """ + Prepares a PyTorch DataLoader for training in any distributed setup. It is recommended to use + [`Accelerator.prepare`] instead. + + Args: + data_loader (`torch.utils.data.DataLoader`): + A vanilla PyTorch DataLoader to prepare + device_placement (`bool`, *optional*): + Whether or not to place the batches on the proper device in the prepared dataloader. Will default to + `self.device_placement`. + """ + if device_placement is None: + device_placement = self.device_placement if self.distributed_type != DistributedType.TPU else False + return prepare_data_loader( + data_loader, + self.device, + num_processes=self.num_processes, + process_index=self.process_index, + split_batches=self.split_batches, + put_on_device=device_placement, + rng_types=self.rng_types.copy(), + dispatch_batches=self.dispatch_batches, + ) + + def prepare_optimizer(self, optimizer: torch.optim.Optimizer, device_placement=None): + """ + Prepares a PyTorch Optimizer for training in any distributed setup. It is recommended to use + [`Accelerator.prepare`] instead. + + Args: + optimizer (`torch.optim.Optimizer`): + A vanilla PyTorch optimizer to prepare + device_placement (`bool`, *optional*): + Whether or not to place the optimizer on the proper device. Will default to `self.device_placement`. + """ + if device_placement is None: + device_placement = self.device_placement + optimizer = AcceleratedOptimizer(optimizer, device_placement=device_placement, scaler=self.scaler) + self._optimizers.append(optimizer) + return optimizer + + def prepare_scheduler(self, scheduler: torch.optim.lr_scheduler._LRScheduler): + """ + Prepares a PyTorch Scheduler for training in any distributed setup. It is recommended to use + [`Accelerator.prepare`] instead. + + Args: + scheduler (`torch.optim.lr_scheduler._LRScheduler`): + A vanilla PyTorch scheduler to prepare + """ + # We try to find the optimizer associated with `scheduler`, the default is the full list. + optimizer = self._optimizers + for opt in self._optimizers: + if getattr(scheduler, "optimizer", None) == opt.optimizer: + optimizer = opt + break + scheduler = AcceleratedScheduler( + scheduler, + optimizer, + step_with_optimizer=self.step_scheduler_with_optimizer, + split_batches=self.split_batches, + ) + self._schedulers.append(scheduler) + return scheduler + + def backward(self, loss, **kwargs): + """ + Scales the gradients in accordance to `Accelerator.gradient_accumulation_steps` and calls the correct + `backward()` based on the configuration. + + Should be used in lieu of `loss.backward()`. + """ + if self.distributed_type != DistributedType.DEEPSPEED: + # deepspeed handles loss scaling by gradient_accumulation_steps in its `backward` + loss = loss / self.gradient_accumulation_steps + if self.distributed_type == DistributedType.DEEPSPEED: + self.deepspeed_engine_wrapped.backward(loss, **kwargs) + elif self.scaler is not None: + self.scaler.scale(loss).backward(**kwargs) + else: + loss.backward(**kwargs) + + def unscale_gradients(self, optimizer=None): + """ + Unscale the gradients in mixed precision training with AMP. This is a noop in all other settings. + + Args: + optimizer (`torch.optim.Optimizer` or `List[torch.optim.Optimizer]`, *optional*): + The optimizer(s) for which to unscale gradients. If not set, will unscale gradients on all optimizers + that were passed to [`~Accelerator.prepare`]. + """ + if self.use_fp16 and self.native_amp: + if optimizer is None: + # TODO: this unscales all optimizers where we should only unscale the one where parameters are. + optimizer = self._optimizers + elif not isinstance(optimizer, (tuple, list)): + optimizer = [optimizer] + for opt in optimizer: + while isinstance(opt, AcceleratedOptimizer): + opt = opt.optimizer + self.scaler.unscale_(opt) + + def clip_grad_norm_(self, parameters, max_norm, norm_type=2): + """ + Should be used in place of `torch.nn.utils.clip_grad_norm_`. + + Example: + + ```python + >>> from accelerate import Accelerator + + >>> accelerator = Accelerator(gradient_accumulation_steps=2) + >>> dataloader, model, optimizer, scheduler = accelerator.prepare(dataloader, model, optimizer, scheduler) + + >>> for (input, target) in dataloader: + ... optimizer.zero_grad() + ... output = model(input) + ... loss = loss_func(output, target) + ... accelerator.backward(loss) + ... if accelerator.sync_gradients: + ... accelerator.clip_grad_norm_(model.parameters(), max_grad_norm) + ... optimizer.step() + ``` + """ + if self.distributed_type == DistributedType.FSDP: + self.unscale_gradients() + parameters = [p for p in parameters] + for model in self._models: + if parameters == [p for p in model.parameters()]: + model.clip_grad_norm_(max_norm, norm_type) + return + elif self.distributed_type == DistributedType.DEEPSPEED: + # `accelerator.backward(loss)` is doing that automatically. Therefore, it's implementation is not needed + return + self.unscale_gradients() + torch.nn.utils.clip_grad_norm_(parameters, max_norm, norm_type=norm_type) + + def clip_grad_value_(self, parameters, clip_value): + """ + Should be used in place of `torch.nn.utils.clip_grad_value_`. + + Example: + + ```python + >>> from accelerate import Accelerator + + >>> accelerator = Accelerator(gradient_accumulation_steps=2) + >>> dataloader, model, optimizer, scheduler = accelerator.prepare(dataloader, model, optimizer, scheduler) + + >>> for (input, target) in dataloader: + ... optimizer.zero_grad() + ... output = model(input) + ... loss = loss_func(output, target) + ... accelerator.backward(loss) + ... if accelerator.sync_gradients: + ... accelerator.clip_grad_value_(model.parameters(), clip_value) + ... optimizer.step() + ``` + """ + if self.distributed_type in [DistributedType.DEEPSPEED, DistributedType.FSDP]: + raise Exception("DeepSpeed and FSDP do not support `clip_grad_value_`. Use `clip_grad_norm_` instead.") + self.unscale_gradients() + torch.nn.utils.clip_grad_value_(parameters, clip_value) + + def gather(self, tensor): + """ + Gather the values in *tensor* across all processes and concatenate them on the first dimension. Useful to + regroup the predictions from all processes when doing evaluation. + + Note: + This gather happens in all processes. + + Args: + tensor (`torch.Tensor`, or a nested tuple/list/dictionary of `torch.Tensor`): + The tensors to gather across all processes. + + Returns: + `torch.Tensor`, or a nested tuple/list/dictionary of `torch.Tensor`: The gathered tensor(s). Note that the + first dimension of the result is *num_processes* multiplied by the first dimension of the input tensors. + """ + return gather(tensor) + + def gather_for_metrics(self, tensor): + """ + Gathers `tensor` and potentially drops duplicates in the last batch if on a distributed system. Should be used + for gathering the inputs and targets for metric calculation. + + Args: + tensor (`torch.Tensor`, or a nested tuple/list/dictionary of `torch.Tensor`): + The tensors for calculating metrics across all processes. + """ + tensor = self.gather(tensor) + if self.use_distributed: + if self.gradient_state.remainder == -1: + logger.info( + "The used dataset had no length, returning gathered tensors. You should drop the remainder yourself." + ) + return tensor + try: + # Then see if we're on the last batch of our eval dataloader + if self.gradient_state.end_of_dataloader: + # Last batch needs to be truncated on distributed systems as it contains additional samples + def _adjust_samples(tensor): + return tensor[: self.gradient_state.remainder] + + return recursively_apply(_adjust_samples, tensor) + else: + # Not at the end of the dataloader, no need to adjust the tensors + return tensor + except: + # Dataset had no length or raised an error + return tensor + return tensor + + def reduce(self, tensor, reduction="sum"): + """ + Reduce the values in *tensor* across all processes based on *reduction*. + + Note: + All processes get the reduced value. + + Args: + tensor (`torch.Tensor`, or a nested tuple/list/dictionary of `torch.Tensor`): + The tensors to reduce across all processes. + reduction (`str`, *optional*, defaults to "sum"): + A reduction type, can be one of 'sum', 'mean', or 'none'. If 'none', will not perform any operation. + + Returns: + `torch.Tensor`, or a nested tuple/list/dictionary of `torch.Tensor`: The reduced tensor(s). + """ + return reduce(tensor, reduction) + + def pad_across_processes(self, tensor, dim=0, pad_index=0, pad_first=False): + """ + Recursively pad the tensors in a nested list/tuple/dictionary of tensors from all devices to the same size so + they can safely be gathered. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to gather. + dim (`int`, *optional*, defaults to 0): + The dimension on which to pad. + pad_index (`int`, *optional*, defaults to 0): + The value with which to pad. + pad_first (`bool`, *optional*, defaults to `False`): + Whether to pad at the beginning or the end. + """ + return pad_across_processes(tensor, dim=dim, pad_index=pad_index, pad_first=pad_first) + + def unwrap_model(self, model): + """ + Unwraps the `model` from the additional layer possible added by [`~Accelerator.prepare`]. Useful before saving + the model. + + Args: + model (`torch.nn.Module`): + The model to unwrap. + """ + return extract_model_from_parallel(model) + + def wait_for_everyone(self): + """ + Will stop the execution of the current process until every other process has reached that point (so this does + nothing when the script is only run in one process). Useful to do before saving a model. + """ + wait_for_everyone() + + @on_main_process + def init_trackers(self, project_name: str, config: Optional[dict] = None, init_kwargs: Optional[dict] = {}): + """ + Initializes a run for all trackers stored in `self.log_with`, potentially with starting configurations + + Args: + project_name (`str`): + The name of the project. All trackers will save their data based on this + config (`dict`, *optional*): + Optional starting configuration to be logged. + init_kwargs (`dict`, *optional*): + A nested dictionary of kwargs to be passed to a specific tracker's `__init__` function. Should be + formatted like so: + ```python + {"wandb": {"tags": ["tag_a", "tag_b"]}} + ``` + """ + self.trackers = [] + for tracker in self.log_with: + if issubclass(type(tracker), GeneralTracker): + # Custom trackers are already initialized + self.trackers.append(tracker) + else: + tracker_init = LOGGER_TYPE_TO_CLASS[str(tracker)] + if getattr(tracker_init, "requires_logging_directory"): + # We can skip this check since it was done in `__init__` + self.trackers.append( + tracker_init(project_name, self.logging_dir, **init_kwargs.get(str(tracker), {})) + ) + else: + self.trackers.append(tracker_init(project_name, **init_kwargs.get(str(tracker), {}))) + if config is not None: + for tracker in self.trackers: + tracker.store_init_configuration(config) + + @on_main_process + def get_tracker(self, name: str): + """ + Returns a `tracker` from `self.trackers` based on `name` on the main process only. + + Args: + name (`str`): + The name of a tracker, corresponding to the `.name` property. + """ + for tracker in self.trackers: + if tracker.name == name: + return tracker.tracker + raise ValueError(f"{name} is not an available tracker stored inside the `Accelerator`.") + + @on_main_process + def log(self, values: dict, step: Optional[int] = None, log_kwargs: Optional[dict] = {}): + """ + Logs `values` to all stored trackers in `self.trackers` on the main process only. + + Args: + values (`dict`): + Values should be a dictionary-like object containing only types `int`, `float`, or `str`. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + log_kwargs (`dict`, *optional*): + A nested dictionary of kwargs to be passed to a specific tracker's `log` function. Should be formatted + like so: + ```python + {"wandb": {"tags": ["tag_a", "tag_b"]}} + ``` + """ + for tracker in self.trackers: + tracker.log(values, step=step, **log_kwargs.get(tracker.name, {})) + + @on_main_process + def end_training(self): + """ + Runs any special end training behaviors, such as stopping trackers on the main process only. Should always be + called at the end of your script if using experiment tracking. + """ + for tracker in self.trackers: + tracker.finish() + + def save(self, obj, f): + """ + Save the object passed to disk once per machine. Use in place of `torch.save`. + + Args: + obj: The object to save. + f (`str` or `os.PathLike`): + Where to save the content of `obj`. + """ + save(obj, f) + + def save_state(self, output_dir: str): + """ + Saves the current states of the model, optimizer, scaler, RNG generators, and registered objects. + + + + Should only be used when wanting to save a checkpoint during training and restoring the state in the same + environment. + + + + Args: + output_dir (`str` or `os.PathLike`): + The name of the folder to save all relevant weights and states. + """ + # Check if folder exists + output_dir = os.path.expanduser(output_dir) + os.makedirs(output_dir, exist_ok=True) + logger.info(f"Saving current state to {output_dir}") + + # Save the models taking care of FSDP and DeepSpeed nuances + weights = [] + for i, model in enumerate(self._models): + if self.distributed_type == DistributedType.FSDP: + logger.info("Saving FSDP model") + self.state.fsdp_plugin.save_model(self, model, output_dir, i) + logger.info(f"FSDP Model saved to output dir {output_dir}") + elif self.distributed_type == DistributedType.DEEPSPEED: + logger.info("Saving DeepSpeed Model and Optimizer") + ckpt_id = f"{MODEL_NAME}" if i == 0 else f"{MODEL_NAME}_{i}" + model.save_checkpoint(output_dir, ckpt_id) + logger.info(f"DeepSpeed Model and Optimizer saved to output dir {os.path.join(output_dir, ckpt_id)}") + else: + weights.append(self.get_state_dict(model, unwrap=False)) + + # Save the optimizers taking care of FSDP and DeepSpeed nuances + optimizers = [] + if self.distributed_type == DistributedType.FSDP: + for opt in self._optimizers: + logger.info("Saving FSDP Optimizer") + self.state.fsdp_plugin.save_optimizer(self, opt, self._models[i], output_dir, i) + logger.info(f"FSDP Optimizer saved to output dir {output_dir}") + elif self.distributed_type != DistributedType.DEEPSPEED: + optimizers = self._optimizers + + # Save the lr schedulers taking care of DeepSpeed nuances + schedulers = [] + if self.distributed_type == DistributedType.DEEPSPEED: + for i, scheduler in enumerate(self._schedulers): + if isinstance(scheduler, DeepSpeedSchedulerWrapper): + continue + schedulers.append(scheduler) + else: + schedulers = self._schedulers + + save_location = save_accelerator_state( + output_dir, weights, optimizers, schedulers, self.state.process_index, self.scaler + ) + for i, obj in enumerate(self._custom_objects): + save_custom_state(obj, output_dir, i) + return save_location + + def load_state(self, input_dir: str): + """ + Loads the current states of the model, optimizer, scaler, RNG generators, and registered objects. + + + + Should only be used in conjunction with [`Accelerator.save_state`]. + + + + Args: + input_dir (`str` or `os.PathLike`): + The name of the folder all relevant weights and states were saved in. + """ + # Check if folder exists + input_dir = os.path.expanduser(input_dir) + if not os.path.isdir(input_dir): + raise ValueError(f"Tried to find {input_dir} but folder does not exist") + logger.info(f"Loading states from {input_dir}") + + # Load the models taking care of FSDP and DeepSpeed nuances + models = [] + for i, model in enumerate(self._models): + if self.distributed_type == DistributedType.FSDP: + logger.info("Loading FSDP model") + self.state.fsdp_plugin.load_model(self, model, input_dir, i) + logger.info(f"FSDP Model loaded from input dir {input_dir}") + elif self.distributed_type == DistributedType.DEEPSPEED: + logger.info("Loading DeepSpeed Model and Optimizer") + ckpt_id = f"{MODEL_NAME}" if i == 0 else f"{MODEL_NAME}_{i}" + model.load_checkpoint(input_dir, ckpt_id) + logger.info(f"DeepSpeed Model and Optimizer loaded from input dir {os.path.join(input_dir, ckpt_id)}") + else: + models.append(model) + + # Load the optimizers taking care of FSDP and DeepSpeed nuances + optimizers = [] + if self.distributed_type == DistributedType.FSDP: + for i, opt in enumerate(self._optimizers): + logger.info("Loading FSDP Optimizer") + self.state.fsdp_plugin.load_optimizer(self, opt, self._models[i], input_dir, i) + logger.info(f"FSDP Optimizer loaded from input dir {input_dir}") + elif self.distributed_type != DistributedType.DEEPSPEED: + optimizers = self._optimizers + + # Load the lr schedulers taking care of DeepSpeed nuances + schedulers = [] + if self.distributed_type == DistributedType.DEEPSPEED: + for i, scheduler in enumerate(self._schedulers): + if isinstance(scheduler, DeepSpeedSchedulerWrapper): + continue + schedulers.append(scheduler) + else: + schedulers = self._schedulers + + load_accelerator_state(input_dir, models, optimizers, schedulers, self.state.process_index, self.scaler) + custom_checkpoints = [f for f in os.listdir(input_dir) if "custom_checkpoint" in f] + if len(custom_checkpoints) != len(self._custom_objects): + err = "Warning! Number of found checkpoints does not match the number of registered objects:" + err += f"\n\tFound checkpoints: {len(custom_checkpoints)}" + err += f"\n\tRegistered objects: {len(self._custom_objects)}\nSkipping." + logger.warn(err) + else: + logger.info(f"Loading in {len(custom_checkpoints)} custom states") + for index, obj in enumerate(self._custom_objects): + load_custom_state(obj, input_dir, index) + + def free_memory(self): + """ + Will release all references to the internal objects stored and call the garbage collector. You should call this + method between two trainings with different models/optimizers. + """ + self._schedulers = [] + self._optimizers = [] + self._models = [] + self.deepspeed_engine_wrapped = None + gc.collect() + torch.cuda.empty_cache() + + def clear(self): + """ + Alias for [`Accelerate.free_memory`], releases all references to the internal objects stored and call the + garbage collector. You should call this method between two trainings with different models/optimizers. + """ + self.free_memory() + + def _get_named_parameters(self, *args): + named_parameters = {} + for obj in args: + if isinstance(obj, torch.nn.Module): + obj = extract_model_from_parallel(obj) + named_parameters.update({n: p for n, p in obj.named_parameters()}) + return named_parameters + + def _get_devices(self, *args): + model_device = None + optimizer_device = None + for obj in args: + # Loop through model parameters and stop at the first once we have its device. + if isinstance(obj, torch.nn.Module): + for param in obj.parameters(): + model_device = param.device + break + # Loop through optimizer parameters groups and stop at the first once we have its device. + if isinstance(obj, torch.optim.Optimizer): + for param_group in obj.param_groups: + if len(param_group["params"]) > 0: + optimizer_device = param_group["params"][0].device + break + return (model_device, optimizer_device) + + def get_state_dict(self, model, unwrap=True): + """ + Returns the state dictionary of a model sent through [`Accelerator.prepare`] in full precision + + Args: + model (`torch.nn.Module`): + A PyTorch model sent through [`Accelerator.prepare`] + unwrap (`bool`, *optional*, defaults to True): + Whether to return the original underlying state_dict of `model` or to return the wrapped state_dict + """ + is_zero_3 = False + if self.distributed_type == DistributedType.DEEPSPEED: + is_zero_3 = self.deepspeed_config["zero_optimization"]["stage"] == 3 + + if is_zero_3: + if model.zero_gather_16bit_weights_on_model_save(): + state_dict = model._zero3_consolidated_16bit_state_dict() + else: + raise ValueError( + "Cannot get 16bit model weights because `stage3_gather_16bit_weights_on_model_save` in DeepSpeed config is False. " + "To save the model weights in 16bit, set `stage3_gather_16bit_weights_on_model_save` to True in DeepSpeed config file or " + "set `zero3_save_16bit_model` to True when using `accelerate config`. " + "To save the full checkpoint, run `model.save_checkpoint(save_dir)` and use `zero_to_fp32.py` to recover weights." + ) + else: + if unwrap: + model = self.unwrap_model(model) + state_dict = model.state_dict() + + if state_dict is not None: + for k in state_dict: + if state_dict[k].dtype == torch.float16: + state_dict[k] = state_dict[k].float() + + return state_dict + + def register_for_checkpointing(self, *objects): + """ + Makes note of `objects` and will save or load them in during `save_state` or `load_state`. + + These should be utilized when the state is being loaded or saved in the same script. It is not designed to be + used in different scripts + + + + Every `object` must have a `load_state_dict` and `state_dict` function to be stored. + + + """ + invalid_objects = [] + for obj in objects: + if not hasattr(obj, "state_dict") or not hasattr(obj, "load_state_dict"): + invalid_objects.append(obj) + if len(invalid_objects) > 0: + err = "All `objects` must include a `state_dict` and `load_state_dict` function to be stored. The following inputs are invalid:" + for index, obj in enumerate(invalid_objects): + err += f"\n\t- Item at index {index}, `{get_pretty_name(obj)}`" + raise ValueError(err) + self._custom_objects.extend(objects) + + @contextmanager + def autocast(self): + """ + Will apply automatic mixed-precision inside the block inside this context manager, if it is enabled. Nothing + different will happen otherwise. + """ + if self.native_amp: + if self.mixed_precision == "fp16" and is_torch_version(">=", "1.10"): + autocast_context = torch.cuda.amp.autocast(dtype=torch.float16) + elif self.mixed_precision == "bf16" and is_bf16_available(): + if self.distributed_type in [DistributedType.NO, DistributedType.MULTI_CPU, DistributedType.MULTI_GPU]: + device_type = "cpu" if not torch.cuda.is_available() else "cuda" + autocast_context = torch.autocast(dtype=torch.bfloat16, device_type=device_type) + else: + autocast_context = torch.cuda.amp.autocast() + + autocast_context.__enter__() + yield + autocast_context.__exit__(*sys.exc_info()) + else: + yield + + @property + def optimizer_step_was_skipped(self): + """ + Whether or not the optimizer update was skipped (because of gradient overflow in mixed precision), in which + case the learning rate should not be changed. + """ + for optimizer in self._optimizers: + if optimizer.step_was_skipped: + return True + return False diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/big_modeling.py b/v0.13.2/accelerate-0.13.2/src/accelerate/big_modeling.py new file mode 100644 index 0000000..9d57c14 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/big_modeling.py @@ -0,0 +1,373 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from contextlib import contextmanager +from typing import Dict, List, Optional, Union + +import torch +import torch.nn as nn + +from .hooks import AlignDevicesHook, add_hook_to_module, attach_align_device_hook, attach_align_device_hook_on_blocks +from .utils import ( + OffloadedWeightsLoader, + check_device_map, + extract_submodules_state_dict, + get_balanced_memory, + infer_auto_device_map, + load_checkpoint_in_model, + offload_state_dict, +) +from .utils.versions import is_torch_version + + +@contextmanager +def init_empty_weights(include_buffers: bool = False): + """ + A context manager under which models are initialized with all parameters on the meta device, therefore creating an + empty model. Useful when just initializing the model would blow the available RAM. + + Args: + include_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to also put all buffers on the meta device while initializing. + + Example: + + ```python + import torch.nn as nn + from accelerate import init_empty_weights + + # Initialize a model with 100 billions parameters in no time and without using any RAM. + with init_empty_weights(): + tst = nn.Sequential(*[nn.Linear(10000, 10000) for _ in range(1000)]) + ``` + + + + Any model created under this context manager has no weights. As such you can't do something like + `model.to(some_device)` with it. To load weights inside your empty model, see [`load_checkpoint_and_dispatch`]. + + + """ + if not is_torch_version(">=", "1.9.0"): + raise NotImplementedError("Initializing empty weights to a meta device requires torch >= 1.9.0") + old_register_parameter = nn.Module.register_parameter + if include_buffers: + old_register_buffer = nn.Module.register_buffer + + def register_empty_parameter(module, name, param): + old_register_parameter(module, name, param) + if param is not None: + param_cls = type(module._parameters[name]) + kwargs = module._parameters[name].__dict__ + module._parameters[name] = param_cls(module._parameters[name].to(torch.device("meta")), **kwargs) + + def register_empty_buffer(module, name, buffer): + old_register_buffer(module, name, buffer) + if buffer is not None: + module._buffers[name] = module._buffers[name].to(torch.device("meta")) + + # Patch tensor creation + if include_buffers: + tensor_constructors_to_patch = { + torch_function_name: getattr(torch, torch_function_name) + for torch_function_name in ["empty", "zeros", "ones", "full"] + } + else: + tensor_constructors_to_patch = {} + + def patch_tensor_constructor(fn): + def wrapper(*args, **kwargs): + kwargs["device"] = torch.device("meta") + return fn(*args, **kwargs) + + return wrapper + + try: + nn.Module.register_parameter = register_empty_parameter + if include_buffers: + nn.Module.register_buffer = register_empty_buffer + for torch_function_name in tensor_constructors_to_patch.keys(): + setattr(torch, torch_function_name, patch_tensor_constructor(getattr(torch, torch_function_name))) + yield + finally: + nn.Module.register_parameter = old_register_parameter + if include_buffers: + nn.Module.register_buffer = old_register_buffer + for torch_function_name, old_torch_function in tensor_constructors_to_patch.items(): + setattr(torch, torch_function_name, old_torch_function) + + +def cpu_offload( + model: nn.Module, + execution_device: Optional[torch.device] = None, + offload_buffers: bool = False, + state_dict: Optional[Dict[str, torch.Tensor]] = None, + preload_module_classes: Optional[List[str]] = None, +): + """ + Activates full CPU offload for a model. As a result, all parameters of the model will be offloaded and only one + copy of the state dict of the model will be kept. During the forward pass, parameters will be extracted from that + state dict and put on the execution device passed as they are needed, then offloaded again. + + Args: + model (`torch.nn.Module`): + The model to offload. + execution_device (`torch.device`, *optional*): + The device on which the forward pass of the model will be executed (should be a GPU). Will default to the + model first parameter device. + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to offload the buffers with the model parameters. + state_dict (`Dict[str, torch.Tensor]`, *optional*): + The state dict of the model that will be kept on CPU. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + if not is_torch_version(">=", "1.9.0"): + raise NotImplementedError("CPU offloading requires torch >= 1.9.0") + if execution_device is None: + execution_device = next(iter(model.parameters())).device + if state_dict is None: + state_dict = {n: p.to("cpu") for n, p in model.state_dict().items()} + attach_align_device_hook( + model, + execution_device=execution_device, + offload=True, + offload_buffers=offload_buffers, + weights_map=state_dict, + preload_module_classes=preload_module_classes, + ) + add_hook_to_module(model, AlignDevicesHook(io_same_device=True)) + return model + + +def disk_offload( + model: nn.Module, + offload_dir: Union[str, os.PathLike], + execution_device: Optional[torch.device] = None, + offload_buffers: bool = False, + preload_module_classes: Optional[List[str]] = None, +): + """ + Activates full disk offload for a model. As a result, all parameters of the model will be offloaded as + memory-mapped array in a given folder. During the forward pass, parameters will be accessed from that folder and + put on the execution device passed as they are needed, then offloaded again. + + Args: + model (`torch.nn.Module`): The model to offload. + offload_dir (`str` or `os.PathLike`): + The folder in which to offload the model weights (or where the model weights are already offloaded). + execution_device (`torch.device`, *optional*): + The device on which the forward pass of the model will be executed (should be a GPU). Will default to the + model's first parameter device. + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to offload the buffers with the model parameters. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + if not is_torch_version(">=", "1.9.0"): + raise NotImplementedError("Disk offloading requires torch >= 1.9.0") + if not os.path.isdir(offload_dir) or not os.path.isfile(os.path.join(offload_dir, "index.json")): + offload_state_dict(offload_dir, model.state_dict()) + if execution_device is None: + execution_device = next(iter(model.parameters())).device + weights_map = OffloadedWeightsLoader(save_folder=offload_dir) + attach_align_device_hook( + model, + execution_device=execution_device, + offload=True, + offload_buffers=offload_buffers, + weights_map=weights_map, + preload_module_classes=preload_module_classes, + ) + add_hook_to_module(model, AlignDevicesHook(io_same_device=True)) + return model + + +def dispatch_model( + model: nn.Module, + device_map: Dict[str, Union[str, int, torch.device]], + main_device: Optional[torch.device] = None, + state_dict: Optional[Dict[str, torch.Tensor]] = None, + offload_dir: Union[str, os.PathLike] = None, + offload_buffers: bool = False, + preload_module_classes: Optional[List[str]] = None, +): + """ + Dispatches a model according to a given device map. Layers of the model might be spread across GPUs, offloaded on + the CPU or even the disk. + + Args: + model (`torch.nn.Module`): + The model to dispatch. + device_map (`Dict[str, Union[str, int, torch.device]]`): + A dictionary mapping module names in the models `state_dict` to the device they should go to. Note that + `"disk"` is accepted even if it's not a proper value for `torch.device`. + main_device (`str`, `int` or `torch.device`, *optional*): + The main execution device. Will default to the first device in the `device_map` different from `"cpu"` or + `"disk"`. + state_dict (`Dict[str, torch.Tensor]`, *optional*): + The state dict of the part of the model that will be kept on CPU. + offload_dir (`str` or `os.PathLike`): + The folder in which to offload the model weights (or where the model weights are already offloaded). + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to offload the buffers with the model parameters. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + if not is_torch_version(">=", "1.9.0"): + raise NotImplementedError("Model dispatching requires torch >= 1.9.0") + # Error early if the device map is incomplete. + check_device_map(model, device_map) + + if main_device is None: + main_device = [d for d in device_map.values() if d not in ["cpu", "disk"]][0] + + cpu_modules = [name for name, device in device_map.items() if device == "cpu"] + if state_dict is None and len(cpu_modules) > 0: + state_dict = extract_submodules_state_dict(model.state_dict(), cpu_modules) + + disk_modules = [name for name, device in device_map.items() if device == "disk"] + if offload_dir is None and len(disk_modules) > 0: + raise ValueError( + "We need an `offload_dir` to dispatch this model according to this `device_map`, the following submodules " + f"need to be offloaded: {', '.join(disk_modules)}." + ) + if len(disk_modules) > 0 and ( + not os.path.isdir(offload_dir) or not os.path.isfile(os.path.join(offload_dir, "index.json")) + ): + disk_state_dict = extract_submodules_state_dict(model.state_dict(), disk_modules) + offload_state_dict(offload_dir, disk_state_dict) + + execution_device = { + name: main_device if device in ["cpu", "disk"] else device for name, device in device_map.items() + } + offload = {name: device in ["cpu", "disk"] for name, device in device_map.items()} + save_folder = offload_dir if len(disk_modules) > 0 else None + if state_dict is not None or save_folder is not None: + weights_map = OffloadedWeightsLoader(state_dict=state_dict, save_folder=save_folder) + else: + weights_map = None + + attach_align_device_hook_on_blocks( + model, + execution_device=execution_device, + offload=offload, + offload_buffers=offload_buffers, + weights_map=weights_map, + preload_module_classes=preload_module_classes, + ) + model.hf_device_map = device_map + return model + + +def load_checkpoint_and_dispatch( + model: nn.Module, + checkpoint: Union[str, os.PathLike], + device_map: Optional[Union[str, Dict[str, Union[int, str, torch.device]]]] = None, + max_memory: Optional[Dict[Union[int, str], Union[int, str]]] = None, + no_split_module_classes: Optional[List[str]] = None, + offload_folder: Optional[Union[str, os.PathLike]] = None, + offload_buffers: bool = False, + dtype: Optional[Union[str, torch.dtype]] = None, + offload_state_dict: Optional[bool] = None, + preload_module_classes: Optional[List[str]] = None, +): + """ + Loads a (potentially sharded) checkpoint inside a model, potentially sending weights to a given device as they are + loaded and adds the various hooks that will make this model run properly (even if split across devices). + + Args: + model (`torch.nn.Module`): The model in which we want to load a checkpoint. + checkpoint (`str` or `os.PathLike`): + The folder checkpoint to load. It can be: + - a path to a file containing a whole model state dict + - a path to a `.json` file containing the index to a sharded checkpoint + - a path to a folder containing a unique `.index.json` file and the shards of a checkpoint. + device_map (`Dict[str, Union[int, str, torch.device]]`, *optional*): + A map that specifies where each submodule should go. It doesn't need to be refined to each parameter/buffer + name, once a given module name is inside, every submodule of it will be sent to the same device. + + To have Accelerate compute the most optimized `device_map` automatically, set `device_map="auto"`. For more + information about each option see [here](big_modeling#designing-a-device-map). + max_memory (`Dict`, *optional*): + A dictionary device identifier to maximum memory. Will default to the maximum memory available for each GPU + and the available CPU RAM if unset. + no_split_module_classes (`List[str]`, *optional*): + A list of layer class names that should never be split across device (for instance any layer that has a + residual connection). + offload_folder (`str` or `os.PathLike`, *optional*): + If the `device_map` contains any value `"disk"`, the folder where we will offload weights. + offload_buffers (`bool`, *optional*, defaults to `False`): + In the layers that are offloaded on the CPU or the hard drive, whether or not to offload the buffers as + well as the parameters. + dtype (`str` or `torch.dtype`, *optional*): + If provided, the weights will be converted to that type when loaded. + offload_state_dict (`bool`, *optional*): + If `True`, will temporarily offload the CPU state dict on the hard drive to avoid getting out of CPU RAM if + the weight of the CPU state dict + the biggest shard does not fit. Will default to `True` if the device map + picked contains `"disk"` values. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + if not is_torch_version(">=", "1.9.0"): + raise NotImplementedError("Loading and dispatching requires torch >= 1.9.0") + if isinstance(device_map, str) and device_map not in ["auto", "balanced", "balanced_low_0", "sequential"]: + raise ValueError( + "If passing a string for `device_map`, please choose 'auto', 'balanced', 'balanced_low_0' or " + "'sequential'." + ) + if device_map != "sequential": + max_memory = get_balanced_memory( + model, + max_memory=max_memory, + no_split_module_classes=no_split_module_classes, + dtype=dtype, + low_zero=(device_map == "balanced_low_0"), + ) + if isinstance(device_map, str): + device_map = infer_auto_device_map( + model, max_memory=max_memory, no_split_module_classes=no_split_module_classes, dtype=dtype + ) + if offload_state_dict is None and "disk" in device_map.values(): + offload_state_dict = True + load_checkpoint_in_model( + model, + checkpoint, + device_map=device_map, + offload_folder=offload_folder, + dtype=dtype, + offload_state_dict=offload_state_dict, + ) + if device_map is None: + return model + return dispatch_model( + model, + device_map=device_map, + offload_dir=offload_folder, + offload_buffers=offload_buffers, + preload_module_classes=preload_module_classes, + ) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/checkpointing.py b/v0.13.2/accelerate-0.13.2/src/accelerate/checkpointing.py new file mode 100644 index 0000000..d5e816a --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/checkpointing.py @@ -0,0 +1,185 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import random +from pathlib import Path +from typing import List + +import numpy as np +import torch +from torch.cuda.amp import GradScaler + +from .utils import ( + MODEL_NAME, + OPTIMIZER_NAME, + RNG_STATE_NAME, + SCALER_NAME, + SCHEDULER_NAME, + get_pretty_name, + is_tpu_available, + save, +) + + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + +from .logging import get_logger + + +logger = get_logger(__name__) + + +def save_accelerator_state( + output_dir: str, + model_states: List[dict], + optimizers: list, + schedulers: list, + process_index: int, + scaler: GradScaler = None, +): + """ + Saves the current states of the models, optimizers, scaler, and RNG generators to a given directory. + + Args: + output_dir (`str` or `os.PathLike`): + The name of the folder to save all relevant weights and states. + model_states (`List[torch.nn.Module]`): + A list of model states + optimizers (`List[torch.optim.Optimizer]`): + A list of optimizer instances + schedulers (`List[torch.optim.lr_scheduler._LRScheduler]`): + A list of learning rate schedulers + process_index (`int`): + The current process index in the Accelerator state + scaler (`torch.cuda.amp.GradScaler`, *optional*): + An optional gradient scaler instance to save + """ + # Model states + for i, state in enumerate(model_states): + weights_name = f"{MODEL_NAME}.bin" if i == 0 else f"{MODEL_NAME}_{i}.bin" + output_model_file = os.path.join(output_dir, weights_name) + save(state, output_model_file) + logger.info(f"Model weights saved in {output_model_file}") + # Optimizer states + for i, opt in enumerate(optimizers): + state = opt.state_dict() + optimizer_name = f"{OPTIMIZER_NAME}.bin" if i == 0 else f"{OPTIMIZER_NAME}_{i}.bin" + output_optimizer_file = os.path.join(output_dir, optimizer_name) + save(state, output_optimizer_file) + logger.info(f"Optimizer state saved in {output_optimizer_file}") + # Scheduler states + for i, scheduler in enumerate(schedulers): + state = scheduler.state_dict() + scheduler_name = f"{SCHEDULER_NAME}.bin" if i == 0 else f"{SCHEDULER_NAME}_{i}.bin" + output_scheduler_file = os.path.join(output_dir, scheduler_name) + save(state, output_scheduler_file) + logger.info(f"Scheduler state saved in {output_scheduler_file}") + # GradScaler state + if scaler is not None: + state = scaler.state_dict() + output_scaler_file = os.path.join(output_dir, SCALER_NAME) + torch.save(state, output_scaler_file) + logger.info(f"Gradient scaler state saved in {output_scaler_file}") + # Random number generator states + states = {} + states_name = f"{RNG_STATE_NAME}_{process_index}.pkl" + states["random_state"] = random.getstate() + states["numpy_random_seed"] = np.random.get_state() + states["torch_manual_seed"] = torch.get_rng_state() + states["torch_cuda_manual_seed"] = torch.cuda.get_rng_state_all() + # ^^ safe to call this function even if cuda is not available + if is_tpu_available(): + states["xm_seed"] = xm.get_rng_state() + output_states_file = os.path.join(output_dir, states_name) + torch.save(states, output_states_file) + logger.info(f"Random states saved in {output_states_file}") + return output_dir + + +def load_accelerator_state(input_dir, models, optimizers, schedulers, process_index, scaler=None): + """ + Loads states of the models, optimizers, scaler, and RNG generators from a given directory. + + Args: + input_dir (`str` or `os.PathLike`): + The name of the folder to load all relevant weights and states. + models (`List[torch.nn.Module]`): + A list of model instances + optimizers (`List[torch.optim.Optimizer]`): + A list of optimizer instances + schedulers (`List[torch.optim.lr_scheduler._LRScheduler]`): + A list of learning rate schedulers + process_index (`int`): + The current process index in the Accelerator state + scaler (`torch.cuda.amp.GradScaler`, *optional*): + An optional *GradScaler* instance to load + """ + # Model states + for i, model in enumerate(models): + weights_name = f"{MODEL_NAME}.bin" if i == 0 else f"{MODEL_NAME}_{i}.bin" + input_model_file = os.path.join(input_dir, weights_name) + models[i].load_state_dict(torch.load(input_model_file, map_location="cpu")) + logger.info("All model weights loaded successfully") + + # Optimizer states + for i, opt in enumerate(optimizers): + optimizer_name = f"{OPTIMIZER_NAME}.bin" if i == 0 else f"{OPTIMIZER_NAME}_{i}.bin" + input_optimizer_file = os.path.join(input_dir, optimizer_name) + optimizers[i].load_state_dict(torch.load(input_optimizer_file, map_location="cpu")) + logger.info("All optimizer states loaded successfully") + + # Scheduler states + for i, scheduler in enumerate(schedulers): + scheduler_name = f"{SCHEDULER_NAME}.bin" if i == 0 else f"{SCHEDULER_NAME}_{i}.bin" + input_scheduler_file = os.path.join(input_dir, scheduler_name) + scheduler.load_state_dict(torch.load(input_scheduler_file)) + logger.info("All scheduler states loaded successfully") + + # GradScaler state + if scaler is not None: + input_scaler_file = os.path.join(input_dir, SCALER_NAME) + scaler.load_state_dict(torch.load(input_scaler_file)) + logger.info("GradScaler state loaded successfully") + + # Random states + states = torch.load(os.path.join(input_dir, f"{RNG_STATE_NAME}_{process_index}.pkl")) + random.setstate(states["random_state"]) + np.random.set_state(states["numpy_random_seed"]) + torch.set_rng_state(states["torch_manual_seed"]) + torch.cuda.set_rng_state_all(states["torch_cuda_manual_seed"]) + # ^^ safe to call this function even if cuda is not available + if is_tpu_available(): + xm.set_rng_state(states["xm_seed"]) + logger.info("All random states loaded successfully") + + +def save_custom_state(obj, path, index: int = 0): + """ + Saves the state of `obj` to `{path}/custom_checkpoint_{index}.pkl` + """ + # Should this be the right way to get a qual_name type value from `obj`? + save_location = Path(path) / f"custom_checkpoint_{index}.pkl" + logger.info(f"Saving the state of {get_pretty_name(obj)} to {save_location}") + torch.save(obj.state_dict(), save_location) + + +def load_custom_state(obj, path, index: int = 0): + """ + Loads the state of `obj` at `{path}/custom_checkpoint_{index}.pkl` + """ + load_location = f"{path}/custom_checkpoint_{index}.pkl" + logger.info(f"Loading the state of {get_pretty_name(obj)} from {load_location}") + obj.load_state_dict(torch.load(load_location)) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/accelerate_cli.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/accelerate_cli.py new file mode 100644 index 0000000..6300c7c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/accelerate_cli.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from argparse import ArgumentParser + +from accelerate.commands.config import config_command_parser +from accelerate.commands.env import env_command_parser +from accelerate.commands.launch import launch_command_parser +from accelerate.commands.test import test_command_parser + + +def main(): + parser = ArgumentParser("Accelerate CLI tool", usage="accelerate []") + subparsers = parser.add_subparsers(help="accelerate command helpers") + + # Register commands + config_command_parser(subparsers=subparsers) + launch_command_parser(subparsers=subparsers) + test_command_parser(subparsers=subparsers) + env_command_parser(subparsers=subparsers) + + # Let's go + args = parser.parse_args() + + if not hasattr(args, "func"): + parser.print_help() + exit(1) + + # Run + args.func(args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/__init__.py new file mode 100644 index 0000000..1171983 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/__init__.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os + +from accelerate.utils import ComputeEnvironment + +from .cluster import get_cluster_input +from .config_args import cache_dir, default_config_file, default_yaml_config_file, load_config_from_file # noqa: F401 +from .config_utils import _ask_field, _convert_compute_environment +from .sagemaker import get_sagemaker_input + + +def get_user_input(): + compute_environment = _ask_field( + "In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): ", + _convert_compute_environment, + error_message="Please enter 0 or 1", + ) + if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER: + config = get_sagemaker_input() + else: + config = get_cluster_input() + return config + + +def config_command_parser(subparsers=None): + if subparsers is not None: + parser = subparsers.add_parser("config") + else: + parser = argparse.ArgumentParser("Accelerate config command") + + parser.add_argument( + "--config_file", + default=None, + help=( + "The path to use to store the config file. Will default to a file named default_config.yaml in the cache " + "location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have " + "such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed " + "with 'huggingface'." + ), + ) + + if subparsers is not None: + parser.set_defaults(func=config_command) + return parser + + +def config_command(args): + config = get_user_input() + if args.config_file is not None: + config_file = args.config_file + else: + if not os.path.isdir(cache_dir): + os.makedirs(cache_dir) + config_file = default_yaml_config_file + + if config_file.endswith(".json"): + config.to_json_file(config_file) + else: + config.to_yaml_file(config_file) + + +def main(): + parser = config_command_parser() + args = parser.parse_args() + config_command(args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/cluster.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/cluster.py new file mode 100644 index 0000000..e86a0ab --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/cluster.py @@ -0,0 +1,349 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ...utils import ComputeEnvironment, DistributedType, is_deepspeed_available, is_transformers_available +from ...utils.constants import ( + DEEPSPEED_MULTINODE_LAUNCHERS, + FSDP_AUTO_WRAP_POLICY, + FSDP_BACKWARD_PREFETCH, + FSDP_SHARDING_STRATEGY, + FSDP_STATE_DICT_TYPE, +) +from .config_args import ClusterConfig +from .config_utils import _ask_field, _convert_distributed_mode, _convert_yes_no_to_bool + + +def get_cluster_input(): + distributed_type = _ask_field( + "Which type of machine are you using? ([0] No distributed training, [1] multi-CPU, [2] multi-GPU, [3] TPU [4] MPS): ", + _convert_distributed_mode, + error_message="Please enter 0, 1, 2, 3 or 4.", + ) + + machine_rank = 0 + num_machines = 1 + num_processes = 1 + gpu_ids = None + main_process_ip = None + main_process_port = None + rdzv_backend = "static" + same_network = True + if distributed_type in [DistributedType.MULTI_GPU, DistributedType.MULTI_CPU]: + num_machines = _ask_field( + "How many different machines will you use (use more than 1 for multi-node training)? [1]: ", + lambda x: int(x), + default=1, + ) + if num_machines > 1: + machine_rank = _ask_field( + "What is the rank of this machine (from 0 to the number of machines - 1 )? [0]: ", + lambda x: int(x), + default=0, + ) + main_process_ip = _ask_field( + "What is the IP address of the machine that will host the main process? ", + ) + main_process_port = _ask_field( + "What is the port you will use to communicate with the main process? ", + lambda x: int(x), + ) + same_network = _ask_field( + "Are all the machines on the same local network? Answer `no` if nodes are on the cloud and/or on different network hosts [YES/no]: ", + _convert_yes_no_to_bool, + default=True, + error_message="Please enter yes or no.", + ) + if not same_network: + rdzv_backend = _ask_field( + "What rendezvous backend will you use? ('static', 'c10d', ...): ", default="static" + ) + + if distributed_type == DistributedType.NO: + use_cpu = _ask_field( + "Do you want to run your training on CPU only (even if a GPU is available)? [yes/NO]:", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + elif distributed_type == DistributedType.MULTI_CPU: + use_cpu = True + else: + use_cpu = False + + deepspeed_config = {} + if distributed_type in [DistributedType.MULTI_GPU, DistributedType.NO]: + use_deepspeed = _ask_field( + "Do you want to use DeepSpeed? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if use_deepspeed: + distributed_type = DistributedType.DEEPSPEED + assert ( + is_deepspeed_available() + ), "DeepSpeed is not installed => run `pip3 install deepspeed` or build it from source" + + if distributed_type == DistributedType.DEEPSPEED: + use_deepspeed_config = _ask_field( + "Do you want to specify a json file to a DeepSpeed config? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if use_deepspeed_config: + deepspeed_config["deepspeed_config_file"] = _ask_field( + "Please enter the path to the json DeepSpeed config file: ", + lambda x: str(x), + default="none", + ) + else: + deepspeed_config["zero_stage"] = _ask_field( + "What should be your DeepSpeed's ZeRO optimization stage (0, 1, 2, 3)? [2]: ", + lambda x: int(x), + default=2, + ) + + if deepspeed_config["zero_stage"] >= 2: + deepspeed_config["offload_optimizer_device"] = _ask_field( + "Where to offload optimizer states? [none/cpu/nvme]: ", + lambda x: str(x), + default="none", + ) + deepspeed_config["offload_param_device"] = _ask_field( + "Where to offload parameters? [none/cpu/nvme]: ", + lambda x: str(x), + default="none", + ) + deepspeed_config["gradient_accumulation_steps"] = _ask_field( + "How many gradient accumulation steps you're passing in your script? [1]: ", + lambda x: int(x), + default=1, + ) + use_gradient_clipping = _ask_field( + "Do you want to use gradient clipping? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if use_gradient_clipping: + deepspeed_config["gradient_clipping"] = _ask_field( + "What is the gradient clipping value? [1.0]: ", + lambda x: float(x), + default=1.0, + ) + if deepspeed_config["zero_stage"] == 3: + deepspeed_config["zero3_save_16bit_model"] = _ask_field( + "Do you want to save 16-bit model weights when using ZeRO Stage-3? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + deepspeed_config["zero3_init_flag"] = _ask_field( + "Do you want to enable `deepspeed.zero.Init` when using ZeRO Stage-3 for constructing massive models? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if deepspeed_config["zero3_init_flag"]: + if not is_transformers_available(): + raise Exception( + "When `zero3_init_flag` is set, it requires Transformers to be installed. " + "Please run `pip3 install transformers`." + ) + + if num_machines > 1: + launcher_query = "Which Type of launcher do you want to use " + for i, launcher in enumerate(DEEPSPEED_MULTINODE_LAUNCHERS): + launcher_query += f"[{i}] {launcher}, " + launcher_query = launcher_query[:-2] + ")? [0]: " + deepspeed_config["deepspeed_multinode_launcher"] = _ask_field( + launcher_query, + lambda x: DEEPSPEED_MULTINODE_LAUNCHERS[int(x)], + default=DEEPSPEED_MULTINODE_LAUNCHERS[0], + ) + + if deepspeed_config["deepspeed_multinode_launcher"] != DEEPSPEED_MULTINODE_LAUNCHERS[1]: + deepspeed_config["deepspeed_hostfile"] = _ask_field( + "DeepSpeed configures multi-node compute resources with hostfile. " + "Each row is of the format `hostname slots=[num_gpus]`, e.g., `localhost slots=2`; " + "for more information please refer official [documentation]" + "(https://www.deepspeed.ai/getting-started/#resource-configuration-multi-node). " + "Please specify the location of hostfile: ", + lambda x: str(x), + ) + + is_exclusion_filter = _ask_field( + "Do you want to specify exclusion filter string? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if is_exclusion_filter: + deepspeed_config["deepspeed_exclusion_filter"] = _ask_field( + "DeepSpeed exclusion filter string: ", + lambda x: str(x), + ) + + is_inclusion_filter = _ask_field( + "Do you want to specify inclusion filter string? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if is_inclusion_filter: + deepspeed_config["deepspeed_inclusion_filter"] = _ask_field( + "DeepSpeed inclusion filter string: ", + lambda x: str(x), + ) + + fsdp_config = {} + if distributed_type in [DistributedType.MULTI_GPU]: + use_fsdp = _ask_field( + "Do you want to use FullyShardedDataParallel? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + if use_fsdp: + distributed_type = DistributedType.FSDP + if distributed_type == DistributedType.FSDP: + sharding_strategy_query = "What should be your sharding strategy (" + for i, strategy in enumerate(FSDP_SHARDING_STRATEGY): + sharding_strategy_query += f"[{i+1}] {strategy}, " + sharding_strategy_query = sharding_strategy_query[:-2] + ")? [1]: " + fsdp_config["fsdp_sharding_strategy"] = _ask_field( + sharding_strategy_query, + lambda x: int(x), + default=1, + ) + fsdp_config["fsdp_offload_params"] = _ask_field( + "Do you want to offload parameters and gradients to CPU? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + fsdp_wrap_query = "What should be your auto wrap policy (" + for i, wrap_policy in enumerate(FSDP_AUTO_WRAP_POLICY): + fsdp_wrap_query += f"[{i}] {wrap_policy}, " + fsdp_wrap_query = fsdp_wrap_query[:-2] + ")? [0]: " + fsdp_config["fsdp_auto_wrap_policy"] = _ask_field( + fsdp_wrap_query, + lambda x: FSDP_AUTO_WRAP_POLICY[int(x)], + default="TRANSFORMER_BASED_WRAP", + ) + if fsdp_config["fsdp_auto_wrap_policy"] == FSDP_AUTO_WRAP_POLICY[0]: + fsdp_config["fsdp_transformer_layer_cls_to_wrap"] = _ask_field( + "What is the transformer layer class name (case-sensitive) to wrap ,e.g, `BertLayer`, `GPTJBlock`, `T5Block` ...? : ", + lambda x: str(x), + ) + elif fsdp_config["fsdp_auto_wrap_policy"] == FSDP_AUTO_WRAP_POLICY[1]: + fsdp_config["fsdp_min_num_params"] = _ask_field( + "What should be your FSDP's minimum number of parameters for Default Auto Wrapping Policy? [1e8]: ", + lambda x: int(x), + default=1e8, + ) + fsdp_backward_prefetch_query = "What should be your FSDP's backward prefetch policy (" + for i, backward_prefetch_policy in enumerate(FSDP_BACKWARD_PREFETCH): + fsdp_backward_prefetch_query += f"[{i}] {backward_prefetch_policy}, " + fsdp_backward_prefetch_query = fsdp_backward_prefetch_query[:-2] + ")? [0]: " + fsdp_config["fsdp_backward_prefetch_policy"] = _ask_field( + fsdp_backward_prefetch_query, + lambda x: FSDP_BACKWARD_PREFETCH[int(x)], + default="BACKWARD_PRE", + ) + fsdp_state_dict_type_query = "What should be your FSDP's state dict type (" + for i, state_dict_type in enumerate(FSDP_STATE_DICT_TYPE): + fsdp_state_dict_type_query += f"[{i}] {state_dict_type}, " + fsdp_state_dict_type_query = fsdp_state_dict_type_query[:-2] + ")? [0]: " + fsdp_config["fsdp_state_dict_type"] = _ask_field( + fsdp_state_dict_type_query, + lambda x: FSDP_STATE_DICT_TYPE[int(x)], + default="FULL_STATE_DICT", + ) + + if distributed_type == DistributedType.TPU: + main_training_function = _ask_field( + "What is the name of the function in your script that should be launched in all parallel scripts? [main]: ", + default="main", + ) + else: + main_training_function = "main" + + if distributed_type in [DistributedType.MULTI_CPU, DistributedType.MULTI_GPU, DistributedType.TPU]: + machine_type = str(distributed_type).split(".")[1].replace("MULTI_", "") + if machine_type == "TPU": + machine_type += " cores" + else: + machine_type += "(s)" + num_processes = _ask_field( + f"How many {machine_type} should be used for distributed training? [1]:", + lambda x: int(x), + default=1, + error_message="Please enter an integer.", + ) + elif distributed_type in [DistributedType.FSDP, DistributedType.DEEPSPEED]: + num_processes = _ask_field( + "How many GPU(s) should be used for distributed training? [1]:", + lambda x: int(x), + default=1, + error_message="Please enter an integer.", + ) + else: + num_processes = 1 + + if distributed_type in [DistributedType.MULTI_GPU, DistributedType.NO] and not use_cpu: + gpu_ids = _ask_field( + "What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:", + default="all", + ) + + if distributed_type != DistributedType.TPU: + if distributed_type == DistributedType.DEEPSPEED and use_deepspeed_config: + mixed_precision = "no" + else: + mixed_precision = _ask_field( + "Do you wish to use FP16 or BF16 (mixed precision)? [NO/fp16/bf16]: ", + lambda x: str(x).lower(), + default="no", + ) + else: + mixed_precision = "no" + + downcast_bf16 = "no" + if distributed_type == DistributedType.TPU and mixed_precision == "bf16": + downcast_bf16 = _ask_field( + "Should `torch.float` be cast as `bfloat16` and `torch.double` remain `float32` on TPUs?", default="no" + ) + + return ClusterConfig( + compute_environment=ComputeEnvironment.LOCAL_MACHINE, + distributed_type=distributed_type, + num_processes=num_processes, + gpu_ids=gpu_ids, + mixed_precision=mixed_precision, + downcast_bf16=downcast_bf16, + machine_rank=machine_rank, + num_machines=num_machines, + main_process_ip=main_process_ip, + main_process_port=main_process_port, + main_training_function=main_training_function, + deepspeed_config=deepspeed_config, + fsdp_config=fsdp_config, + use_cpu=use_cpu, + rdzv_backend=rdzv_backend, + same_network=same_network, + ) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_args.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_args.py new file mode 100644 index 0000000..43faf45 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_args.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import os +from dataclasses import dataclass +from enum import Enum +from typing import Optional, Union + +import yaml + +from ...utils import ComputeEnvironment, DistributedType, SageMakerDistributedType +from ...utils.constants import SAGEMAKER_PYTHON_VERSION, SAGEMAKER_PYTORCH_VERSION, SAGEMAKER_TRANSFORMERS_VERSION + + +hf_cache_home = os.path.expanduser( + os.getenv("HF_HOME", os.path.join(os.getenv("XDG_CACHE_HOME", "~/.cache"), "huggingface")) +) +cache_dir = os.path.join(hf_cache_home, "accelerate") +default_json_config_file = os.path.join(cache_dir, "default_config.yaml") +default_yaml_config_file = os.path.join(cache_dir, "default_config.yaml") + +# For backward compatibility: the default config is the json one if it's the only existing file. +if os.path.isfile(default_yaml_config_file) or not os.path.isfile(default_json_config_file): + default_config_file = default_yaml_config_file +else: + default_config_file = default_json_config_file + + +def load_config_from_file(config_file): + config_file_exists = config_file is not None and os.path.isfile(config_file) + config_file = config_file if config_file_exists else default_config_file + with open(config_file, "r", encoding="utf-8") as f: + if config_file.endswith(".json"): + if ( + json.load(f).get("compute_environment", ComputeEnvironment.LOCAL_MACHINE) + == ComputeEnvironment.LOCAL_MACHINE + ): + config_class = ClusterConfig + else: + config_class = SageMakerConfig + return config_class.from_json_file(json_file=config_file) + else: + if ( + yaml.safe_load(f).get("compute_environment", ComputeEnvironment.LOCAL_MACHINE) + == ComputeEnvironment.LOCAL_MACHINE + ): + config_class = ClusterConfig + else: + config_class = SageMakerConfig + return config_class.from_yaml_file(yaml_file=config_file) + + +@dataclass +class BaseConfig: + compute_environment: ComputeEnvironment + distributed_type: Union[DistributedType, SageMakerDistributedType] + mixed_precision: str + use_cpu: bool + + def to_dict(self): + result = self.__dict__ + # For serialization, it's best to convert Enums to strings (or their underlying value type). + for key, value in result.items(): + if isinstance(value, Enum): + result[key] = value.value + return result + + @classmethod + def from_json_file(cls, json_file=None): + json_file = default_json_config_file if json_file is None else json_file + with open(json_file, "r", encoding="utf-8") as f: + config_dict = json.load(f) + if "compute_environment" not in config_dict: + config_dict["compute_environment"] = ComputeEnvironment.LOCAL_MACHINE + if "mixed_precision" not in config_dict: + config_dict["mixed_precision"] = "fp16" if ("fp16" in config_dict and config_dict["fp16"]) else "no" + if "fp16" in config_dict: # Convert the config to the new format. + del config_dict["fp16"] + if "use_cpu" not in config_dict: + config_dict["use_cpu"] = False + return cls(**config_dict) + + def to_json_file(self, json_file): + with open(json_file, "w", encoding="utf-8") as f: + content = json.dumps(self.to_dict(), indent=2, sort_keys=True) + "\n" + f.write(content) + + @classmethod + def from_yaml_file(cls, yaml_file=None): + yaml_file = default_yaml_config_file if yaml_file is None else yaml_file + with open(yaml_file, "r", encoding="utf-8") as f: + config_dict = yaml.safe_load(f) + if "compute_environment" not in config_dict: + config_dict["compute_environment"] = ComputeEnvironment.LOCAL_MACHINE + + if "mixed_precision" not in config_dict: + config_dict["mixed_precision"] = "fp16" if ("fp16" in config_dict and config_dict["fp16"]) else "no" + if "fp16" in config_dict: # Convert the config to the new format. + del config_dict["fp16"] + if "use_cpu" not in config_dict: + config_dict["use_cpu"] = False + + return cls(**config_dict) + + def to_yaml_file(self, yaml_file): + with open(yaml_file, "w", encoding="utf-8") as f: + yaml.safe_dump(self.to_dict(), f) + + def __post_init__(self): + if isinstance(self.compute_environment, str): + self.compute_environment = ComputeEnvironment(self.compute_environment) + if isinstance(self.distributed_type, str): + if self.compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER: + self.distributed_type = SageMakerDistributedType(self.distributed_type) + else: + self.distributed_type = DistributedType(self.distributed_type) + + +@dataclass +class ClusterConfig(BaseConfig): + num_processes: int + machine_rank: int = 0 + num_machines: int = 1 + gpu_ids: Optional[str] = None + main_process_ip: Optional[str] = None + main_process_port: Optional[int] = None + rdzv_backend: Optional[str] = "static" + same_network: Optional[bool] = False + main_training_function: str = "main" + + # args for deepspeed_plugin + deepspeed_config: dict = None + # args for fsdp + fsdp_config: dict = None + # args for TPU + downcast_bf16: bool = False + + def __post_init__(self): + if self.deepspeed_config is None: + self.deepspeed_config = {} + if self.fsdp_config is None: + self.fsdp_config = {} + return super().__post_init__() + + +@dataclass +class SageMakerConfig(BaseConfig): + ec2_instance_type: str + iam_role_name: str + image_uri: str + profile: Optional[str] = None + region: str = "us-east-1" + num_machines: int = 1 + base_job_name: str = f"accelerate-sagemaker-{num_machines}" + pytorch_version: str = SAGEMAKER_PYTORCH_VERSION + transformers_version: str = SAGEMAKER_TRANSFORMERS_VERSION + py_version: str = SAGEMAKER_PYTHON_VERSION + sagemaker_inputs_file: str = None + sagemaker_metrics_file: str = None diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_utils.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_utils.py new file mode 100644 index 0000000..9dd1f4c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/config_utils.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ...utils.dataclasses import ComputeEnvironment, DistributedType, SageMakerDistributedType + + +def _ask_field(input_text, convert_value=None, default=None, error_message=None): + ask_again = True + while ask_again: + result = input(input_text) + try: + if default is not None and len(result) == 0: + return default + return convert_value(result) if convert_value is not None else result + except: + if error_message is not None: + print(error_message) + + +def _convert_compute_environment(value): + value = int(value) + return ComputeEnvironment(["LOCAL_MACHINE", "AMAZON_SAGEMAKER"][value]) + + +def _convert_distributed_mode(value): + value = int(value) + return DistributedType(["NO", "MULTI_CPU", "MULTI_GPU", "TPU", "MPS"][value]) + + +def _convert_sagemaker_distributed_mode(value): + value = int(value) + return SageMakerDistributedType(["NO", "DATA_PARALLEL", "MODEL_PARALLEL"][value]) + + +def _convert_yes_no_to_bool(value): + return {"yes": True, "no": False}[value.lower()] diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/sagemaker.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/sagemaker.py new file mode 100644 index 0000000..b3a45c9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/config/sagemaker.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import json +import os + +from ...utils.constants import SAGEMAKER_PARALLEL_EC2_INSTANCES +from ...utils.dataclasses import ComputeEnvironment, SageMakerDistributedType +from ...utils.imports import is_boto3_available +from .config_args import SageMakerConfig +from .config_utils import _ask_field, _convert_sagemaker_distributed_mode, _convert_yes_no_to_bool + + +if is_boto3_available(): + import boto3 # noqa: F401 + + +def _create_iam_role_for_sagemaker(role_name): + iam_client = boto3.client("iam") + + sagemaker_trust_policy = { + "Version": "2012-10-17", + "Statement": [ + {"Effect": "Allow", "Principal": {"Service": "sagemaker.amazonaws.com"}, "Action": "sts:AssumeRole"} + ], + } + try: + # create the role, associated with the chosen trust policy + iam_client.create_role( + RoleName=role_name, AssumeRolePolicyDocument=json.dumps(sagemaker_trust_policy, indent=2) + ) + policy_document = { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "sagemaker:*", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:GetAuthorizationToken", + "cloudwatch:PutMetricData", + "cloudwatch:GetMetricData", + "cloudwatch:GetMetricStatistics", + "cloudwatch:ListMetrics", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:GetLogEvents", + "s3:CreateBucket", + "s3:ListBucket", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:PutObject", + ], + "Resource": "*", + } + ], + } + # attach policy to role + iam_client.put_role_policy( + RoleName=role_name, + PolicyName=f"{role_name}_policy_permission", + PolicyDocument=json.dumps(policy_document, indent=2), + ) + except iam_client.exceptions.EntityAlreadyExistsException: + print(f"role {role_name} already exists. Using existing one") + + +def _get_iam_role_arn(role_name): + iam_client = boto3.client("iam") + return iam_client.get_role(RoleName=role_name)["Role"]["Arn"] + + +def get_sagemaker_input(): + credentials_configuration = _ask_field( + "How do you want to authorize? ([0] AWS Profile, [1] Credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)): ", + lambda x: int(x), + ) + aws_profile = None + if credentials_configuration == 0: + aws_profile = _ask_field("Enter your AWS Profile name: [default] ", default="default") + os.environ["AWS_PROFILE"] = aws_profile + else: + print( + "Note you will need to provide AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY when you launch you training script with," + "`accelerate launch --aws_access_key_id XXX --aws_secret_access_key YYY`" + ) + aws_access_key_id = _ask_field("AWS Access Key ID: ") + os.environ["AWS_ACCESS_KEY_ID"] = aws_access_key_id + + aws_secret_access_key = _ask_field("AWS Secret Access Key: ") + os.environ["AWS_SECRET_ACCESS_KEY"] = aws_secret_access_key + + aws_region = _ask_field("Enter your AWS Region: [us-east-1]", default="us-east-1") + os.environ["AWS_DEFAULT_REGION"] = aws_region + + role_management = _ask_field( + "Do you already have an IAM Role for executing Amazon SageMaker Training Jobs? ([0] provide IAM Role name, [1] create new IAM role using credentials: ", + lambda x: int(x), + ) + if role_management == 0: + iam_role_name = _ask_field("Enter your IAM role name: ") + else: + iam_role_name = "accelerate_sagemaker_execution_role" + print(f'Accelerate will create an iam role "{iam_role_name}" using the provided credentials') + _create_iam_role_for_sagemaker(iam_role_name) + + is_custom_docker_image = _ask_field( + "Do you want to use custom Docker image? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + docker_image = None + if is_custom_docker_image: + docker_image = _ask_field("Enter your Docker image: ", lambda x: str(x).lower()) + + is_sagemaker_inputs_enabled = _ask_field( + "Do you want to provide SageMaker input channels with data locations? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + sagemaker_inputs_file = None + if is_sagemaker_inputs_enabled: + sagemaker_inputs_file = _ask_field( + "Enter the path to the SageMaker inputs TSV file with columns (channel_name, data_location): ", + lambda x: str(x).lower(), + ) + + is_sagemaker_metrics_enabled = _ask_field( + "Do you want to enable SageMaker metrics? [yes/NO]: ", + _convert_yes_no_to_bool, + default=False, + error_message="Please enter yes or no.", + ) + sagemaker_metrics_file = None + if is_sagemaker_metrics_enabled: + sagemaker_metrics_file = _ask_field( + "Enter the path to the SageMaker metrics TSV file with columns (metric_name, metric_regex): ", + lambda x: str(x).lower(), + ) + + distributed_type = _ask_field( + "What is the distributed mode? ([0] No distributed training, [1] data parallelism): ", + _convert_sagemaker_distributed_mode, + error_message="Please enter 0 or 1", + ) + + ec2_instance_query = "Which EC2 instance type you want to use for your training " + if distributed_type != SageMakerDistributedType.NO: + ec2_instance_query += "(" + for i, instance_type in enumerate(SAGEMAKER_PARALLEL_EC2_INSTANCES): + ec2_instance_query += f"[{i}] {instance_type}, " + ec2_instance_query = ec2_instance_query[:-2] + ")? [0]: " + ec2_instance_type = _ask_field(ec2_instance_query, lambda x: SAGEMAKER_PARALLEL_EC2_INSTANCES[int(x)]) + else: + ec2_instance_query += "? [ml.p3.2xlarge]:" + ec2_instance_type = _ask_field(ec2_instance_query, lambda x: str(x).lower(), default="ml.p3.2xlarge") + + num_machines = 1 + if ( + distributed_type == SageMakerDistributedType.DATA_PARALLEL + or distributed_type == SageMakerDistributedType.MODEL_PARALLEL + ): + num_machines = _ask_field( + "How many machines do you want use? [1]: ", + lambda x: int(x), + default=1, + ) + + mixed_precision = _ask_field( + "Do you wish to use FP16 or BF16 (mixed precision)? [No/FP16/BF16]: ", + lambda x: str(x), + default="No", + ) + + return SageMakerConfig( + image_uri=docker_image, + compute_environment=ComputeEnvironment.AMAZON_SAGEMAKER, + distributed_type=distributed_type, + use_cpu=False, + ec2_instance_type=ec2_instance_type, + profile=aws_profile, + region=aws_region, + iam_role_name=iam_role_name, + mixed_precision=mixed_precision, + num_machines=num_machines, + sagemaker_inputs_file=sagemaker_inputs_file, + sagemaker_metrics_file=sagemaker_metrics_file, + ) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/env.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/env.py new file mode 100644 index 0000000..b66008e --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/env.py @@ -0,0 +1,68 @@ +import argparse +import os +import platform + +import numpy as np +import torch + +from accelerate import __version__ as version +from accelerate.commands.config import default_config_file, load_config_from_file + + +def env_command_parser(subparsers=None): + if subparsers is not None: + parser = subparsers.add_parser("env") + else: + parser = argparse.ArgumentParser("Accelerate env command") + + parser.add_argument( + "--config_file", default=None, help="The config file to use for the default values in the launching script." + ) + + if subparsers is not None: + parser.set_defaults(func=env_command) + return parser + + +def env_command(args): + pt_version = torch.__version__ + pt_cuda_available = torch.cuda.is_available() + + accelerate_config = "Not found" + # Get the default from the config file. + if args.config_file is not None or os.path.isfile(default_config_file): + accelerate_config = load_config_from_file(args.config_file).to_dict() + + info = { + "`Accelerate` version": version, + "Platform": platform.platform(), + "Python version": platform.python_version(), + "Numpy version": np.__version__, + "PyTorch version (GPU?)": f"{pt_version} ({pt_cuda_available})", + } + + print("\nCopy-and-paste the text below in your GitHub issue\n") + print("\n".join([f"- {prop}: {val}" for prop, val in info.items()])) + + print("- `Accelerate` default config:" if args.config_file is None else "- `Accelerate` config passed:") + accelerate_config_str = ( + "\n".join([f"\t- {prop}: {val}" for prop, val in accelerate_config.items()]) + if isinstance(accelerate_config, dict) + else f"\t{accelerate_config}" + ) + print(accelerate_config_str) + + info["`Accelerate` configs"] = accelerate_config + + return info + + +def main() -> int: + parser = env_command_parser() + args = parser.parse_args() + env_command(args) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/launch.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/launch.py new file mode 100644 index 0000000..b235ab1 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/launch.py @@ -0,0 +1,924 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import importlib +import logging +import os +import subprocess +import sys +import warnings +from ast import literal_eval +from pathlib import Path +from typing import Dict, List + +import torch +import numpy as np + +import psutil +from accelerate.commands.config import default_config_file, load_config_from_file +from accelerate.commands.config.config_args import SageMakerConfig +from accelerate.state import get_int_from_env +from accelerate.utils import ( + ComputeEnvironment, + DistributedType, + PrecisionType, + PrepareForLaunch, + _filter_args, + is_deepspeed_available, + is_rich_available, + is_sagemaker_available, + is_torch_version, + patch_environment, +) +from accelerate.utils.constants import DEEPSPEED_MULTINODE_LAUNCHERS +from accelerate.utils.dataclasses import SageMakerDistributedType + + +if is_rich_available(): + from rich import get_console + from rich.logging import RichHandler + + FORMAT = "%(message)s" + logging.basicConfig(format=FORMAT, datefmt="[%X]", handlers=[RichHandler()]) + + +if is_torch_version(">=", "1.9.0"): + import torch.distributed.run as distrib_run + +logger = logging.getLogger(__name__) + + +def launch_command_parser(subparsers=None): + if subparsers is not None: + parser = subparsers.add_parser("launch") + else: + parser = argparse.ArgumentParser("Accelerate launch command") + + parser.add_argument( + "--config_file", default=None, help="The config file to use for the default values in the launching script." + ) + parser.add_argument( + "--multi_gpu", + default=False, + action="store_true", + help="Whether or not this should launch a distributed GPU training.", + ) + parser.add_argument( + "--use_mps_device", + default=False, + action="store_true", + help="Whether or not this should use MPS-enabled GPU device on MacOS machines.", + ) + parser.add_argument( + "--use_deepspeed", + default=False, + action="store_true", + help="Whether to use deepspeed.", + ) + parser.add_argument( + "--deepspeed_config_file", + default=None, + type=str, + help="DeepSpeed config file.", + ) + parser.add_argument( + "--zero_stage", + default=None, + type=int, + help="DeepSpeed's ZeRO optimization stage (useful only when `use_deepspeed` flag is passed).", + ) + parser.add_argument( + "--offload_optimizer_device", + default=None, + type=str, + help="Decides where (none|cpu|nvme) to offload optimizer states (useful only when `use_deepspeed` flag is passed).", + ) + parser.add_argument( + "--offload_param_device", + default=None, + type=str, + help="Decides where (none|cpu|nvme) to offload parameters (useful only when `use_deepspeed` flag is passed).", + ) + parser.add_argument( + "--gradient_accumulation_steps", + default=None, + type=int, + help="No of gradient_accumulation_steps used in your training script (useful only when `use_deepspeed` flag is passed).", + ) + parser.add_argument( + "--gradient_clipping", + default=None, + type=float, + help="gradient clipping value used in your training script (useful only when `use_deepspeed` flag is passed).", + ) + parser.add_argument( + "--zero3_init_flag", + default=None, + type=str, + help="Decides Whether (true|false) to enable `deepspeed.zero.Init` for constructing massive models. " + "Only applicable with DeepSpeed ZeRO Stage-3.", + ) + parser.add_argument( + "--zero3_save_16bit_model", + default=None, + type=str, + help="Decides Whether (true|false) to save 16-bit model weights when using ZeRO Stage-3. " + "Only applicable with DeepSpeed ZeRO Stage-3.", + ) + parser.add_argument( + "--deepspeed_hostfile", + default=None, + type=str, + help="DeepSpeed hostfile for configuring multi-node compute resources.", + ) + parser.add_argument( + "--deepspeed_exclusion_filter", + default=None, + type=str, + help="DeepSpeed exclusion filter string when using mutli-node setup.", + ) + parser.add_argument( + "--deepspeed_inclusion_filter", + default=None, + type=str, + help="DeepSpeed inclusion filter string when using mutli-node setup.", + ) + parser.add_argument( + "--deepspeed_multinode_launcher", + default=None, + type=str, + help="DeepSpeed multi-node launcher to use.", + ) + parser.add_argument( + "--use_fsdp", + default=False, + action="store_true", + help="Whether to use fsdp.", + ) + parser.add_argument( + "--fsdp_offload_params", + default="false", + type=str, + help="Decides Whether (true|false) to offload parameters and gradients to CPU. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_min_num_params", + type=int, + default=1e8, + help="FSDP's minimum number of parameters for Default Auto Wrapping. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_sharding_strategy", + type=int, + default=1, + help="FSDP's Sharding Strategy. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_auto_wrap_policy", + type=str, + default=None, + help="FSDP's auto wrap policy. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_transformer_layer_cls_to_wrap", + default=None, + type=str, + help="Transformer layer class name (case-sensitive) to wrap ,e.g, `BertLayer`, `GPTJBlock`, `T5Block` .... " + "(useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_backward_prefetch_policy", + default=None, + type=str, + help="FSDP's backward prefetch policy. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--fsdp_state_dict_type", + default=None, + type=str, + help="FSDP's state dict type. (useful only when `use_fsdp` flag is passed).", + ) + parser.add_argument( + "--offload_params", + default=None, + type=str, + help="This argument is deprecated. Use `fsdp_offload_params` instead.", + ) + parser.add_argument( + "--min_num_params", + type=int, + default=None, + help="This argument is deprecated. Use `fsdp_min_num_params` instead.", + ) + parser.add_argument( + "--sharding_strategy", + type=int, + default=None, + help="This argument is deprecated. Use `fsdp_sharding_strategy` instead.", + ) + parser.add_argument( + "--transformer_layer_cls_to_wrap", + default=None, + type=str, + help="This argument is deprecated. Use `fsdp_transformer_layer_cls_to_wrap` instead.", + ) + parser.add_argument( + "--tpu", default=False, action="store_true", help="Whether or not this should launch a TPU training." + ) + parser.add_argument( + "--mixed_precision", + type=str, + choices=["no", "fp16", "bf16"], + help="Whether or not to use mixed precision training. " + "Choose between FP16 and BF16 (bfloat16) training. " + "BF16 training is only supported on Nvidia Ampere GPUs and PyTorch 1.10 or later.", + ) + + parser.add_argument( + "--fp16", default=False, action="store_true", help="Whether or not to use mixed precision training." + ) + parser.add_argument( + "--cpu", default=False, action="store_true", help="Whether or not to force the training on the CPU." + ) + parser.add_argument( + "--num_processes", type=int, default=None, help="The total number of processes to be launched in parallel." + ) + parser.add_argument( + "--num_machines", type=int, default=None, help="The total number of machines used in this training." + ) + parser.add_argument( + "--gpu_ids", + default=None, + help="What GPUs (by id) should be used for training on this machine as a comma-seperated list", + ) + parser.add_argument( + "--machine_rank", type=int, default=None, help="The rank of the machine on which this script is launched." + ) + parser.add_argument("--main_process_ip", type=str, default=None, help="The IP address of the machine of rank 0.") + parser.add_argument( + "--main_process_port", + type=int, + default=None, + help="The port to use to communicate with the machine of rank 0.", + ) + # Rendezvous related arguments + parser.add_argument( + "--rdzv_conf", + type=str, + default="", + help="Additional rendezvous configuration (=,=,...).", + ) + parser.add_argument( + "--max_restarts", + type=int, + default=0, + help="Maximum number of worker group restarts before failing.", + ) + parser.add_argument( + "--monitor_interval", + type=float, + default=5, + help="Interval, in seconds, to monitor the state of workers.", + ) + parser.add_argument( + "--main_training_function", + type=str, + default=None, + help="The name of the main function to be executed in your script (only for TPU training).", + ) + parser.add_argument( + "--downcast_bf16", + action="store_true", + help="Whether when using bf16 precision on TPUs if both float and double tensors are cast to bfloat16 or if double tensors remain as float32", + ) + parser.add_argument( + "-m", + "--module", + action="store_true", + help="Change each process to interpret the launch script as a Python module, executing with the same behavior as 'python -m'.", + ) + parser.add_argument( + "--no_python", + action="store_true", + help="Skip prepending the training script with 'python' - just execute it directly. Useful when the script is not a Python script.", + ) + parser.add_argument( + "--num_cpu_threads_per_process", + type=int, + default=None, + help="The number of CPU threads per process. Can be tuned for optimal performance.", + ) + parser.add_argument( + "--aws_access_key_id", + type=str, + default=None, + help="The AWS_ACCESS_KEY_ID used to launch the Amazon SageMaker training job", + ) + parser.add_argument( + "--aws_secret_access_key", + type=str, + default=None, + help="The AWS_SECRET_ACCESS_KEY used to launch the Amazon SageMaker training job.", + ) + parser.add_argument( + "--debug", + action="store_true", + help="Whether to print out the torch.distributed stack trace when something fails.", + ) + parser.add_argument( + "training_script", + type=str, + help=( + "The full path to the script to be launched in parallel, followed by all the arguments for the training " + "script." + ), + ) + + # Other arguments of the training scripts + parser.add_argument("training_script_args", nargs=argparse.REMAINDER, help="Arguments of the training script.") + + if subparsers is not None: + parser.set_defaults(func=launch_command) + return parser + + +def simple_launcher(args): + cmd = [] + if args.no_python and args.module: + raise ValueError("--module and --no_python cannot be used together") + if not args.no_python: + cmd.append(sys.executable) + if args.module: + cmd.append("-m") + cmd.append(args.training_script) + cmd.extend(args.training_script_args) + + current_env = os.environ.copy() + current_env["USE_CPU"] = str(args.cpu or args.use_cpu) + current_env["USE_MPS_DEVICE"] = str(args.use_mps_device) + if args.use_mps_device: + current_env["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" + elif args.gpu_ids != "all": + current_env["CUDA_VISIBLE_DEVICES"] = args.gpu_ids + if args.num_machines > 1: + current_env["MASTER_ADDR"] = args.main_process_ip + current_env["MASTER_PORT"] = str(args.main_process_port) + elif args.num_processes > 1: + current_env["MASTER_ADDR"] = args.main_process_ip if args.main_process_ip is not None else "127.0.0.1" + current_env["MASTER_PORT"] = str(args.main_process_port) if args.main_process_port is not None else "29500" + + try: + mixed_precision = PrecisionType(args.mixed_precision.lower()) + except ValueError: + raise ValueError( + f"Unknown mixed_precision mode: {args.mixed_precision.lower()}. Choose between {PrecisionType.list()}." + ) + + if args.fp16: + warnings.warn('--fp16 flag is deprecated. Use "--mixed_precision fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + current_env["MIXED_PRECISION"] = str(mixed_precision) + current_env["OMP_NUM_THREADS"] = str(args.num_cpu_threads_per_process) + + process = subprocess.Popen(cmd, env=current_env) + process.wait() + if process.returncode != 0: + raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd) + + +def multi_gpu_launcher(args): + num_processes = getattr(args, "num_processes") + num_machines = getattr(args, "num_machines") + main_process_ip = getattr(args, "main_process_ip") + main_process_port = getattr(args, "main_process_port") + if num_machines > 1: + # setattr(args, "nproc_per_node", str(num_processes // num_machines)) + process_ids = np.arange(num_processes) + machines_processes = np.array_split(process_ids, num_machines) + setattr(args, "nproc_per_node", str(len(machines_processes[int(args.machine_rank)]))) + setattr(args, "nnodes", str(num_machines)) + setattr(args, "node_rank", int(args.machine_rank)) + if getattr(args, "same_network"): + setattr(args, "master_addr", str(main_process_ip)) + setattr(args, "master_port", str(main_process_port)) + else: + setattr(args, "rdzv_endpoint", f"{main_process_ip}:{main_process_port}") + else: + setattr(args, "nproc_per_node", str(num_processes)) + if main_process_port is not None: + setattr(args, "master_port", str(main_process_port)) + + if args.module and args.no_python: + raise ValueError("--module and --no_python cannot be used together") + elif args.module: + setattr(args, "module", True) + elif args.no_python: + setattr(args, "no_python", True) + + current_env = os.environ.copy() + gpu_ids = getattr(args, "gpu_ids") + if gpu_ids != "all": + current_env["CUDA_VISIBLE_DEVICES"] = gpu_ids + mixed_precision = args.mixed_precision.lower() + try: + mixed_precision = PrecisionType(mixed_precision) + except ValueError: + raise ValueError(f"Unknown mixed_precision mode: {mixed_precision}. Choose between {PrecisionType.list()}.") + + if args.fp16: + warnings.warn('--fp16 flag is deprecated. Use "--mixed_precision fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + current_env["MIXED_PRECISION"] = str(mixed_precision) + if args.use_fsdp: + if args.sharding_strategy is not None: + warnings.warn( + "`sharding_strategy` is deprecated and will be removed in version 0.13.0 of 🤗 Accelerate. Use" + " `fsdp_sharding_strategy` instead", + FutureWarning, + ) + args.fsdp_sharding_strategy = args.sharding_strategy + + if args.offload_params is not None: + warnings.warn( + "`offload_params` is deprecated and will be removed in version 0.13.0 of 🤗 Accelerate. Use" + " `fsdp_offload_params` instead", + FutureWarning, + ) + args.fsdp_offload_params = args.offload_params + + if args.min_num_params is not None: + warnings.warn( + "`min_num_params` is deprecated and will be removed in version 0.13.0 of 🤗 Accelerate. Use" + " `fsdp_min_num_params` instead", + FutureWarning, + ) + args.fsdp_min_num_params = args.min_num_params + + if args.transformer_layer_cls_to_wrap is not None: + warnings.warn( + "`transformer_layer_cls_to_wrap` is deprecated and will be removed in version 0.13.0 of 🤗 Accelerate. Use" + " `fsdp_transformer_layer_cls_to_wrap` instead", + FutureWarning, + ) + args.fsdp_transformer_layer_cls_to_wrap = args.transformer_layer_cls_to_wrap + + current_env["USE_FSDP"] = "true" + current_env["FSDP_SHARDING_STRATEGY"] = str(args.fsdp_sharding_strategy) + current_env["FSDP_OFFLOAD_PARAMS"] = str(args.fsdp_offload_params).lower() + current_env["FSDP_MIN_NUM_PARAMS"] = str(args.fsdp_min_num_params) + if args.fsdp_auto_wrap_policy is not None: + current_env["FSDP_AUTO_WRAP_POLICY"] = str(args.fsdp_auto_wrap_policy) + if args.fsdp_transformer_layer_cls_to_wrap is not None: + current_env["FSDP_TRANSFORMER_CLS_TO_WRAP"] = str(args.fsdp_transformer_layer_cls_to_wrap) + if args.fsdp_backward_prefetch_policy is not None: + current_env["FSDP_BACKWARD_PREFETCH"] = str(args.fsdp_backward_prefetch_policy) + if args.fsdp_state_dict_type is not None: + current_env["FSDP_STATE_DICT_TYPE"] = str(args.fsdp_state_dict_type) + current_env["OMP_NUM_THREADS"] = str(args.num_cpu_threads_per_process) + if is_torch_version("<", "1.9.0"): + raise NotImplementedError("Multi-node training requires pytorch>=1.9.0") + + debug = getattr(args, "debug", False) + args = _filter_args(args) + with patch_environment(**current_env): + try: + distrib_run.run(args) + except: + if debug: + console = get_console() + console.print("\n[bold red]Using --debug, `torch.distributed` Stack Trace:[/bold red]") + console.print_exception(suppress=[__file__], show_locals=False) + + +def deepspeed_launcher(args): + if not is_deepspeed_available(): + raise ImportError("DeepSpeed is not installed => run `pip3 install deepspeed` or build it from source.") + num_processes = getattr(args, "num_processes") + num_machines = getattr(args, "num_machines") + main_process_ip = getattr(args, "main_process_ip") + main_process_port = getattr(args, "main_process_port") + if num_machines > 1 and args.deepspeed_multinode_launcher != DEEPSPEED_MULTINODE_LAUNCHERS[1]: + cmd = ["deepspeed", "--no_local_rank"] + cmd.extend(["--hostfile", str(args.deepspeed_hostfile), "--launcher", str(args.deepspeed_multinode_launcher)]) + if args.deepspeed_exclusion_filter is not None: + cmd.extend( + [ + "--exclude", + str(args.deepspeed_exclusion_filter), + ] + ) + elif args.deepspeed_inclusion_filter is not None: + cmd.extend( + [ + "--include", + str(args.deepspeed_inclusion_filter), + ] + ) + else: + cmd.extend(["--num_gpus", str(args.num_processes // args.num_machines)]) + + if args.module and args.no_python: + raise ValueError("--module and --no_python cannot be used together") + elif args.module: + cmd.append("--module") + elif args.no_python: + cmd.append("--no_python") + cmd.append(args.training_script) + cmd.extend(args.training_script_args) + elif num_machines > 1 and args.deepspeed_multinode_launcher == DEEPSPEED_MULTINODE_LAUNCHERS[1]: + setattr(args, "nproc_per_node", str(num_processes // num_machines)) + setattr(args, "nnodes", str(num_machines)) + setattr(args, "node_rank", int(args.machine_rank)) + if getattr(args, "same_network"): + setattr(args, "master_addr", str(main_process_ip)) + setattr(args, "master_port", str(main_process_port)) + else: + setattr(args, "rdzv_endpoint", f"{main_process_ip}:{main_process_port}") + else: + setattr(args, "nproc_per_node", str(num_processes)) + if main_process_port is not None: + setattr(args, "master_port", str(main_process_port)) + + if args.module and args.no_python: + raise ValueError("--module and --no_python cannot be used together") + elif args.module: + setattr(args, "module", True) + elif args.no_python: + setattr(args, "no_python", True) + + current_env = os.environ.copy() + gpu_ids = getattr(args, "gpu_ids") + if gpu_ids != "all": + current_env["CUDA_VISIBLE_DEVICES"] = gpu_ids + try: + mixed_precision = PrecisionType(args.mixed_precision.lower()) + except ValueError: + raise ValueError( + f"Unknown mixed_precision mode: {args.mixed_precision.lower()}. Choose between {PrecisionType.list()}." + ) + + if args.fp16: + warnings.warn('--fp16 flag is deprecated. Use "--mixed_precision fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + current_env["PYTHONPATH"] = sys.executable + current_env["MIXED_PRECISION"] = str(mixed_precision) + current_env["USE_DEEPSPEED"] = "true" + current_env["DEEPSPEED_ZERO_STAGE"] = str(args.zero_stage) + current_env["GRADIENT_ACCUMULATION_STEPS"] = str(args.gradient_accumulation_steps) + current_env["GRADIENT_CLIPPING"] = str(args.gradient_clipping).lower() + current_env["DEEPSPEED_OFFLOAD_OPTIMIZER_DEVICE"] = str(args.offload_optimizer_device).lower() + current_env["DEEPSPEED_OFFLOAD_PARAM_DEVICE"] = str(args.offload_param_device).lower() + current_env["DEEPSPEED_ZERO3_INIT"] = str(args.zero3_init_flag).lower() + current_env["DEEPSPEED_ZERO3_SAVE_16BIT_MODEL"] = str(args.zero3_save_16bit_model).lower() + if args.deepspeed_config_file is not None: + current_env["DEEPSPEED_CONFIG_FILE"] = str(args.deepspeed_config_file) + + if args.num_machines > 1 and args.deepspeed_multinode_launcher != DEEPSPEED_MULTINODE_LAUNCHERS[1]: + with open(".deepspeed_env", "a") as f: + for key, value in current_env.items(): + if ";" in value or " " in value: + continue + f.write(f"{key}={value}\n") + + process = subprocess.Popen(cmd, env=current_env) + process.wait() + if process.returncode != 0: + raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd) + else: + if is_torch_version("<", "1.9.0"): + raise NotImplementedError("Multi-node training requires pytorch>=1.9.0") + + debug = getattr(args, "debug", False) + args = _filter_args(args) + with patch_environment(**current_env): + try: + distrib_run.run(args) + except: + if debug: + console = get_console() + console.print("\n[bold red]Using --debug, `torch.distributed` Stack Trace:[/bold red]") + console.print_exception(suppress=[__file__], show_locals=False) + + +def tpu_launcher(args): + import torch_xla.distributed.xla_multiprocessing as xmp + + current_env = {} + + if args.no_python: + raise ValueError("--no_python cannot be used with TPU launcher") + + if args.mixed_precision == "bf16": + if args.downcast_bf16: + current_env["XLA_USE_BF16"] = "0" + current_env["XLA_DOWNCAST_BF16"] = "1" + else: + current_env["XLA_USE_BF16"] = "1" + current_env["XLA_DOWNCAST_BF16"] = "0" + + if args.module: + mod_name = args.training_script + else: + # Import training_script as a module + script_path = Path(args.training_script) + sys.path.append(str(script_path.parent.resolve())) + mod_name = script_path.stem + + mod = importlib.import_module(mod_name) + if not hasattr(mod, args.main_training_function): + raise ValueError( + f"Your training script should have a function named {args.main_training_function}, or you should pass a " + "different value to `--main_training_function`." + ) + + # Patch sys.argv + sys.argv = [mod.__file__] + args.training_script_args + + main_function = getattr(mod, args.main_training_function) + with patch_environment(**current_env): + xmp.spawn(PrepareForLaunch(main_function), args=(), nprocs=args.num_processes) + + +def _convert_nargs_to_dict(nargs: List[str]) -> Dict[str, str]: + if len(nargs) < 0: + return {} + # helper function to infer type for argsparser + + def _infer_type(s): + try: + s = float(s) + + if s // 1 == s: + return int(s) + return s + except ValueError: + return s + + parser = argparse.ArgumentParser() + _, unknown = parser.parse_known_args(nargs) + for index, argument in enumerate(unknown): + if argument.startswith(("-", "--")): + action = None + if index + 1 < len(unknown): # checks if next index would be in list + if unknown[index + 1].startswith(("-", "--")): # checks if next element is an key + # raise an error if element is store_true or store_false + raise ValueError( + "SageMaker doesn’t support argparse actions for `store_true` or `store_false`. Please define explicit types" + ) + else: # raise an error if last element is store_true or store_false + raise ValueError( + "SageMaker doesn’t support argparse actions for `store_true` or `store_false`. Please define explicit types" + ) + # adds argument to parser based on action_store true + if action is None: + parser.add_argument(argument, type=_infer_type) + else: + parser.add_argument(argument, action=action) + + return { + key: (literal_eval(value) if value == "True" or value == "False" else value) + for key, value in parser.parse_args(nargs).__dict__.items() + } + + +def sagemaker_launcher(sagemaker_config: SageMakerConfig, args): + if not is_sagemaker_available(): + raise ImportError( + "Please install sagemaker to be able to launch training on Amazon SageMaker with `pip install accelerate[sagemaker]`" + ) + if args.module or args.no_python: + raise ValueError( + "SageMaker requires a python training script file and cannot be used with --module or --no_python" + ) + + from sagemaker.huggingface import HuggingFace + + # configure environment + print("Configuring Amazon SageMaker environment") + os.environ["AWS_DEFAULT_REGION"] = sagemaker_config.region + + # configure credentials + if sagemaker_config.profile is not None: + os.environ["AWS_PROFILE"] = sagemaker_config.profile + elif args.aws_access_key_id is not None and args.aws_secret_access_key is not None: + os.environ["AWS_ACCESS_KEY_ID"] = args.aws_access_key_id + os.environ["AWS_SECRET_ACCESS_KEY"] = args.aws_secret_access_key + else: + raise EnvironmentError( + "You need to provide an aws_access_key_id and aws_secret_access_key when not using aws_profile" + ) + + # extract needed arguments + source_dir = os.path.dirname(args.training_script) + if not source_dir: # checks if string is empty + source_dir = "." + entry_point = os.path.basename(args.training_script) + if not entry_point.endswith(".py"): + raise ValueError(f'Your training script should be a python script and not "{entry_point}"') + + print("Converting Arguments to Hyperparameters") + hyperparameters = _convert_nargs_to_dict(args.training_script_args) + + try: + mixed_precision = PrecisionType(args.mixed_precision.lower()) + except ValueError: + raise ValueError( + f"Unknown mixed_precision mode: {args.mixed_precision.lower()}. Choose between {PrecisionType.list()}." + ) + + if args.fp16: + warnings.warn('--fp16 flag is deprecated. Use "--mixed_precision fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + # Environment variables to be set for use during training job + environment = { + "USE_SAGEMAKER": "true", + "MIXED_PRECISION": str(mixed_precision), + "SAGEMAKER_DISTRIBUTED_TYPE": sagemaker_config.distributed_type.value, + } + # configure distribution set up + distribution = None + if sagemaker_config.distributed_type == SageMakerDistributedType.DATA_PARALLEL: + distribution = {"smdistributed": {"dataparallel": {"enabled": True}}} + + # configure sagemaker inputs + sagemaker_inputs = None + if sagemaker_config.sagemaker_inputs_file is not None: + print(f"Loading SageMaker Inputs from {sagemaker_config.sagemaker_inputs_file} file") + sagemaker_inputs = {} + with open(sagemaker_config.sagemaker_inputs_file) as file: + for i, line in enumerate(file): + if i == 0: + continue + l = line.split("\t") + sagemaker_inputs[l[0]] = l[1].strip() + print(f"Loaded SageMaker Inputs: {sagemaker_inputs}") + + # configure sagemaker metrics + sagemaker_metrics = None + if sagemaker_config.sagemaker_metrics_file is not None: + print(f"Loading SageMaker Metrics from {sagemaker_config.sagemaker_metrics_file} file") + sagemaker_metrics = [] + with open(sagemaker_config.sagemaker_metrics_file) as file: + for i, line in enumerate(file): + if i == 0: + continue + l = line.split("\t") + metric_dict = { + "Name": l[0], + "Regex": l[1].strip(), + } + sagemaker_metrics.append(metric_dict) + print(f"Loaded SageMaker Metrics: {sagemaker_metrics}") + + # configure session + print("Creating Estimator") + huggingface_estimator = HuggingFace( + image_uri=sagemaker_config.image_uri, + entry_point=entry_point, + source_dir=source_dir, + role=sagemaker_config.iam_role_name, + transformers_version=sagemaker_config.transformers_version, + pytorch_version=sagemaker_config.pytorch_version, + py_version=sagemaker_config.py_version, + base_job_name=sagemaker_config.base_job_name, + instance_count=sagemaker_config.num_machines, + instance_type=sagemaker_config.ec2_instance_type, + debugger_hook_config=False, + distribution=distribution, + hyperparameters=hyperparameters, + environment=environment, + metric_definitions=sagemaker_metrics, + ) + + huggingface_estimator.fit(inputs=sagemaker_inputs) + print(f"You can find your model data at: {huggingface_estimator.model_data}") + + +def launch_command(args): + # Sanity checks + if sum([args.multi_gpu, args.tpu, args.use_deepspeed, args.use_fsdp]) > 1: + raise ValueError("You can only pick one between `--multi_gpu`, `--use_deepspeed`, `--tpu`, `--use_fsdp`.") + + defaults = None + warned = [] + # Get the default from the config file. + if args.config_file is not None or os.path.isfile(default_config_file) and not args.cpu: + defaults = load_config_from_file(args.config_file) + if ( + not args.multi_gpu + and not args.tpu + and not args.use_deepspeed + and not args.use_fsdp + and not args.use_mps_device + ): + args.use_deepspeed = defaults.distributed_type == DistributedType.DEEPSPEED + args.multi_gpu = defaults.distributed_type == DistributedType.MULTI_GPU + args.tpu = defaults.distributed_type == DistributedType.TPU + args.use_fsdp = defaults.distributed_type == DistributedType.FSDP + args.use_mps_device = defaults.distributed_type == DistributedType.MPS + if not args.use_mps_device: + if args.gpu_ids is None: + if defaults.gpu_ids is not None: + args.gpu_ids = defaults.gpu_ids + else: + args.gpu_ids = "all" + if len(args.gpu_ids.split(",")) < 2 and args.multi_gpu and (args.gpu_ids != "all"): + args.multi_gpu = False + if defaults.compute_environment == ComputeEnvironment.LOCAL_MACHINE: + # Update args with the defaults + for name, attr in defaults.__dict__.items(): + if isinstance(attr, dict): + for k in defaults.deepspeed_config: + if getattr(args, k) is None: + setattr(args, k, defaults.deepspeed_config[k]) + for k in defaults.fsdp_config: + arg_to_set = k + if "fsdp" not in arg_to_set: + arg_to_set = "fsdp_" + arg_to_set + setattr(args, arg_to_set, defaults.fsdp_config[k]) + continue + + # Those args are handled separately + if ( + name not in ["compute_environment", "fp16", "mixed_precision", "distributed_type"] + and getattr(args, name, None) is None + ): + setattr(args, name, attr) + if not args.mixed_precision: + if args.fp16: + args.mixed_precision = "fp16" + else: + args.mixed_precision = defaults.mixed_precision + else: + if args.num_processes is None: + args.num_processes = torch.cuda.device_count() if args.multi_gpu else 1 + warned.append("\t`--num_processes` was set to a value of `{args.num_processes}`") + if args.num_machines is None: + warned.append("\t`--num_machines` was set to a value of `1`") + args.num_machines = 1 + if args.mixed_precision is None: + warned.append("\t`--mixed_precision` was set to a value of `'no'`") + args.mixed_precision = "no" + if not hasattr(args, "use_cpu"): + args.use_cpu = args.cpu + + if args.num_cpu_threads_per_process is None: + local_size = get_int_from_env( + ["MPI_LOCALNRANKS", "OMPI_COMM_WORLD_LOCAL_SIZE", "MV2_COMM_WORLD_LOCAL_SIZE"], 1 + ) + args.num_cpu_threads_per_process = int(psutil.cpu_count(logical=False) / local_size) + if args.num_cpu_threads_per_process == 0: + args.num_cpu_threads_per_process = 1 + warned.append( + f"\t`--num_cpu_threads_per_process` was set to `{args.num_cpu_threads_per_process}` to improve out-of-box performance" + ) + + if any(warned): + message = "The following values were not passed to `accelerate launch` and had defaults used instead:\n" + message += "\n".join(warned) + message += ( + "\nTo avoid this warning pass in values for each of the problematic parameters or run `accelerate config`." + ) + logger.warn(message) + + # Use the proper launcher + if args.use_deepspeed and not args.cpu: + deepspeed_launcher(args) + elif args.use_fsdp and not args.cpu: + multi_gpu_launcher(args) + elif args.multi_gpu and not args.cpu: + multi_gpu_launcher(args) + elif args.tpu and not args.cpu: + tpu_launcher(args) + elif defaults is not None and defaults.compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER: + sagemaker_launcher(defaults, args) + else: + simple_launcher(args) + + +def main(): + parser = launch_command_parser() + args = parser.parse_args() + launch_command(args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/commands/test.py b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/test.py new file mode 100644 index 0000000..41da755 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/commands/test.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os + +from accelerate.test_utils import execute_subprocess_async + + +def test_command_parser(subparsers=None): + if subparsers is not None: + parser = subparsers.add_parser("test") + else: + parser = argparse.ArgumentParser("Accelerate test command") + + parser.add_argument( + "--config_file", + default=None, + help=( + "The path to use to store the config file. Will default to a file named default_config.yaml in the cache " + "location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have " + "such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed " + "with 'huggingface'." + ), + ) + + if subparsers is not None: + parser.set_defaults(func=test_command) + return parser + + +def test_command(args): + script_name = os.path.sep.join(__file__.split(os.path.sep)[:-2] + ["test_utils", "scripts", "test_script.py"]) + + test_args = f""" + --config_file={args.config_file} {script_name} + """.split() + cmd = ["accelerate-launch"] + test_args + result = execute_subprocess_async(cmd, env=os.environ.copy()) + if result.returncode == 0: + print("Test is a success! You are ready for your distributed training!") + + +def main(): + parser = test_command_parser() + args = parser.parse_args() + test_command(args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/data_loader.py b/v0.13.2/accelerate-0.13.2/src/accelerate/data_loader.py new file mode 100644 index 0000000..fac1b50 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/data_loader.py @@ -0,0 +1,715 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +from typing import List, Optional, Union + +import torch +from torch.utils.data import BatchSampler, DataLoader, IterableDataset + +from .logging import get_logger +from .state import AcceleratorState, DistributedType, GradientState, is_tpu_available +from .utils import ( + RNGType, + broadcast, + broadcast_object_list, + concatenate, + find_batch_size, + get_data_structure, + initialize_tensors, + is_torch_version, + send_to_device, + slice_tensors, + synchronize_rng_states, +) + + +if is_tpu_available(check_device=False): + import torch_xla.distributed.parallel_loader as xpl + + class MpDeviceLoaderWrapper(xpl.MpDeviceLoader): + """ + Wrapper for the xpl.MpDeviceLoader class that knows the total batch size. + + **Available attributes:** + + - **total_batch_size** (`int`) -- Total batch size of the dataloader across all processes. + Equal to the original batch size when `split_batches=True`; otherwise the original batch size * the total + number of processes + + - **total_dataset_length** (`int`) -- Total length of the inner dataset across all processes. + """ + + @property + def total_batch_size(self): + return self._loader.total_batch_size + + @property + def total_dataset_length(self): + return self._loader.total_dataset_length + + +logger = get_logger(__name__) + +# kwargs of the DataLoader in min version 1.4.0. +_PYTORCH_DATALOADER_KWARGS = { + "batch_size": 1, + "shuffle": False, + "sampler": None, + "batch_sampler": None, + "num_workers": 0, + "collate_fn": None, + "pin_memory": False, + "drop_last": False, + "timeout": 0, + "worker_init_fn": None, + "multiprocessing_context": None, + "generator": None, +} + +# kwargs added after by version +_PYTORCH_DATALOADER_ADDITIONAL_KWARGS = { + "1.7.0": {"prefetch_factor": 2, "persistent_workers": False}, +} + +for v, additional_kwargs in _PYTORCH_DATALOADER_ADDITIONAL_KWARGS.items(): + if is_torch_version(">=", v): + _PYTORCH_DATALOADER_KWARGS.update(additional_kwargs) + + +class BatchSamplerShard(BatchSampler): + """ + Wraps a PyTorch `BatchSampler` to generate batches for one of the processes only. Instances of this class will + always yield a number of batches that is a round multiple of `num_processes` and that all have the same size. + Depending on the value of the `drop_last` attribute of the batch sampler passed, it will either stop the iteration + at the first batch that would be too small / not present on all processes or loop with indices from the beginning. + + Args: + batch_sampler (`torch.utils.data.sampler.BatchSampler`): + The batch sampler to split in several shards. + num_processes (`int`, *optional*, defaults to 1): + The number of processes running concurrently. + process_index (`int`, *optional*, defaults to 0): + The index of the current process. + split_batches (`bool`, *optional*, defaults to `False`): + Whether the shards should be created by splitting a batch to give a piece of it on each process, or by + yielding different full batches on each process. + + On two processes with a sampler of `[[0, 1, 2, 3], [4, 5, 6, 7]]`, this will result in: + + - the sampler on process 0 to yield `[0, 1, 2, 3]` and the sampler on process 1 to yield `[4, 5, 6, 7]` if + this argument is set to `False`. + - the sampler on process 0 to yield `[0, 1]` then `[4, 5]` and the sampler on process 1 to yield `[2, 3]` + then `[6, 7]` if this argument is set to `True`. + + + + This does not support `BatchSampler` with varying batch size yet. + + """ + + def __init__( + self, + batch_sampler: BatchSampler, + num_processes: int = 1, + process_index: int = 0, + split_batches: bool = False, + ): + if split_batches and batch_sampler.batch_size % num_processes != 0: + raise ValueError( + f"To use `BatchSamplerShard` in `split_batches` mode, the batch size ({batch_sampler.batch_size}) " + f"needs to be a round multiple of the number of processes ({num_processes})." + ) + self.batch_sampler = batch_sampler + self.num_processes = num_processes + self.process_index = process_index + self.split_batches = split_batches + self.batch_size = batch_sampler.batch_size + self.drop_last = batch_sampler.drop_last + + @property + def total_length(self): + return len(self.batch_sampler) + + def __len__(self): + if self.split_batches: + return len(self.batch_sampler) + if len(self.batch_sampler) % self.num_processes == 0: + return len(self.batch_sampler) // self.num_processes + length = len(self.batch_sampler) // self.num_processes + return length if self.drop_last else length + 1 + + def __iter__(self): + return self._iter_with_split() if self.split_batches else self._iter_with_no_split() + + def _iter_with_split(self): + initial_data = [] + batch_length = self.batch_sampler.batch_size // self.num_processes + for idx, batch in enumerate(self.batch_sampler): + if idx == 0: + initial_data = batch + if len(batch) == self.batch_size: + # If the batch is full, we yield the part of it this process is responsible of. + yield batch[batch_length * self.process_index : batch_length * (self.process_index + 1)] + + # If drop_last is True of the last batch was full, iteration is over, otherwise... + if not self.drop_last and len(initial_data) > 0 and len(batch) < self.batch_size: + # For degenerate cases where the dataset has less than num_process * batch_size samples + while len(initial_data) < self.batch_size: + initial_data += initial_data + batch = batch + initial_data + yield batch[batch_length * self.process_index : batch_length * (self.process_index + 1)] + + def _iter_with_no_split(self): + initial_data = [] + batch_to_yield = [] + for idx, batch in enumerate(self.batch_sampler): + # We gather the initial indices in case we need to circle back at the end. + if not self.drop_last and idx < self.num_processes: + initial_data += batch + # We identify the batch to yield but wait until we ar sure every process gets a full batch before actually + # yielding it. + if idx % self.num_processes == self.process_index: + batch_to_yield = batch + if idx % self.num_processes == self.num_processes - 1 and len(batch) == self.batch_size: + yield batch_to_yield + batch_to_yield = [] + + # If drop_last is True, iteration is over, otherwise... + if not self.drop_last and len(initial_data) > 0: + # ... we yield the complete batch we had saved before if it has the proper length + if len(batch_to_yield) == self.batch_size: + yield batch_to_yield + + # For degenerate cases where the dataset has less than num_process * batch_size samples + while len(initial_data) < self.num_processes * self.batch_size: + initial_data += initial_data + + # If the last batch seen was of the proper size, it has been yielded by its process so we move to the next + if len(batch) == self.batch_size: + batch = [] + idx += 1 + + # Make sure we yield a multiple of self.num_processes batches + cycle_index = 0 + while idx % self.num_processes != 0 or len(batch) > 0: + end_index = cycle_index + self.batch_size - len(batch) + batch += initial_data[cycle_index:end_index] + if idx % self.num_processes == self.process_index: + yield batch + cycle_index = end_index + batch = [] + idx += 1 + + +class IterableDatasetShard(IterableDataset): + """ + Wraps a PyTorch `IterableDataset` to generate samples for one of the processes only. Instances of this class will + always yield a number of samples that is a round multiple of the actual batch size (depending of the value of + `split_batches`, this is either `batch_size` or `batch_size x num_processes`). Depending on the value of the + `drop_last` attribute of the batch sampler passed, it will either stop the iteration at the first batch that would + be too small or loop with indices from the beginning. + + Args: + dataset (`torch.utils.data.dataset.IterableDataset`): + The batch sampler to split in several shards. + batch_size (`int`, *optional*, defaults to 1): + The size of the batches per shard (if `split_batches=False`) or the size of the batches (if + `split_batches=True`). + drop_last (`bool`, *optional*, defaults to `False`): + Whether or not to drop the last incomplete batch or complete the last batches by using the samples from the + beginning. + num_processes (`int`, *optional*, defaults to 1): + The number of processes running concurrently. + process_index (`int`, *optional*, defaults to 0): + The index of the current process. + split_batches (`bool`, *optional*, defaults to `False`): + Whether the shards should be created by splitting a batch to give a piece of it on each process, or by + yielding different full batches on each process. + + On two processes with an iterable dataset yielding of `[0, 1, 2, 3, 4, 5, 6, 7]`, this will result in: + + - the shard on process 0 to yield `[0, 1, 2, 3]` and the shard on process 1 to yield `[4, 5, 6, 7]` if this + argument is set to `False`. + - the shard on process 0 to yield `[0, 1, 4, 5]` and the sampler on process 1 to yield `[2, 3, 6, 7]` if + this argument is set to `True`. + """ + + def __init__( + self, + dataset: IterableDataset, + batch_size: int = 1, + drop_last: bool = False, + num_processes: int = 1, + process_index: int = 0, + split_batches: bool = False, + ): + if split_batches and batch_size > 1 and batch_size % num_processes != 0: + raise ValueError( + f"To use `IterableDatasetShard` in `split_batches` mode, the batch size ({batch_size}) " + f"needs to be a round multiple of the number of processes ({num_processes})." + ) + self.dataset = dataset + self.batch_size = batch_size + self.drop_last = drop_last + self.num_processes = num_processes + self.process_index = process_index + self.split_batches = split_batches + + def __iter__(self): + real_batch_size = self.batch_size if self.split_batches else (self.batch_size * self.num_processes) + process_batch_size = (self.batch_size // self.num_processes) if self.split_batches else self.batch_size + process_slice = range(self.process_index * process_batch_size, (self.process_index + 1) * process_batch_size) + + first_batch = None + current_batch = [] + for element in self.dataset: + current_batch.append(element) + # Wait to have a full batch before yielding elements. + if len(current_batch) == real_batch_size: + for i in process_slice: + yield current_batch[i] + if first_batch is None: + first_batch = current_batch.copy() + current_batch = [] + + # Finished if drop_last is True, otherwise complete the last batch with elements from the beginning. + if not self.drop_last and len(current_batch) > 0: + if first_batch is None: + first_batch = current_batch.copy() + while len(current_batch) < real_batch_size: + current_batch += first_batch + for i in process_slice: + yield current_batch[i] + + +class DataLoaderShard(DataLoader): + """ + Subclass of a PyTorch `DataLoader` that will deal with device placement and current distributed setup. + + Args: + dataset (`torch.utils.data.dataset.Dataset`): + The dataset to use to build this datalaoder. + device (`torch.device`, *optional*): + If passed, the device to put all batches on. + rng_types (list of `str` or [`~utils.RNGType`]): + The list of random number generators to synchronize at the beginning of each iteration. Should be one or + several of: + + - `"torch"`: the base torch random number generator + - `"cuda"`: the CUDA random number generator (GPU only) + - `"xla"`: the XLA random number generator (TPU only) + - `"generator"`: an optional `torch.Generator` + generator (`torch.Generator`, *optional*): + A random number generator to keep synchronized across processes. + kwargs: + All other keyword arguments to pass to the regular `DataLoader` initialization. + + **Available attributes:** + + - **total_batch_size** (`int`) -- Total batch size of the dataloader across all processes. + Equal to the original batch size when `split_batches=True`; otherwise the original batch size * the total + number of processes + + - **total_dataset_length** (`int`) -- Total length of the inner dataset across all processes. + """ + + def __init__(self, dataset, device=None, rng_types=None, generator=None, **kwargs): + super().__init__(dataset, **kwargs) + self.device = device + self.rng_types = rng_types + self.generator = generator + self.gradient_state = GradientState() + + def __iter__(self): + if self.rng_types is not None: + synchronize_rng_states(self.rng_types, self.generator) + self.gradient_state._set_end_of_dataloader(False) + try: + length = getattr(self.dataset, "total_dataset_length", len(self.dataset)) + self.gradient_state._set_remainder(length % self.total_batch_size) + except Exception: + # We can safely pass because the default is -1 + pass + dataloader_iter = super().__iter__() + # We iterate one batch ahead to check when we are at the end + try: + current_batch = next(dataloader_iter) + except StopIteration: + yield + while True: + try: + # But we still move it to the device so it is done before `StopIteration` is reached + if self.device is not None: + current_batch = send_to_device(current_batch, self.device) + next_batch = next(dataloader_iter) + yield current_batch + current_batch = next_batch + except StopIteration: + self.gradient_state._set_end_of_dataloader(True) + yield current_batch + break + + @property + def total_batch_size(self): + batch_sampler = self.sampler if isinstance(self.sampler, BatchSampler) else self.batch_sampler + return ( + batch_sampler.batch_size + if batch_sampler.split_batches + else (batch_sampler.batch_size * batch_sampler.num_processes) + ) + + @property + def total_dataset_length(self): + if hasattr("total_length", self.dataset): + return self.dataset.total_length + else: + return len(self.dataset) + + +class DataLoaderDispatcher(DataLoader): + """ + Args: + Subclass of a PyTorch `DataLoader` that will iterate and preprocess on process 0 only, then dispatch on each + process their part of the batch. + split_batches (`bool`, *optional*, defaults to `False`): + Whether the resulting `DataLoader` should split the batches of the original data loader across devices or + yield full batches (in which case it will yield batches starting at the `process_index`-th and advancing of + `num_processes` batches at each iteration). Another way to see this is that the observed batch size will be + the same as the initial `dataloader` if this option is set to `True`, the batch size of the initial + `dataloader` multiplied by `num_processes` otherwise. Setting this option to `True` requires that the batch + size of the `dataloader` is a round multiple of `batch_size`. + + **Available attributes:** + + - **total_batch_size** (`int`) -- Total batch size of the dataloader across all processes. + Equal to the original batch size when `split_batches=True`; otherwise the original batch size * the total + number of processes + + - **total_dataset_length** (`int`) -- Total length of the inner dataset across all processes. + """ + + def __init__(self, dataset, split_batches: bool = False, _drop_last: bool = False, **kwargs): + shuffle = False + if is_torch_version(">=", "1.11.0"): + from torch.utils.data.datapipes.iter.combinatorics import ShufflerIterDataPipe + + # We need to save the shuffling state of the DataPipe + if isinstance(dataset, ShufflerIterDataPipe): + shuffle = dataset._shuffle_enabled + super().__init__(dataset, **kwargs) + self.split_batches = split_batches + if is_torch_version("<", "1.8.0"): + raise ImportError( + f"Using `DataLoaderDispatcher` requires PyTorch 1.8.0 minimum. You have {torch.__version__}." + ) + if shuffle: + torch.utils.data.graph_settings.apply_shuffle_settings(dataset, shuffle=shuffle) + + self.gradient_state = GradientState() + self.state = AcceleratorState() + self._drop_last = _drop_last + try: + length = getattr(self.dataset, "total_dataset_length", len(self.dataset)) + self.gradient_state._set_remainder(length % self.total_batch_size) + except Exception: + # We can safely pass because the default is -1 + pass + + def _fetch_batches(self, iterator): + batches, batch = None, None + # On process 0, we gather the batch to dispatch. + if self.state.process_index == 0: + try: + if self.split_batches: + # One batch of the main iterator is dispatched and split. + batch = next(iterator) + else: + # num_processes batches of the main iterator are concatenated then dispatched and split. + # We add the batches one by one so we have the remainder available when drop_last=False. + batches = [] + for _ in range(self.state.num_processes): + batches.append(next(iterator)) + batch = concatenate(batches, dim=0) + # In both cases, we need to get the structure of the batch that we will broadcast on other + # processes to initialize the tensors with the right shape. + # data_structure, stop_iteration + batch_info = [get_data_structure(batch), False] + except StopIteration: + batch_info = [None, True] + else: + batch_info = [None, self._stop_iteration] + # This is inplace, so after this instruction, every process has the same `batch_info` as process 0. + broadcast_object_list(batch_info) + self._stop_iteration = batch_info[1] + if self._stop_iteration: + # If drop_last is False and split_batches is False, we may have a remainder to take care of. + if not self.split_batches and not self._drop_last: + if self.state.process_index == 0 and len(batches) > 0: + batch = concatenate(batches, dim=0) + batch_info = [get_data_structure(batch), False] + else: + batch_info = [None, True] + broadcast_object_list(batch_info) + return batch, batch_info + + def __iter__(self): + self.gradient_state._set_end_of_dataloader(False) + main_iterator = None + if self.state.process_index == 0: + # We only iterate through the DataLoader on process 0. + main_iterator = super().__iter__() + stop_iteration = False + self._stop_iteration = False + first_batch = None + next_batch, next_batch_info = self._fetch_batches(main_iterator) + while not stop_iteration: + batch, batch_info = next_batch, next_batch_info + + if self.state.process_index != 0: + # Initialize tensors on other processes than process 0. + batch = initialize_tensors(batch_info[0]) + batch = send_to_device(batch, self.state.device) + # Broadcast the batch before splitting it. + batch = broadcast(batch, from_process=0) + + if not self._drop_last and first_batch is None: + # We keep at least num processes elements of the first batch to be able to complete the last batch + first_batch = slice_tensors(batch, slice(0, self.state.num_processes)) + + observed_batch_size = find_batch_size(batch) + batch_size = observed_batch_size // self.state.num_processes + + stop_iteration = self._stop_iteration + if not stop_iteration: + # We may still be at the end of the dataloader without knowing it yet: if there is nothing left in + # the dataloader since the number of batches is a round multiple of the number of processes. + next_batch, next_batch_info = self._fetch_batches(main_iterator) + # next_batch_info[0] is None when there are no more batches, otherwise we still need to process them. + if self._stop_iteration and next_batch_info[0] is None: + stop_iteration = True + + if not self._drop_last and stop_iteration and observed_batch_size % self.state.num_processes != 0: + # If the last batch is not complete, let's add the first batch to it. + batch = concatenate([batch, first_batch], dim=0) + # Batch size computation above is wrong, it's off by 1 so we fix it. + batch_size += 1 + + data_slice = slice(self.state.process_index * batch_size, (self.state.process_index + 1) * batch_size) + batch = slice_tensors(batch, data_slice) + + if stop_iteration: + self.gradient_state._set_remainder(observed_batch_size) + self.gradient_state._set_end_of_dataloader(True) + yield batch + + def __len__(self): + whole_length = super().__len__() + if self.split_batches: + return whole_length + elif self._drop_last: + return whole_length // self.state.num_processes + else: + return math.ceil(whole_length / self.state.num_processes) + + @property + def total_batch_size(self): + return ( + self.dataset.batch_size if self.split_batches else (self.dataset.batch_size * self.dataset.num_processes) + ) + + @property + def total_dataset_length(self): + return len(self.dataset) + + +def prepare_data_loader( + dataloader: DataLoader, + device: Optional[torch.device] = None, + num_processes: Optional[int] = None, + process_index: Optional[int] = None, + split_batches: bool = False, + put_on_device: bool = False, + rng_types: Optional[List[Union[str, RNGType]]] = None, + dispatch_batches: Optional[bool] = None, +) -> DataLoader: + """ + Wraps a PyTorch `DataLoader` to generate batches for one of the processes only. + + Depending on the value of the `drop_last` attribute of the `dataloader` passed, it will either stop the iteration + at the first batch that would be too small / not present on all processes or loop with indices from the beginning. + + Args: + dataloader (`torch.utils.data.dataloader.DataLoader`): + The data loader to split across several devices. + device (`torch.device`): + The target device for the returned `DataLoader`. + num_processes (`int`, *optional*): + The number of processes running concurrently. Will default to the value given by + [`~state.AcceleratorState`]. + process_index (`int`, *optional*): + The index of the current process. Will default to the value given by [`~state.AcceleratorState`]. + split_batches (`bool`, *optional*, defaults to `False`): + Whether the resulting `DataLoader` should split the batches of the original data loader across devices or + yield full batches (in which case it will yield batches starting at the `process_index`-th and advancing of + `num_processes` batches at each iteration). + + Another way to see this is that the observed batch size will be the same as the initial `dataloader` if + this option is set to `True`, the batch size of the initial `dataloader` multiplied by `num_processes` + otherwise. + + Setting this option to `True` requires that the batch size of the `dataloader` is a round multiple of + `batch_size`. + put_on_device (`bool`, *optional*, defaults to `False`): + Whether or not to put the batches on `device` (only works if the batches are nested list, tuples or + dictionaries of tensors). + rng_types (list of `str` or [`~utils.RNGType`]): + The list of random number generators to synchronize at the beginning of each iteration. Should be one or + several of: + + - `"torch"`: the base torch random number generator + - `"cuda"`: the CUDA random number generator (GPU only) + - `"xla"`: the XLA random number generator (TPU only) + - `"generator"`: the `torch.Generator` of the sampler (or batch sampler if there is no sampler in your + dataloader) or of the iterable dataset (if it exists) if the underlying dataset is of that type. + + dispatch_batches (`bool`, *optional*): + If set to `True`, the datalaoder prepared is only iterated through on the main process and then the batches + are split and broadcast to each process. Will default to `True` when the underlying dataset is an + `IterableDataset`, `False` otherwise. + + Returns: + `torch.utils.data.dataloader.DataLoader`: A new data loader that will yield the portion of the batches + + + + This does not support `BatchSampler` with varying batch size yet. + + """ + if dispatch_batches is None: + if is_torch_version("<", "1.8.0") or not put_on_device: + dispatch_batches = False + else: + dispatch_batches = isinstance(dataloader.dataset, IterableDataset) + + if dispatch_batches and not put_on_device: + raise ValueError("Using `dispatch_batches=True` requires `put_on_device=True`.") + # Grab defaults from AcceleratorState + state = AcceleratorState() + if num_processes is None: + num_processes = state.num_processes + if process_index is None: + process_index = state.process_index + + # Sanity check + if split_batches and dataloader.batch_size > 1 and dataloader.batch_size % num_processes != 0: + raise ValueError( + f"To use a `DataLoader` in `split_batches` mode, the batch size ({dataloader.batch_size}) " + f"needs to be a round multiple of the number of processes ({num_processes})." + ) + + new_dataset = dataloader.dataset + # Iterable dataset doesn't like batch_sampler, but data_loader creates a default one for it + new_batch_sampler = dataloader.batch_sampler if not isinstance(new_dataset, IterableDataset) else None + sampler_is_batch_sampler = False + generator = getattr(dataloader, "generator", None) + # No change if no multiprocess + if num_processes != 1 and not dispatch_batches: + if isinstance(new_dataset, IterableDataset): + if getattr(dataloader.dataset, "generator", None) is not None: + generator = dataloader.dataset.generator + new_dataset = IterableDatasetShard( + new_dataset, + batch_size=dataloader.batch_size, + drop_last=dataloader.drop_last, + num_processes=num_processes, + process_index=process_index, + split_batches=split_batches, + ) + else: + # New batch sampler for the current process. + sampler_is_batch_sampler = isinstance(dataloader.sampler, BatchSampler) + if sampler_is_batch_sampler: + sampler = dataloader.sampler.sampler + else: + sampler = dataloader.batch_sampler.sampler + if hasattr(sampler, "generator"): + if sampler.generator is None: + sampler.generator = torch.Generator() + generator = sampler.generator + generator.manual_seed(int(torch.empty((), dtype=torch.int64).random_().item())) + + batch_sampler = dataloader.sampler if sampler_is_batch_sampler else dataloader.batch_sampler + new_batch_sampler = BatchSamplerShard( + batch_sampler, + num_processes=num_processes, + process_index=process_index, + split_batches=split_batches, + ) + + # We ignore all of those since they are all dealt with by our new_batch_sampler + ignore_kwargs = [ + "batch_size", + "shuffle", + "sampler", + "batch_sampler", + "drop_last", + "generator", + ] + + if rng_types is not None and generator is None and "generator" in rng_types: + rng_types.remove("generator") + + kwargs = { + k: getattr(dataloader, k, _PYTORCH_DATALOADER_KWARGS[k]) + for k in _PYTORCH_DATALOADER_KWARGS + if k not in ignore_kwargs + } + + # Need to provide batch_size as batch_sampler is None for Iterable dataset + if new_batch_sampler is None: + kwargs["drop_last"] = dataloader.drop_last + kwargs["batch_size"] = dataloader.batch_size // num_processes if split_batches else dataloader.batch_size + + if dispatch_batches: + dataloader = DataLoaderDispatcher( + new_dataset, + split_batches=split_batches, + batch_sampler=new_batch_sampler, + _drop_last=dataloader.drop_last, + **kwargs, + ) + elif sampler_is_batch_sampler: + dataloader = DataLoaderShard( + new_dataset, + device=device if put_on_device and state.distributed_type != DistributedType.TPU else None, + sampler=new_batch_sampler, + batch_size=getattr(dataloader, "batch_size", _PYTORCH_DATALOADER_KWARGS["batch_size"]), + rng_types=rng_types, + generator=generator, + **kwargs, + ) + else: + dataloader = DataLoaderShard( + new_dataset, + device=device if put_on_device and state.distributed_type != DistributedType.TPU else None, + batch_sampler=new_batch_sampler, + rng_types=rng_types, + generator=generator, + **kwargs, + ) + + if state.distributed_type == DistributedType.TPU: + return MpDeviceLoaderWrapper(dataloader, device) + return dataloader diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/hooks.py b/v0.13.2/accelerate-0.13.2/src/accelerate/hooks.py new file mode 100644 index 0000000..493444d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/hooks.py @@ -0,0 +1,480 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +from typing import Dict, List, Mapping, Optional, Union + +import torch +import torch.nn as nn + +from .utils import PrefixedDataset, find_device, named_module_tensors, send_to_device, set_module_tensor_to_device + + +class ModelHook: + """ + A hook that contains callbacks to be executed just before and after the forward method of a model. The difference + with PyTorch existing hooks is that they get passed along the kwargs. + + Class attribute: + - **no_grad** (`bool`, *optional*, defaults to `False`) -- Whether or not to execute the actual forward pass under + the `torch.no_grad()` context manager. + """ + + no_grad = False + + def init_hook(self, module): + """ + To be executed when the hook is attached to the module. + + Args: + module (`torch.nn.Module`): The module attached to this hook. + """ + return module + + def pre_forward(self, module, *args, **kwargs): + """ + To be executed just before the forward method of the model. + + Args: + module (`torch.nn.Module`): The module whose forward pass will be executed just after this event. + args (`Tuple[Any]`): The positional arguments passed to the module. + kwargs (`Dict[Str, Any]`): The keyword arguments passed to the module. + + Returns: + `Tuple[Tuple[Any], Dict[Str, Any]]`: A tuple with the treated `args` and `kwargs`. + """ + return args, kwargs + + def post_forward(self, module, output): + """ + To be executed just after the forward method of the model. + + Args: + module (`torch.nn.Module`): The module whose forward pass been executed just before this event. + output (`Any`): The output of the module. + + Returns: + `Any`: The processed `output`. + """ + return output + + def detach_hook(self, module): + """ + To be executed when the hook is detached from a module. + + Args: + module (`torch.nn.Module`): The module detached from this hook. + """ + return module + + +class SequentialHook(ModelHook): + """ + A hook that can contain several hooks and iterates through them at each event. + """ + + def __init__(self, *hooks): + self.hooks = hooks + + def init_hook(self, module): + for hook in self.hooks: + module = hook.init_hook(module) + return module + + def pre_forward(self, module, *args, **kwargs): + for hook in self.hooks: + args, kwargs = hook.pre_forward(module, *args, **kwargs) + return args, kwargs + + def post_forward(self, module, output): + for hook in self.hooks: + output = hook.post_forward(module, output) + return output + + def detach_hook(self, module): + for hook in self.hooks: + module = hook.detach_hook(module) + return module + + +def add_hook_to_module(module: nn.Module, hook: ModelHook): + """ + Adds a hook to a given module. This will rewrite the `forward` method of the module to include the hook, to remove + this behavior and restore the original `forward` method, use `remove_hook_from_module`. + + + + If the module already contains a hook, this will replace it with the new hook passed. To chain two hooks together, + use the `SequentialHook` class. + + + + Args: + module (`torch.nn.Module`): The module to attach a hook to. + hook (`ModelHook`): The hook to attach. + + Returns: + `torch.nn.Module`: The same module, with the hook attached (the module is modified in place, so the result can + be discarded). + """ + if hasattr(module, "_hf_hook") and hasattr(module, "_old_forward"): + # If we already put some hook on this module, we replace it with the new one. + old_forward = module._old_forward + else: + old_forward = module.forward + module._old_forward = old_forward + + module = hook.init_hook(module) + module._hf_hook = hook + + @functools.wraps(old_forward) + def new_forward(*args, **kwargs): + args, kwargs = module._hf_hook.pre_forward(module, *args, **kwargs) + if module._hf_hook.no_grad: + with torch.no_grad(): + output = old_forward(*args, **kwargs) + else: + output = old_forward(*args, **kwargs) + return module._hf_hook.post_forward(module, output) + + module.forward = new_forward + return module + + +def remove_hook_from_module(module: nn.Module): + """ + Removes any hook attached to a module via `add_hook_to_module`. + + Args: + module (`torch.nn.Module`): The module to attach a hook to. + + Returns: + `torch.nn.Module`: The same module, with the hook detached (the module is modified in place, so the result can + be discarded). + """ + if hasattr(module, "_hf_hook"): + module._hf_hook.detach_hook(module) + delattr(module, "_hf_hook") + + if hasattr(module, "_old_forward"): + module.forward = module._old_forward + delattr(module, "_old_forward") + + return module + + +class AlignDevicesHook(ModelHook): + """ + A generic `ModelHook` that ensures inputs and model weights are on the same device for the forward pass of the + associated module, potentially offloading the weights after the forward pass. + + Args: + execution_device (`torch.device`, *optional*): + The device on which inputs and model weights should be placed before the forward pass. + offload (`bool`, *optional*, defaults to `False`): + Whether or not the weights should be offloaded after the forward pass. + io_same_device (`bool`, *optional*, defaults to `False`): + Whether or not the output should be placed on the same device as the input was. + weights_map (`Mapping[str, torch.Tensor]`, *optional*): + When the model weights are offloaded, a (potentially lazy) map from param names to the tensor values. + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to include the associated module's buffers when offloading. + place_submodules (`bool`, *optional*, defaults to `False`): + Whether to place the submodules on `execution_device` during the `init_hook` event. + """ + + def __init__( + self, + execution_device: Optional[Union[int, str, torch.device]] = None, + offload: bool = False, + io_same_device: bool = False, + weights_map: Optional[Mapping] = None, + offload_buffers: bool = False, + place_submodules: bool = False, + ): + self.execution_device = execution_device + self.offload = offload + self.io_same_device = io_same_device + self.weights_map = weights_map + self.offload_buffers = offload_buffers + self.place_submodules = place_submodules + + # Will contain the input device when `io_same_device=True`. + self.input_device = None + self.param_original_devices = {} + self.buffer_original_devices = {} + + def init_hook(self, module): + if not self.offload and self.execution_device is not None: + for name, _ in named_module_tensors(module, recurse=self.place_submodules): + set_module_tensor_to_device(module, name, self.execution_device) + elif self.offload: + self.original_devices = { + name: param.device for name, param in named_module_tensors(module, recurse=self.place_submodules) + } + if self.weights_map is None: + self.weights_map = { + name: param.to("cpu") + for name, param in named_module_tensors( + module, include_buffers=self.offload_buffers, recurse=self.place_submodules + ) + } + + for name, _ in named_module_tensors( + module, include_buffers=self.offload_buffers, recurse=self.place_submodules + ): + set_module_tensor_to_device(module, name, "meta") + if not self.offload_buffers and self.execution_device is not None: + for name, _ in module.named_buffers(recurse=self.place_submodules): + set_module_tensor_to_device(module, name, self.execution_device) + return module + + def pre_forward(self, module, *args, **kwargs): + if self.io_same_device: + self.input_device = find_device([args, kwargs]) + if self.offload: + for name, _ in named_module_tensors( + module, include_buffers=self.offload_buffers, recurse=self.place_submodules + ): + set_module_tensor_to_device(module, name, self.execution_device, value=self.weights_map[name]) + + return send_to_device(args, self.execution_device), send_to_device(kwargs, self.execution_device) + + def post_forward(self, module, output): + if self.offload: + for name, _ in named_module_tensors( + module, include_buffers=self.offload_buffers, recurse=self.place_submodules + ): + set_module_tensor_to_device(module, name, "meta") + + if self.io_same_device and self.input_device is not None: + output = send_to_device(output, self.input_device) + + return output + + def detach_hook(self, module): + if self.offload: + for name, device in self.original_devices.items(): + if device != torch.device("meta"): + set_module_tensor_to_device(module, name, device, value=self.weights_map.get(name, None)) + + +def attach_execution_device_hook( + module: torch.nn.Module, + execution_device: Union[int, str, torch.device], + preload_module_classes: Optional[List[str]] = None, +): + """ + Recursively attaches `AlignDevicesHook` to all submodules of a given model to make sure they have the right + execution device + + Args: + module (`torch.nn.Module`): + The module where we want to attach the hooks. + execution_device (`int`, `str` or `torch.device`): + The device on which inputs and model weights should be placed before the forward pass. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + if not hasattr(module, "_hf_hook") and len(module.state_dict()) > 0: + add_hook_to_module(module, AlignDevicesHook(execution_device)) + + # Break the recursion if we get to a preload module. + if preload_module_classes is not None and module.__class__.__name__ in preload_module_classes: + return + + for child in module.children(): + attach_execution_device_hook(child, execution_device) + + +def attach_align_device_hook( + module: torch.nn.Module, + execution_device: Optional[torch.device] = None, + offload: bool = False, + weights_map: Optional[Mapping] = None, + offload_buffers: bool = False, + module_name: str = "", + preload_module_classes: Optional[List[str]] = None, +): + """ + Recursively attaches `AlignDevicesHook` to all submodules of a given model that have direct parameters and/or + buffers. + + Args: + module (`torch.nn.Module`): + The module where we want to attach the hooks. + execution_device (`torch.device`, *optional*): + The device on which inputs and model weights should be placed before the forward pass. + offload (`bool`, *optional*, defaults to `False`): + Whether or not the weights should be offloaded after the forward pass. + weights_map (`Mapping[str, torch.Tensor]`, *optional*): + When the model weights are offloaded, a (potentially lazy) map from param names to the tensor values. + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to include the associated module's buffers when offloading. + module_name (`str`, *optional*, defaults to `""`): + The name of the module. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + # Attach the hook on this module if it has any direct tensor. + directs = named_module_tensors(module) + full_offload = ( + offload and preload_module_classes is not None and module.__class__.__name__ in preload_module_classes + ) + + if len(list(directs)) > 0 or full_offload: + if weights_map is not None: + prefix = f"{module_name}." if len(module_name) > 0 else "" + prefixed_weights_map = PrefixedDataset(weights_map, prefix) + else: + prefixed_weights_map = None + hook = AlignDevicesHook( + execution_device=execution_device, + offload=offload, + weights_map=prefixed_weights_map, + offload_buffers=offload_buffers, + place_submodules=full_offload, + ) + add_hook_to_module(module, hook) + + # We stop the recursion in case we hit the full offload. + if full_offload: + return + + # Recurse on all children of the module. + for child_name, child in module.named_children(): + child_name = f"{module_name}.{child_name}" if len(module_name) > 0 else child_name + attach_align_device_hook( + child, + execution_device=execution_device, + offload=offload, + weights_map=weights_map, + offload_buffers=offload_buffers, + module_name=child_name, + preload_module_classes=preload_module_classes, + ) + + +def remove_hook_from_submodules(module: nn.Module): + """ + Recursively removes all hooks attached on the submodules of a given model. + + Args: + module (`torch.nn.Module`): The module on which to remove all hooks. + """ + remove_hook_from_module(module) + for child in module.children(): + remove_hook_from_submodules(child) + + +def attach_align_device_hook_on_blocks( + module: nn.Module, + execution_device: Optional[Union[torch.device, Dict[str, torch.device]]] = None, + offload: Union[bool, Dict[str, bool]] = False, + weights_map: Mapping = None, + offload_buffers: bool = False, + module_name: str = "", + preload_module_classes: Optional[List[str]] = None, +): + """ + Attaches `AlignDevicesHook` to all blocks of a given model as needed. + + Args: + module (`torch.nn.Module`): + The module where we want to attach the hooks. + execution_device (`torch.device` or `Dict[str, torch.device]`, *optional*): + The device on which inputs and model weights should be placed before the forward pass. It can be one device + for the whole module, or a dictionary mapping module name to device. + offload (`bool`, *optional*, defaults to `False`): + Whether or not the weights should be offloaded after the forward pass. It can be one boolean for the whole + module, or a dictionary mapping module name to boolean. + weights_map (`Mapping[str, torch.Tensor]`, *optional*): + When the model weights are offloaded, a (potentially lazy) map from param names to the tensor values. + offload_buffers (`bool`, *optional*, defaults to `False`): + Whether or not to include the associated module's buffers when offloading. + module_name (`str`, *optional*, defaults to `""`): + The name of the module. + preload_module_classes (`List[str]`, *optional*): + A list of classes whose instances should load all their weights (even in the submodules) at the beginning + of the forward. This should only be used for classes that have submodules which are registered but not + called directly during the forward, for instance if a `dense` linear layer is registered, but at forward, + `dense.weight` and `dense.bias` are used in some operations instead of calling `dense` directly. + """ + # If one device and one offload, we've got one hook. + if not isinstance(execution_device, Mapping) and not isinstance(offload, dict): + if not offload: + hook = AlignDevicesHook(execution_device=execution_device, io_same_device=True, place_submodules=True) + add_hook_to_module(module, hook) + else: + attach_align_device_hook( + module, + execution_device=execution_device, + offload=True, + weights_map=weights_map, + offload_buffers=offload_buffers, + module_name=module_name, + ) + return + + if not isinstance(execution_device, Mapping): + execution_device = {key: execution_device for key in offload.keys()} + if not isinstance(offload, Mapping): + offload = {key: offload for key in execution_device.keys()} + + if module_name in execution_device and not offload[module_name]: + hook = AlignDevicesHook( + execution_device=execution_device[module_name], + offload_buffers=offload_buffers, + io_same_device=(module_name == ""), + place_submodules=True, + ) + add_hook_to_module(module, hook) + attach_execution_device_hook(module, execution_device[module_name]) + elif module_name in execution_device: + attach_align_device_hook( + module, + execution_device=execution_device[module_name], + offload=True, + weights_map=weights_map, + offload_buffers=offload_buffers, + module_name=module_name, + preload_module_classes=preload_module_classes, + ) + if not hasattr(module, "_hf_hook"): + hook = AlignDevicesHook(execution_device=execution_device[module_name], io_same_device=(module_name == "")) + add_hook_to_module(module, hook) + attach_execution_device_hook( + module, execution_device[module_name], preload_module_classes=preload_module_classes + ) + elif module_name == "": + hook = AlignDevicesHook(io_same_device=True) + add_hook_to_module(module, hook) + + for child_name, child in module.named_children(): + child_name = f"{module_name}.{child_name}" if len(module_name) > 0 else child_name + attach_align_device_hook_on_blocks( + child, + execution_device=execution_device, + offload=offload, + weights_map=weights_map, + offload_buffers=offload_buffers, + module_name=child_name, + preload_module_classes=preload_module_classes, + ) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/launchers.py b/v0.13.2/accelerate-0.13.2/src/accelerate/launchers.py new file mode 100644 index 0000000..0387109 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/launchers.py @@ -0,0 +1,170 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +import tempfile +import warnings + +import torch + +from .state import AcceleratorState +from .utils import PrecisionType, PrepareForLaunch, patch_environment + + +def notebook_launcher(function, args=(), num_processes=None, use_fp16=False, mixed_precision="no", use_port="29500"): + """ + Launches a training function, using several processes if it's possible in the current environment (TPU with + multiple cores for instance). + + Args: + function (`Callable`): + The training function to execute. If it accepts arguments, the first argument should be the index of the + process run. + args (`Tuple`): + Tuple of arguments to pass to the function (it will receive `*args`). + num_processes (`int`, *optional*): + The number of processes to use for training. Will default to 8 in Colab/Kaggle if a TPU is available, to + the number of GPUs available otherwise. + mixed_precision (`str`, *optional*, defaults to `"no"`): + If `fp16` or `bf16`, will use mixed precision training on multi-GPU. + use_port (`str`, *optional*, defaults to `"29500"`): + The port to use to communicate between processes when launching a multi-GPU training. + """ + # Are we in a google colab or a Kaggle Kernel? + if any(key.startswith("KAGGLE") for key in os.environ.keys()): + in_colab_or_kaggle = True + elif "IPython" in sys.modules: + in_colab_or_kaggle = "google.colab" in str(sys.modules["IPython"].get_ipython()) + else: + in_colab_or_kaggle = False + + try: + mixed_precision = PrecisionType(mixed_precision.lower()) + except ValueError: + raise ValueError( + f"Unknown mixed_precision mode: {args.mixed_precision.lower()}. Choose between {PrecisionType.list()}." + ) + + if in_colab_or_kaggle: + if os.environ.get("TPU_NAME", None) is not None: + # TPU launch + import torch_xla.distributed.xla_multiprocessing as xmp + + if len(AcceleratorState._shared_state) > 0: + raise ValueError( + "To train on TPU in Colab or Kaggle Kernel, the `Accelerator` should only be initialized inside " + "your training function. Restart your notebook and make sure no cells initializes an " + "`Accelerator`." + ) + if num_processes is None: + num_processes = 8 + + launcher = PrepareForLaunch(function, distributed_type="TPU") + print(f"Launching a training on {num_processes} TPU cores.") + xmp.spawn(launcher, args=args, nprocs=num_processes, start_method="fork") + else: + # No need for a distributed launch otherwise as it's either CPU or one GPU. + if torch.cuda.is_available(): + print("Launching training on one GPU.") + else: + print("Launching training on one CPU.") + function(*args) + + else: + if num_processes is None: + raise ValueError( + "You have to specify the number of GPUs you would like to use, add `num_processes=...` to your call." + ) + + if num_processes > 1: + # Multi-GPU launch + from torch.multiprocessing import start_processes + + if len(AcceleratorState._shared_state) > 0: + raise ValueError( + "To launch a multi-GPU training from your notebook, the `Accelerator` should only be initialized " + "inside your training function. Restart your notebook and make sure no cells initializes an " + "`Accelerator`." + ) + + if torch.cuda.is_initialized(): + raise ValueError( + "To launch a multi-GPU training from your notebook, you need to avoid running any instruction " + "using `torch.cuda` in any cell. Restart your notebook and make sure no cells use any CUDA " + "function." + ) + + if use_fp16: + warnings.warn('use_fp16=True is deprecated. Use mixed_precision="fp16" instead.', DeprecationWarning) + mixed_precision = "fp16" + + # torch.distributed will expect a few environment variable to be here. We set the ones common to each + # process here (the other ones will be set be the launcher). + with patch_environment( + world_size=num_processes, master_addr="127.0.01", master_port=use_port, mixed_precision=mixed_precision + ): + launcher = PrepareForLaunch(function, distributed_type="MULTI_GPU") + + print(f"Launching training on {num_processes} GPUs.") + start_processes(launcher, args=args, nprocs=num_processes, start_method="fork") + + else: + # No need for a distributed launch otherwise as it's either CPU, GPU or MPS. + use_mps_device = "false" + if torch.backends.mps.is_available(): + print("Launching training on MPS.") + use_mps_device = "true" + elif torch.cuda.is_available(): + print("Launching training on one GPU.") + else: + print("Launching training on CPU.") + with patch_environment(use_mps_device=use_mps_device): + function(*args) + + +def debug_launcher(function, args=(), num_processes=2): + """ + Launches a training function using several processes on CPU for debugging purposes. + + + + This function is provided for internal testing and debugging, but it's not intended for real trainings. It will + only use the CPU. + + + + Args: + function (`Callable`): + The training function to execute. + args (`Tuple`): + Tuple of arguments to pass to the function (it will receive `*args`). + num_processes (`int`, *optional*, defaults to 2): + The number of processes to use for training. + """ + from torch.multiprocessing import start_processes + + with tempfile.NamedTemporaryFile() as tmp_file: + # torch.distributed will expect a few environment variable to be here. We set the ones common to each + # process here (the other ones will be set be the launcher). + with patch_environment( + world_size=num_processes, + master_addr="127.0.01", + master_port="29500", + mixed_precision="no", + accelerate_debug_rdv_file=tmp_file.name, + use_cpu="yes", + ): + launcher = PrepareForLaunch(function, debug=True) + start_processes(launcher, args=args, nprocs=num_processes, start_method="fork") diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/logging.py b/v0.13.2/accelerate-0.13.2/src/accelerate/logging.py new file mode 100644 index 0000000..2c67e24 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/logging.py @@ -0,0 +1,68 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging + +from .state import AcceleratorState + + +class MultiProcessAdapter(logging.LoggerAdapter): + """ + An adapter to assist with logging in multiprocess. + + `log` takes in an additional `main_process_only` kwarg, which dictates whether it should be called on all processes + or only the main executed one. Default is `main_process_only=True`. + """ + + @staticmethod + def _should_log(main_process_only): + "Check if log should be performed" + return not main_process_only or (main_process_only and AcceleratorState().local_process_index == 0) + + def log(self, level, msg, *args, **kwargs): + """ + Delegates logger call after checking if we should log. + + Accepts a new kwarg of `main_process_only`, which will dictate whether it will be logged across all processes + or only the main executed one. Default is `True` if not passed + """ + main_process_only = kwargs.pop("main_process_only", True) + if self.isEnabledFor(level) and self._should_log(main_process_only): + msg, kwargs = self.process(msg, kwargs) + self.logger.log(level, msg, *args, **kwargs) + + +def get_logger(name: str): + """ + Returns a `logging.Logger` for `name` that can handle multiprocessing. + + If a log should be called on all processes, pass `main_process_only=False` + + Args: + name (`str`): + The name for the logger, such as `__file__` + + Example: + + ```python + >>> from accelerate.logging import get_logger + + >>> logger = get_logger(__name__) + + >>> logger.info("My log", main_process_only=False) + >>> logger.debug("My log", main_process_only=True) + ``` + """ + logger = logging.getLogger(name) + return MultiProcessAdapter(logger, {}) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/memory_utils.py b/v0.13.2/accelerate-0.13.2/src/accelerate/memory_utils.py new file mode 100644 index 0000000..eba10bb --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/memory_utils.py @@ -0,0 +1,29 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all + + +import warnings + + +warnings.warn( + "memory_utils has been reorganized to utils.memory. Import `find_executable_batchsize` from the main `__init__`: " + "`from accelerate import find_executable_batch_size` to avoid this warning.", + FutureWarning, +) + +from .utils.memory import find_executable_batch_size diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/optimizer.py b/v0.13.2/accelerate-0.13.2/src/accelerate/optimizer.py new file mode 100644 index 0000000..4fad12c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/optimizer.py @@ -0,0 +1,159 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import warnings + +import torch + +from .state import AcceleratorState, GradientState +from .utils import DistributedType, honor_type, is_torch_version, is_tpu_available + + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + + +def move_to_device(state, device): + if isinstance(state, (list, tuple)): + return honor_type(state, (move_to_device(t, device) for t in state)) + elif isinstance(state, dict): + return type(state)({k: move_to_device(v, device) for k, v in state.items()}) + elif isinstance(state, torch.Tensor): + return state.to(device) + return state + + +class AcceleratedOptimizer(torch.optim.Optimizer): + """ + Internal wrapper around a torch optimizer. + + Conditionally will perform `step` and `zero_grad` if gradients should be synchronized when performing gradient + accumulation. + + Args: + optimizer (`torch.optim.optimizer.Optimizer`): + The optimizer to wrap. + device_placement (`bool`, *optional*, defaults to `True`): + Whether or not the optimizer should handle device placement. If so, it will place the state dictionary of + `optimizer` on the right device. + scaler (`torch.cuda.amp.grad_scaler.GradScaler`, *optional*): + The scaler to use in the step function if training with mixed precision. + """ + + def __init__(self, optimizer, device_placement=True, scaler=None): + self.optimizer = optimizer + self.scaler = scaler + self.accelerator_state = AcceleratorState() + self.gradient_state = GradientState() + self.device_placement = device_placement + self._is_overflow = False + + # Handle device placement + if device_placement: + state_dict = self.optimizer.state_dict() + if self.accelerator_state.distributed_type == DistributedType.TPU: + xm.send_cpu_data_to_device(state_dict, self.accelerator_state.device) + else: + state_dict = move_to_device(state_dict, self.accelerator_state.device) + self.optimizer.load_state_dict(state_dict) + + @property + def state(self): + return self.optimizer.state + + @state.setter + def state(self, state): + self.optimizer.state = state + + @property + def param_groups(self): + return self.optimizer.param_groups + + @param_groups.setter + def param_groups(self, param_groups): + self.optimizer.param_groups = param_groups + + @property + def defaults(self): + return self.optimizer.defaults + + @defaults.setter + def defaults(self, defaults): + self.optimizer.defaults = defaults + + def add_param_group(self, param_group): + self.optimizer.add_param_group(param_group) + + def load_state_dict(self, state_dict): + if self.accelerator_state.distributed_type == DistributedType.TPU and self.device_placement: + xm.send_cpu_data_to_device(state_dict, self.accelerator_state.device) + self.optimizer.load_state_dict(state_dict) + + def state_dict(self): + return self.optimizer.state_dict() + + def zero_grad(self, set_to_none=None): + if self.gradient_state.sync_gradients: + if is_torch_version("<", "1.7.0"): + if set_to_none is not None: + raise ValueError( + "`set_to_none` for Optimizer.zero_grad` was introduced in PyTorch 1.7.0 and can't be used for " + f"earlier versions (found version {torch.__version__})." + ) + self.optimizer.zero_grad() + else: + accept_arg = "set_to_none" in inspect.signature(self.optimizer.zero_grad).parameters + if accept_arg: + if set_to_none is None: + set_to_none = False + self.optimizer.zero_grad(set_to_none=set_to_none) + else: + if set_to_none is not None: + raise ValueError("`set_to_none` for Optimizer.zero_grad` is not supported by this optimizer.") + self.optimizer.zero_grad() + + def step(self, closure=None): + if self.gradient_state.sync_gradients: + if self.accelerator_state.distributed_type == DistributedType.TPU: + optimizer_args = {"closure": closure} if closure is not None else {} + xm.optimizer_step(self.optimizer, optimizer_args=optimizer_args) + elif self.scaler is not None: + scale_before = self.scaler.get_scale() + self.scaler.step(self.optimizer, closure) + self.scaler.update() + scale_after = self.scaler.get_scale() + # If we reduced the loss scale, it means the optimizer step was skipped because of gradient overflow. + self._is_overflow = scale_after < scale_before + else: + self.optimizer.step(closure) + + def _switch_parameters(self, parameters_map): + for param_group in self.optimizer.param_groups: + param_group["params"] = [parameters_map.get(p, p) for p in param_group["params"]] + + @property + def is_overflow(self): + """Whether or not the optimizer step was done, or skipped because of gradient overflow.""" + warnings.warn( + "The `is_overflow` property is deprecated and will be removed in version 1.0 of Accelerate use " + "`optimizer.step_was_skipped` instead.", + FutureWarning, + ) + return self._is_overflow + + @property + def step_was_skipped(self): + """Whether or not the optimizer step was skipped.""" + return self._is_overflow diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/scheduler.py b/v0.13.2/accelerate-0.13.2/src/accelerate/scheduler.py new file mode 100644 index 0000000..835d4e0 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/scheduler.py @@ -0,0 +1,91 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# We ignore warnings about stepping the scheduler since we step it ourselves during gradient accumulation + +import warnings + +from .state import AcceleratorState + + +warnings.filterwarnings("ignore", category=UserWarning, module="torch.optim.lr_scheduler") + + +class AcceleratedScheduler: + """ + A wrapper around a learning rate scheduler that will only step when the optimizer(s) have a training step. Useful + to avoid making a scheduler step too fast when gradients went overflow and there was no training step (in mixed + precision training) + + When performing gradient accumulation scheduler lengths should not be changed accordingly, Accelerate will always + step the scheduler to account for it. + + Args: + scheduler (`torch.optim.lr_scheduler._LRScheduler`): + The scheduler to wrap. + optimizers (one or a list of `torch.optim.Optimizer`): + The optimizers used. + step_with_optimizer (`bool`, *optional*, defaults to `True`): + Whether or not the scheduler should be stepped at each optimizer step. + split_batches (`bool`, *optional*, defaults to `False`): + Whether or not the dataloaders split one batch across the different processes (so batch size is the same + regardless of the number of processes) or create batches on each process (so batch size is the original + batch size multiplied by the number of processes). + """ + + def __init__(self, scheduler, optimizers, step_with_optimizer: bool = True, split_batches: bool = False): + self.scheduler = scheduler + self.optimizers = optimizers if isinstance(optimizers, (list, tuple)) else [optimizers] + self.split_batches = split_batches + self.step_with_optimizer = step_with_optimizer + + def step(self, *args, **kwargs): + if not self.step_with_optimizer: + # No link between scheduler and optimizer -> just step + self.scheduler.step(*args, **kwargs) + return + + # Otherwise, first make sure the optimizer was stepped. + for opt in self.optimizers: + if opt.step_was_skipped: + return + if self.split_batches: + # Split batches -> the training dataloader batch size is not changed so one step per training step + self.scheduler.step(*args, **kwargs) + else: + # Otherwise the training dataloader batch size was multiplied by `num_processes`, so we need to do + # num_processes steps per training step + num_processes = AcceleratorState().num_processes + for _ in range(num_processes): + # Special case when using OneCycle and `drop_last` was not used + if hasattr(self.scheduler, "total_steps") and self.scheduler._step_count <= self.scheduler.total_steps: + self.scheduler.step(*args, **kwargs) + else: + self.scheduler.step(*args, **kwargs) + + # Passthroughs + def get_last_lr(self): + return self.scheduler.get_last_lr() + + def state_dict(self): + return self.scheduler.state_dict() + + def load_state_dict(self, state_dict): + self.scheduler.load_state_dict(state_dict) + + def get_lr(self): + return self.scheduler.get_lr() + + def print_lr(self, *args, **kwargs): + return self.scheduler.print_lr(*args, **kwargs) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/state.py b/v0.13.2/accelerate-0.13.2/src/accelerate/state.py new file mode 100644 index 0000000..b6f6991 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/state.py @@ -0,0 +1,315 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import warnings +from distutils.util import strtobool + +import torch + +from .utils import DistributedType, get_ccl_version, is_ccl_available, is_deepspeed_available, is_tpu_available +from .utils.dataclasses import SageMakerDistributedType + + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + + +def get_int_from_env(env_keys, default): + """Returns the first positive env value found in the `env_keys` list or the default.""" + for e in env_keys: + val = int(os.environ.get(e, -1)) + if val >= 0: + return val + return default + + +def parse_flag_from_env(key, default=False): + value = os.environ.get(key, str(default)) + return strtobool(value) == 1 # As its name indicates `strtobool` actually returns an int... + + +def parse_choice_from_env(key, default="no"): + value = os.environ.get(key, str(default)) + return value + + +# Inspired by Alex Martelli's 'Borg'. +class AcceleratorState: + """ + Singleton class that has information about the current training environment. + + **Available attributes:** + + - **device** (`torch.device`) -- The device to use. + - **distributed_type** ([`~accelerate.state.DistributedType`]) -- The type of distributed environment currently + in use. + - **local_process_index** (`int`) -- The index of the current process on the current server. + - **mixed_precision** (`str`) -- Whether or not the current script will use mixed precision, and if so the type + of mixed precision being performed. + - **num_processes** (`int`) -- The number of processes currently launched in parallel. + - **process_index** (`int`) -- The index of the current process. + """ + + _shared_state = {} + + def __init__( + self, + mixed_precision: str = None, + cpu: bool = False, + deepspeed_plugin=None, + fsdp_plugin=None, + _from_accelerator: bool = False, + **kwargs, + ): + self.__dict__ = self._shared_state + if parse_flag_from_env("USE_CPU"): + cpu = True + self._check_initialized(mixed_precision, cpu) + self.fork_launched = parse_flag_from_env("FORK_LAUNCHED", 0) + if not getattr(self, "initialized", False): + self.backend = None + self.deepspeed_plugin = None + mixed_precision = ( + parse_choice_from_env("MIXED_PRECISION", "no") if mixed_precision is None else mixed_precision.lower() + ) + if not _from_accelerator: + raise ValueError( + "Please make sure to properly initialize your accelerator via `accelerator = Accelerator()` " + "before using any functionality from the `accelerate` library." + ) + if ( + os.environ.get("USE_SAGEMAKER", "false") == "true" + and os.environ.get("SAGEMAKER_DISTRIBUTED_TYPE") != SageMakerDistributedType.NO + and not cpu + ): + if os.environ.get("SAGEMAKER_DISTRIBUTED_TYPE") == SageMakerDistributedType.DATA_PARALLEL: + self.distributed_type = DistributedType.MULTI_GPU + import smdistributed.dataparallel.torch.torch_smddp # noqa + + if not torch.distributed.is_initialized(): + torch.distributed.init_process_group(backend="smddp") + self.backend = "smddp" + self.num_processes = torch.distributed.get_world_size() + self.process_index = torch.distributed.get_rank() + self.local_process_index = int(os.environ.get("LOCAL_RANK", -1)) + self.device = torch.device("cuda", self.local_process_index) + torch.cuda.set_device(self.device) + self.mixed_precision = mixed_precision + elif is_tpu_available() and not cpu: + self.distributed_type = DistributedType.TPU + self.num_processes = xm.xrt_world_size() + self.process_index = xm.get_ordinal() + self.local_process_index = xm.get_local_ordinal() + self.device = xm.xla_device() + if mixed_precision == "bf16": + if os.environ.get("DOWNCAST_BF16"): + os.environ["XLA_USE_BF16"] = str(0) + os.environ["XLA_DOWNCAST_BF16"] = str(1) + self.downcast_bfloat = True + else: + os.environ["XLA_USE_BF16"] = str(1) + os.environ["XLA_DOWNCAST_BF16"] = str(0) + self.downcast_bfloat = False + self.mixed_precision = mixed_precision + elif os.environ.get("USE_DEEPSPEED", "false") == "true" and not cpu: + assert ( + is_deepspeed_available() + ), "DeepSpeed is not available => install it using `pip3 install deepspeed` or build it from source" + self.distributed_type = DistributedType.DEEPSPEED + if not torch.distributed.is_initialized(): + from .utils import compare_versions + + self.backend = "nccl" + if compare_versions("deepspeed", ">", "0.6.5"): + from deepspeed import comm as dist + + dist.init_distributed(dist_backend=self.backend) + else: + torch.distributed.init_process_group(backend="nccl", **kwargs) + + self.num_processes = torch.distributed.get_world_size() + self.process_index = torch.distributed.get_rank() + self.local_process_index = int(os.environ.get("LOCAL_RANK", -1)) + self.device = torch.device("cuda", self.local_process_index) + torch.cuda.set_device(self.device) + self.mixed_precision = "no" # deepspeed handles mixed_precision using deepspeed_config + self.deepspeed_plugin = deepspeed_plugin + elif int(os.environ.get("LOCAL_RANK", -1)) != -1 and not cpu: + self.distributed_type = DistributedType.MULTI_GPU + if not torch.distributed.is_initialized(): + torch.distributed.init_process_group(backend="nccl", **kwargs) + self.backend = "nccl" + self.num_processes = torch.distributed.get_world_size() + self.process_index = torch.distributed.get_rank() + self.local_process_index = int(os.environ.get("LOCAL_RANK", -1)) + self.device = torch.device("cuda", self.local_process_index) + # torch.cuda.set_device(self.device) + self.mixed_precision = mixed_precision + if os.environ.get("USE_FSDP", "false") == "true": + self.distributed_type = DistributedType.FSDP + if self.mixed_precision != "no": + fsdp_plugin.set_mixed_precision(self.mixed_precision) + self.fsdp_plugin = fsdp_plugin + elif get_int_from_env(["PMI_SIZE", "OMPI_COMM_WORLD_SIZE", "MV2_COMM_WORLD_SIZE", "WORLD_SIZE"], 1) > 1: + self.distributed_type = DistributedType.MULTI_CPU + if is_ccl_available() and get_int_from_env(["CCL_WORKER_COUNT"], 0) > 0: + if get_ccl_version() >= "1.12": + import oneccl_bindings_for_pytorch # noqa: F401 + else: + import torch_ccl # noqa: F401 + backend = "ccl" + elif torch.distributed.is_mpi_available(): + backend = "mpi" + else: + backend = "gloo" + # Try to get launch configuration from environment variables set by MPI launcher - works for Intel MPI, OpenMPI and MVAPICH + rank = get_int_from_env(["RANK", "PMI_RANK", "OMPI_COMM_WORLD_RANK", "MV2_COMM_WORLD_RANK"], 0) + size = get_int_from_env(["WORLD_SIZE", "PMI_SIZE", "OMPI_COMM_WORLD_SIZE", "MV2_COMM_WORLD_SIZE"], 1) + local_rank = get_int_from_env( + ["LOCAL_RANK", "MPI_LOCALRANKID", "OMPI_COMM_WORLD_LOCAL_RANK", "MV2_COMM_WORLD_LOCAL_RANK"], 0 + ) + local_size = get_int_from_env( + ["MPI_LOCALNRANKS", "OMPI_COMM_WORLD_LOCAL_SIZE", "MV2_COMM_WORLD_LOCAL_SIZE"], 1 + ) + self.local_process_index = local_rank + os.environ["RANK"] = str(rank) + os.environ["WORLD_SIZE"] = str(size) + os.environ["LOCAL_RANK"] = str(local_rank) + if not os.environ.get("MASTER_PORT", None): + os.environ["MASTER_PORT"] = "29500" + if not os.environ.get("MASTER_ADDR", None): + if local_size != size and backend != "mpi": + raise ValueError( + "Looks like distributed multinode run but MASTER_ADDR env not set, " + "please try exporting rank 0's hostname as MASTER_ADDR" + ) + if not torch.distributed.is_initialized(): + torch.distributed.init_process_group(backend, rank=rank, world_size=size, **kwargs) + self.backend = backend + self.num_processes = torch.distributed.get_world_size() + self.process_index = torch.distributed.get_rank() + self.local_process_index = local_rank + self.device = torch.device("cpu") + self.mixed_precision = mixed_precision + else: + self.distributed_type = DistributedType.NO + self.num_processes = 1 + self.process_index = self.local_process_index = 0 + if parse_flag_from_env("USE_MPS_DEVICE") and not cpu: + if not torch.backends.mps.is_available(): + if not torch.backends.mps.is_built(): + raise AssertionError( + "MPS not available because the current PyTorch install was not " + "built with MPS enabled. Please install torch version >=1.12.0 on " + "your Apple silicon Mac running macOS 12.3 or later with a native " + "version (arm64) of Python" + ) + else: + raise AssertionError( + "MPS not available because the current MacOS version is not 12.3+ " + "and/or you do not have an MPS-enabled device on this machine." + ) + else: + from .utils import is_torch_version + + if not is_torch_version(">", "1.12.0"): + warnings.warn( + "We strongly recommend to install PyTorch >= 1.13 (nightly version at the time of writing) on your MacOS machine. " + "It has major fixes related to model correctness and performance improvements for transformer based models. " + "Please refer to https://github.com/pytorch/pytorch/issues/82707 for more details." + ) + self.device = torch.device("mps") + elif cpu or not torch.cuda.is_available(): + self.device = torch.device("cpu") + else: + self.device = torch.device("cuda") + self.mixed_precision = mixed_precision + self.initialized = True + + def __repr__(self): + mixed_precision = self.mixed_precision + + repr = ( + f"Distributed environment: {self.distributed_type}{(' Backend: ' + self.backend) if self.backend else ''}\n" + f"Num processes: {self.num_processes}\n" + f"Process index: {self.process_index}\n" + f"Local process index: {self.local_process_index}\n" + f"Device: {self.device}\n" + ) + if self.distributed_type == DistributedType.DEEPSPEED: + repr += f"ds_config: {self.deepspeed_plugin.deepspeed_config}\n" + else: + repr += f"Mixed precision type: {mixed_precision}\n" + return repr + + # For backward compatibility + @property + def use_fp16(self): + return self.mixed_precision != "no" + + @staticmethod + def _reset_state(): + "Resets `_shared_state`, is used internally and should not be called" + AcceleratorState._shared_state = {} + + def _check_initialized(self, mixed_precision=None, cpu=None): + "Checks if a modification is trying to be made and the `AcceleratorState` has already been initialized" + if getattr(self, "initialized", False): + err = "AcceleratorState has already been initialized and cannot be changed, restart your runtime completely and pass `{flag}` to `Accelerate()`." + if cpu and self.device.type != "cpu": + raise ValueError(err.format(flag="cpu=True")) + if mixed_precision is not None and mixed_precision != self.mixed_precision: + raise ValueError(err.format(flag=f"mixed_precision='{mixed_precision}'")) + + +class GradientState: + """ + Singleton class that has information related to gradient synchronization for gradient accumulation + + **Available attributes:** + + - **end_of_dataloader** (`bool`) -- Whether we have reached the end the current dataloader + - **remainder** (`int`) -- The number of extra samples that were added from padding the dataloader + - **sync_gradients** (`bool`) -- Whether the gradients should be synced across all devices + """ + + _shared_state = {} + + def __init__(self): + self.__dict__ = self._shared_state + if not getattr(self, "initialized", False): + self.sync_gradients = True + self.end_of_dataloader = False + self.remainder = -1 + self.initialized = True + + def __repr__(self): + return ( + f"Sync Gradients: {self.sync_gradients}\n" + f"At end of current dataloader: {self.end_of_dataloader}\n" + f"Extra samples added: {self.remainder}" + ) + + def _set_sync_gradients(self, sync_gradients): + "Private function that sets whether gradients should be synchronized. Users should not have to call this." + self.sync_gradients = sync_gradients + + def _set_end_of_dataloader(self, end_of_dataloader): + "Private function that sets whether the end of the current dataloader has been reached. Users should not have to call this." + self.end_of_dataloader = end_of_dataloader + + def _set_remainder(self, remainder): + "Private function that sets the number of remaining samples at the end of the dataloader. Users should not have to call this." + self.remainder = remainder diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/__init__.py new file mode 100644 index 0000000..faf8a7d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/__init__.py @@ -0,0 +1,21 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +from .testing import ( + are_the_same_tensors, + execute_subprocess_async, + require_cpu, + require_cuda, + require_huggingface_suite, + require_multi_gpu, + require_single_gpu, + require_torch_min_version, + require_tpu, + skip, + slow, +) +from .training import RegressionDataset, RegressionModel + + +from .scripts import test_script, test_sync # isort:skip diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/examples.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/examples.py new file mode 100644 index 0000000..f459e03 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/examples.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A collection of utilities for comparing `examples/complete_*_example.py` scripts with the capabilities inside of each +`examples/by_feature` example. `compare_against_test` is the main function that should be used when testing, while the +others are used to either get the code that matters, or to preprocess them (such as stripping comments) +""" + +import os +from typing import List + + +def get_function_contents_by_name(lines: List[str], name: str): + """ + Extracts a function from `lines` of segmented source code with the name `name`. + + Args: + lines (`List[str]`): + Source code of a script seperated by line. + name (`str`): + The name of the function to extract. Should be either `training_function` or `main` + """ + if name != "training_function" and name != "main": + raise ValueError(f"Incorrect function name passed: {name}, choose either 'main' or 'training_function'") + good_lines, found_start = [], False + for line in lines: + if not found_start and f"def {name}" in line: + found_start = True + good_lines.append(line) + continue + if found_start: + if name == "training_function" and "def main" in line: + return good_lines + if name == "main" and "if __name__" in line: + return good_lines + good_lines.append(line) + + +def clean_lines(lines: List[str]): + """ + Filters `lines` and removes any entries that start with a comment ('#') or is just a newline ('\n') + + Args: + lines (`List[str]`): + Source code of a script seperated by line. + """ + return [line for line in lines if not line.lstrip().startswith("#") and line != "\n"] + + +def compare_against_test(base_filename: str, feature_filename: str, parser_only: bool, secondary_filename: str = None): + """ + Tests whether the additional code inside of `feature_filename` was implemented in `base_filename`. This should be + used when testing to see if `complete_*_.py` examples have all of the implementations from each of the + `examples/by_feature/*` scripts. + + It utilizes `nlp_example.py` to extract out all of the repeated training code, so that only the new additional code + is examined and checked. If something *other* than `nlp_example.py` should be used, such as `cv_example.py` for the + `complete_cv_example.py` script, it should be passed in for the `secondary_filename` parameter. + + Args: + base_filename (`str` or `os.PathLike`): + The filepath of a single "complete" example script to test, such as `examples/complete_cv_example.py` + feature_filename (`str` or `os.PathLike`): + The filepath of a single feature example script. The contents of this script are checked to see if they + exist in `base_filename` + parser_only (`bool`): + Whether to compare only the `main()` sections in both files, or to compare the contents of + `training_loop()` + secondary_filename (`str`, *optional*): + A potential secondary filepath that should be included in the check. This function extracts the base + functionalities off of "examples/nlp_example.py", so if `base_filename` is a script other than + `complete_nlp_example.py`, the template script should be included here. Such as `examples/cv_example.py` + """ + with open(base_filename, "r") as f: + base_file_contents = f.readlines() + with open(os.path.abspath(os.path.join("examples", "nlp_example.py")), "r") as f: + full_file_contents = f.readlines() + with open(feature_filename, "r") as f: + feature_file_contents = f.readlines() + if secondary_filename is not None: + with open(secondary_filename, "r") as f: + secondary_file_contents = f.readlines() + + # This is our base, we remove all the code from here in our `full_filename` and `feature_filename` to find the new content + if parser_only: + base_file_func = clean_lines(get_function_contents_by_name(base_file_contents, "main")) + full_file_func = clean_lines(get_function_contents_by_name(full_file_contents, "main")) + feature_file_func = clean_lines(get_function_contents_by_name(feature_file_contents, "main")) + if secondary_filename is not None: + secondary_file_func = clean_lines(get_function_contents_by_name(secondary_file_contents, "main")) + else: + base_file_func = clean_lines(get_function_contents_by_name(base_file_contents, "training_function")) + full_file_func = clean_lines(get_function_contents_by_name(full_file_contents, "training_function")) + feature_file_func = clean_lines(get_function_contents_by_name(feature_file_contents, "training_function")) + if secondary_filename is not None: + secondary_file_func = clean_lines( + get_function_contents_by_name(secondary_file_contents, "training_function") + ) + + _dl_line = "train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size)\n" + + # Specific code in our script that differs from the full version, aka what is new + new_feature_code = [] + passed_idxs = [] # We keep track of the idxs just in case it's a repeated statement + it = iter(feature_file_func) + for i in range(len(feature_file_func) - 1): + if i not in passed_idxs: + line = next(it) + if (line not in full_file_func) and (line.lstrip() != _dl_line): + if "TESTING_MOCKED_DATALOADERS" not in line: + new_feature_code.append(line) + passed_idxs.append(i) + else: + # Skip over the `config['num_epochs'] = 2` statement + _ = next(it) + + # Extract out just the new parts from the full_file_training_func + new_full_example_parts = [] + passed_idxs = [] # We keep track of the idxs just in case it's a repeated statement + for i, line in enumerate(base_file_func): + if i not in passed_idxs: + if (line not in full_file_func) and (line.lstrip() != _dl_line): + if "TESTING_MOCKED_DATALOADERS" not in line: + new_full_example_parts.append(line) + passed_idxs.append(i) + + # Finally, get the overall diff + diff_from_example = [line for line in new_feature_code if line not in new_full_example_parts] + if secondary_filename is not None: + diff_from_two = [line for line in full_file_contents if line not in secondary_file_func] + diff_from_example = [line for line in diff_from_example if line not in diff_from_two] + + return diff_from_example diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_checkpointing.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_checkpointing.py new file mode 100644 index 0000000..cde602d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_checkpointing.py @@ -0,0 +1,269 @@ +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import json +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from accelerate.utils.deepspeed import DummyOptim, DummyScheduler +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16, model_name: str = "bert-base-cased"): + """ + Creates a set of `DataLoader`s for the `glue` dataset. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + model_name (`str`, *optional*): + """ + tokenizer = AutoTokenizer.from_pretrained(model_name) + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + tokenized_datasets = datasets.map( + tokenize_function, batched=True, remove_columns=["idx", "sentence1", "sentence2"], load_from_cache_file=False + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +def evaluation_loop(accelerator, model, eval_dataloader, metric): + model.eval() + samples_seen = 0 + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + # It is slightly faster to call this once, than multiple times + predictions, references = accelerator.gather( + (predictions, batch["labels"]) + ) # If we are in a multiprocess environment, the last batch has duplicates + if accelerator.use_distributed: + if step == len(eval_dataloader) - 1: + predictions = predictions[: len(eval_dataloader.dataset) - samples_seen] + references = references[: len(eval_dataloader.dataset) - samples_seen] + else: + samples_seen += references.shape[0] + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + return eval_metric["accuracy"] + + +def training_function(config, args): + # Initialize accelerator + accelerator = Accelerator() + + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + model_name = args.model_name_or_path + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size, model_name) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained(model_name, return_dict=True) + + # Instantiate optimizer + optimizer_cls = ( + AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + optimizer = optimizer_cls(params=model.parameters(), lr=lr) + + if accelerator.state.deepspeed_plugin is not None: + gradient_accumulation_steps = accelerator.state.deepspeed_plugin.deepspeed_config[ + "gradient_accumulation_steps" + ] + else: + gradient_accumulation_steps = 1 + max_training_steps = (len(train_dataloader) * num_epochs) // gradient_accumulation_steps + + # Instantiate scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=max_training_steps, + ) + else: + lr_scheduler = DummyScheduler(optimizer, total_num_steps=max_training_steps, warmup_num_steps=0) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + metric = evaluate.load("glue", "mrpc") + ending_epoch = num_epochs + + if args.partial_train_epoch is not None: + ending_epoch = args.partial_train_epoch + + if args.resume_from_checkpoint: + accelerator.load_state(args.resume_from_checkpoint) + epoch_string = args.resume_from_checkpoint.split("epoch_")[1] + state_epoch_num = "" + for char in epoch_string: + if char.isdigit(): + state_epoch_num += char + else: + break + starting_epoch = int(state_epoch_num) + 1 + accuracy = evaluation_loop(accelerator, model, eval_dataloader, metric) + accelerator.print("resumed checkpoint performance:", accuracy) + accelerator.print("resumed checkpoint's scheduler's lr:", lr_scheduler.get_lr()[0]) + accelerator.print("resumed optimizers's lr:", optimizer.param_groups[0]["lr"]) + with open(os.path.join(args.output_dir, f"state_{starting_epoch-1}.json"), "r") as f: + resumed_state = json.load(f) + assert resumed_state["accuracy"] == accuracy, "Accuracy mismatch, loading from checkpoint failed" + assert ( + resumed_state["lr"] == lr_scheduler.get_lr()[0] + ), "Scheduler learning rate mismatch, loading from checkpoint failed" + assert ( + resumed_state["optimizer_lr"] == optimizer.param_groups[0]["lr"] + ), "Optimizer learning rate mismatch, loading from checkpoint failed" + assert resumed_state["epoch"] == starting_epoch - 1, "Epoch mismatch, loading from checkpoint failed" + return + + # Now we train the model + state = {} + for epoch in range(starting_epoch, ending_epoch): + model.train() + for step, batch in enumerate(train_dataloader): + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + overall_step += 1 + output_dir = f"epoch_{epoch}" + output_dir = os.path.join(args.output_dir, output_dir) + accelerator.save_state(output_dir) + accuracy = evaluation_loop(accelerator, model, eval_dataloader, metric) + state["accuracy"] = accuracy + state["lr"] = lr_scheduler.get_lr()[0] + state["optimizer_lr"] = optimizer.param_groups[0]["lr"] + state["epoch"] = epoch + state["step"] = overall_step + accelerator.print(f"epoch {epoch}:", state) + + accelerator.wait_for_everyone() + if accelerator.is_main_process: + with open(os.path.join(args.output_dir, f"state_{epoch}.json"), "w") as f: + json.dump(state, f) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script tracking peak GPU memory usage.") + parser.add_argument( + "--model_name_or_path", + type=str, + default="bert-base-cased", + help="Path to pretrained model or model identifier from huggingface.co/models.", + required=False, + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--resume_from_checkpoint", + type=str, + default=None, + help="If the training should continue from a checkpoint folder.", + ) + parser.add_argument( + "--partial_train_epoch", + type=int, + default=None, + help="If passed, the training will stop after this number of epochs.", + ) + parser.add_argument( + "--num_epochs", + type=int, + default=2, + help="Number of train epochs.", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": args.num_epochs, "seed": 42, "batch_size": 16} + + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_metrics.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_metrics.py new file mode 100755 index 0000000..d234ee1 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_metrics.py @@ -0,0 +1,170 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +from copy import deepcopy + +import torch +from torch.utils.data import DataLoader + +import datasets +import evaluate +import transformers +from accelerate import Accelerator +from accelerate.test_utils import RegressionDataset, RegressionModel +from accelerate.utils import is_tpu_available, set_seed +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer + + +def get_basic_setup(accelerator, num_samples=82): + "Returns everything needed to perform basic training" + set_seed(42) + model = RegressionModel() + ddp_model = deepcopy(model) + dset = RegressionDataset(length=num_samples) + dataloader = DataLoader(dset, batch_size=16) + model.to(accelerator.device) + ddp_model, dataloader = accelerator.prepare(ddp_model, dataloader) + return model, ddp_model, dataloader + + +def get_dataloader(accelerator: Accelerator, use_longest=False): + tokenizer = AutoTokenizer.from_pretrained("hf-internal-testing/mrpc-bert-base-cased") + dataset = load_dataset("glue", "mrpc", split="validation") + + def tokenize_function(examples): + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + with accelerator.main_process_first(): + tokenized_datasets = dataset.map( + tokenize_function, + batched=True, + remove_columns=["idx", "sentence1", "sentence2"], + ) + + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + if use_longest: + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + + return DataLoader(tokenized_datasets, shuffle=False, collate_fn=collate_fn, batch_size=16) + + +def get_mrpc_setup(dispatch_batches, split_batches): + accelerator = Accelerator(dispatch_batches=dispatch_batches, split_batches=split_batches) + dataloader = get_dataloader(accelerator, not dispatch_batches) + model = AutoModelForSequenceClassification.from_pretrained( + "hf-internal-testing/mrpc-bert-base-cased", return_dict=True + ) + ddp_model, ddp_dataloader = accelerator.prepare(model, dataloader) + return {"ddp": [ddp_model, ddp_dataloader, "cuda:0"], "no": [model, dataloader, accelerator.device]}, accelerator + + +def generate_predictions(model, dataloader, accelerator): + logits_and_targets = [] + for batch in dataloader: + input, target = batch.values() + with torch.no_grad(): + logit = model(input) + logit, target = accelerator.gather_for_metrics((logit, target)) + logits_and_targets.append((logit, target)) + logits, targs = [], [] + for (logit, targ) in logits_and_targets: + logits.append(logit) + targs.append(targ) + logits, targs = torch.cat(logits), torch.cat(targs) + return logits, targs + + +def test_torch_metrics(accelerator: Accelerator, num_samples=82, dispatch_batches=False, split_batches=False): + model, ddp_model, dataloader = get_basic_setup(accelerator, num_samples) + logits, targs = generate_predictions(ddp_model, dataloader, accelerator) + assert ( + len(logits) == num_samples + ), f"Unexpected number of inputs:\n Expected: {num_samples}\n Actual: {len(logits)}" + + +def test_mrpc(dispatch_batches: bool = False, split_batches: bool = False): + metric = evaluate.load("glue", "mrpc") + setup, accelerator = get_mrpc_setup(dispatch_batches, split_batches) + # First do baseline + model, dataloader, device = setup["no"] + model.to(device) + model.eval() + for batch in dataloader: + batch.to(device) + with torch.inference_mode(): + outputs = model(**batch) + preds = outputs.logits.argmax(dim=-1) + metric.add_batch(predictions=preds, references=batch["labels"]) + baseline = metric.compute() + + # Then do distributed + model, dataloader, device = setup["ddp"] + model.eval() + for batch in dataloader: + with torch.inference_mode(): + outputs = model(**batch) + preds = outputs.logits.argmax(dim=-1) + references = batch["labels"] + preds, references = accelerator.gather_for_metrics((preds, references)) + metric.add_batch(predictions=preds, references=references) + distributed = metric.compute() + + for key in "accuracy f1".split(): + assert math.isclose( + baseline[key], distributed[key] + ), f"Baseline and Distributed are not the same for key {key}:\n\tBaseline: {baseline[key]}\n\tDistributed: {distributed[key]}\n" + + +def main(): + accelerator = Accelerator(split_batches=False, dispatch_batches=False) + if accelerator.is_local_main_process: + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_warning() + else: + datasets.utils.logging.set_verbosity_error() + transformers.utils.logging.set_verbosity_error() + # These are a bit slower so they should only be ran on the GPU or TPU + if torch.cuda.is_available() or is_tpu_available(): + if accelerator.is_local_main_process: + print("**Testing gather_for_metrics**") + for split_batches in [True, False]: + for dispatch_batches in [True, False]: + if accelerator.is_local_main_process: + print(f"With: `split_batches={split_batches}`, `dispatch_batches={dispatch_batches}`") + test_mrpc(dispatch_batches, split_batches) + accelerator.state._reset_state() + if accelerator.is_local_main_process: + print("**Test torch metrics**") + for split_batches in [True, False]: + for dispatch_batches in [True, False]: + accelerator = Accelerator(split_batches=split_batches, dispatch_batches=dispatch_batches) + if accelerator.is_local_main_process: + print(f"With: `split_batches={split_batches}`, `dispatch_batches={dispatch_batches}`, length=99") + test_torch_metrics(accelerator, 99) + accelerator.state._reset_state() + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_peak_memory_usage.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_peak_memory_usage.py new file mode 100644 index 0000000..7bb5ca3 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_peak_memory_usage.py @@ -0,0 +1,258 @@ +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import gc +import json +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +from accelerate import Accelerator, DistributedType +from accelerate.utils.deepspeed import DummyOptim, DummyScheduler +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +# Converting Bytes to Megabytes +def b2mb(x): + return int(x / 2**20) + + +# This context manager is used to track the peak memory usage of the process +class TorchTracemalloc: + def __enter__(self): + gc.collect() + torch.cuda.empty_cache() + torch.cuda.reset_max_memory_allocated() # reset the peak gauge to zero + self.begin = torch.cuda.memory_allocated() + return self + + def __exit__(self, *exc): + gc.collect() + torch.cuda.empty_cache() + self.end = torch.cuda.memory_allocated() + self.peak = torch.cuda.max_memory_allocated() + self.used = b2mb(self.end - self.begin) + self.peaked = b2mb(self.peak - self.begin) + # print(f"delta used/peak {self.used:4d}/{self.peaked:4d}") + + +def get_dataloaders( + accelerator: Accelerator, + batch_size: int = 16, + model_name: str = "bert-base-cased", + n_train: int = 320, + n_val: int = 160, +): + """ + Creates a set of `DataLoader`s for the `glue` dataset. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + model_name (`str`, *optional*): + The name of the model to use. + n_train (`int`, *optional*): + The number of training examples to use. + n_val (`int`, *optional*): + The number of validation examples to use. + """ + tokenizer = AutoTokenizer.from_pretrained(model_name) + datasets = load_dataset( + "glue", "mrpc", split={"train": f"train[:{n_train}]", "validation": f"validation[:{n_val}]"} + ) + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + tokenized_datasets = datasets.map( + tokenize_function, batched=True, remove_columns=["idx", "sentence1", "sentence2"], load_from_cache_file=False + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +def training_function(config, args): + # Initialize accelerator + accelerator = Accelerator() + + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + model_name = args.model_name_or_path + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size, model_name, args.n_train, args.n_val) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained(model_name, return_dict=True) + + # Instantiate optimizer + optimizer_cls = ( + AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + optimizer = optimizer_cls(params=model.parameters(), lr=lr) + + if accelerator.state.deepspeed_plugin is not None: + gradient_accumulation_steps = accelerator.state.deepspeed_plugin.deepspeed_config[ + "gradient_accumulation_steps" + ] + else: + gradient_accumulation_steps = 1 + max_training_steps = (len(train_dataloader) * num_epochs) // gradient_accumulation_steps + + # Instantiate scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=max_training_steps, + ) + else: + lr_scheduler = DummyScheduler(optimizer, total_num_steps=max_training_steps, warmup_num_steps=0) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + + # Now we train the model + train_total_peak_memory = {} + for epoch in range(starting_epoch, num_epochs): + with TorchTracemalloc() as tracemalloc: + model.train() + for step, batch in enumerate(train_dataloader): + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + overall_step += 1 + + # Printing the GPU memory usage details such as allocated memory, peak memory, and total memory usage + accelerator.print("Memory before entering the train : {}".format(b2mb(tracemalloc.begin))) + accelerator.print("Memory consumed at the end of the train (end-begin): {}".format(tracemalloc.used)) + accelerator.print("Peak Memory consumed during the train (max-begin): {}".format(tracemalloc.peaked)) + accelerator.print( + "Total Peak Memory consumed during the train (max): {}".format( + tracemalloc.peaked + b2mb(tracemalloc.begin) + ) + ) + train_total_peak_memory[f"epoch-{epoch}"] = tracemalloc.peaked + b2mb(tracemalloc.begin) + if args.peak_memory_upper_bound is not None: + assert ( + train_total_peak_memory[f"epoch-{epoch}"] <= args.peak_memory_upper_bound + ), "Peak memory usage exceeded the upper bound" + + accelerator.wait_for_everyone() + if accelerator.is_main_process: + with open(os.path.join(args.output_dir, "peak_memory_utilization.json"), "w") as f: + json.dump(train_total_peak_memory, f) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script tracking peak GPU memory usage.") + parser.add_argument( + "--model_name_or_path", + type=str, + default="bert-base-cased", + help="Path to pretrained model or model identifier from huggingface.co/models.", + required=False, + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--peak_memory_upper_bound", + type=float, + default=None, + help="The upper bound of peak memory usage in MB. If set, the training will throw an error if the peak memory usage exceeds this value.", + ) + parser.add_argument( + "--n_train", + type=int, + default=320, + help="Number of training examples to use.", + ) + parser.add_argument( + "--n_val", + type=int, + default=160, + help="Number of validation examples to use.", + ) + parser.add_argument( + "--num_epochs", + type=int, + default=1, + help="Number of train epochs.", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": args.num_epochs, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_performance.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_performance.py new file mode 100644 index 0000000..324a185 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/external_deps/test_performance.py @@ -0,0 +1,231 @@ +# coding=utf-8 +# Copyright 2022 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import json +import os + +import torch +from torch.optim import AdamW +from torch.utils.data import DataLoader + +import evaluate +from accelerate import Accelerator, DistributedType +from accelerate.utils.deepspeed import DummyOptim, DummyScheduler +from datasets import load_dataset +from transformers import AutoModelForSequenceClassification, AutoTokenizer, get_linear_schedule_with_warmup, set_seed + + +MAX_GPU_BATCH_SIZE = 16 +EVAL_BATCH_SIZE = 32 + + +def get_dataloaders(accelerator: Accelerator, batch_size: int = 16, model_name: str = "bert-base-cased"): + """ + Creates a set of `DataLoader`s for the `glue` dataset. + + Args: + accelerator (`Accelerator`): + An `Accelerator` object + batch_size (`int`, *optional*): + The batch size for the train and validation DataLoaders. + model_name (`str`, *optional*): + """ + tokenizer = AutoTokenizer.from_pretrained(model_name) + datasets = load_dataset("glue", "mrpc") + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, max_length=None) + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + tokenized_datasets = datasets.map( + tokenize_function, batched=True, remove_columns=["idx", "sentence1", "sentence2"], load_from_cache_file=False + ) + + # We also rename the 'label' column to 'labels' which is the expected name for labels by the models of the + # transformers library + tokenized_datasets = tokenized_datasets.rename_column("label", "labels") + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader( + tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=batch_size + ) + eval_dataloader = DataLoader( + tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=EVAL_BATCH_SIZE + ) + + return train_dataloader, eval_dataloader + + +def training_function(config, args): + # Initialize accelerator + accelerator = Accelerator() + + # Sample hyper-parameters for learning rate, batch size, seed and a few other HPs + lr = config["lr"] + num_epochs = int(config["num_epochs"]) + seed = int(config["seed"]) + batch_size = int(config["batch_size"]) + model_name = args.model_name_or_path + + set_seed(seed) + train_dataloader, eval_dataloader = get_dataloaders(accelerator, batch_size, model_name) + + # Instantiate the model (we build the model here so that the seed also control new weights initialization) + model = AutoModelForSequenceClassification.from_pretrained(model_name, return_dict=True) + + # Instantiate optimizer + optimizer_cls = ( + AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + optimizer = optimizer_cls(params=model.parameters(), lr=lr) + + if accelerator.state.deepspeed_plugin is not None: + gradient_accumulation_steps = accelerator.state.deepspeed_plugin.deepspeed_config[ + "gradient_accumulation_steps" + ] + else: + gradient_accumulation_steps = 1 + max_training_steps = (len(train_dataloader) * num_epochs) // gradient_accumulation_steps + + # Instantiate scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + lr_scheduler = get_linear_schedule_with_warmup( + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=max_training_steps, + ) + else: + lr_scheduler = DummyScheduler(optimizer, total_num_steps=max_training_steps, warmup_num_steps=0) + + # Prepare everything + # There is no specific order to remember, we just need to unpack the objects in the same order we gave them to the + # prepare method. + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + + # We need to keep track of how many total steps we have iterated over + overall_step = 0 + # We also need to keep track of the stating epoch so files are named properly + starting_epoch = 0 + + # Now we train the model + metric = evaluate.load("glue", "mrpc") + best_performance = 0 + performance_metric = {} + for epoch in range(starting_epoch, num_epochs): + model.train() + for step, batch in enumerate(train_dataloader): + outputs = model(**batch) + loss = outputs.loss + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + if step % gradient_accumulation_steps == 0: + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + + overall_step += 1 + + model.eval() + samples_seen = 0 + for step, batch in enumerate(eval_dataloader): + # We could avoid this line since we set the accelerator with `device_placement=True`. + batch.to(accelerator.device) + with torch.no_grad(): + outputs = model(**batch) + predictions = outputs.logits.argmax(dim=-1) + # It is slightly faster to call this once, than multiple times + predictions, references = accelerator.gather( + (predictions, batch["labels"]) + ) # If we are in a multiprocess environment, the last batch has duplicates + if accelerator.use_distributed: + if step == len(eval_dataloader) - 1: + predictions = predictions[: len(eval_dataloader.dataset) - samples_seen] + references = references[: len(eval_dataloader.dataset) - samples_seen] + else: + samples_seen += references.shape[0] + metric.add_batch( + predictions=predictions, + references=references, + ) + + eval_metric = metric.compute() + # Use accelerator.print to print only on the main process. + accelerator.print(f"epoch {epoch}:", eval_metric) + performance_metric[f"epoch-{epoch}"] = eval_metric["accuracy"] + + if best_performance < eval_metric["accuracy"]: + best_performance = eval_metric["accuracy"] + + if args.performance_lower_bound is not None: + assert ( + args.performance_lower_bound <= best_performance + ), f"Best performance metric {best_performance} is lower than the lower bound {args.performance_lower_bound}" + + accelerator.wait_for_everyone() + if accelerator.is_main_process: + with open(os.path.join(args.output_dir, "all_results.json"), "w") as f: + json.dump(performance_metric, f) + + +def main(): + parser = argparse.ArgumentParser(description="Simple example of training script tracking peak GPU memory usage.") + parser.add_argument( + "--model_name_or_path", + type=str, + default="bert-base-cased", + help="Path to pretrained model or model identifier from huggingface.co/models.", + required=False, + ) + parser.add_argument( + "--output_dir", + type=str, + default=".", + help="Optional save directory where all checkpoint folders will be stored. Default is the current working directory.", + ) + parser.add_argument( + "--performance_lower_bound", + type=float, + default=None, + help="Optional lower bound for the performance metric. If set, the training will throw error when the performance metric drops below this value.", + ) + parser.add_argument( + "--num_epochs", + type=int, + default=3, + help="Number of train epochs.", + ) + args = parser.parse_args() + config = {"lr": 2e-5, "num_epochs": args.num_epochs, "seed": 42, "batch_size": 16} + training_function(config, args) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_script.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_script.py new file mode 100644 index 0000000..6897d90 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_script.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python + +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch +from torch.utils.data import DataLoader + +from accelerate import Accelerator +from accelerate.data_loader import prepare_data_loader +from accelerate.state import AcceleratorState +from accelerate.test_utils import RegressionDataset, RegressionModel, are_the_same_tensors +from accelerate.utils import ( + DistributedType, + gather, + is_bf16_available, + is_torch_version, + set_seed, + synchronize_rng_states, +) + + +def init_state_check(): + # Test we can instantiate this twice in a row. + state = AcceleratorState() + if state.local_process_index == 0: + print("Testing, testing. 1, 2, 3.") + print(state) + + +def rng_sync_check(): + state = AcceleratorState() + synchronize_rng_states(["torch"]) + assert are_the_same_tensors(torch.get_rng_state()), "RNG states improperly synchronized on CPU." + if state.distributed_type == DistributedType.MULTI_GPU: + synchronize_rng_states(["cuda"]) + assert are_the_same_tensors(torch.cuda.get_rng_state()), "RNG states improperly synchronized on GPU." + generator = torch.Generator() + synchronize_rng_states(["generator"], generator=generator) + assert are_the_same_tensors(generator.get_state()), "RNG states improperly synchronized in generator." + + if state.local_process_index == 0: + print("All rng are properly synched.") + + +def dl_preparation_check(): + state = AcceleratorState() + length = 32 * state.num_processes + + dl = DataLoader(range(length), batch_size=8) + dl = prepare_data_loader(dl, state.device, state.num_processes, state.process_index, put_on_device=True) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result) + + print(state.process_index, result, type(dl)) + assert torch.equal(result.cpu(), torch.arange(0, length).long()), "Wrong non-shuffled dataloader result." + + dl = DataLoader(range(length), batch_size=8) + dl = prepare_data_loader( + dl, + state.device, + state.num_processes, + state.process_index, + put_on_device=True, + split_batches=True, + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result) + assert torch.equal(result.cpu(), torch.arange(0, length).long()), "Wrong non-shuffled dataloader result." + + if state.process_index == 0: + print("Non-shuffled dataloader passing.") + + dl = DataLoader(range(length), batch_size=8, shuffle=True) + dl = prepare_data_loader(dl, state.device, state.num_processes, state.process_index, put_on_device=True) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result).tolist() + result.sort() + assert result == list(range(length)), "Wrong shuffled dataloader result." + + dl = DataLoader(range(length), batch_size=8, shuffle=True) + dl = prepare_data_loader( + dl, + state.device, + state.num_processes, + state.process_index, + put_on_device=True, + split_batches=True, + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result).tolist() + result.sort() + assert result == list(range(length)), "Wrong shuffled dataloader result." + + if state.local_process_index == 0: + print("Shuffled dataloader passing.") + + +def central_dl_preparation_check(): + state = AcceleratorState() + length = 32 * state.num_processes + + dl = DataLoader(range(length), batch_size=8) + dl = prepare_data_loader( + dl, state.device, state.num_processes, state.process_index, put_on_device=True, dispatch_batches=True + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result) + assert torch.equal(result.cpu(), torch.arange(0, length).long()), "Wrong non-shuffled dataloader result." + + dl = DataLoader(range(length), batch_size=8) + dl = prepare_data_loader( + dl, + state.device, + state.num_processes, + state.process_index, + put_on_device=True, + split_batches=True, + dispatch_batches=True, + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result) + assert torch.equal(result.cpu(), torch.arange(0, length).long()), "Wrong non-shuffled dataloader result." + + if state.process_index == 0: + print("Non-shuffled central dataloader passing.") + + dl = DataLoader(range(length), batch_size=8, shuffle=True) + dl = prepare_data_loader( + dl, state.device, state.num_processes, state.process_index, put_on_device=True, dispatch_batches=True + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result).tolist() + result.sort() + assert result == list(range(length)), "Wrong shuffled dataloader result." + + dl = DataLoader(range(length), batch_size=8, shuffle=True) + dl = prepare_data_loader( + dl, + state.device, + state.num_processes, + state.process_index, + put_on_device=True, + split_batches=True, + dispatch_batches=True, + ) + result = [] + for batch in dl: + result.append(gather(batch)) + result = torch.cat(result).tolist() + result.sort() + assert result == list(range(length)), "Wrong shuffled dataloader result." + + if state.local_process_index == 0: + print("Shuffled central dataloader passing.") + + +def mock_training(length, batch_size, generator): + set_seed(42) + generator.manual_seed(42) + train_set = RegressionDataset(length=length) + train_dl = DataLoader(train_set, batch_size=batch_size, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + for epoch in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + loss.backward() + optimizer.step() + return train_set, model + + +def training_check(): + state = AcceleratorState() + generator = torch.Generator() + batch_size = 8 + length = batch_size * 4 * state.num_processes + + train_set, old_model = mock_training(length, batch_size * state.num_processes, generator) + assert are_the_same_tensors(old_model.a), "Did not obtain the same model on both processes." + assert are_the_same_tensors(old_model.b), "Did not obtain the same model on both processes." + + accelerator = Accelerator() + train_dl = DataLoader(train_set, batch_size=batch_size, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + + train_dl, model, optimizer = accelerator.prepare(train_dl, model, optimizer) + set_seed(42) + generator.manual_seed(42) + for epoch in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + accelerator.backward(loss) + optimizer.step() + + model = accelerator.unwrap_model(model).cpu() + assert torch.allclose(old_model.a, model.a), "Did not obtain the same model on CPU or distributed training." + assert torch.allclose(old_model.b, model.b), "Did not obtain the same model on CPU or distributed training." + + accelerator.print("Training yielded the same results on one CPU or distributed setup with no batch split.") + + accelerator = Accelerator(split_batches=True) + train_dl = DataLoader(train_set, batch_size=batch_size * state.num_processes, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + + train_dl, model, optimizer = accelerator.prepare(train_dl, model, optimizer) + set_seed(42) + generator.manual_seed(42) + for _ in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + accelerator.backward(loss) + optimizer.step() + + model = accelerator.unwrap_model(model).cpu() + assert torch.allclose(old_model.a, model.a), "Did not obtain the same model on CPU or distributed training." + assert torch.allclose(old_model.b, model.b), "Did not obtain the same model on CPU or distributed training." + + accelerator.print("Training yielded the same results on one CPU or distributes setup with batch split.") + + if torch.cuda.is_available(): + # Mostly a test that FP16 doesn't crash as the operation inside the model is not converted to FP16 + print("FP16 training check.") + AcceleratorState._reset_state() + accelerator = Accelerator(mixed_precision="fp16") + train_dl = DataLoader(train_set, batch_size=batch_size, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + + train_dl, model, optimizer = accelerator.prepare(train_dl, model, optimizer) + set_seed(42) + generator.manual_seed(42) + for _ in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + accelerator.backward(loss) + optimizer.step() + + model = accelerator.unwrap_model(model).cpu() + assert torch.allclose(old_model.a, model.a), "Did not obtain the same model on CPU or distributed training." + assert torch.allclose(old_model.b, model.b), "Did not obtain the same model on CPU or distributed training." + + # TEST that previous fp16 flag still works + print("Legacy FP16 training check.") + AcceleratorState._reset_state() + accelerator = Accelerator(fp16=True) + train_dl = DataLoader(train_set, batch_size=batch_size, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + + train_dl, model, optimizer = accelerator.prepare(train_dl, model, optimizer) + set_seed(42) + generator.manual_seed(42) + for _ in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + accelerator.backward(loss) + optimizer.step() + + model = accelerator.unwrap_model(model).cpu() + assert torch.allclose(old_model.a, model.a), "Did not obtain the same model on CPU or distributed training." + assert torch.allclose(old_model.b, model.b), "Did not obtain the same model on CPU or distributed training." + + # BF16 support is only for CPU + TPU, and some GPU + if is_bf16_available(): + # Mostly a test that BF16 doesn't crash as the operation inside the model is not converted to BF16 + print("BF16 training check.") + AcceleratorState._reset_state() + accelerator = Accelerator(mixed_precision="bf16") + train_dl = DataLoader(train_set, batch_size=batch_size, shuffle=True, generator=generator) + model = RegressionModel() + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + + train_dl, model, optimizer = accelerator.prepare(train_dl, model, optimizer) + set_seed(42) + generator.manual_seed(42) + for _ in range(3): + for batch in train_dl: + model.zero_grad() + output = model(batch["x"]) + loss = torch.nn.functional.mse_loss(output, batch["y"]) + accelerator.backward(loss) + optimizer.step() + + model = accelerator.unwrap_model(model).cpu() + assert torch.allclose(old_model.a, model.a), "Did not obtain the same model on CPU or distributed training." + assert torch.allclose(old_model.b, model.b), "Did not obtain the same model on CPU or distributed training." + + +def main(): + accelerator = Accelerator() + state = accelerator.state + if state.local_process_index == 0: + print("**Initialization**") + init_state_check() + + if state.local_process_index == 0: + print("\n**Test random number generator synchronization**") + rng_sync_check() + + if state.local_process_index == 0: + print("\n**DataLoader integration test**") + dl_preparation_check() + if state.distributed_type != DistributedType.TPU and is_torch_version(">=", "1.8.0"): + central_dl_preparation_check() + + # Trainings are not exactly the same in DeepSpeed and CPU mode + if state.distributed_type == DistributedType.DEEPSPEED: + return + + if state.local_process_index == 0: + print("\n**Training integration test**") + training_check() + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_sync.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_sync.py new file mode 100644 index 0000000..8cee87d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/scripts/test_sync.py @@ -0,0 +1,274 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from copy import deepcopy + +import torch +import torch.nn.functional as F +from torch.optim import AdamW +from torch.optim.lr_scheduler import LambdaLR +from torch.utils.data import DataLoader + +from accelerate import Accelerator +from accelerate.test_utils import RegressionDataset, RegressionModel +from accelerate.utils import DistributedType, set_seed + + +def check_model_parameters(model_a, model_b, did_step, iteration): + for param, grad_param in zip(model_a.parameters(), model_b.parameters()): + if not param.requires_grad: + continue + if not did_step: + # Grads should not be in sync + assert ( + torch.allclose(param.grad, grad_param.grad) is False + ), f"Gradients in sync when they should not be at iteration {iteration}:\nmodel_a grad ({param.grad}) == model_b grad ({grad_param.grad})" + else: + # Grads should be in sync + assert ( + torch.allclose(param.grad, grad_param.grad) is True + ), f"Gradients not in sync when they should be at iteration {iteration}:\nmodel_a grad ({param.grad}) != model_b grad ({grad_param.grad})" + + +def step_model(model, input, target, accelerator, do_backward=True): + model.train() + output = model(input) + loss = F.mse_loss(output, target.to(output.device)) + if not do_backward: + loss /= accelerator.gradient_accumulation_steps + loss.backward() + else: + accelerator.backward(loss) + + +def get_training_setup(accelerator, sched=False): + "Returns everything needed to perform basic training" + set_seed(42) + model = RegressionModel() + ddp_model = deepcopy(model) + dset = RegressionDataset(length=80) + dataloader = DataLoader(dset, batch_size=16) + model.to(accelerator.device) + if sched: + opt = AdamW(params=model.parameters(), lr=1e-3) + ddp_opt = AdamW(params=ddp_model.parameters(), lr=1e-3) + sched = LambdaLR(opt, lr_lambda=lambda epoch: epoch**0.65) + ddp_sched = LambdaLR(ddp_opt, lr_lambda=lambda epoch: epoch**0.65) + # Make a copy of `model` + if sched: + ddp_model, ddp_opt, ddp_sched, dataloader = accelerator.prepare(ddp_model, ddp_opt, ddp_sched, dataloader) + else: + ddp_model, dataloader = accelerator.prepare(ddp_model, dataloader) + if sched: + return (model, opt, sched, dataloader, ddp_model, ddp_opt, ddp_sched) + return model, ddp_model, dataloader + + +def test_noop_sync(accelerator): + # Test when on a single CPU or GPU that the context manager does nothing + model, ddp_model, dataloader = get_training_setup(accelerator) + # Use a single batch + ddp_input, ddp_target = next(iter(dataloader)).values() + for iteration in range(3): + # Gather the distributed inputs and targs for the base model + input, target = accelerator.gather((ddp_input, ddp_target)) + input, target = input.to(accelerator.device), target.to(accelerator.device) + # Perform our initial ground truth step in non "DDP" + step_model(model, input, target, accelerator) + # Do "gradient accumulation" (noop) + if iteration % 2 == 0: + # Accumulate grads locally + with accelerator.no_sync(ddp_model): + step_model(ddp_model, ddp_input, ddp_target, accelerator) + else: + # Sync grads + step_model(ddp_model, ddp_input, ddp_target, accelerator) + + # Since `no_sync` is a noop, `ddp_model` and `model` grads should always be in sync + check_model_parameters(model, ddp_model, True, iteration) + for param, ddp_param in zip(model.parameters(), ddp_model.parameters()): + if not param.requires_grad: + continue + assert torch.allclose( + param.grad, ddp_param.grad + ), f"Gradients not in sync when they should be:\nModel grad ({param.grad}) != DDP grad ({ddp_param.grad})" + + # Shuffle ddp_input on each iteration + torch.manual_seed(1337 + iteration) + ddp_input = ddp_input[torch.randperm(len(ddp_input))] + + +def test_distributed_sync(accelerator): + # Test on distributed setup that context manager behaves properly + model, ddp_model, dataloader = get_training_setup(accelerator) + # Use a single batch + ddp_input, ddp_target = next(iter(dataloader)).values() + for iteration in range(3): + # Gather the distributed inputs and targs for the base model + input, target = accelerator.gather((ddp_input, ddp_target)) + input, target = input.to(accelerator.device), target.to(accelerator.device) + # Perform our initial ground truth step in non "DDP" + step_model(model, input, target, accelerator) + # Do "gradient accumulation" (noop) + if iteration % 2 == 0: + # Accumulate grads locally + with accelerator.no_sync(ddp_model): + step_model(ddp_model, ddp_input, ddp_target, accelerator) + else: + # Sync grads + step_model(ddp_model, ddp_input, ddp_target, accelerator) + + # DDP model and model should only be in sync when not (iteration % 2 == 0) + for param, ddp_param in zip(model.parameters(), ddp_model.parameters()): + if not param.requires_grad: + continue + if iteration % 2 == 0: + # Grads should not be in sync + assert ( + torch.allclose(param.grad, ddp_param.grad) is False + ), f"Gradients in sync when they should not be:\nModel grad ({param.grad}) == DDP grad ({ddp_param.grad})" + else: + # Grads should be in sync + assert ( + torch.allclose(param.grad, ddp_param.grad) is True + ), f"Gradients not in sync when they should be:\nModel grad ({param.grad}) != DDP grad ({ddp_param.grad})" + + # Shuffle ddp_input on each iteration + torch.manual_seed(1337 + iteration) + ddp_input = ddp_input[torch.randperm(len(ddp_input))] + + +def test_gradient_accumulation(split_batches=False, dispatch_batches=False): + accelerator = Accelerator( + gradient_accumulation_steps=2, split_batches=split_batches, dispatch_batches=dispatch_batches + ) + # Test that context manager behaves properly + model, ddp_model, dataloader = get_training_setup(accelerator) + for iteration, batch in enumerate(dataloader): + ddp_input, ddp_target = batch.values() + # Gather the distributed inputs and targs for the base model + input, target = accelerator.gather((ddp_input, ddp_target)) + input, target = input.to(accelerator.device), target.to(accelerator.device) + # Perform our initial ground truth step in non "DDP" + step_model(model, input, target, accelerator, False) + # Do "gradient accumulation" (noop) + with accelerator.accumulate(ddp_model): + step_model(ddp_model, ddp_input, ddp_target, accelerator) + + # DDP model and model should only be in sync when not (iteration % 2 == 0) + for param, ddp_param in zip(model.parameters(), ddp_model.parameters()): + if not param.requires_grad: + continue + if ((iteration + 1) % 2 == 0) or (iteration == len(dataloader) - 1): + # Grads should be in sync + assert ( + torch.allclose(param.grad, ddp_param.grad) is True + ), f"Gradients not in sync when they should be at iteration {iteration}:\nModel grad ({param.grad}) != DDP grad ({ddp_param.grad})" + else: + # Grads should not be in sync + assert ( + torch.allclose(param.grad, ddp_param.grad) is False + ), f"Gradients in sync when they should not be at iteration {iteration}:\nModel grad ({param.grad}) == DDP grad ({ddp_param.grad})" + + # Shuffle ddp_input on each iteration + torch.manual_seed(1337 + iteration) + ddp_input = ddp_input[torch.randperm(len(ddp_input))] + + +def test_gradient_accumulation_with_opt_and_scheduler(split_batches=False, dispatch_batches=False): + accelerator = Accelerator( + gradient_accumulation_steps=2, split_batches=split_batches, dispatch_batches=dispatch_batches + ) + # Test that context manager behaves properly + model, opt, sched, dataloader, ddp_model, ddp_opt, ddp_sched = get_training_setup(accelerator, True) + for iteration, batch in enumerate(dataloader): + ddp_input, ddp_target = batch.values() + # Gather the distributed inputs and targs for the base model + input, target = accelerator.gather((ddp_input, ddp_target)) + input, target = input.to(accelerator.device), target.to(accelerator.device) + # Perform our initial ground truth step in non "DDP" + model.train() + ddp_model.train() + step_model(model, input, target, accelerator, False) + opt.step() + if split_batches: + sched.step() + else: + for _ in range(accelerator.num_processes): + sched.step() + opt.zero_grad() + # Perform gradient accumulation under wrapper + with accelerator.accumulate(ddp_model): + step_model(ddp_model, ddp_input, ddp_target, accelerator) + ddp_opt.step() + ddp_sched.step() + ddp_opt.zero_grad() + + # Learning rates should be the same + assert ( + opt.param_groups[0]["lr"] == ddp_opt.param_groups[0]["lr"] + ), f'Learning rates found in each optimizer did not align\nopt: {opt.param_groups[0]["lr"]}\nDDP opt: {ddp_opt.param_groups[0]["lr"]}\n' + did_step = (((iteration + 1) % 2) == 0) or ((iteration + 1) == len(dataloader)) + if accelerator.num_processes > 1: + check_model_parameters(model, ddp_model, did_step, iteration) + # Shuffle ddp_input on each iteration + torch.manual_seed(1337 + iteration) + + +def main(): + accelerator = Accelerator() + state = accelerator.state + if state.distributed_type == DistributedType.NO: + if state.local_process_index == 0: + print("**Test NOOP `no_sync` context manager**") + test_noop_sync(accelerator) + if state.distributed_type in (DistributedType.MULTI_GPU, DistributedType.MULTI_CPU): + if state.local_process_index == 0: + print("**Test Distributed `no_sync` context manager**") + test_distributed_sync(accelerator) + if state.distributed_type == DistributedType.MULTI_GPU: + for split_batch in [True, False]: + for dispatch_batches in [True, False]: + if state.local_process_index == 0: + print( + "**Test `accumulate` gradient accumulation, ", + f"`split_batches={split_batch}` and `dispatch_batches={dispatch_batches}`**", + ) + test_gradient_accumulation(split_batch, dispatch_batches) + if state.local_process_index == 0: + print( + "**Test `accumulate` gradient accumulation with optimizer and scheduler, ", + "`split_batches=False`, `dispatch_batches=False`**", + ) + test_gradient_accumulation_with_opt_and_scheduler() + if state.distributed_type == DistributedType.MULTI_GPU: + for split_batch in [True, False]: + for dispatch_batches in [True, False]: + if not split_batch and not dispatch_batches: + continue + if state.local_process_index == 0: + print( + "**Test `accumulate` gradient accumulation with optimizer and scheduler, ", + f"`split_batches={split_batch}` and `dispatch_batches={dispatch_batches}`**", + ) + test_gradient_accumulation_with_opt_and_scheduler(split_batch, dispatch_batches) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/testing.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/testing.py new file mode 100644 index 0000000..94e1341 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/testing.py @@ -0,0 +1,354 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +import os +import shutil +import subprocess +import sys +import tempfile +import unittest +from distutils.util import strtobool +from functools import partial +from pathlib import Path +from typing import List, Union +from unittest import mock + +import torch + +from ..state import AcceleratorState +from ..utils import ( + gather, + is_comet_ml_available, + is_datasets_available, + is_deepspeed_available, + is_tensorboard_available, + is_torch_version, + is_tpu_available, + is_transformers_available, + is_wandb_available, +) + + +def parse_flag_from_env(key, default=False): + try: + value = os.environ[key] + except KeyError: + # KEY isn't set, default to `default`. + _value = default + else: + # KEY is set, convert it to True or False. + try: + _value = strtobool(value) + except ValueError: + # More values are supported, but let's keep the message simple. + raise ValueError(f"If set, {key} must be yes or no.") + return _value + + +_run_slow_tests = parse_flag_from_env("RUN_SLOW", default=False) + + +def skip(test_case): + "Decorator that skips a test unconditionally" + return unittest.skip("Test was skipped")(test_case) + + +def slow(test_case): + """ + Decorator marking a test as slow. Slow tests are skipped by default. Set the RUN_SLOW environment variable to a + truthy value to run them. + """ + return unittest.skipUnless(_run_slow_tests, "test is slow")(test_case) + + +def require_cpu(test_case): + """ + Decorator marking a test that must be only ran on the CPU. These tests are skipped when a GPU is available. + """ + return unittest.skipUnless(not torch.cuda.is_available(), "test requires only a CPU")(test_case) + + +def require_cuda(test_case): + """ + Decorator marking a test that requires CUDA. These tests are skipped when there are no GPU available. + """ + return unittest.skipUnless(torch.cuda.is_available(), "test requires a GPU")(test_case) + + +def require_huggingface_suite(test_case): + """ + Decorator marking a test that requires transformers and datasets. These tests are skipped when they are not. + """ + return unittest.skipUnless( + is_transformers_available() and is_datasets_available(), "test requires the Hugging Face suite" + )(test_case) + + +def require_tpu(test_case): + """ + Decorator marking a test that requires TPUs. These tests are skipped when there are no TPUs available. + """ + return unittest.skipUnless(is_tpu_available(), "test requires TPU")(test_case) + + +def require_single_gpu(test_case): + """ + Decorator marking a test that requires CUDA on a single GPU. These tests are skipped when there are no GPU + available or number of GPUs is more than one. + """ + return unittest.skipUnless(torch.cuda.device_count() == 1, "test requires a GPU")(test_case) + + +def require_multi_gpu(test_case): + """ + Decorator marking a test that requires a multi-GPU setup. These tests are skipped on a machine without multiple + GPUs. + """ + return unittest.skipUnless(torch.cuda.device_count() > 1, "test requires multiple GPUs")(test_case) + + +def require_deepspeed(test_case): + """ + Decorator marking a test that requires DeepSpeed installed. These tests are skipped when DeepSpeed isn't installed + """ + return unittest.skipUnless(is_deepspeed_available(), "test requires DeepSpeed")(test_case) + + +def require_fsdp(test_case): + """ + Decorator marking a test that requires FSDP installed. These tests are skipped when FSDP isn't installed + """ + return unittest.skipUnless(is_torch_version(">=", "1.12.0"), "test requires torch version >= 1.12.0")(test_case) + + +def require_torch_min_version(test_case=None, version=None): + """ + Decorator marking that a test requires a particular torch version to be tested. These tests are skipped when an + installed torch version is less than the required one. + """ + if test_case is None: + return partial(require_torch_min_version, version=version) + return unittest.skipUnless(is_torch_version(">=", version), f"test requires torch version >= {version}")(test_case) + + +def require_tensorboard(test_case): + """ + Decorator marking a test that requires tensorboard installed. These tests are skipped when tensorboard isn't + installed + """ + return unittest.skipUnless(is_tensorboard_available(), "test requires Tensorboard")(test_case) + + +def require_wandb(test_case): + """ + Decorator marking a test that requires wandb installed. These tests are skipped when wandb isn't installed + """ + return unittest.skipUnless(is_wandb_available(), "test requires wandb")(test_case) + + +def require_comet_ml(test_case): + """ + Decorator marking a test that requires comet_ml installed. These tests are skipped when comet_ml isn't installed + """ + return unittest.skipUnless(is_comet_ml_available(), "test requires comet_ml")(test_case) + + +_atleast_one_tracker_available = ( + any([is_wandb_available(), is_tensorboard_available()]) and not is_comet_ml_available() +) + + +def require_trackers(test_case): + """ + Decorator marking that a test requires at least one tracking library installed. These tests are skipped when none + are installed + """ + return unittest.skipUnless( + _atleast_one_tracker_available, + "test requires at least one tracker to be available and for `comet_ml` to not be installed", + )(test_case) + + +class TempDirTestCase(unittest.TestCase): + """ + A TestCase class that keeps a single `tempfile.TemporaryDirectory` open for the duration of the class, wipes its + data at the start of a test, and then destroyes it at the end of the TestCase. + + Useful for when a class or API requires a single constant folder throughout it's use, such as Weights and Biases + + The temporary directory location will be stored in `self.tmpdir` + """ + + clear_on_setup = True + + @classmethod + def setUpClass(cls): + "Creates a `tempfile.TemporaryDirectory` and stores it in `cls.tmpdir`" + cls.tmpdir = tempfile.mkdtemp() + + @classmethod + def tearDownClass(cls): + "Remove `cls.tmpdir` after test suite has finished" + if os.path.exists(cls.tmpdir): + shutil.rmtree(cls.tmpdir) + + def setUp(self): + "Destroy all contents in `self.tmpdir`, but not `self.tmpdir`" + if self.clear_on_setup: + for path in Path(self.tmpdir).glob("**/*"): + if path.is_file(): + path.unlink() + elif path.is_dir(): + shutil.rmtree(path) + + +class MockingTestCase(unittest.TestCase): + """ + A TestCase class designed to dynamically add various mockers that should be used in every test, mimicking the + behavior of a class-wide mock when defining one normally will not do. + + Useful when a mock requires specific information available only initialized after `TestCase.setUpClass`, such as + setting an environment variable with that information. + + The `add_mocks` function should be ran at the end of a `TestCase`'s `setUp` function, after a call to + `super().setUp()` such as: + ```python + def setUp(self): + super().setUp() + mocks = mock.patch.dict(os.environ, {"SOME_ENV_VAR", "SOME_VALUE"}) + self.add_mocks(mocks) + ``` + """ + + def add_mocks(self, mocks: Union[mock.Mock, List[mock.Mock]]): + """ + Add custom mocks for tests that should be repeated on each test. Should be called during + `MockingTestCase.setUp`, after `super().setUp()`. + + Args: + mocks (`mock.Mock` or list of `mock.Mock`): + Mocks that should be added to the `TestCase` after `TestCase.setUpClass` has been run + """ + self.mocks = mocks if isinstance(mocks, (tuple, list)) else [mocks] + for m in self.mocks: + m.start() + self.addCleanup(m.stop) + + +def are_the_same_tensors(tensor): + state = AcceleratorState() + tensor = tensor[None].clone().to(state.device) + tensors = gather(tensor).cpu() + tensor = tensor[0].cpu() + for i in range(tensors.shape[0]): + if not torch.equal(tensors[i], tensor): + return False + return True + + +class _RunOutput: + def __init__(self, returncode, stdout, stderr): + self.returncode = returncode + self.stdout = stdout + self.stderr = stderr + + +async def _read_stream(stream, callback): + while True: + line = await stream.readline() + if line: + callback(line) + else: + break + + +async def _stream_subprocess(cmd, env=None, stdin=None, timeout=None, quiet=False, echo=False) -> _RunOutput: + if echo: + print("\nRunning: ", " ".join(cmd)) + + p = await asyncio.create_subprocess_exec( + cmd[0], + *cmd[1:], + stdin=stdin, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + env=env, + ) + + # note: there is a warning for a possible deadlock when using `wait` with huge amounts of data in the pipe + # https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.wait + # + # If it starts hanging, will need to switch to the following code. The problem is that no data + # will be seen until it's done and if it hangs for example there will be no debug info. + # out, err = await p.communicate() + # return _RunOutput(p.returncode, out, err) + + out = [] + err = [] + + def tee(line, sink, pipe, label=""): + line = line.decode("utf-8").rstrip() + sink.append(line) + if not quiet: + print(label, line, file=pipe) + + # XXX: the timeout doesn't seem to make any difference here + await asyncio.wait( + [ + _read_stream(p.stdout, lambda l: tee(l, out, sys.stdout, label="stdout:")), + _read_stream(p.stderr, lambda l: tee(l, err, sys.stderr, label="stderr:")), + ], + timeout=timeout, + ) + return _RunOutput(await p.wait(), out, err) + + +def execute_subprocess_async(cmd, env=None, stdin=None, timeout=180, quiet=False, echo=True) -> _RunOutput: + + loop = asyncio.get_event_loop() + result = loop.run_until_complete( + _stream_subprocess(cmd, env=env, stdin=stdin, timeout=timeout, quiet=quiet, echo=echo) + ) + + cmd_str = " ".join(cmd) + if result.returncode > 0: + stderr = "\n".join(result.stderr) + raise RuntimeError( + f"'{cmd_str}' failed with returncode {result.returncode}\n\n" + f"The combined stderr from workers follows:\n{stderr}" + ) + + return result + + +class SubprocessCallException(Exception): + pass + + +def run_command(command: List[str], return_stdout=False): + """ + Runs `command` with `subprocess.check_output` and will potentially return the `stdout`. Will also properly capture + if an error occured while running `command` + """ + try: + output = subprocess.check_output(command, stderr=subprocess.STDOUT) + if return_stdout: + if hasattr(output, "decode"): + output = output.decode("utf-8") + return output + except subprocess.CalledProcessError as e: + raise SubprocessCallException( + f"Command `{' '.join(command)}` failed with the following error:\n\n{e.output.decode()}" + ) from e diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/training.py b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/training.py new file mode 100644 index 0000000..7345b93 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/test_utils/training.py @@ -0,0 +1,88 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import torch +from torch.utils.data import DataLoader + +from accelerate.utils.dataclasses import DistributedType + + +class RegressionDataset: + def __init__(self, a=2, b=3, length=64, seed=None): + if seed is not None: + np.random.seed(seed) + self.length = length + self.x = np.random.normal(size=(length,)).astype(np.float32) + self.y = a * self.x + b + np.random.normal(scale=0.1, size=(length,)).astype(np.float32) + + def __len__(self): + return self.length + + def __getitem__(self, i): + return {"x": self.x[i], "y": self.y[i]} + + +class RegressionModel(torch.nn.Module): + def __init__(self, a=0, b=0, double_output=False): + super().__init__() + self.a = torch.nn.Parameter(torch.tensor(a).float()) + self.b = torch.nn.Parameter(torch.tensor(b).float()) + self.first_batch = True + + def forward(self, x=None): + if self.first_batch: + print(f"Model dtype: {self.a.dtype}, {self.b.dtype}. Input dtype: {x.dtype}") + self.first_batch = False + return x * self.a + self.b + + +def mocked_dataloaders(accelerator, batch_size: int = 16): + from datasets import load_dataset + from transformers import AutoTokenizer + + tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") + data_files = {"train": "tests/test_samples/MRPC/train.csv", "validation": "tests/test_samples/MRPC/dev.csv"} + datasets = load_dataset("csv", data_files=data_files) + label_list = datasets["train"].unique("label") + + label_to_id = {v: i for i, v in enumerate(label_list)} + + def tokenize_function(examples): + # max_length=None => use the model max length (it's actually the default) + outputs = tokenizer( + examples["sentence1"], examples["sentence2"], truncation=True, max_length=None, padding="max_length" + ) + if "label" in examples: + outputs["labels"] = [label_to_id[l] for l in examples["label"]] + return outputs + + # Apply the method we just defined to all the examples in all the splits of the dataset + tokenized_datasets = datasets.map( + tokenize_function, + batched=True, + remove_columns=["sentence1", "sentence2", "label"], + ) + + def collate_fn(examples): + # On TPU it's best to pad everything to the same length or training will be very slow. + if accelerator.distributed_type == DistributedType.TPU: + return tokenizer.pad(examples, padding="max_length", max_length=128, return_tensors="pt") + return tokenizer.pad(examples, padding="longest", return_tensors="pt") + + # Instantiate dataloaders. + train_dataloader = DataLoader(tokenized_datasets["train"], shuffle=True, collate_fn=collate_fn, batch_size=2) + eval_dataloader = DataLoader(tokenized_datasets["validation"], shuffle=False, collate_fn=collate_fn, batch_size=1) + + return train_dataloader, eval_dataloader diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/tracking.py b/v0.13.2/accelerate-0.13.2/src/accelerate/tracking.py new file mode 100644 index 0000000..a438ab4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/tracking.py @@ -0,0 +1,459 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Expectation: +# Provide a project dir name, then each type of logger gets stored in project/{`logging_dir`} + +import os +import time +from abc import ABCMeta, abstractmethod, abstractproperty +from typing import List, Optional, Union + +import yaml + +from .logging import get_logger +from .utils import LoggerType, is_aim_available, is_comet_ml_available, is_tensorboard_available, is_wandb_available + + +_available_trackers = [] + +if is_tensorboard_available(): + from torch.utils import tensorboard + + _available_trackers.append(LoggerType.TENSORBOARD) + +if is_wandb_available(): + import wandb + + _available_trackers.append(LoggerType.WANDB) + +if is_comet_ml_available(): + from comet_ml import Experiment + + _available_trackers.append(LoggerType.COMETML) + +if is_aim_available(): + from aim import Run + + _available_trackers.append(LoggerType.AIM) + + +logger = get_logger(__name__) + + +def get_available_trackers(): + "Returns a list of all supported available trackers in the system" + return _available_trackers + + +class GeneralTracker(object, metaclass=ABCMeta): + """ + A base Tracker class to be used for all logging integration implementations. + + Each function should take in `**kwargs` that will automatically be passed in from a base dictionary provided to + [`Accelerator`] + """ + + @abstractproperty + def name(self): + "String representation of the python class name" + pass + + @abstractproperty + def requires_logging_directory(self): + """ + Whether the logger requires a directory to store their logs. Should either return `True` or `False`. + """ + pass + + @abstractmethod + def store_init_configuration(self, values: dict): + """ + Logs `values` as hyperparameters for the run. Implementations should use the experiment configuration + functionality of a tracking API. + + Args: + values (Dictionary `str` to `bool`, `str`, `float` or `int`): + Values to be stored as initial hyperparameters as key-value pairs. The values need to have type `bool`, + `str`, `float`, `int`, or `None`. + """ + pass + + @abstractmethod + def log(self, values: dict, step: Optional[int], **kwargs): + """ + Logs `values` to the current run. Base `log` implementations of a tracking API should go in here, along with + special behavior for the `step parameter. + + Args: + values (Dictionary `str` to `str`, `float`, or `int`): + Values to be logged as key-value pairs. The values need to have type `str`, `float`, or `int`. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + """ + pass + + def finish(self): + """ + Should run any finalizing functions within the tracking API. If the API should not have one, just don't + overwrite that method. + """ + pass + + @abstractproperty + def tracker(self): + """ + Should return internal tracking mechanism used by a tracker class (such as the `run` for wandb) + """ + pass + + +class TensorBoardTracker(GeneralTracker): + """ + A `Tracker` class that supports `tensorboard`. Should be initialized at the start of your script. + + Args: + run_name (`str`): + The name of the experiment run + logging_dir (`str`, `os.PathLike`): + Location for TensorBoard logs to be stored. + kwargs: + Additional key word arguments passed along to the `tensorboard.SummaryWriter.__init__` method. + """ + + name = "tensorboard" + requires_logging_directory = True + + def __init__(self, run_name: str, logging_dir: Optional[Union[str, os.PathLike]], **kwargs): + self.run_name = run_name + self.logging_dir = os.path.join(logging_dir, run_name) + self.writer = tensorboard.SummaryWriter(self.logging_dir, **kwargs) + logger.debug(f"Initialized TensorBoard project {self.run_name} logging to {self.logging_dir}") + logger.debug( + "Make sure to log any initial configurations with `self.store_init_configuration` before training!" + ) + + @property + def tracker(self): + return self.writer + + def store_init_configuration(self, values: dict): + """ + Logs `values` as hyperparameters for the run. Should be run at the beginning of your experiment. Stores the + hyperparameters in a yaml file for future use. + + Args: + values (Dictionary `str` to `bool`, `str`, `float` or `int`): + Values to be stored as initial hyperparameters as key-value pairs. The values need to have type `bool`, + `str`, `float`, `int`, or `None`. + """ + self.writer.add_hparams(values, metric_dict={}) + self.writer.flush() + project_run_name = time.time() + dir_name = os.path.join(self.logging_dir, str(project_run_name)) + os.makedirs(dir_name, exist_ok=True) + with open(os.path.join(dir_name, "hparams.yml"), "w") as outfile: + try: + yaml.dump(values, outfile) + except yaml.representer.RepresenterError: + logger.error("Serialization to store hyperparameters failed") + raise + logger.debug("Stored initial configuration hyperparameters to TensorBoard and hparams yaml file") + + def log(self, values: dict, step: Optional[int] = None, **kwargs): + """ + Logs `values` to the current run. + + Args: + values (Dictionary `str` to `str`, `float`, `int` or `dict` of `str` to `float`/`int`): + Values to be logged as key-value pairs. The values need to have type `str`, `float`, `int` or `dict` of + `str` to `float`/`int`. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + kwargs: + Additional key word arguments passed along to either `SummaryWriter.add_scaler`, + `SummaryWriter.add_text`, or `SummaryWriter.add_scalers` method based on the contents of `values`. + """ + for k, v in values.items(): + if isinstance(v, (int, float)): + self.writer.add_scalar(k, v, global_step=step, **kwargs) + elif isinstance(v, str): + self.writer.add_text(k, v, global_step=step, **kwargs) + elif isinstance(v, dict): + self.writer.add_scalars(k, v, global_step=step, **kwargs) + self.writer.flush() + logger.debug("Successfully logged to TensorBoard") + + def finish(self): + """ + Closes `TensorBoard` writer + """ + self.writer.close() + logger.debug("TensorBoard writer closed") + + +class WandBTracker(GeneralTracker): + """ + A `Tracker` class that supports `wandb`. Should be initialized at the start of your script. + + Args: + run_name (`str`): + The name of the experiment run. + kwargs: + Additional key word arguments passed along to the `wandb.init` method. + """ + + name = "wandb" + requires_logging_directory = False + + def __init__(self, run_name: str, **kwargs): + self.run_name = run_name + self.run = wandb.init(project=self.run_name, **kwargs) + logger.debug(f"Initialized WandB project {self.run_name}") + logger.debug( + "Make sure to log any initial configurations with `self.store_init_configuration` before training!" + ) + + @property + def tracker(self): + return self.run + + def store_init_configuration(self, values: dict): + """ + Logs `values` as hyperparameters for the run. Should be run at the beginning of your experiment. + + Args: + values (Dictionary `str` to `bool`, `str`, `float` or `int`): + Values to be stored as initial hyperparameters as key-value pairs. The values need to have type `bool`, + `str`, `float`, `int`, or `None`. + """ + wandb.config.update(values) + logger.debug("Stored initial configuration hyperparameters to WandB") + + def log(self, values: dict, step: Optional[int] = None, **kwargs): + """ + Logs `values` to the current run. + + Args: + values (Dictionary `str` to `str`, `float`, `int` or `dict` of `str` to `float`/`int`): + Values to be logged as key-value pairs. The values need to have type `str`, `float`, `int` or `dict` of + `str` to `float`/`int`. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + kwargs: + Additional key word arguments passed along to the `wandb.log` method. + """ + self.run.log(values, step=step, **kwargs) + logger.debug("Successfully logged to WandB") + + def finish(self): + """ + Closes `wandb` writer + """ + self.run.finish() + logger.debug("WandB run closed") + + +class CometMLTracker(GeneralTracker): + """ + A `Tracker` class that supports `comet_ml`. Should be initialized at the start of your script. + + API keys must be stored in a Comet config file. + + Args: + run_name (`str`): + The name of the experiment run. + kwargs: + Additional key word arguments passed along to the `Experiment.__init__` method. + """ + + name = "comet_ml" + requires_logging_directory = False + + def __init__(self, run_name: str, **kwargs): + self.run_name = run_name + self.writer = Experiment(project_name=run_name, **kwargs) + logger.debug(f"Initialized CometML project {self.run_name}") + logger.debug( + "Make sure to log any initial configurations with `self.store_init_configuration` before training!" + ) + + @property + def tracker(self): + return self.writer + + def store_init_configuration(self, values: dict): + """ + Logs `values` as hyperparameters for the run. Should be run at the beginning of your experiment. + + Args: + values (Dictionary `str` to `bool`, `str`, `float` or `int`): + Values to be stored as initial hyperparameters as key-value pairs. The values need to have type `bool`, + `str`, `float`, `int`, or `None`. + """ + self.writer.log_parameters(values) + logger.debug("Stored initial configuration hyperparameters to CometML") + + def log(self, values: dict, step: Optional[int] = None, **kwargs): + """ + Logs `values` to the current run. + + Args: + values (Dictionary `str` to `str`, `float`, `int` or `dict` of `str` to `float`/`int`): + Values to be logged as key-value pairs. The values need to have type `str`, `float`, `int` or `dict` of + `str` to `float`/`int`. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + kwargs: + Additional key word arguments passed along to either `Experiment.log_metric`, `Experiment.log_other`, + or `Experiment.log_metrics` method based on the contents of `values`. + """ + if step is not None: + self.writer.set_step(step) + for k, v in values.items(): + if isinstance(v, (int, float)): + self.writer.log_metric(k, v, step=step, **kwargs) + elif isinstance(v, str): + self.writer.log_other(k, v, **kwargs) + elif isinstance(v, dict): + self.writer.log_metrics(v, step=step, **kwargs) + logger.debug("Successfully logged to CometML") + + def finish(self): + """ + Closes `comet-ml` writer + """ + self.writer.end() + logger.debug("CometML run closed") + + +class AimTracker(GeneralTracker): + """ + A `Tracker` class that supports `aim`. Should be initialized at the start of your script. + + Args: + run_name (`str`): + The name of the experiment run. + kwargs: + Additional key word arguments passed along to the `Run.__init__` method. + """ + + name = "aim" + requires_logging_directory = True + + def __init__(self, run_name: str, logging_dir: Optional[Union[str, os.PathLike]] = ".", **kwargs): + self.run_name = run_name + self.writer = Run(repo=logging_dir, **kwargs) + self.writer.name = self.run_name + logger.debug(f"Initialized Aim project {self.run_name}") + logger.debug( + "Make sure to log any initial configurations with `self.store_init_configuration` before training!" + ) + + @property + def tracker(self): + return self.writer + + def store_init_configuration(self, values: dict): + """ + Logs `values` as hyperparameters for the run. Should be run at the beginning of your experiment. + + Args: + values (`dict`): + Values to be stored as initial hyperparameters as key-value pairs. + """ + self.writer["hparams"] = values + + def log(self, values: dict, step: Optional[int], **kwargs): + """ + Logs `values` to the current run. + + Args: + values (`dict`): + Values to be logged as key-value pairs. + step (`int`, *optional*): + The run step. If included, the log will be affiliated with this step. + kwargs: + Additional key word arguments passed along to the `Run.track` method. + """ + # Note: replace this with the dictionary support when merged + for key, value in values.items(): + self.writer.track(value, name=key, step=step, **kwargs) + + def finish(self): + """ + Closes `aim` writer + """ + self.writer.close() + + +LOGGER_TYPE_TO_CLASS = { + "aim": AimTracker, + "comet_ml": CometMLTracker, + "tensorboard": TensorBoardTracker, + "wandb": WandBTracker, +} + + +def filter_trackers( + log_with: List[Union[str, LoggerType, GeneralTracker]], logging_dir: Union[str, os.PathLike] = None +): + """ + Takes in a list of potential tracker types and checks that: + - The tracker wanted is available in that environment + - Filters out repeats of tracker types + - If `all` is in `log_with`, will return all trackers in the environment + - If a tracker requires a `logging_dir`, ensures that `logging_dir` is not `None` + + Args: + log_with (list of `str`, [`~utils.LoggerType`] or [`~tracking.GeneralTracker`], *optional*): + A list of loggers to be setup for experiment tracking. Should be one or several of: + + - `"all"` + - `"tensorboard"` + - `"wandb"` + - `"comet_ml"` + If `"all"` is selected, will pick up all available trackers in the environment and initialize them. Can + also accept implementations of `GeneralTracker` for custom trackers, and can be combined with `"all"`. + logging_dir (`str`, `os.PathLike`, *optional*): + A path to a directory for storing logs of locally-compatible loggers. + """ + loggers = [] + if log_with is not None: + if not isinstance(log_with, (list, tuple)): + log_with = [log_with] + logger.debug(f"{log_with}") + if "all" in log_with or LoggerType.ALL in log_with: + loggers = [o for o in log_with if issubclass(type(o), GeneralTracker)] + get_available_trackers() + else: + for log_type in log_with: + if log_type not in LoggerType and not issubclass(type(log_type), GeneralTracker): + raise ValueError(f"Unsupported logging capability: {log_type}. Choose between {LoggerType.list()}") + if issubclass(type(log_type), GeneralTracker): + loggers.append(log_type) + else: + log_type = LoggerType(log_type) + if log_type not in loggers: + if log_type in get_available_trackers(): + tracker_init = LOGGER_TYPE_TO_CLASS[str(log_type)] + if getattr(tracker_init, "requires_logging_directory"): + if logging_dir is None: + raise ValueError( + f"Logging with `{str(log_type)}` requires a `logging_dir` to be passed in." + ) + loggers.append(log_type) + else: + logger.debug(f"Tried adding logger {log_type}, but package is unavailable in the system.") + + return loggers diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/__init__.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/__init__.py new file mode 100644 index 0000000..4bc71ba --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/__init__.py @@ -0,0 +1,107 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all + +from .constants import MODEL_NAME, OPTIMIZER_NAME, RNG_STATE_NAME, SCALER_NAME, SCHEDULER_NAME, TORCH_LAUNCH_PARAMS +from .dataclasses import ( + ComputeEnvironment, + DeepSpeedPlugin, + DistributedDataParallelKwargs, + DistributedType, + FullyShardedDataParallelPlugin, + GradScalerKwargs, + InitProcessGroupKwargs, + KwargsHandler, + LoggerType, + PrecisionType, + RNGType, + SageMakerDistributedType, + TensorInformation, +) +from .imports import ( + get_ccl_version, + is_aim_available, + is_apex_available, + is_bf16_available, + is_boto3_available, + is_ccl_available, + is_comet_ml_available, + is_datasets_available, + is_deepspeed_available, + is_rich_available, + is_sagemaker_available, + is_tensorboard_available, + is_tpu_available, + is_transformers_available, + is_wandb_available, +) +from .modeling import ( + check_device_map, + compute_module_sizes, + convert_file_size_to_int, + dtype_byte_size, + find_tied_parameters, + get_balanced_memory, + get_max_layer_size, + get_max_memory, + infer_auto_device_map, + load_checkpoint_in_model, + load_offloaded_weights, + named_module_tensors, + set_module_tensor_to_device, +) +from .offload import ( + OffloadedWeightsLoader, + PrefixedDataset, + extract_submodules_state_dict, + load_offloaded_weight, + offload_state_dict, + offload_weight, + save_offload_index, +) +from .operations import ( + broadcast, + broadcast_object_list, + concatenate, + convert_outputs_to_fp32, + convert_to_fp32, + find_batch_size, + find_device, + gather, + gather_object, + get_data_structure, + honor_type, + initialize_tensors, + is_tensor_information, + is_torch_tensor, + pad_across_processes, + recursively_apply, + reduce, + send_to_device, + slice_tensors, +) +from .versions import compare_versions, is_torch_version + + +if is_deepspeed_available(): + from .deepspeed import ( + DeepSpeedEngineWrapper, + DeepSpeedOptimizerWrapper, + DeepSpeedSchedulerWrapper, + DummyOptim, + DummyScheduler, + HfDeepSpeedConfig, + ) + +from .launch import PrepareForLaunch, _filter_args, get_launch_prefix +from .memory import find_executable_batch_size +from .other import ( + extract_model_from_parallel, + get_pretty_name, + patch_environment, + save, + wait_for_everyone, + write_basic_config, +) +from .random import set_seed, synchronize_rng_state, synchronize_rng_states +from .tqdm import tqdm diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/constants.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/constants.py new file mode 100644 index 0000000..934923b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/constants.py @@ -0,0 +1,60 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import operator as op + + +SCALER_NAME = "scaler.pt" +MODEL_NAME = "pytorch_model" +RNG_STATE_NAME = "random_states" +OPTIMIZER_NAME = "optimizer" +SCHEDULER_NAME = "scheduler" +SAGEMAKER_PYTORCH_VERSION = "1.10.2" +SAGEMAKER_PYTHON_VERSION = "py38" +SAGEMAKER_TRANSFORMERS_VERSION = "4.17.0" +SAGEMAKER_PARALLEL_EC2_INSTANCES = ["ml.p3.16xlarge", "ml.p3dn.24xlarge", "ml.p4dn.24xlarge"] +FSDP_SHARDING_STRATEGY = ["FULL_SHARD", "SHARD_GRAD_OP", "NO_SHARD"] +FSDP_AUTO_WRAP_POLICY = ["TRANSFORMER_BASED_WRAP", "SIZE_BASED_WRAP", "NO_WRAP"] +FSDP_BACKWARD_PREFETCH = ["BACKWARD_PRE", "BACKWARD_POST", "NO_PREFETCH"] +FSDP_STATE_DICT_TYPE = ["FULL_STATE_DICT", "LOCAL_STATE_DICT", "SHARDED_STATE_DICT"] +DEEPSPEED_MULTINODE_LAUNCHERS = ["pdsh", "standard", "openmpi", "mvapich"] + +STR_OPERATION_TO_FUNC = {">": op.gt, ">=": op.ge, "==": op.eq, "!=": op.ne, "<=": op.le, "<": op.lt} + +# These are the args for `torch.distributed.launch` for pytorch < 1.9 +TORCH_LAUNCH_PARAMS = [ + "nnodes", + "nproc_per_node", + "rdzv_backend", + "rdzv_endpoint", + "rdzv_id", + "rdzv_conf", + "standalone", + "max_restarts", + "monitor_interval", + "start_method", + "role", + "module", + "m", + "no_python", + "run_path", + "log_dir", + "r", + "redirects", + "t", + "tee", + "node_rank", + "master_addr", + "master_port", +] diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/dataclasses.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/dataclasses.py new file mode 100644 index 0000000..9f6e30b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/dataclasses.py @@ -0,0 +1,646 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +General namespace and dataclass related classes +""" + +import copy +import enum +import functools +import os +import typing +import warnings +from dataclasses import dataclass, field +from datetime import timedelta +from typing import Any, Callable, Iterable, Optional + +import torch + +from .constants import FSDP_AUTO_WRAP_POLICY, FSDP_BACKWARD_PREFETCH, FSDP_STATE_DICT_TYPE, MODEL_NAME, OPTIMIZER_NAME + + +class KwargsHandler: + """ + Internal mixin that implements a `to_kwargs()` method for a dataclass. + """ + + def to_dict(self): + return copy.deepcopy(self.__dict__) + + def to_kwargs(self): + """ + Returns a dictionary containing the attributes with values different from the default of this class. + """ + default_dict = self.__class__().to_dict() + this_dict = self.to_dict() + return {k: v for k, v in this_dict.items() if default_dict[k] != v} + + +@dataclass +class DistributedDataParallelKwargs(KwargsHandler): + """ + Use this object in your [`Accelerator`] to customize how your model is wrapped in a + `torch.nn.parallel.DistributedDataParallel`. Please refer to the documentation of this + [wrapper](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html) for more + information on each argument. + + + + `gradient_as_bucket_view` is only available in PyTorch 1.7.0 and later versions. + + `static_graph` is only available in PyTorch 1.11.0 and later versions. + + """ + + dim: int = 0 + broadcast_buffers: bool = True + bucket_cap_mb: int = 25 + find_unused_parameters: bool = False + check_reduction: bool = False + gradient_as_bucket_view: bool = False + static_graph: bool = False + + +@dataclass +class GradScalerKwargs(KwargsHandler): + """ + Use this object in your [`Accelerator`] to customize the behavior of mixed precision, specifically how the + `torch.cuda.amp.GradScaler` used is created. Please refer to the documentation of this + [scaler](https://pytorch.org/docs/stable/amp.html?highlight=gradscaler) for more information on each argument. + + + + `GradScaler` is only available in PyTorch 1.5.0 and later versions. + + """ + + init_scale: float = 65536.0 + growth_factor: float = 2.0 + backoff_factor: float = 0.5 + growth_interval: int = 2000 + enabled: bool = True + + +@dataclass +class InitProcessGroupKwargs(KwargsHandler): + """ + Use this object in your [`Accelerator`] to customize the initialization of the distributed processes. Please refer + to the documentation of this + [method](https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group) for more + information on each argument. + """ + + init_method: Optional[str] = None + timeout: timedelta = timedelta(seconds=1800) + + +class DistributedType(str, enum.Enum): + """ + Represents a type of distributed environment. + + Values: + + - **NO** -- Not a distributed environment, just a single process. + - **MULTI_CPU** -- Distributed on multiple CPU nodes. + - **MULTI_GPU** -- Distributed on multiple GPUs. + - **DEEPSPEED** -- Using DeepSpeed. + - **TPU** -- Distributed on TPUs. + """ + + # Subclassing str as well as Enum allows the `DistributedType` to be JSON-serializable out of the box. + NO = "NO" + MULTI_CPU = "MULTI_CPU" + MULTI_GPU = "MULTI_GPU" + DEEPSPEED = "DEEPSPEED" + FSDP = "FSDP" + TPU = "TPU" + MPS = "MPS" + + +class SageMakerDistributedType(str, enum.Enum): + """ + Represents a type of distributed environment. + + Values: + + - **NO** -- Not a distributed environment, just a single process. + - **DATA_PARALLEL** -- using sagemaker distributed data parallelism. + - **MODEL_PARALLEL** -- using sagemaker distributed model parallelism. + """ + + # Subclassing str as well as Enum allows the `SageMakerDistributedType` to be JSON-serializable out of the box. + NO = "NO" + DATA_PARALLEL = "DATA_PARALLEL" + MODEL_PARALLEL = "MODEL_PARALLEL" + + +class ComputeEnvironment(str, enum.Enum): + """ + Represents a type of the compute environment. + + Values: + + - **LOCAL_MACHINE** -- private/custom cluster hardware. + - **AMAZON_SAGEMAKER** -- Amazon SageMaker as compute environment. + """ + + # Subclassing str as well as Enum allows the `ComputeEnvironment` to be JSON-serializable out of the box. + LOCAL_MACHINE = "LOCAL_MACHINE" + AMAZON_SAGEMAKER = "AMAZON_SAGEMAKER" + + +class EnumWithContains(enum.EnumMeta): + "A metaclass that adds the ability to check if `self` contains an item with the `in` operator" + + def __contains__(cls, item): + try: + cls(item) + except ValueError: + return False + return True + + +class BaseEnum(enum.Enum, metaclass=EnumWithContains): + "An enum class that can get the value of an item with `str(Enum.key)`" + + def __str__(self): + return self.value + + @classmethod + def list(cls): + "Method to list all the possible items in `cls`" + return list(map(lambda item: str(item), cls)) + + +class LoggerType(BaseEnum): + """Represents a type of supported experiment tracker + + Values: + + - **ALL** -- all available trackers in the environment that are supported + - **TENSORBOARD** -- TensorBoard as an experiment tracker + - **WANDB** -- wandb as an experiment tracker + - **COMETML** -- comet_ml as an experiment tracker + """ + + ALL = "all" + AIM = "aim" + TENSORBOARD = "tensorboard" + WANDB = "wandb" + COMETML = "comet_ml" + + +class PrecisionType(BaseEnum): + """Represents a type of precision used on floating point values + + Values: + + - **NO** -- using full precision (FP32) + - **FP16** -- using half precision + - **BF16** -- using brain floating point precision + """ + + NO = "no" + FP16 = "fp16" + BF16 = "bf16" + + +class RNGType(BaseEnum): + TORCH = "torch" + CUDA = "cuda" + XLA = "xla" + GENERATOR = "generator" + + +# data classes + + +@dataclass +class TensorInformation: + shape: torch.Size + dtype: torch.dtype + + +@dataclass +class DeepSpeedPlugin: + """ + This plugin is used to integrate DeepSpeed. + """ + + hf_ds_config: Any = field( + default=None, + metadata={ + "help": "path to DeepSpeed config file or dict or an object of class `accelerate.utils.deepspeed.HfDeepSpeedConfig`." + }, + ) + gradient_accumulation_steps: int = field( + default=None, metadata={"help": "Number of steps to accumulate gradients before updating optimizer states"} + ) + gradient_clipping: float = field(default=None, metadata={"help": "Enable gradient clipping with value"}) + zero_stage: int = field( + default=None, + metadata={"help": "Possible options are 0,1,2,3; Default will be taken from environment variable"}, + ) + is_train_batch_min: str = field( + default=True, + metadata={"help": "If both train & eval dataloaders are specified, this will decide the train_batch_size"}, + ) + offload_optimizer_device: bool = field( + default=None, + metadata={"help": "Possible options are none|cpu|nvme. Only applicable with ZeRO Stages 2 and 3."}, + ) + offload_param_device: bool = field( + default=None, + metadata={"help": "Possible options are none|cpu|nvme. Only applicable with ZeRO Stage 3."}, + ) + zero3_init_flag: bool = field( + default=None, + metadata={ + "help": "Flag to indicate whether to enable `deepspeed.zero.Init` for constructing massive models." + "Only applicable with ZeRO Stage-3." + }, + ) + zero3_save_16bit_model: bool = field( + default=None, + metadata={"help": "Flag to indicate whether to save 16-bit model. Only applicable with ZeRO Stage-3."}, + ) + + def __post_init__(self): + from .deepspeed import HfDeepSpeedConfig + + if self.hf_ds_config is None: + self.hf_ds_config = os.environ.get("DEEPSPEED_CONFIG_FILE", "none") + if ( + isinstance(self.hf_ds_config, dict) + or (isinstance(self.hf_ds_config, str) and self.hf_ds_config != "none") + or isinstance(self.hf_ds_config, HfDeepSpeedConfig) + ): + if not isinstance(self.hf_ds_config, HfDeepSpeedConfig): + self.hf_ds_config = HfDeepSpeedConfig(self.hf_ds_config) + if "gradient_accumulation_steps" not in self.hf_ds_config.config: + self.hf_ds_config.config["gradient_accumulation_steps"] = 1 + elif self.hf_ds_config.config["gradient_accumulation_steps"] == "auto": + raise ValueError("gradient_accumulation_steps cannot be set to 'auto' in the DeepSpeed config.") + if "zero_optimization" not in self.hf_ds_config.config: + raise ValueError("Please specify the ZeRO optimization config in the DeepSpeed config.") + else: + if self.gradient_accumulation_steps is None: + self.gradient_accumulation_steps = int(os.environ.get("GRADIENT_ACCUMULATION_STEPS", 1)) + + if self.gradient_clipping is None: + gradient_clipping = os.environ.get("GRADIENT_CLIPPING", "none") + if gradient_clipping != "none": + self.gradient_clipping = float(gradient_clipping) + + if self.zero_stage is None: + self.zero_stage = int(os.environ.get("DEEPSPEED_ZERO_STAGE", 2)) + + if self.offload_optimizer_device is None: + self.offload_optimizer_device = os.environ.get("DEEPSPEED_OFFLOAD_OPTIMIZER_DEVICE", "none") + + if self.offload_param_device is None: + self.offload_param_device = os.environ.get("DEEPSPEED_OFFLOAD_PARAM_DEVICE", "none") + + if self.zero3_save_16bit_model is None: + self.zero3_save_16bit_model = os.environ.get("DEEPSPEED_ZERO3_SAVE_16BIT_MODEL", "false") == "true" + + config = { + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "gradient_accumulation_steps": self.gradient_accumulation_steps, + "zero_optimization": { + "stage": self.zero_stage, + "offload_optimizer": { + "device": self.offload_optimizer_device, + }, + "offload_param": { + "device": self.offload_param_device, + }, + "stage3_gather_16bit_weights_on_model_save": self.zero3_save_16bit_model, + }, + } + if self.gradient_clipping: + config["gradient_clipping"] = self.gradient_clipping + self.hf_ds_config = HfDeepSpeedConfig(config) + self.deepspeed_config = self.hf_ds_config.config + self.deepspeed_config["steps_per_print"] = float("inf") # this will stop deepspeed from logging @ stdout + if self.zero3_init_flag is None: + self.zero3_init_flag = os.environ.get("DEEPSPEED_ZERO3_INIT", "false") == "true" + if self.zero3_init_flag and not self.hf_ds_config.is_zero3(): + warnings.warn("DeepSpeed Zero3 Init flag is only applicable for ZeRO Stage 3. Setting it to False.") + self.zero3_init_flag = False + + def fill_match(self, ds_key_long, mismatches, must_match=True, **kwargs): + config, ds_key = self.hf_ds_config.find_config_node(ds_key_long) + if config is None: + return + + if config.get(ds_key) == "auto": + if ds_key_long in kwargs: + config[ds_key] = kwargs[ds_key_long] + return + else: + raise ValueError( + f"`{ds_key_long}` not found in kwargs. " + f"Please specify `{ds_key_long}` without `auto`(set to correct value) in the DeepSpeed config file or " + "pass it in kwargs." + ) + + if not must_match: + return + + ds_val = config.get(ds_key) + if ds_val is not None and ds_key_long in kwargs: + if ds_val != kwargs[ds_key_long]: + mismatches.append(f"- ds {ds_key_long}={ds_val} vs arg {ds_key_long}={kwargs[ds_key_long]}") + + def deepspeed_config_process(self, prefix="", mismatches=None, config=None, must_match=True, **kwargs): + """Process the DeepSpeed config with the values from the kwargs.""" + mismatches = [] if mismatches is None else mismatches + if config is None: + config = self.deepspeed_config + for key, value in config.items(): + if isinstance(value, dict): + self.deepspeed_config_process( + prefix=prefix + key + ".", mismatches=mismatches, config=value, must_match=must_match, **kwargs + ) + else: + self.fill_match(prefix + key, mismatches, must_match=must_match, **kwargs) + if len(mismatches) > 0 and prefix == "": + mismatches_msg = "\n".join(mismatches) + raise ValueError( + "Please correct the following DeepSpeed config values that mismatch kwargs " + f" values:\n{mismatches_msg}\nThe easiest method is to set these DeepSpeed config values to 'auto'." + ) + + def set_mixed_precision(self, mixed_precision): + ds_config = self.deepspeed_config + if mixed_precision == "fp16" and "fp16" not in ds_config and "bf16" not in ds_config: + ds_config.update({"fp16": {"enabled": True, "auto_cast": True}}) + elif mixed_precision == "bf16" and "fp16" not in ds_config and "bf16" not in ds_config: + ds_config.update({"bf16": {"enabled": True}}) + + def set_deepspeed_weakref(self): + from .imports import is_transformers_available + + if self.zero3_init_flag: + if not is_transformers_available(): + raise Exception( + "When `zero3_init_flag` is set, it requires Transformers to be installed. " + "Please run `pip install transformers`." + ) + ds_config = copy.deepcopy(self.deepspeed_config) + if "gradient_accumulation_steps" not in ds_config or ds_config["gradient_accumulation_steps"] == "auto": + ds_config["gradient_accumulation_steps"] = 1 + if ( + "train_micro_batch_size_per_gpu" not in ds_config + or ds_config["train_micro_batch_size_per_gpu"] == "auto" + ): + ds_config["train_micro_batch_size_per_gpu"] = 1 + if ds_config["train_batch_size"] == "auto": + del ds_config["train_batch_size"] + + from transformers.deepspeed import HfDeepSpeedConfig + + self.dschf = HfDeepSpeedConfig(ds_config) # keep this object alive # noqa + + +@dataclass +class FullyShardedDataParallelPlugin: + """ + This plugin is used to enable fully sharded data parallelism. + """ + + sharding_strategy: "typing.Any" = field( + default=None, + metadata={ + "help": "FSDP Sharding Strategy of type `torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy`" + }, + ) + backward_prefetch: "typing.Any" = field( + default=None, + metadata={ + "help": "FSDP Backward Prefetch of type `torch.distributed.fsdp.fully_sharded_data_parallel.BackwardPrefetch`" + }, + ) + mixed_precision_policy: "typing.Any" = field( + default=None, + metadata={ + "help": "A config to enable mixed precision training with FullyShardedDataParallel. " + "The 3 flags that are set are `param_dtype`, `reduce_dtype`, `buffer_dtype`. " + "Each flag expects `torch.dtype` as the value. " + "It is of type `torch.distributed.fsdp.fully_sharded_data_parallel.MixedPrecision`." + }, + ) + auto_wrap_policy: Optional[Callable] = field( + default=None, + metadata={"help": "A callable specifying a policy to recursively wrap layers with FSDP"}, + ) + cpu_offload: "typing.Any" = field( + default=None, + metadata={ + "help": "Decides Whether to offload parameters and gradients to CPU. " + "It is of type `torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffload`." + }, + ) + ignored_modules: Optional[Iterable[torch.nn.Module]] = field( + default=None, + metadata={"help": "A list of modules to ignore for FSDP."}, + ) + + state_dict_type: "typing.Any" = field( + default=None, + metadata={ + "help": "FSDP State Dict Type of type `torch.distributed.fsdp.fully_sharded_data_parallel.StateDictType`" + }, + ) + + state_dict_config: "typing.Any" = field( + default=None, + metadata={ + "help": "FSDP State Dict Config of type `torch.distributed.fsdp.fully_sharded_data_parallel.StateDictConfig`" + }, + ) + + def __post_init__(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import ( + BackwardPrefetch, + CPUOffload, + ShardingStrategy, + StateDictType, + _state_dict_type_to_config, + ) + + if self.sharding_strategy is None: + self.sharding_strategy = ShardingStrategy(int(os.environ.get("FSDP_SHARDING_STRATEGY", 1))) + + if self.cpu_offload is None: + if os.environ.get("FSDP_OFFLOAD_PARAMS", "false") == "true": + self.cpu_offload = CPUOffload(offload_params=True) + else: + self.cpu_offload = CPUOffload(offload_params=False) + + if self.backward_prefetch is None: + prefetch_policy = os.environ.get("FSDP_BACKWARD_PREFETCH", "NO_PREFETCH") + if prefetch_policy != FSDP_BACKWARD_PREFETCH[-1]: + self.backward_prefetch = BackwardPrefetch(FSDP_BACKWARD_PREFETCH.index(prefetch_policy) + 1) + + if self.state_dict_type is None: + state_dict_type_policy = os.environ.get("FSDP_STATE_DICT_TYPE", "FULL_STATE_DICT") + self.state_dict_type = StateDictType(FSDP_STATE_DICT_TYPE.index(state_dict_type_policy) + 1) + + if self.state_dict_type == StateDictType.FULL_STATE_DICT: + self.state_dict_config = _state_dict_type_to_config[self.state_dict_type]( + offload_to_cpu=True, rank0_only=True + ) + else: + self.state_dict_config = _state_dict_type_to_config[self.state_dict_type]() + + @staticmethod + def get_module_class_from_name(module, name): + """ + Gets a class from a module by its name. + + Args: + module (`torch.nn.Module`): The module to get the class from. + name (`str`): The name of the class. + """ + modules_children = list(module.children()) + if module.__class__.__name__ == name: + return module.__class__ + elif len(modules_children) == 0: + return + else: + for child_module in modules_children: + module_class = FullyShardedDataParallelPlugin.get_module_class_from_name(child_module, name) + if module_class is not None: + return module_class + + def set_auto_wrap_policy(self, model): + from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy, transformer_auto_wrap_policy + + if self.auto_wrap_policy is None: + auto_wrap_policy = os.environ.get("FSDP_AUTO_WRAP_POLICY", "NO_WRAP") + if auto_wrap_policy == FSDP_AUTO_WRAP_POLICY[0]: + transformer_cls_to_wrap = os.environ.get("FSDP_TRANSFORMER_CLS_TO_WRAP", "") + transformer_cls_to_wrap = FullyShardedDataParallelPlugin.get_module_class_from_name( + model, transformer_cls_to_wrap + ) + if transformer_cls_to_wrap is None: + raise Exception("Could not find the transformer layer class to wrap in the model.") + self.auto_wrap_policy = functools.partial( + transformer_auto_wrap_policy, + # Transformer layer class to wrap + transformer_layer_cls={transformer_cls_to_wrap}, + ) + elif auto_wrap_policy == FSDP_AUTO_WRAP_POLICY[1]: + min_num_params = int(os.environ.get("FSDP_MIN_NUM_PARAMS", 0)) + if min_num_params > 0: + self.auto_wrap_policy = functools.partial( + size_based_auto_wrap_policy, min_num_params=min_num_params + ) + + def set_mixed_precision(self, mixed_precision): + if mixed_precision == "fp16": + dtype = torch.float16 + elif mixed_precision == "bf16": + dtype = torch.bfloat16 + else: + raise ValueError(f"Unknown mixed precision value: {mixed_precision}") + from torch.distributed.fsdp.fully_sharded_data_parallel import MixedPrecision + + if self.mixed_precision_policy is None: + self.mixed_precision_policy = MixedPrecision(param_dtype=dtype, reduce_dtype=dtype, buffer_dtype=dtype) + + def save_model(self, accelerator, model, output_dir, model_index=0): + from torch.distributed.fsdp.fully_sharded_data_parallel import FullyShardedDataParallel as FSDP + from torch.distributed.fsdp.fully_sharded_data_parallel import StateDictType + + if self.state_dict_type == StateDictType.FULL_STATE_DICT: + with FSDP.state_dict_type(model, self.state_dict_type, self.state_dict_config): + state_dict = model.state_dict() + weights_name = f"{MODEL_NAME}.bin" if model_index == 0 else f"{MODEL_NAME}_{model_index}.bin" + output_model_file = os.path.join(output_dir, weights_name) + if accelerator.process_index == 0: + print(f"Saving model to {output_model_file}") + torch.save(state_dict, output_model_file) + print(f"Model saved to {output_model_file}") + else: + with FSDP.state_dict_type(model, self.state_dict_type, self.state_dict_config): + state_dict = model.state_dict() + weights_name = ( + f"{MODEL_NAME}_rank{accelerator.process_index}.bin" + if model_index == 0 + else f"{MODEL_NAME}_{model_index}_rank{accelerator.process_index}.bin" + ) + output_model_file = os.path.join(output_dir, weights_name) + print(f"Saving model to {output_model_file}") + torch.save(state_dict, output_model_file) + print(f"Model saved to {output_model_file}") + + def load_model(self, accelerator, model, input_dir, model_index=0): + from torch.distributed.fsdp.fully_sharded_data_parallel import FullyShardedDataParallel as FSDP + from torch.distributed.fsdp.fully_sharded_data_parallel import StateDictType + + accelerator.wait_for_everyone() + + if self.state_dict_type == StateDictType.FULL_STATE_DICT: + weights_name = f"{MODEL_NAME}.bin" if model_index == 0 else f"{MODEL_NAME}_{model_index}.bin" + input_model_file = os.path.join(input_dir, weights_name) + accelerator.print(f"Loading model from {input_model_file}") + state_dict = torch.load(input_model_file) + accelerator.print(f"Model loaded from {input_model_file}") + else: + weights_name = ( + f"{MODEL_NAME}_rank{accelerator.process_index}.bin" + if model_index == 0 + else f"{MODEL_NAME}_{model_index}_rank{accelerator.process_index}.bin" + ) + input_model_file = os.path.join(input_dir, weights_name) + print(f"Loading model from {input_model_file}") + state_dict = torch.load(input_model_file) + print(f"Model loaded from {input_model_file}") + with FSDP.state_dict_type(model, self.state_dict_type, self.state_dict_config): + model.load_state_dict(state_dict) + + def save_optimizer(self, accelerator, optimizer, model, output_dir, optimizer_index=0, optim_input=None): + from torch.distributed.fsdp.fully_sharded_data_parallel import FullyShardedDataParallel as FSDP + + optim_state = FSDP.full_optim_state_dict(model, optimizer, optim_input=optim_input) + if accelerator.process_index == 0: + optim_state_name = ( + f"{OPTIMIZER_NAME}.bin" if optimizer_index == 0 else f"{OPTIMIZER_NAME}_{optimizer_index}.bin" + ) + output_optimizer_file = os.path.join(output_dir, optim_state_name) + print(f"Saving Optimizer state to {output_optimizer_file}") + torch.save(optim_state, output_optimizer_file) + print(f"Optimizer state saved in {output_optimizer_file}") + + def load_optimizer(self, accelerator, optimizer, model, input_dir, optimizer_index=0): + from torch.distributed.fsdp.fully_sharded_data_parallel import FullyShardedDataParallel as FSDP + + accelerator.wait_for_everyone() + full_osd = None + if accelerator.process_index == 0: + optimizer_name = ( + f"{OPTIMIZER_NAME}.bin" if optimizer_index == 0 else f"{OPTIMIZER_NAME}_{optimizer_index}.bin" + ) + input_optimizer_file = os.path.join(input_dir, optimizer_name) + print(f"Loading Optimizer state from {input_optimizer_file}") + full_osd = torch.load(input_optimizer_file) + print(f"Optimizer state loaded from {input_optimizer_file}") + # called from all ranks, though only rank0 has a valid param for full_osd + sharded_osd = FSDP.scatter_full_optim_state_dict(full_osd, model) + optimizer.load_state_dict(sharded_osd) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/deepspeed.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/deepspeed.py new file mode 100644 index 0000000..02d1ab8 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/deepspeed.py @@ -0,0 +1,252 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import io +import json +from copy import deepcopy + +from ..optimizer import AcceleratedOptimizer +from ..scheduler import AcceleratedScheduler + + +class HfDeepSpeedConfig: + """ + This object contains a DeepSpeed configuration dictionary and can be quickly queried for things like zero stage. + + A `weakref` of this object is stored in the module's globals to be able to access the config from areas where + things like the Trainer object is not available (e.g. `from_pretrained` and `_get_resized_embeddings`). Therefore + it's important that this object remains alive while the program is still running. + + [`Trainer`] uses the `HfTrainerDeepSpeedConfig` subclass instead. That subclass has logic to sync the configuration + with values of [`TrainingArguments`] by replacing special placeholder values: `"auto"`. Without this special logic + the DeepSpeed configuration is not modified in any way. + + Args: + config_file_or_dict (`Union[str, Dict]`): path to DeepSpeed config file or dict. + + """ + + def __init__(self, config_file_or_dict): + + if isinstance(config_file_or_dict, dict): + # Don't modify user's data should they want to reuse it (e.g. in tests), because once we + # modified it, it will not be accepted here again, since `auto` values would have been overridden + config = deepcopy(config_file_or_dict) + elif isinstance(config_file_or_dict, str): + with io.open(config_file_or_dict, "r", encoding="utf-8") as f: + config = json.load(f) + else: + raise ValueError("expecting either a path to a DeepSpeed config file or a pre-populated dict") + self.config = config + + # zero stage - this is done as early as possible, before model is created, to allow + # ``is_deepspeed_zero3_enabled`` query and getting to the early deepspeed config object + # during ``zero.Init()`` which needs to know the dtype, and some other hparams. + self._stage = self.get_value("zero_optimization.stage", -1) + + # offload + self._offload = False + if self.is_zero2() or self.is_zero3(): + offload_devices_valid = set(["cpu", "nvme"]) + offload_devices = set( + [ + self.get_value("zero_optimization.offload_optimizer.device"), + self.get_value("zero_optimization.offload_param.device"), + ] + ) + if len(offload_devices & offload_devices_valid) > 0: + self._offload = True + + def find_config_node(self, ds_key_long): + config = self.config + + # find the config node of interest if it exists + nodes = ds_key_long.split(".") + ds_key = nodes.pop() + for node in nodes: + config = config.get(node) + if config is None: + return None, ds_key + + return config, ds_key + + def get_value(self, ds_key_long, default=None): + """ + Returns the set value or `default` if no value is set + """ + config, ds_key = self.find_config_node(ds_key_long) + if config is None: + return default + return config.get(ds_key, default) + + def del_config_sub_tree(self, ds_key_long, must_exist=False): + """ + Deletes a sub-section of the config file if it's found. + + Unless `must_exist` is `True` the section doesn't have to exist. + """ + config = self.config + + # find the config node of interest if it exists + nodes = ds_key_long.split(".") + for node in nodes: + parent_config = config + config = config.get(node) + if config is None: + if must_exist: + raise ValueError(f"Can't find {ds_key_long} entry in the config: {self.config}") + else: + return + + # if found remove it + if parent_config is not None: + parent_config.pop(node) + + def is_true(self, ds_key_long): + """ + Returns `True`/``False` only if the value is set, always `False` otherwise. So use this method to ask the very + specific question of whether the value is set to `True` (and it's not set to `False`` or isn't set). + + """ + value = self.get_value(ds_key_long) + return False if value is None else bool(value) + + def is_false(self, ds_key_long): + """ + Returns `True`/``False` only if the value is set, always `False` otherwise. So use this method to ask the very + specific question of whether the value is set to `False` (and it's not set to `True`` or isn't set). + """ + value = self.get_value(ds_key_long) + return False if value is None else not bool(value) + + def is_zero2(self): + return self._stage == 2 + + def is_zero3(self): + return self._stage == 3 + + def is_offload(self): + return self._offload + + +class DeepSpeedEngineWrapper: + """ + Internal wrapper for deepspeed.runtime.engine.DeepSpeedEngine. This is used to follow conventional training loop. + + Args: + engine (deepspeed.runtime.engine.DeepSpeedEngine): deepspeed engine to wrap + """ + + def __init__(self, engine): + self.engine = engine + + def backward(self, loss): + # runs backpropagation and handles mixed precision + self.engine.backward(loss) + + # deepspeed `engine.step` performs following operations: + # gradient accumulation check + # gradient clipping + # optimizer step + # zero grad + # checking overflow + # lr_scheduler step + self.engine.step() + + +class DeepSpeedOptimizerWrapper(AcceleratedOptimizer): + """ + Internal wrapper around a deepspeed optimizer. + + Args: + optimizer (`torch.optim.optimizer.Optimizer`): + The optimizer to wrap. + """ + + def __init__(self, optimizer): + super().__init__(optimizer, device_placement=False, scaler=None) + + def zero_grad(self, set_to_none=None): + pass # `accelerator.backward(loss)` is doing that automatically. Therefore, it's implementation is not needed + + def step(self): + pass # `accelerator.backward(loss)` is doing that automatically. Therefore, it's implementation is not needed + + @property + def step_was_skipped(self): + """Whether or not the optimizer step was done, or skipped because of gradient overflow.""" + return self.optimizer.overflow + + +class DeepSpeedSchedulerWrapper(AcceleratedScheduler): + """ + Internal wrapper around a deepspeed scheduler. + + Args: + scheduler (`torch.optim.lr_scheduler.LambdaLR`): + The scheduler to wrap. + optimizers (one or a list of `torch.optim.Optimizer`): + """ + + def __init__(self, scheduler, optimizers): + super().__init__(scheduler, optimizers) + + def step(self): + pass # `accelerator.backward(loss)` is doing that automatically. Therefore, it's implementation is not needed + + +class DummyOptim: + """ + Dummy optimizer presents model parameters or param groups, this is primarily used to follow conventional training + loop when optimizer config is specified in the deepspeed config file. + + Args: + lr (float): + Learning rate. + params (iterable): iterable of parameters to optimize or dicts defining + parameter groups + weight_decay (float): + Weight decay. + **kwargs: + Other arguments. + """ + + def __init__(self, params, lr=0.001, weight_decay=0, **kwargs): + self.params = params + self.lr = lr + self.weight_decay = weight_decay + self.kwargs = kwargs + + +class DummyScheduler: + """ + Dummy scheduler presents model parameters or param groups, this is primarily used to follow conventional training + loop when scheduler config is specified in the deepspeed config file. + + Args: + optimizer (`torch.optim.optimizer.Optimizer`): + The optimizer to wrap. + total_num_steps (int): + Total number of steps. + warmup_num_steps (int): + Number of steps for warmup. + **kwargs: + Other arguments. + """ + + def __init__(self, optimizer, total_num_steps=None, warmup_num_steps=0, **kwargs): + self.optimizer = optimizer + self.total_num_steps = total_num_steps + self.warmup_num_steps = warmup_num_steps + self.kwargs = kwargs diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/imports.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/imports.py new file mode 100644 index 0000000..eb5fda4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/imports.py @@ -0,0 +1,127 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import importlib +import sys +from functools import lru_cache + +import torch + +from .versions import is_torch_version + + +# The package importlib_metadata is in a different place, depending on the Python version. +if sys.version_info < (3, 8): + import importlib_metadata +else: + import importlib.metadata as importlib_metadata + + +try: + import torch_xla.core.xla_model as xm # noqa: F401 + + _tpu_available = True +except ImportError: + _tpu_available = False + + +def is_ccl_available(): + return ( + importlib.util.find_spec("torch_ccl") is not None + or importlib.util.find_spec("oneccl_bindings_for_pytorch") is not None + ) + + +def get_ccl_version(): + return importlib_metadata.version("oneccl_bind_pt") + + +def is_apex_available(): + return importlib.util.find_spec("apex") is not None + + +@lru_cache() +def is_tpu_available(check_device=True): + "Checks if `torch_xla` is installed and potentially if a TPU is in the environment" + if _tpu_available and check_device: + try: + # Will raise a RuntimeError if no XLA configuration is found + _ = xm.xla_device() + return True + except RuntimeError: + return False + return _tpu_available + + +def is_deepspeed_available(): + package_exists = importlib.util.find_spec("deepspeed") is not None + # Check we're not importing a "deepspeed" directory somewhere but the actual library by trying to grab the version + # AND checking it has an author field in the metadata that is HuggingFace. + if package_exists: + try: + _ = importlib_metadata.metadata("deepspeed") + return True + except importlib_metadata.PackageNotFoundError: + return False + + +def is_bf16_available(ignore_tpu=False): + "Checks if bf16 is supported, optionally ignoring the TPU" + if is_tpu_available(): + return not ignore_tpu + if is_torch_version(">=", "1.10"): + if torch.cuda.is_available(): + return torch.cuda.is_bf16_supported() + return True + return False + + +def is_transformers_available(): + return importlib.util.find_spec("transformers") is not None + + +def is_datasets_available(): + return importlib.util.find_spec("datasets") is not None + + +def is_aim_available(): + return importlib.util.find_spec("aim") is not None + + +def is_tensorboard_available(): + return importlib.util.find_spec("tensorboard") is not None or importlib.util.find_spec("tensorboardX") is not None + + +def is_wandb_available(): + return importlib.util.find_spec("wandb") is not None + + +def is_comet_ml_available(): + return importlib.util.find_spec("comet_ml") is not None + + +def is_boto3_available(): + return importlib.util.find_spec("boto3") is not None + + +def is_rich_available(): + return importlib.util.find_spec("rich") is not None + + +def is_sagemaker_available(): + return importlib.util.find_spec("sagemaker") is not None + + +def is_tqdm_available(): + return importlib.util.find_spec("tqdm") is not None diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/launch.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/launch.py new file mode 100644 index 0000000..31d71ad --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/launch.py @@ -0,0 +1,89 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys + +import torch + +from ..utils import is_torch_version +from .dataclasses import DistributedType + + +if is_torch_version(">=", "1.9.0"): + import torch.distributed.run as distrib_run + + +def get_launch_prefix(): + """ + Grabs the correct launcher for starting a distributed command, such as either `torchrun`, `python -m + torch.distributed.run`, etc + """ + if is_torch_version(">=", "1.10.0"): + cmd = ["torchrun"] + elif is_torch_version(">=", "1.9.0"): + cmd = [sys.executable, "-m", "torch.distributed.run"] + else: + cmd = [sys.executable, "-m", "torch.distributed.launch", "--use_env"] + return cmd + + +def _filter_args(args): + """ + Filters out all `accelerate` specific args + """ + distrib_args = distrib_run.get_args_parser() + new_args, _ = distrib_args.parse_known_args() + + for key, value in vars(args).items(): + if key in vars(new_args).keys(): + setattr(new_args, key, value) + return new_args + + +class PrepareForLaunch: + """ + Prepare a function that will launched in a distributed setup. + + Args: + launcher (`Callable`): + The function to launch. + distributed_type ([`~state.DistributedType`]): + The distributed type to prepare for. + debug (`bool`, *optional*, defaults to `False`): + Whether or not this is a debug launch. + """ + + def __init__(self, launcher, distributed_type="NO", debug=False): + self.launcher = launcher + self.distributed_type = DistributedType(distributed_type) + self.debug = debug + + def __call__(self, index, *args): + if self.debug: + world_size = int(os.environ.get("WORLD_SIZE")) + rdv_file = os.environ.get("ACCELERATE_DEBUG_RDV_FILE") + torch.distributed.init_process_group( + "gloo", + rank=index, + store=torch.distributed.FileStore(rdv_file, world_size), + world_size=world_size, + ) + elif self.distributed_type == DistributedType.MULTI_GPU or self.distributed_type == DistributedType.MULTI_CPU: + # Prepare the environment for torch.distributed + os.environ["LOCAL_RANK"] = str(index) + os.environ["RANK"] = str(index) + + os.environ["FORK_LAUNCHED"] = str(1) + self.launcher(*args) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/memory.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/memory.py new file mode 100644 index 0000000..422ead7 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/memory.py @@ -0,0 +1,88 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +A collection of utilities for ensuring that training can always occur. Heavily influenced by the +[toma](https://github.com/BlackHC/toma) library. +""" + +import functools +import gc +import inspect + +import torch + + +def should_reduce_batch_size(exception: Exception) -> bool: + """ + Checks if `exception` relates to CUDA out-of-memory, CUDNN not supported, or CPU out-of-memory + + Args: + exception (`Exception`): + An exception + """ + _statements = [ + "CUDA out of memory.", # CUDA OOM + "cuDNN error: CUDNN_STATUS_NOT_SUPPORTED.", # CUDNN SNAFU + "DefaultCPUAllocator: can't allocate memory", # CPU OOM + ] + if isinstance(exception, RuntimeError) and len(exception.args) == 1: + return any(err in exception.args[0] for err in _statements) + return False + + +def find_executable_batch_size(function: callable = None, starting_batch_size: int = 128): + """ + A basic decorator that will try to execute `function`. If it fails from exceptions related to out-of-memory or + CUDNN, the batch size is cut in half and passed to `function` + + `function` must take in a `batch_size` parameter as its first argument. + + Args: + function (`callable`, *optional*): + A function to wrap + starting_batch_size (`int`, *optional*): + The batch size to try and fit into memory + """ + if function is None: + return functools.partial(find_executable_batch_size, starting_batch_size=starting_batch_size) + + batch_size = starting_batch_size + + def decorator(*args, **kwargs): + nonlocal batch_size + gc.collect() + torch.cuda.empty_cache() + params = list(inspect.signature(function).parameters.keys()) + # Guard against user error + if len(params) < (len(args) + 1): + arg_str = ", ".join([f"{arg}={value}" for arg, value in zip(params[1:], args[1:])]) + raise TypeError( + f"Batch size was passed into `{function.__name__}` as the first argument when called." + f"Remove this as the decorator already does so: `{function.__name__}({arg_str})`" + ) + while True: + if batch_size == 0: + raise RuntimeError("No executable batch size found, reached zero.") + try: + return function(batch_size, *args, **kwargs) + except Exception as e: + if should_reduce_batch_size(e): + gc.collect() + torch.cuda.empty_cache() + batch_size //= 2 + else: + raise + + return decorator diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/modeling.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/modeling.py new file mode 100644 index 0000000..08ee3a6 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/modeling.py @@ -0,0 +1,707 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import gc +import json +import os +import re +import shutil +import tempfile +from collections import defaultdict +from typing import Dict, List, Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn + +from .offload import offload_weight, save_offload_index + + +WEIGHTS_INDEX_NAME = "pytorch_model.bin.index.json" + + +def convert_file_size_to_int(size: Union[int, str]): + """ + Converts a size expressed as a string with digits an unit (like `"5MB"`) to an integer (in bytes). + + Args: + size (`int` or `str`): The size to convert. Will be directly returned if an `int`. + + Example: + + ```py + >>> convert_file_size_to_int("1MiB") + 1048576 + ``` + """ + if isinstance(size, int): + return size + if size.upper().endswith("GIB"): + return int(size[:-3]) * (2**30) + if size.upper().endswith("MIB"): + return int(size[:-3]) * (2**20) + if size.upper().endswith("KIB"): + return int(size[:-3]) * (2**10) + if size.upper().endswith("GB"): + int_size = int(size[:-2]) * (10**9) + return int_size // 8 if size.endswith("b") else int_size + if size.upper().endswith("MB"): + int_size = int(size[:-2]) * (10**6) + return int_size // 8 if size.endswith("b") else int_size + if size.upper().endswith("KB"): + int_size = int(size[:-2]) * (10**3) + return int_size // 8 if size.endswith("b") else int_size + raise ValueError("`size` is not in a valid format. Use an integer followed by the unit, e.g., '5GB'.") + + +def dtype_byte_size(dtype: torch.dtype): + """ + Returns the size (in bytes) occupied by one parameter of type `dtype`. + + Example: + + ```py + >>> dtype_byte_size(torch.float32) + 4 + ``` + """ + if dtype == torch.bool: + return 1 / 8 + bit_search = re.search(r"[^\d](\d+)$", str(dtype)) + if bit_search is None: + raise ValueError(f"`dtype` is not a valid dtype: {dtype}.") + bit_size = int(bit_search.groups()[0]) + return bit_size // 8 + + +def set_module_tensor_to_device( + module: nn.Module, tensor_name: str, device: Union[int, str, torch.device], value: Optional[torch.Tensor] = None +): + """ + A helper function to set a given tensor (parameter of buffer) of a module on a specific device (note that doing + `param.to(device)` creates a new tensor not linked to the parameter, which is why we need this function). + + Args: + module (`torch.nn.Module`): The module in which the tensor we want to move lives. + param_name (`str`): The full name of the parameter/buffer. + device (`int`, `str` or `torch.device`): The device on which to set the tensor. + value (`torch.Tensor`, *optional*): The value of the tensor (useful when going from the meta device to any + other device). + """ + # Recurse if needed + if "." in tensor_name: + splits = tensor_name.split(".") + for split in splits[:-1]: + new_module = getattr(module, split) + if new_module is None: + raise ValueError(f"{module} has no attribute {split}.") + module = new_module + tensor_name = splits[-1] + + if tensor_name not in module._parameters and tensor_name not in module._buffers: + raise ValueError(f"{module} does not have a parameter or a buffer named {tensor_name}.") + is_buffer = tensor_name in module._buffers + old_value = getattr(module, tensor_name) + + if old_value.device == torch.device("meta") and device not in ["meta", torch.device("meta")] and value is None: + raise ValueError(f"{tensor_name} is on the meta device, we need a `value` to put in on {device}.") + + with torch.no_grad(): + if value is None: + new_value = old_value.to(device) + elif isinstance(value, torch.Tensor): + new_value = value.to(device) + else: + new_value = torch.tensor(value, device=device) + + if is_buffer: + module._buffers[tensor_name] = new_value + elif value is not None or torch.device(device) != module._parameters[tensor_name].device: + param_cls = type(module._parameters[tensor_name]) + kwargs = module._parameters[tensor_name].__dict__ + new_value = param_cls(new_value, requires_grad=old_value.requires_grad, **kwargs).to(device) + module._parameters[tensor_name] = new_value + + +def named_module_tensors(module: nn.Module, include_buffers: bool = True, recurse: bool = False): + """ + A helper function that gathers all the tensors (parameters + buffers) of a given module. If `include_buffers=True` + it's the same as doing `module.named_parameters(recurse=recurse) + module.named_buffers(recurse=recurse)`. + + Args: + module (`torch.nn.Module`): The module we want the tensors or. + include_buffer (`bool`, *optional*, defaults to `True`): Whether or not to include the buffers in the result. + recurse (`bool`, *optional`, defaults to `False`): + Whether or not to go look in every submodule or just return the direct parameters and buffers. + """ + for named_parameter in module.named_parameters(recurse=recurse): + yield named_parameter + + if include_buffers: + for named_buffer in module.named_buffers(recurse=recurse): + yield named_buffer + + +def find_tied_parameters(model: nn.Module, **kwargs): + """ + Find the tied parameters in a given model. + + Args: + model (`torch.nn.Module`): The model to inspect. + + + + The signature accepts keyword arguments, but they are for the recursive part of this function and you should ignore + them. + + + + Example: + + + ```py + >>> from collections import OrderedDict + >>> import torch.nn as nn + + >>> model = nn.Sequential(OrderedDict([("linear1", nn.Linear(4, 4)), ("linear2", nn.Linear(4, 4))])) + >>> model.linear2.weight = test_model.linear1.weight + >>> find_tied_parameters(test_model) + {'linear1.weight': 'linear2.weight'} + ``` + + Returns: + Dict[str, str]: A dictionary mapping tied parameter names to the name of the parameter they are tied to. + """ + # Initialize result and named_parameters before recursing. + named_parameters = kwargs.get("named_parameters", None) + prefix = kwargs.get("prefix", "") + result = kwargs.get("result", {}) + + if named_parameters is None: + named_parameters = {n: p for n, p in model.named_parameters()} + else: + # A tied parameter will not be in the full `named_parameters` seen above but will be in the `named_parameters` + # of the submodule it belongs to. So while recursing we track the names that are not in the initial + # `named_parameters`. + for name, parameter in model.named_parameters(): + full_name = name if prefix == "" else f"{prefix}.{name}" + if full_name not in named_parameters: + # When we find one, it has to be one of the existing parameters. + for new_name, new_param in named_parameters.items(): + if new_param is parameter: + result[new_name] = full_name + + # Once we have treated direct parameters, we move to the child modules. + for name, child in model.named_children(): + child_name = name if prefix == "" else f"{prefix}.{name}" + find_tied_parameters(child, named_parameters=named_parameters, prefix=child_name, result=result) + + return result + + +def compute_module_sizes(model: nn.Module, dtype: Optional[Union[str, torch.device]] = None): + """ + Compute the size of each submodule of a given model. + """ + if isinstance(dtype, str): + # We accept "torch.float16" or just "float16" + dtype = dtype.replace("torch.", "") + dtype = getattr(torch, dtype) + if dtype is not None: + dtype_size = dtype_byte_size(dtype) + module_sizes = defaultdict(int) + for name, tensor in named_module_tensors(model, recurse=True): + if dtype is None: + size = tensor.numel() * dtype_byte_size(tensor.dtype) + else: + size = tensor.numel() * min(dtype_size, dtype_byte_size(tensor.dtype)) + name_parts = name.split(".") + for idx in range(len(name_parts) + 1): + module_sizes[".".join(name_parts[:idx])] += size + + return module_sizes + + +def get_max_layer_size( + modules: List[Tuple[str, torch.nn.Module]], module_sizes: Dict[str, int], no_split_module_classes: List[str] +): + """ + Utility function that will scan a list of named modules and return the maximum size used by one full layer. The + definition of a layer being: + - a module with no direct children (just parameters and buffers) + - a module whose class name is in the list `no_split_module_classes` + + Args: + modules (`List[Tuple[str, torch.nn.Module]]`): + The list of named modules where we want to determine the maximum layer size. + module_sizes (`Dict[str, int]`): + A dictionary mapping each layer name to its size (as generated by `compute_module_sizes`). + no_split_module_classes (`List[str]`): + A list of class names for layers we don't want to be split. + + Returns: + `Tuple[int, List[str]]`: The maximum size of a layer with the list of layer names realizing that maximum size. + """ + max_size = 0 + layer_names = [] + modules_to_treat = modules.copy() + while len(modules_to_treat) > 0: + module_name, module = modules_to_treat.pop(0) + modules_children = list(module.named_children()) if isinstance(module, torch.nn.Module) else [] + if len(modules_children) == 0 or module.__class__.__name__ in no_split_module_classes: + # No splitting this one so we compare to the max_size + size = module_sizes[module_name] + if size > max_size: + max_size = size + layer_names = [module_name] + elif size == max_size: + layer_names.append(module_name) + else: + modules_to_treat = [(f"{module_name}.{n}", v) for n, v in modules_children] + modules_to_treat + return max_size, layer_names + + +def get_max_memory(max_memory: Optional[Dict[Union[int, str], Union[int, str]]] = None): + """ + Get the maximum memory available if nothing is passed, converts string to int otherwise. + """ + import psutil + + if max_memory is None: + if not torch.cuda.is_available(): + max_memory = {} + else: + # Make sure CUDA is initialized on each GPU to have the right memory info. + for i in range(torch.cuda.device_count()): + _ = torch.tensor([0], device=i) + max_memory = {i: torch.cuda.mem_get_info(i)[0] for i in range(torch.cuda.device_count())} + max_memory["cpu"] = psutil.virtual_memory().available + return max_memory + + for key in max_memory: + if isinstance(max_memory[key], str): + max_memory[key] = convert_file_size_to_int(max_memory[key]) + return max_memory + + +def clean_device_map(device_map: Dict[str, Union[int, str, torch.device]], module_name: str = ""): + """ + Cleans a device_map by grouping all submodules that go on the same device together. + """ + # Get the value of the current module and if there is only one split across several keys, regroup it. + prefix = "" if module_name == "" else f"{module_name}." + values = [v for k, v in device_map.items() if k.startswith(prefix)] + if len(set(values)) == 1 and len(values) > 1: + for k in [k for k in device_map if k.startswith(prefix)]: + del device_map[k] + device_map[module_name] = values[0] + + # Recurse over the children + children_modules = [k for k in device_map.keys() if k.startswith(module_name) and len(k) > len(module_name)] + idx = len(module_name.split(".")) + 1 if len(module_name) > 0 else 1 + children_modules = set(".".join(k.split(".")[:idx]) for k in children_modules) + for child in children_modules: + clean_device_map(device_map, module_name=child) + + return device_map + + +def load_offloaded_weights(model, index, offload_folder): + if index is None or len(index) == 0: + # Nothing to do + return + + for param_name, metadata in index.items(): + tensor_file = os.path.join(offload_folder, f"{param_name}.dat") + shape = tuple(metadata["shape"]) + weight = np.memmap(tensor_file, dtype=metadata["dtype"], mode="r", shape=shape) + set_module_tensor_to_device(model, param_name, "cpu", value=torch.tensor(weight)) + + +def get_balanced_memory( + model: nn.Module, + max_memory: Optional[Dict[Union[int, str], Union[int, str]]] = None, + no_split_module_classes: Optional[List[str]] = None, + dtype: Optional[Union[str, torch.dtype]] = None, + low_zero: bool = False, +): + """ + Compute a `max_memory` dictionary for [`infer_auto_device_map`] that will balance the use of each available GPU. + + + + All computation is done analyzing sizes and dtypes of the model parameters. As a result, the model can be on the + meta device (as it would if initialized within the `init_empty_weights` context manager). + + + + Args: + model (`torch.nn.Module`): The model to analyze. + max_memory (`Dict`, *optional*): + A dictionary device identifier to maximum memory. Will default to the maximum memory available if unset. + no_split_module_classes (`List[str]`, *optional*): + A list of layer class names that should never be split across device (for instance any layer that has a + residual connection). + dtype (`str` or `torch.dtype`, *optional*): + If provided, the weights will be converted to that type when loaded. + low_zero (`bool`, *optional*): + Minimizes the number of weights on GPU 0, which is convenient when it's used for other operations (like the + Transformers generate function). + """ + # Get default / clean up max_memory + max_memory = get_max_memory(max_memory) + + if not torch.cuda.is_available(): + return max_memory + + num_devices = len([d for d in max_memory if torch.device(d).type == "cuda"]) + module_sizes = compute_module_sizes(model, dtype=dtype) + per_gpu = module_sizes[""] // (num_devices - 1 if low_zero else num_devices) + + # We can't just set the memory to model_size // num_devices as it will end being too small: each GPU will get + # slightly less layers and some layers will end up offload at the end. So this function computes a buffer size to + # add which is the biggest of: + # - the size of no split block (if applicable) + # - the mean of the layer sizes + if no_split_module_classes is None: + no_split_module_classes = [] + elif not isinstance(no_split_module_classes, (list, tuple)): + no_split_module_classes = [no_split_module_classes] + + # Identify the size of the no_split_block modules + if len(no_split_module_classes) > 0: + no_split_children = {} + for name, size in module_sizes.items(): + if name == "": + continue + submodule = model + for submodule_name in name.split("."): + submodule = getattr(submodule, submodule_name) + class_name = submodule.__class__.__name__ + if class_name in no_split_module_classes and class_name not in no_split_children: + no_split_children[class_name] = size + + if set(no_split_children.keys()) == set(no_split_module_classes): + break + buffer = max(no_split_children.values()) if len(no_split_children) > 0 else 0 + else: + buffer = 0 + + # Compute mean of final modules. In the first dict of module sizes, leaves are the parameters + leaves = [n for n in module_sizes if len([p for p in module_sizes if p.startswith(n) and len(p) > len(n)]) == 0] + module_sizes = {n: v for n, v in module_sizes.items() if n not in leaves} + # Once removed, leaves are the final modules. + leaves = [n for n in module_sizes if len([p for p in module_sizes if p.startswith(n) and len(p) > len(n)]) == 0] + mean_leaves = int(sum([module_sizes[n] for n in leaves]) / len(leaves)) + buffer = int(1.25 * max(buffer, mean_leaves)) + per_gpu += buffer + + max_memory = get_max_memory(max_memory) + # The last device is left with max_memory just in case the buffer is not enough. + for i in range(num_devices - 1): + max_memory[i] = min(0 if low_zero and i == 0 else per_gpu, max_memory[i]) + + if low_zero: + min_zero = max(0, module_sizes[""] - sum([max_memory[i] for i in range(1, num_devices)])) + max_memory[0] = min(min_zero, max_memory[0]) + + return max_memory + + +def infer_auto_device_map( + model: nn.Module, + max_memory: Optional[Dict[Union[int, str], Union[int, str]]] = None, + no_split_module_classes: Optional[List[str]] = None, + dtype: Optional[Union[str, torch.dtype]] = None, +): + """ + Compute a device map for a given model giving priority to GPUs, then offload on CPU and finally offload to disk, + such that: + - we don't exceed the memory available of any of the GPU. + - if offload to the CPU is needed, there is always room left on GPU 0 to put back the layer offloaded on CPU that + has the largest size. + - if offload to the CPU is needed,we don't exceed the RAM available on the CPU. + - if offload to the disk is needed, there is always room left on the CPU to put back the layer offloaded on disk + that has the largest size. + + + + All computation is done analyzing sizes and dtypes of the model parameters. As a result, the model can be on the + meta device (as it would if initialized within the `init_empty_weights` context manager). + + + + Args: + model (`torch.nn.Module`): The model to analyze. + max_memory (`Dict`, *optional*): + A dictionary device identifier to maximum memory. Will default to the maximum memory available if unset. + no_split_module_classes (`List[str]`, *optional*): + A list of layer class names that should never be split across device (for instance any layer that has a + residual connection). + dtype (`str` or `torch.dtype`, *optional*): + If provided, the weights will be converted to that type when loaded. + """ + # Get default / clean up max_memory + max_memory = get_max_memory(max_memory) + if no_split_module_classes is None: + no_split_module_classes = [] + elif not isinstance(no_split_module_classes, (list, tuple)): + no_split_module_classes = [no_split_module_classes] + + devices = list(max_memory.keys()) + gpus = [device for device in devices if device != "cpu"] + if "disk" not in devices: + devices.append("disk") + + # Devices that need to keep space for a potential offloaded layer. + main_devices = [gpus[0], "cpu"] if len(gpus) > 0 else ["cpu"] + + module_sizes = compute_module_sizes(model, dtype=dtype) + tied_parameters = find_tied_parameters(model) + + device_map = {} + current_device = 0 + current_memory_used = 0 + + # Direct submodules and parameters + modules_to_treat = list(model.named_parameters(recurse=False)) + list(model.named_children()) + # Initialize maximum largest layer, to know which space to keep in memory + max_layer_size, max_layer_names = get_max_layer_size(modules_to_treat, module_sizes, no_split_module_classes) + + # Ready ? This is going to be a bit messy. + while len(modules_to_treat) > 0: + name, module = modules_to_treat.pop(0) + # Max size in the remaining layers may have changed since we took one, so we maybe update it. + max_layer_names = [n for n in max_layer_names if not n.startswith(name)] + if len(max_layer_names) == 0: + max_layer_size, max_layer_names = get_max_layer_size( + [(n, m) for n, m in modules_to_treat if isinstance(m, torch.nn.Module)], + module_sizes, + no_split_module_classes, + ) + # Assess size needed + module_size = module_sizes[name] + tied_params = [v for k, v in tied_parameters.items() if name in k] + # We ignore parameters that are tied when they're tied to > 1 one + tied_param = tied_params[0] if len(tied_params) == 1 else None + + device = devices[current_device] + current_max_size = max_memory[device] if device != "disk" else None + # Reduce max size available by the largest layer. + if devices[current_device] in main_devices: + current_max_size = current_max_size - max_layer_size + # Case 1 -> We're too big! + if current_max_size is not None and current_memory_used + module_size > current_max_size: + # Split or not split? + modules_children = list(module.named_children()) + if len(modules_children) == 0 or module.__class__.__name__ in no_split_module_classes: + # -> no split, we go to the next device + current_device += 1 + modules_to_treat = [(name, module)] + modules_to_treat + current_memory_used = 0 + else: + # -> split, we replace the module studied by its children + parameters + modules_children = list(module.named_parameters(recurse=False)) + modules_children + modules_to_treat = [(f"{name}.{n}", v) for n, v in modules_children] + modules_to_treat + # Update the max layer size. + max_layer_size, max_layer_names = get_max_layer_size( + [(n, m) for n, m in modules_to_treat if isinstance(m, torch.nn.Module)], + module_sizes, + no_split_module_classes, + ) + + # Case 2, it fits! We're not entirely out of the wood though, because we may have some tied parameters. + elif tied_param is not None: + # Determine the sized occupied by this module + the module containing the tied parameter + tied_module_size = module_size + tied_module_index = [i for i, (n, _) in enumerate(modules_to_treat) if n in tied_param][0] + tied_module_name, tied_module = modules_to_treat[tied_module_index] + tied_module_size += module_sizes[tied_module_name] - module_sizes[tied_param] + if current_max_size is not None and current_memory_used + tied_module_size > current_max_size: + # Split or not split? + tied_module_children = list(tied_module.named_children()) + if len(tied_module_children) == 0 or tied_module.__class__.__name__ in no_split_module_classes: + # If the tied module is not split, we go to the next device + current_device += 1 + modules_to_treat = [(name, module)] + modules_to_treat + current_memory_used = 0 + else: + # Otherwise, we replace the tied module by its children. + tied_module_children = list(tied_module.named_parameters(recurse=False)) + tied_module_children + tied_module_children = [(f"{tied_module_name}.{n}", v) for n, v in tied_module_children] + modules_to_treat = ( + [(name, module)] + + modules_to_treat[:tied_module_index] + + tied_module_children + + modules_to_treat[tied_module_index + 1 :] + ) + # Update the max layer size. + max_layer_size, max_layer_names = get_max_layer_size( + [(n, m) for n, m in modules_to_treat if isinstance(m, torch.nn.Module)], + module_sizes, + no_split_module_classes, + ) + else: + # We really really fit! + current_memory_used += tied_module_size + device_map[name] = devices[current_device] + modules_to_treat.pop(tied_module_index) + device_map[tied_module_name] = devices[current_device] + else: + current_memory_used += module_size + device_map[name] = devices[current_device] + + return clean_device_map(device_map) + + +def check_device_map(model: nn.Module, device_map: Dict[str, Union[int, str, torch.device]]): + """ + Checks a device map covers everything in a given model. + + Args: + model (`torch.nn.Module`): The model to check the device map against. + device_map (`Dict[str, Union[int, str, torch.device]]`): The device map to check. + """ + all_model_tensors = [name for name, _ in model.state_dict().items()] + for module_name in device_map.keys(): + all_model_tensors = [name for name in all_model_tensors if not name.startswith(module_name)] + if len(all_model_tensors) > 0: + non_covered_params = ", ".join(all_model_tensors) + raise ValueError( + f"The device_map provided does not give any device for the following parameters: {non_covered_params}" + ) + + +def load_checkpoint_in_model( + model: nn.Module, + checkpoint: Union[str, os.PathLike], + device_map: Optional[Dict[str, Union[int, str, torch.device]]] = None, + offload_folder: Optional[Union[str, os.PathLike]] = None, + dtype: Optional[Union[str, torch.dtype]] = None, + offload_state_dict: bool = False, +): + """ + Loads a (potentially sharded) checkpoint inside a model, potentially sending weights to a given device as they are + loaded. + + + + Once loaded across devices, you still need to call [`dispatch_model`] on your model to make it able to run. To + group the checkpoint loading and dispatch in one single call, use [`load_checkpoint_and_dispatch`]. + + + + Args: + model (`torch.nn.Module`): The model in which we want to load a checkpoint. + checkpoint (`str` or `os.PathLike`): + The folder checkpoint to load. It can be: + - a path to a file containing a whole model state dict + - a path to a `.json` file containing the index to a sharded checkpoint + - a path to a folder containing a unique `.index.json` file and the shards of a checkpoint. + device_map (`Dict[str, Union[int, str, torch.device]]`, *optional*): + A map that specifies where each submodule should go. It doesn't need to be refined to each parameter/buffer + name, once a given module name is inside, every submodule of it will be sent to the same device. + offload_folder (`str` or `os.PathLike`, *optional*): + If the `device_map` contains any value `"disk"`, the folder where we will offload weights. + dtype (`str` or `torch.dtype`, *optional*): + If provided, the weights will be converted to that type when loaded. + offload_state_dict (`bool`, *optional*, defaults to `False`): + If `True`, will temporarily offload the CPU state dict on the hard drive to avoid getting out of CPU RAM if + the weight of the CPU state dict + the biggest shard does not fit. + """ + if offload_folder is None and device_map is not None and "disk" in device_map.values(): + raise ValueError( + "At least one of the model submodule will be offloaded to disk, please pass along an `offload_folder`." + ) + elif offload_folder is not None and device_map is not None and "disk" in device_map.values(): + os.makedirs(offload_folder, exist_ok=True) + + if isinstance(dtype, str): + # We accept "torch.float16" or just "float16" + dtype = dtype.replace("torch.", "") + dtype = getattr(torch, dtype) + + checkpoint_files = None + index_filename = None + if os.path.isfile(checkpoint): + if str(checkpoint).endswith(".json"): + index_filename = checkpoint + else: + checkpoint_files = [checkpoint] + elif os.path.isdir(checkpoint): + potential_index = [f for f in os.listdir(checkpoint) if f.endswith(".index.json")] + if len(potential_index) == 0: + raise ValueError(f"{checkpoint} is not a folder containing a `.index.json` file.") + elif len(potential_index) == 1: + index_filename = os.path.join(checkpoint, potential_index[0]) + else: + raise ValueError(f"{checkpoint} containing mote than one `.index.json` file, delete the irrelevant ones.") + else: + raise ValueError( + "`checkpoint` should be the path to a file containing a whole state dict, or the index of a sharded " + f"checkpoint, or a folder containing a sharded checkpoint, but got {checkpoint}." + ) + + if index_filename is not None: + checkpoint_folder = os.path.split(index_filename)[0] + with open(index_filename, "r") as f: + index = json.loads(f.read()) + + if "weight_map" in index: + index = index["weight_map"] + checkpoint_files = sorted(list(set(index.values()))) + checkpoint_files = [os.path.join(checkpoint_folder, f) for f in checkpoint_files] + + # Logic for missing/unexepected keys goes here. + + offload_index = {} + if offload_state_dict: + state_dict_folder = tempfile.mkdtemp() + state_dict_index = {} + + for checkpoint_file in checkpoint_files: + checkpoint = torch.load(checkpoint_file) + if device_map is None: + model.load_state_dict(checkpoint, strict=False) + else: + for param_name, param in checkpoint.items(): + module_name = param_name + if dtype is not None and not str(param.dtype).startswith(("torch.uint", "torch.int", "torch.bool")): + param = param.to(dtype) + while len(module_name) > 0 and module_name not in device_map: + module_name = ".".join(module_name.split(".")[:-1]) + if module_name == "" and "" not in device_map: + # TODO: group all errors and raise at the end. + raise ValueError(f"{param_name} doesn't have any device set.") + param_device = device_map[module_name] + + if param_device == "disk": + set_module_tensor_to_device(model, param_name, "meta") + offload_weight(param, param_name, offload_folder, index=offload_index) + elif param_device == "cpu" and offload_state_dict: + set_module_tensor_to_device(model, param_name, "meta") + offload_weight(param, param_name, state_dict_folder, index=state_dict_index) + else: + set_module_tensor_to_device(model, param_name, param_device, value=param) + + # Force Python to clean up. + del checkpoint + gc.collect() + + save_offload_index(offload_index, offload_folder) + + # Load back offloaded state dict on CPU + if offload_state_dict: + load_offloaded_weights(model, state_dict_index, state_dict_folder) + shutil.rmtree(state_dict_folder) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/offload.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/offload.py new file mode 100644 index 0000000..750ff9d --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/offload.py @@ -0,0 +1,182 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import os +from collections.abc import Mapping +from typing import Dict, List, Optional, Union + +import numpy as np +import torch + + +def offload_weight(weight, weight_name, offload_folder, index=None): + dtype = None + # Check the string instead of the dtype to be compatible with versions of PyTorch that don't have bfloat16. + if str(weight.dtype) == "torch.bfloat16": + # Need to reinterpret the underlined data as int16 since NumPy does not handle bfloat16s. + weight = weight.view(torch.int16) + dtype = "bfloat16" + array = weight.numpy() + tensor_file = os.path.join(offload_folder, f"{weight_name}.dat") + if index is not None: + if dtype is None: + dtype = str(array.dtype) + index[weight_name] = {"dtype": dtype, "shape": list(array.shape)} + if array.ndim == 0: + array = array[None] + file_array = np.memmap(tensor_file, dtype=array.dtype, mode="w+", shape=array.shape) + file_array[:] = array[:] + file_array.flush() + return index + + +def load_offloaded_weight(weight_file, weight_info): + shape = tuple(weight_info["shape"]) + if shape == (): + # NumPy memory-mapped arrays can't have 0 dims so it was saved as 1d tensor + shape = (1,) + + dtype = weight_info["dtype"] + if dtype == "bfloat16": + # NumPy does not support bfloat16 so this was saved as a int16 + dtype = "int16" + + weight = np.memmap(weight_file, dtype=dtype, shape=shape, mode="r") + + if len(weight_info["shape"]) == 0: + weight = weight[0] + weight = torch.tensor(weight) + if weight_info["dtype"] == "bfloat16": + weight = weight.view(torch.bfloat16) + + return weight + + +def save_offload_index(index, offload_folder): + if index is None or len(index) == 0: + # Nothing to save + return + + offload_index_file = os.path.join(offload_folder, "index.json") + if os.path.isfile(offload_index_file): + with open(offload_index_file, "r", encoding="utf-8") as f: + current_index = json.load(f) + else: + current_index = {} + current_index.update(index) + + with open(offload_index_file, "w", encoding="utf-8") as f: + json.dump(current_index, f, indent=2) + + +def offload_state_dict(save_dir: Union[str, os.PathLike], state_dict: Dict[str, torch.Tensor]): + """ + Offload a state dict in a given folder. + + Args: + save_dir (`str` or `os.PathLike`): The directory in which to offload the state dict. + state_dict (`Dict[str, torch.Tensor]`): The dictionary of tensors to offload. + """ + os.makedirs(save_dir, exist_ok=True) + index = {} + for name, parameter in state_dict.items(): + index = offload_weight(parameter, name, save_dir, index=index) + + # Update index + save_offload_index(index, save_dir) + + +class PrefixedDataset(Mapping): + """ + Will access keys in a given dataset by adding a prefix. + + Args: + dataset (`Mapping`): Any map with string keys. + prefix (`str`): A prefix to add when trying to access any element in the underlying dataset. + """ + + def __init__(self, dataset: Mapping, prefix: str): + self.dataset = dataset + self.prefix = prefix + + def __getitem__(self, key): + return self.dataset[f"{self.prefix}{key}"] + + def __iter__(self): + return iter([key for key in self.dataset if key.startswith(self.prefix)]) + + def __len__(self): + return len(self.dataset) + + +class OffloadedWeightsLoader(Mapping): + """ + A collection that loads weights stored in a given state dict or memory-mapped on disk. + + Args: + state_dict (`Dict[str, torch.Tensor]`, *optional*): + A dictionary parameter name to tensor. + save_folder (`str` or `os.PathLike`, *optional*): + The directory in which the weights are stored (by `offload_state_dict` for instance). + index (`Dict`, *optional*): + A dictionary from weight name to their information (`dtype` and `shape`). Will default to the index saved + in `save_folder`. + """ + + def __init__( + self, + state_dict: Dict[str, torch.Tensor] = None, + save_folder: Optional[Union[str, os.PathLike]] = None, + index: Mapping = None, + ): + if state_dict is None and save_folder is None: + raise ValueError("Need either a `state_dict` or a `save_folder` containing offloaded weights.") + + self.state_dict = {} if state_dict is None else state_dict + self.save_folder = save_folder + if index is None and save_folder is not None: + with open(os.path.join(save_folder, "index.json")) as f: + index = json.load(f) + self.index = {} if index is None else index + self.all_keys = list(self.state_dict.keys()) + self.all_keys.extend([key for key in self.index if key not in self.all_keys]) + + def __getitem__(self, key: str): + # State dict gets priority + if key in self.state_dict: + return self.state_dict[key] + weight_info = self.index[key] + weight_file = os.path.join(self.save_folder, f"{key}.dat") + return load_offloaded_weight(weight_file, weight_info) + + def __iter__(self): + return iter(self.all_keys) + + def __len__(self): + return len(self.all_keys) + + +def extract_submodules_state_dict(state_dict: Dict[str, torch.Tensor], submodule_names: List[str]): + """ + Extract the sub state-dict corresponding to a list of given submodules. + + Args: + state_dict (`Dict[str, torch.Tensor]`): The state dict to extract from. + submodule_names (`List[str]`): The list of submodule names we want to extract. + """ + result = {} + for module_name in submodule_names: + result.update({key: param for key, param in state_dict.items() if key.startswith(module_name)}) + return result diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/operations.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/operations.py new file mode 100644 index 0000000..42868a0 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/operations.py @@ -0,0 +1,531 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +A set of basic tensor ops compatible with tpu, gpu, and multigpu +""" + + +from functools import update_wrapper +from typing import Any, Mapping + +import torch +from torch.distributed import ReduceOp + +from ..state import AcceleratorState +from .dataclasses import DistributedType, TensorInformation +from .imports import is_tpu_available +from .versions import is_torch_version + + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + + +def is_torch_tensor(tensor): + return isinstance(tensor, torch.Tensor) + + +def is_tensor_information(tensor_info): + return isinstance(tensor_info, TensorInformation) + + +def honor_type(obj, generator): + """ + Cast a generator to the same type as obj (list, tuple or namedtuple) + """ + try: + return type(obj)(generator) + except TypeError: + # Some objects may not be able to instantiate from a generator directly + return type(obj)(*list(generator)) + + +def recursively_apply(func, data, *args, test_type=is_torch_tensor, error_on_other_type=False, **kwargs): + """ + Recursively apply a function on a data structure that is a nested list/tuple/dictionary of a given base type. + + Args: + func (`callable`): + The function to recursively apply. + data (nested list/tuple/dictionary of `main_type`): + The data on which to apply `func` + *args: + Positional arguments that will be passed to `func` when applied on the unpacked data. + main_type (`type`, *optional*, defaults to `torch.Tensor`): + The base type of the objects to which apply `func`. + error_on_other_type (`bool`, *optional*, defaults to `False`): + Whether to return an error or not if after unpacking `data`, we get on an object that is not of type + `main_type`. If `False`, the function will leave objects of types different than `main_type` unchanged. + **kwargs: + Keyword arguments that will be passed to `func` when applied on the unpacked data. + + Returns: + The same data structure as `data` with `func` applied to every object of type `main_type`. + """ + if isinstance(data, (tuple, list)): + return honor_type( + data, + ( + recursively_apply( + func, o, *args, test_type=test_type, error_on_other_type=error_on_other_type, **kwargs + ) + for o in data + ), + ) + elif isinstance(data, Mapping): + return type(data)( + { + k: recursively_apply( + func, v, *args, test_type=test_type, error_on_other_type=error_on_other_type, **kwargs + ) + for k, v in data.items() + } + ) + elif test_type(data): + return func(data, *args, **kwargs) + elif error_on_other_type: + raise TypeError( + f"Can't apply {func.__name__} on object of type {type(data)}, only of nested list/tuple/dicts of objects " + f"that satisfy {test_type.__name__}." + ) + return data + + +def send_to_device(tensor, device): + """ + Recursively sends the elements in a nested list/tuple/dictionary of tensors to a given device. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to send to a given device. + device (`torch.device`): + The device to send the data to. + + Returns: + The same data structure as `tensor` with all tensors sent to the proper device. + """ + + def _send_to_device(t, device): + return t.to(device) + + def _has_to_method(t): + return hasattr(t, "to") + + return recursively_apply(_send_to_device, tensor, device, test_type=_has_to_method) + + +def get_data_structure(data): + """ + Recursively gathers the information needed to rebuild a nested list/tuple/dictionary of tensors. + + Args: + data (nested list/tuple/dictionary of `torch.Tensor`): + The data to send to analyze. + + Returns: + The same data structure as `data` with [`~utils.TensorInformation`] instead of tensors. + """ + + def _get_data_structure(tensor): + return TensorInformation(shape=tensor.shape, dtype=tensor.dtype) + + return recursively_apply(_get_data_structure, data) + + +def initialize_tensors(data_structure): + """ + Recursively initializes tensors from a nested list/tuple/dictionary of [`~utils.TensorInformation`]. + + Returns: + The same data structure as `data` with tensors instead of [`~utils.TensorInformation`]. + """ + + def _initialize_tensor(tensor_info): + return torch.empty(*tensor_info.shape, dtype=tensor_info.dtype) + + return recursively_apply(_initialize_tensor, data_structure, test_type=is_tensor_information) + + +def find_batch_size(data): + """ + Recursively finds the batch size in a nested list/tuple/dictionary of lists of tensors. + + Args: + data (nested list/tuple/dictionary of `torch.Tensor`): The data from which to find the batch size. + + Returns: + `int`: The batch size. + """ + if isinstance(data, (tuple, list)): + return find_batch_size(data[0]) + elif isinstance(data, Mapping): + for k in data.keys(): + return find_batch_size(data[k]) + elif not isinstance(data, torch.Tensor): + raise TypeError(f"Can only find the batch size of tensors but got {type(data)}.") + return data.shape[0] + + +def _tpu_gather(tensor, name="gather tensor"): + if isinstance(tensor, (list, tuple)): + return honor_type(tensor, (_tpu_gather(t, name=f"{name}_{i}") for i, t in enumerate(tensor))) + elif isinstance(tensor, Mapping): + return type(tensor)({k: _tpu_gather(v, name=f"{name}_{k}") for k, v in tensor.items()}) + elif not isinstance(tensor, torch.Tensor): + raise TypeError(f"Can't gather the values of type {type(tensor)}, only of nested list/tuple/dicts of tensors.") + if tensor.ndim == 0: + tensor = tensor.clone()[None] + return xm.mesh_reduce(name, tensor, torch.cat) + + +def _gpu_gather(tensor): + def _gpu_gather_one(tensor): + if tensor.ndim == 0: + tensor = tensor.clone()[None] + output_tensors = [tensor.clone() for _ in range(torch.distributed.get_world_size())] + torch.distributed.all_gather(output_tensors, tensor) + return torch.cat(output_tensors, dim=0) + + return recursively_apply(_gpu_gather_one, tensor, error_on_other_type=True) + + +_cpu_gather = _gpu_gather + + +def gather(tensor): + """ + Recursively gather tensor in a nested list/tuple/dictionary of tensors from all devices. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to gather. + + Returns: + The same data structure as `tensor` with all tensors sent to the proper device. + """ + if AcceleratorState().distributed_type == DistributedType.TPU: + return _tpu_gather(tensor, name="accelerate.utils.gather") + elif AcceleratorState().distributed_type in [ + DistributedType.DEEPSPEED, + DistributedType.MULTI_GPU, + DistributedType.FSDP, + ]: + return _gpu_gather(tensor) + elif AcceleratorState().distributed_type == DistributedType.MULTI_CPU: + return _cpu_gather(tensor) + else: + return tensor + + +def _gpu_gather_object(object: Any): + def _gpu_gather_object_one(object: Any): + output_objects = [None for _ in range(AcceleratorState().num_processes)] + torch.distributed.all_gather_object(output_objects, object) + return output_objects + + return recursively_apply(_gpu_gather_object_one, object) + + +_cpu_gather_object = _gpu_gather_object + + +def gather_object(object: Any): + """ + Recursively gather object in a nested list/tuple/dictionary of objects from all devices. + + Args: + object (nested list/tuple/dictionary of picklable object): + The data to gather. + + Returns: + The same data structure as `object` with all the objects sent to every device. + """ + if AcceleratorState().distributed_type == DistributedType.TPU: + raise NotImplementedError("gather objects in TPU is not supported") + elif AcceleratorState().distributed_type in [ + DistributedType.DEEPSPEED, + DistributedType.MULTI_GPU, + DistributedType.FSDP, + ]: + return _gpu_gather_object(object) + elif AcceleratorState().distributed_type == DistributedType.MULTI_CPU: + return _cpu_gather_object(object) + else: + return object + + +def _gpu_broadcast(data, src=0): + def _gpu_broadcast_one(tensor, src=0): + torch.distributed.broadcast(tensor, src=src) + return tensor + + return recursively_apply(_gpu_broadcast_one, data, error_on_other_type=True, src=src) + + +def _tpu_broadcast(tensor, src=0, name="broadcast tensor"): + if isinstance(tensor, (list, tuple)): + return honor_type(tensor, (_tpu_broadcast(t, name=f"{name}_{i}") for i, t in enumerate(tensor))) + elif isinstance(tensor, Mapping): + return type(tensor)({k: _tpu_broadcast(v, name=f"{name}_{k}") for k, v in tensor.items()}) + return xm.mesh_reduce(name, tensor, lambda x: x[src]) + + +def broadcast(tensor, from_process: int = 0): + """ + Recursively broadcast tensor in a nested list/tuple/dictionary of tensors to all devices. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to gather. + from_process (`int`, *optional*, defaults to 0): + The process from which to send the data + + Returns: + The same data structure as `tensor` with all tensors broadcasted to the proper device. + """ + if AcceleratorState().distributed_type == DistributedType.TPU: + return _tpu_broadcast(tensor, src=from_process, name="accelerate.utils.broadcast") + elif AcceleratorState().distributed_type in [ + DistributedType.DEEPSPEED, + DistributedType.MULTI_GPU, + DistributedType.FSDP, + ]: + return _gpu_broadcast(tensor, src=from_process) + elif AcceleratorState().distributed_type == DistributedType.MULTI_CPU: + return _gpu_broadcast(tensor, src=from_process) + else: + return tensor + + +def broadcast_object_list(object_list, from_process: int = 0): + """ + Broadcast a list of picklable objects form one process to the others. + + Args: + object_list (list of picklable objects): + The list of objects to broadcast. This list will be modified inplace. + from_process (`int`, *optional*, defaults to 0): + The process from which to send the data. + + Returns: + The same list containing the objects from process 0. + """ + if AcceleratorState().distributed_type == DistributedType.TPU: + for i, obj in enumerate(object_list): + object_list[i] = xm.mesh_reduce("accelerate.utils.broadcast_object_list", obj, lambda x: x[from_process]) + elif AcceleratorState().distributed_type in [ + DistributedType.DEEPSPEED, + DistributedType.MULTI_GPU, + DistributedType.FSDP, + ]: + torch.distributed.broadcast_object_list(object_list, src=from_process) + elif AcceleratorState().distributed_type == DistributedType.MULTI_CPU: + torch.distributed.broadcast_object_list(object_list, src=from_process) + return object_list + + +def slice_tensors(data, tensor_slice): + """ + Recursively takes a slice in a nested list/tuple/dictionary of tensors. + + Args: + data (nested list/tuple/dictionary of `torch.Tensor`): + The data to slice. + tensor_slice (`slice`): + The slice to take. + + Returns: + The same data structure as `data` with all the tensors slices. + """ + + def _slice_tensor(tensor, tensor_slice): + return tensor[tensor_slice] + + return recursively_apply(_slice_tensor, data, tensor_slice) + + +def concatenate(data, dim=0): + """ + Recursively concatenate the tensors in a nested list/tuple/dictionary of lists of tensors with the same shape. + + Args: + data (nested list/tuple/dictionary of lists of tensors `torch.Tensor`): + The data to concatenate. + dim (`int`, *optional*, defaults to 0): + The dimension on which to concatenate. + + Returns: + The same data structure as `data` with all the tensors concatenated. + """ + if isinstance(data[0], (tuple, list)): + return honor_type(data[0], (concatenate([d[i] for d in data], dim=dim) for i in range(len(data[0])))) + elif isinstance(data[0], Mapping): + return type(data[0])({k: concatenate([d[k] for d in data], dim=dim) for k in data[0].keys()}) + elif not isinstance(data[0], torch.Tensor): + raise TypeError(f"Can only concatenate tensors but got {type(data[0])}") + return torch.cat(data, dim=dim) + + +def pad_across_processes(tensor, dim=0, pad_index=0, pad_first=False): + """ + Recursively pad the tensors in a nested list/tuple/dictionary of tensors from all devices to the same size so they + can safely be gathered. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to gather. + dim (`int`, *optional*, defaults to 0): + The dimension on which to pad. + pad_index (`int`, *optional*, defaults to 0): + The value with which to pad. + pad_first (`bool`, *optional*, defaults to `False`): + Whether to pad at the beginning or the end. + """ + + def _pad_across_processes(tensor, dim=0, pad_index=0, pad_first=False): + if dim >= len(tensor.shape): + return tensor + + # Gather all sizes + size = torch.tensor(tensor.shape, device=tensor.device)[None] + sizes = gather(size).cpu() + # Then pad to the maximum size + max_size = max(s[dim] for s in sizes) + if max_size == tensor.shape[dim]: + return tensor + + old_size = tensor.shape + new_size = list(old_size) + new_size[dim] = max_size + new_tensor = tensor.new_zeros(tuple(new_size)) + pad_index + if pad_first: + indices = tuple( + slice(max_size - old_size[dim], max_size) if i == dim else slice(None) for i in range(len(new_size)) + ) + else: + indices = tuple(slice(0, old_size[dim]) if i == dim else slice(None) for i in range(len(new_size))) + new_tensor[indices] = tensor + return new_tensor + + return recursively_apply( + _pad_across_processes, tensor, error_on_other_type=True, dim=dim, pad_index=pad_index, pad_first=pad_first + ) + + +def reduce(tensor, reduction="mean"): + """ + Recursively reduce the tensors in a nested list/tuple/dictionary of lists of tensors across all processes by the + mean of a given operation. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to reduce. + reduction (`str`, *optional*, defaults to `"mean"`): + A reduction method. Can be of "mean", "sum", or "none" + + Returns: + The same data structure as `data` with all the tensors reduced. + """ + + def _reduce_across_processes(tensor, reduction="mean"): + state = AcceleratorState() + cloned_tensor = tensor.clone() + if state.distributed_type == DistributedType.TPU: + xm.all_reduce("sum", cloned_tensor) + return cloned_tensor + elif state.distributed_type in [ + DistributedType.DEEPSPEED, + DistributedType.MULTI_GPU, + DistributedType.FSDP, + ]: + torch.distributed.all_reduce(cloned_tensor, ReduceOp.SUM) + return cloned_tensor + else: + if reduction == "sum": + return cloned_tensor.sum() + else: + return cloned_tensor.mean() + + return recursively_apply(_reduce_across_processes, tensor, error_on_other_type=True, reduction=reduction) + + +def convert_to_fp32(tensor): + """ + Recursively converts the elements nested list/tuple/dictionary of tensors in FP16/BF16 precision to FP32. + + Args: + tensor (nested list/tuple/dictionary of `torch.Tensor`): + The data to convert from FP16/BF16 to FP32. + + Returns: + The same data structure as `tensor` with all tensors that were in FP16/BF16 precision converted to FP32. + """ + + def _convert_to_fp32(tensor): + return tensor.float() + + def _is_fp16_bf16_tensor(tensor): + return hasattr(tensor, "dtype") and ( + tensor.dtype == torch.float16 or (is_torch_version(">=", "1.10") and tensor.dtype == torch.bfloat16) + ) + + return recursively_apply(_convert_to_fp32, tensor, test_type=_is_fp16_bf16_tensor) + + +class ConvertOutputsToFp32: + """ + Decorator to apply to a function outputing tensors (like a model forward pass) that ensures the outputs in FP16 + precision will be convert back to FP32. + + Use a class instead of a decorator because otherwise, the prepared model can no longer be pickled (issue #273). + + Args: + model_forward (`Callable`): + The function which outputs we want to treat. + + Returns: + The same function as `model_forward` but with converted outputs. + """ + + def __init__(self, model_forward): + self.model_forward = model_forward + update_wrapper(self, model_forward) + + def __call__(self, *args, **kwargs): + return convert_to_fp32(self.model_forward(*args, **kwargs)) + + +convert_outputs_to_fp32 = ConvertOutputsToFp32 + + +def find_device(data): + """ + Finds the device on which a nested dict/list/tuple of tensors lies (assuming they are all on the same device). + + Args: + (nested list/tuple/dictionary of `torch.Tensor`): The data we want to know the device of. + """ + if isinstance(data, Mapping): + for obj in data.values(): + device = find_device(obj) + if device is not None: + return device + elif isinstance(data, (tuple, list)): + for obj in data: + device = find_device(obj) + if device is not None: + return device + elif isinstance(data, torch.Tensor): + return data.device diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/other.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/other.py new file mode 100644 index 0000000..ff36003 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/other.py @@ -0,0 +1,157 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from contextlib import contextmanager +from pathlib import Path + +import torch + +from ..commands.config.cluster import ClusterConfig +from ..commands.config.config_args import default_json_config_file +from ..state import AcceleratorState +from .dataclasses import DistributedType +from .imports import is_deepspeed_available, is_tpu_available + + +if is_deepspeed_available(): + from deepspeed import DeepSpeedEngine + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + + +def extract_model_from_parallel(model): + """ + Extract a model from its distributed containers. + + Args: + model (`torch.nn.Module`): The model to extract. + + Returns: + `torch.nn.Module`: The extracted model. + """ + options = (torch.nn.parallel.DistributedDataParallel, torch.nn.DataParallel) + if is_deepspeed_available(): + options += (DeepSpeedEngine,) + + while isinstance(model, options): + model = model.module + return model + + +def wait_for_everyone(): + """ + Introduces a blocking point in the script, making sure all processes have reached this point before continuing. + + + + Make sure all processes will reach this instruction otherwise one of your processes will hang forever. + + + """ + if ( + AcceleratorState().distributed_type == DistributedType.MULTI_GPU + or AcceleratorState().distributed_type == DistributedType.MULTI_CPU + or AcceleratorState().distributed_type == DistributedType.DEEPSPEED + or AcceleratorState().distributed_type == DistributedType.FSDP + ): + torch.distributed.barrier() + elif AcceleratorState().distributed_type == DistributedType.TPU: + xm.rendezvous("accelerate.utils.wait_for_everyone") + + +def save(obj, f): + """ + Save the data to disk. Use in place of `torch.save()`. + + Args: + obj: The data to save + f: The file (or file-like object) to use to save the data + """ + if AcceleratorState().distributed_type == DistributedType.TPU: + xm.save(obj, f) + elif AcceleratorState().local_process_index == 0: + torch.save(obj, f) + + +@contextmanager +def patch_environment(**kwargs): + """ + A context manager that will add each keyword argument passed to `os.environ` and remove them when exiting. + + Will convert the values in `kwargs` to strings and upper-case all the keys. + """ + for key, value in kwargs.items(): + os.environ[key.upper()] = str(value) + + yield + + for key in kwargs: + del os.environ[key.upper()] + + +def get_pretty_name(obj): + """ + Gets a pretty name from `obj`. + """ + if not hasattr(obj, "__qualname__") and not hasattr(obj, "__name__"): + obj = getattr(obj, "__class__", obj) + if hasattr(obj, "__qualname__"): + return obj.__qualname__ + if hasattr(obj, "__name__"): + return obj.__name__ + return str(obj) + + +def write_basic_config(mixed_precision="no", save_location: str = default_json_config_file): + """ + Creates and saves a basic cluster config to be used on a local machine with potentially multiple GPUs. Will also + set CPU if it is a CPU-only machine. + + Args: + mixed_precision (`str`, *optional*, defaults to "no"): + Mixed Precision to use. Should be one of "no", "fp16", or "bf16" + save_location (`str`, *optional*, defaults to `default_json_config_file`): + Optional custom save location. Should be passed to `--config_file` when using `accelerate launch`. Default + location is inside the huggingface cache folder (`~/.cache/huggingface`) but can be overriden by setting + the `HF_HOME` environmental variable, followed by `accelerate/default_config.yaml`. + """ + path = Path(save_location) + path.parent.mkdir(parents=True, exist_ok=True) + if path.exists(): + print( + f"Configuration already exists at {save_location}, will not override. Run `accelerate config` manually or pass a different `save_location`." + ) + return + mixed_precision = mixed_precision.lower() + if mixed_precision not in ["no", "fp16", "bf16"]: + raise ValueError(f"`mixed_precision` should be one of 'no', 'fp16', or 'bf16'. Received {mixed_precision}") + config = {"compute_environment": "LOCAL_MACHINE", "mixed_precision": mixed_precision} + if torch.cuda.is_available(): + num_gpus = torch.cuda.device_count() + config["num_processes"] = num_gpus + config["use_cpu"] = False + if num_gpus > 1: + config["distributed_type"] = "MULTI_GPU" + else: + config["distributed_type"] = "NO" + else: + num_gpus = 0 + config["use_cpu"] = True + config["num_processes"] = 1 + config["distributed_type"] = "NO" + if not path.exists(): + config = ClusterConfig(**config) + config.to_json_file(path) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/random.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/random.py new file mode 100644 index 0000000..e95ed03 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/random.py @@ -0,0 +1,87 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import random +from typing import List, Optional, Union + +import numpy as np +import torch + +from ..state import AcceleratorState +from .dataclasses import DistributedType, RNGType +from .imports import is_tpu_available + + +if is_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + + +def set_seed(seed: int, device_specific: bool = False): + """ + Helper function for reproducible behavior to set the seed in `random`, `numpy`, `torch`. + + Args: + seed (`int`): The seed to set. + device_specific (`bool`, *optional*, defaults to `False`): + Whether to differ the seed on each device slightly with `self.process_index`. + """ + if device_specific: + seed += AcceleratorState().process_index + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + # ^^ safe to call this function even if cuda is not available + if is_tpu_available(): + xm.set_rng_state(seed) + + +def synchronize_rng_state(rng_type: Optional[RNGType] = None, generator: Optional[torch.Generator] = None): + # Get the proper rng state + if rng_type == RNGType.TORCH: + rng_state = torch.get_rng_state() + elif rng_type == RNGType.CUDA: + rng_state = torch.cuda.get_rng_state() + elif rng_type == RNGType.XLA: + assert is_tpu_available(), "Can't synchronize XLA seeds on an environment without TPUs." + rng_state = torch.tensor(xm.get_rng_state()) + elif rng_type == RNGType.GENERATOR: + assert generator is not None, "Need a generator to synchronize its seed." + rng_state = generator.get_state() + + # Broadcast the rng state from device 0 to other devices + state = AcceleratorState() + if state.distributed_type == DistributedType.TPU: + rng_state = xm.mesh_reduce("random_seed", rng_state, lambda x: x[0]) + elif state.distributed_type in [DistributedType.DEEPSPEED, DistributedType.MULTI_GPU, DistributedType.FSDP]: + rng_state = rng_state.to(state.device) + torch.distributed.broadcast(rng_state, 0) + rng_state = rng_state.cpu() + elif state.distributed_type == DistributedType.MULTI_CPU: + torch.distributed.broadcast(rng_state, 0) + + # Set the broadcast rng state + if rng_type == RNGType.TORCH: + torch.set_rng_state(rng_state) + elif rng_type == RNGType.CUDA: + torch.cuda.set_rng_state(rng_state) + elif rng_type == RNGType.XLA: + xm.set_rng_state(rng_state.item()) + elif rng_type == RNGType.GENERATOR: + generator.set_state(rng_state) + + +def synchronize_rng_states(rng_types: List[Union[str, RNGType]], generator: Optional[torch.Generator] = None): + for rng_type in rng_types: + synchronize_rng_state(RNGType(rng_type), generator=generator) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/rich.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/rich.py new file mode 100644 index 0000000..2d48661 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/rich.py @@ -0,0 +1,24 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .imports import is_rich_available + + +if is_rich_available(): + from rich.traceback import install + + install(show_locals=False) + +else: + raise ModuleNotFoundError("To use the rich extension, install rich with `pip install rich`") diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/tqdm.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/tqdm.py new file mode 100644 index 0000000..be489bd --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/tqdm.py @@ -0,0 +1,37 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .imports import is_tqdm_available + + +if is_tqdm_available(): + import tqdm.auto as _tqdm + +from ..state import AcceleratorState + + +def tqdm(main_process_only: bool = True, *args, **kwargs): + """ + Wrapper around `tqdm.tqdm` that optionally displays only on the main process. + + Args: + main_process_only (`bool`, *optional*): + Whether to display the progress bar only on the main process + """ + if not is_tqdm_available(): + raise ImportError("Accelerate's `tqdm` module requires `tqdm` to be installed. Please run `pip install tqdm`.") + disable = False + if main_process_only: + disable = AcceleratorState().local_process_index == 0 + return _tqdm(*args, **kwargs, disable=disable) diff --git a/v0.13.2/accelerate-0.13.2/src/accelerate/utils/versions.py b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/versions.py new file mode 100644 index 0000000..38674d4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/src/accelerate/utils/versions.py @@ -0,0 +1,61 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from typing import Union + +from packaging.version import Version, parse + +from .constants import STR_OPERATION_TO_FUNC + + +if sys.version_info < (3, 8): + import importlib_metadata +else: + import importlib.metadata as importlib_metadata + +torch_version = parse(importlib_metadata.version("torch")) + + +def compare_versions(library_or_version: Union[str, Version], operation: str, requirement_version: str): + """ + Compares a library version to some requirement using a given operation. + + Args: + library_or_version (`str` or `packaging.version.Version`): + A library name or a version to check. + operation (`str`): + A string representation of an operator, such as `">"` or `"<="`. + requirement_version (`str`): + The version to compare the library version against + """ + if operation not in STR_OPERATION_TO_FUNC.keys(): + raise ValueError(f"`operation` must be one of {list(STR_OPERATION_TO_FUNC.keys())}, received {operation}") + operation = STR_OPERATION_TO_FUNC[operation] + if isinstance(library_or_version, str): + library_or_version = parse(importlib_metadata.version(library_or_version)) + return operation(library_or_version, parse(requirement_version)) + + +def is_torch_version(operation: str, version: str): + """ + Compares the current PyTorch version to a given reference with an operation. + + Args: + operation (`str`): + A string representation of an operator, such as `">"` or `"<="` + version (`str`): + A string version of PyTorch + """ + return compare_versions(torch_version, operation, version) diff --git a/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero2.json b/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero2.json new file mode 100644 index 0000000..f031969 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero2.json @@ -0,0 +1,49 @@ +{ + "fp16": { + "enabled": "auto", + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "bf16": { + "enabled": "auto" + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 2, + "offload_optimizer": { + "device": "cpu", + "pin_memory": true + }, + "allgather_partitions": true, + "allgather_bucket_size": 2e8, + "overlap_comm": true, + "reduce_scatter": true, + "reduce_bucket_size": "auto", + "contiguous_gradients": true + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero3.json b/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero3.json new file mode 100644 index 0000000..846cd73 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/deepspeed/ds_config_zero3.json @@ -0,0 +1,56 @@ +{ + "fp16": { + "enabled": "auto", + "loss_scale": 0, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1 + }, + "bf16": { + "enabled": "auto" + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "weight_decay": "auto", + "torch_adam": true, + "adam_w_mode": true + } + }, + "scheduler": { + "type": "WarmupLR", + "params": { + "warmup_min_lr": "auto", + "warmup_max_lr": "auto", + "warmup_num_steps": "auto" + } + }, + "zero_optimization": { + "stage": 3, + "offload_optimizer": { + "device": "cpu", + "pin_memory": true + }, + "offload_param": { + "device": "cpu", + "pin_memory": true + }, + "overlap_comm": true, + "contiguous_gradients": true, + "sub_group_size": 1e9, + "reduce_bucket_size": "auto", + "stage3_prefetch_bucket_size": "auto", + "stage3_param_persistence_threshold": "auto", + "stage3_max_live_parameters": 1e9, + "stage3_max_reuse_distance": 1e9, + "stage3_gather_16bit_weights_on_model_save": "auto" + }, + "gradient_accumulation_steps": 1, + "gradient_clipping": "auto", + "steps_per_print": 2000, + "train_batch_size": "auto", + "train_micro_batch_size_per_gpu": "auto", + "wall_clock_breakdown": false +} \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/tests/deepspeed/test_deepspeed.py b/v0.13.2/accelerate-0.13.2/tests/deepspeed/test_deepspeed.py new file mode 100644 index 0000000..1be7944 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/deepspeed/test_deepspeed.py @@ -0,0 +1,807 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import io +import itertools +import json +import os +import tempfile +import unittest +from copy import deepcopy +from pathlib import Path + +import torch +from torch.utils.data import DataLoader + +import accelerate +from accelerate.accelerator import Accelerator +from accelerate.scheduler import AcceleratedScheduler +from accelerate.state import AcceleratorState +from accelerate.test_utils.testing import ( + TempDirTestCase, + execute_subprocess_async, + require_cuda, + require_deepspeed, + require_multi_gpu, + slow, +) +from accelerate.test_utils.training import RegressionDataset +from accelerate.utils.dataclasses import DeepSpeedPlugin +from accelerate.utils.deepspeed import ( + DeepSpeedEngineWrapper, + DeepSpeedOptimizerWrapper, + DeepSpeedSchedulerWrapper, + DummyOptim, + DummyScheduler, +) +from accelerate.utils.other import patch_environment +from parameterized import parameterized +from transformers import AutoModel, AutoModelForCausalLM, get_scheduler +from transformers.testing_utils import mockenv_context +from transformers.trainer_utils import set_seed +from transformers.utils import is_torch_bf16_available + + +set_seed(42) + +T5_SMALL = "t5-small" +T5_TINY = "patrickvonplaten/t5-tiny-random" +GPT2_TINY = "sshleifer/tiny-gpt2" + +ZERO2 = "zero2" +ZERO3 = "zero3" + +FP16 = "fp16" +BF16 = "bf16" + +CUSTOM_OPTIMIZER = "custom_optimizer" +CUSTOM_SCHEDULER = "custom_scheduler" +DS_OPTIMIZER = "deepspeed_optimizer" +DS_SCHEDULER = "deepspeed_scheduler" + +stages = [ZERO2, ZERO3] +optims = [CUSTOM_OPTIMIZER, DS_OPTIMIZER] +schedulers = [CUSTOM_SCHEDULER, DS_SCHEDULER] +if is_torch_bf16_available(): + dtypes = [FP16, BF16] +else: + dtypes = [FP16] + + +def parameterized_custom_name_func(func, param_num, param): + # customize the test name generator function as we want both params to appear in the sub-test + # name, as by default it shows only the first param + param_based_name = parameterized.to_safe_name("_".join(str(x) for x in param.args)) + return f"{func.__name__}_{param_based_name}" + + +# Cartesian-product of zero stages with models to test +params = list(itertools.product(stages, dtypes)) +optim_scheduler_params = list(itertools.product(optims, schedulers)) + + +@require_deepspeed +@require_cuda +class DeepSpeedConfigIntegration(unittest.TestCase): + def setUp(self): + super().setUp() + + self._test_file_path = inspect.getfile(self.__class__) + path = Path(self._test_file_path).resolve() + self.test_file_dir_str = str(path.parents[0]) + + self.ds_config_file = dict( + zero2=f"{self.test_file_dir_str}/ds_config_zero2.json", + zero3=f"{self.test_file_dir_str}/ds_config_zero3.json", + ) + + # use self.get_config_dict(stage) to use these to ensure the original is not modified + with io.open(self.ds_config_file[ZERO2], "r", encoding="utf-8") as f: + config_zero2 = json.load(f) + with io.open(self.ds_config_file[ZERO3], "r", encoding="utf-8") as f: + config_zero3 = json.load(f) + # The following setting slows things down, so don't enable it by default unless needed by a test. + # It's in the file as a demo for users since we want everything to work out of the box even if slower. + config_zero3["zero_optimization"]["stage3_gather_16bit_weights_on_model_save"] = False + + self.ds_config_dict = dict(zero2=config_zero2, zero3=config_zero3) + + self.dist_env = dict( + USE_DEEPSPEED="true", + MASTER_ADDR="localhost", + MASTER_PORT="10999", + RANK="0", + LOCAL_RANK="0", + WORLD_SIZE="1", + ) + + def tearDown(self): + super().tearDown() + AcceleratorState._reset_state() + + def get_config_dict(self, stage): + # As some tests modify the dict, always make a copy + return deepcopy(self.ds_config_dict[stage]) + + @parameterized.expand(stages, name_func=parameterized_custom_name_func) + def test_deepspeed_plugin(self, stage): + + # Test zero3_init_flag will be set to False when ZeRO stage != 3 + deepspeed_plugin = DeepSpeedPlugin( + gradient_accumulation_steps=1, + gradient_clipping=1.0, + zero_stage=2, + offload_optimizer_device="cpu", + offload_param_device="cpu", + zero3_save_16bit_model=True, + zero3_init_flag=True, + ) + self.assertFalse(deepspeed_plugin.zero3_init_flag) + deepspeed_plugin.deepspeed_config = None + + # Test zero3_init_flag will be set to True only when ZeRO stage == 3 + deepspeed_plugin = DeepSpeedPlugin( + gradient_accumulation_steps=1, + gradient_clipping=1.0, + zero_stage=3, + offload_optimizer_device="cpu", + offload_param_device="cpu", + zero3_save_16bit_model=True, + zero3_init_flag=True, + ) + self.assertTrue(deepspeed_plugin.zero3_init_flag) + deepspeed_plugin.deepspeed_config = None + + # Test config files are loaded correctly + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=self.ds_config_file[stage], zero3_init_flag=True) + if stage == ZERO2: + self.assertFalse(deepspeed_plugin.zero3_init_flag) + elif stage == ZERO3: + self.assertTrue(deepspeed_plugin.zero3_init_flag) + + # Test `gradient_accumulation_steps` is set to 1 if unavailable in config file + with tempfile.TemporaryDirectory() as dirpath: + ds_config = self.get_config_dict(stage) + del ds_config["gradient_accumulation_steps"] + with open(os.path.join(dirpath, "ds_config.json"), "w") as out_file: + json.dump(ds_config, out_file) + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=os.path.join(dirpath, "ds_config.json")) + self.assertEqual(deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"], 1) + deepspeed_plugin.deepspeed_config = None + + # Test `ValueError` is raised if `zero_optimization` is unavailable in config file + with tempfile.TemporaryDirectory() as dirpath: + ds_config = self.get_config_dict(stage) + del ds_config["zero_optimization"] + with open(os.path.join(dirpath, "ds_config.json"), "w") as out_file: + json.dump(ds_config, out_file) + with self.assertRaises(ValueError) as cm: + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=os.path.join(dirpath, "ds_config.json")) + self.assertTrue( + "Please specify the ZeRO optimization config in the DeepSpeed config." in str(cm.exception) + ) + deepspeed_plugin.deepspeed_config = None + + # Test `deepspeed_config_process` + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=self.ds_config_file[stage]) + kwargs = { + "fp16.enabled": True, + "bf16.enabled": False, + "optimizer.params.lr": 5e-5, + "optimizer.params.weight_decay": 0.0, + "scheduler.params.warmup_min_lr": 0.0, + "scheduler.params.warmup_max_lr": 5e-5, + "scheduler.params.warmup_num_steps": 0, + "train_micro_batch_size_per_gpu": 16, + "gradient_clipping": 1.0, + "train_batch_size": 16, + "zero_optimization.reduce_bucket_size": 5e5, + "zero_optimization.stage3_prefetch_bucket_size": 5e5, + "zero_optimization.stage3_param_persistence_threshold": 5e5, + "zero_optimization.stage3_gather_16bit_weights_on_model_save": False, + } + deepspeed_plugin.deepspeed_config_process(**kwargs) + for ds_key_long, value in kwargs.items(): + config, ds_key = deepspeed_plugin.hf_ds_config.find_config_node(ds_key_long) + if config.get(ds_key) is not None: + self.assertEqual(config.get(ds_key), value) + + # Test mismatches + mismatches = { + "optimizer.params.lr": 1e-5, + "optimizer.params.weight_decay": 1e-5, + "gradient_accumulation_steps": 2, + } + with self.assertRaises(ValueError) as cm: + new_kwargs = deepcopy(kwargs) + new_kwargs.update(mismatches) + deepspeed_plugin.deepspeed_config_process(**new_kwargs) + for key in mismatches.keys(): + self.assertTrue( + key in str(cm.exception), + f"{key} is not in the exception message:\n{cm.exception}", + ) + + # Test `ValueError` is raised if some config file fields with `auto` value is missing in `kwargs` + deepspeed_plugin.deepspeed_config["optimizer"]["params"]["lr"] = "auto" + with self.assertRaises(ValueError) as cm: + del kwargs["optimizer.params.lr"] + deepspeed_plugin.deepspeed_config_process(**kwargs) + self.assertTrue("`optimizer.params.lr` not found in kwargs." in str(cm.exception)) + + @parameterized.expand([FP16, BF16], name_func=parameterized_custom_name_func) + def test_accelerate_state_deepspeed(self, dtype): + state = AcceleratorState(_from_accelerator=True) + if state.initialized: + state.initialized = False + + deepspeed_plugin = DeepSpeedPlugin( + gradient_accumulation_steps=1, + gradient_clipping=1.0, + zero_stage=ZERO2, + offload_optimizer_device="cpu", + offload_param_device="cpu", + zero3_save_16bit_model=True, + zero3_init_flag=True, + ) + with mockenv_context(**self.dist_env): + state = Accelerator(mixed_precision=dtype, deepspeed_plugin=deepspeed_plugin).state + self.assertTrue(state.deepspeed_plugin.deepspeed_config[dtype]["enabled"]) + state.initialized = False + + def test_init_zero3(self): + deepspeed_plugin = DeepSpeedPlugin( + gradient_accumulation_steps=1, + gradient_clipping=1.0, + zero_stage=3, + offload_optimizer_device="cpu", + offload_param_device="cpu", + zero3_save_16bit_model=True, + zero3_init_flag=True, + ) + + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) # noqa: F841 + from transformers.deepspeed import is_deepspeed_zero3_enabled + + self.assertTrue(is_deepspeed_zero3_enabled()) + + @parameterized.expand(optim_scheduler_params, name_func=parameterized_custom_name_func) + def test_prepare_deepspeed(self, optim_type, scheduler_type): + # 1. Testing with one of the ZeRO Stages is enough to test the `_prepare_deepspeed` function. + # Here we test using ZeRO Stage 2 with FP16 enabled. + from deepspeed.runtime.engine import DeepSpeedEngine + + kwargs = { + "fp16.enabled": True, + "bf16.enabled": False, + "optimizer.params.lr": 5e-5, + "optimizer.params.weight_decay": 0.0, + "scheduler.params.warmup_min_lr": 0.0, + "scheduler.params.warmup_max_lr": 5e-5, + "scheduler.params.warmup_num_steps": 0, + "train_micro_batch_size_per_gpu": 16, + "gradient_clipping": 1.0, + "train_batch_size": 16, + "zero_optimization.reduce_bucket_size": 5e5, + "zero_optimization.stage3_prefetch_bucket_size": 5e5, + "zero_optimization.stage3_param_persistence_threshold": 5e5, + "zero_optimization.stage3_gather_16bit_weights_on_model_save": False, + } + + if optim_type == CUSTOM_OPTIMIZER and scheduler_type == CUSTOM_SCHEDULER: + # Test custom optimizer + custom scheduler + deepspeed_plugin = DeepSpeedPlugin( + gradient_accumulation_steps=1, + gradient_clipping=1.0, + zero_stage=2, + offload_optimizer_device="cpu", + offload_param_device="cpu", + zero3_save_16bit_model=False, + zero3_init_flag=False, + ) + with mockenv_context(**self.dist_env): + accelerator = Accelerator(mixed_precision="fp16", deepspeed_plugin=deepspeed_plugin) + + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=16, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=32, shuffle=False) + model = AutoModel.from_pretrained(GPT2_TINY) + optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5) + lr_scheduler = get_scheduler( + name="linear", + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=1000, + ) + dummy_optimizer = DummyOptim(params=model.parameters()) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer) + + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + self.assertTrue( + "You cannot create a `DummyOptim` without specifying an optimizer in the config file." + in str(cm.exception) + ) + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + self.assertTrue( + "You cannot create a `DummyScheduler` without specifying a scheduler in the config file." + in str(cm.exception) + ) + + with self.assertRaises(ValueError) as cm: + model, optimizer, lr_scheduler = accelerator.prepare(model, optimizer, lr_scheduler) + self.assertTrue( + "You must specify a training or evaluation dataloader in `accelerate.prepare()` when using DeepSpeed." + in str(cm.exception) + ) + + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + self.assertTrue(accelerator.deepspeed_config["zero_allow_untested_optimizer"]) + self.assertTrue(accelerator.deepspeed_config["train_batch_size"], 16) + self.assertEqual(type(model), DeepSpeedEngine) + self.assertEqual(type(optimizer), DeepSpeedOptimizerWrapper) + self.assertEqual(type(lr_scheduler), AcceleratedScheduler) + self.assertEqual(type(accelerator.deepspeed_engine_wrapped), DeepSpeedEngineWrapper) + + elif optim_type == DS_OPTIMIZER and scheduler_type == DS_SCHEDULER: + # Test DeepSpeed optimizer + DeepSpeed scheduler + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=self.ds_config_file[ZERO2]) + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=10, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=5, shuffle=False) + model = AutoModel.from_pretrained(GPT2_TINY) + optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5) + lr_scheduler = get_scheduler( + name="linear", + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=1000, + ) + dummy_optimizer = DummyOptim(params=model.parameters()) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer) + kwargs["train_batch_size"] = ( + kwargs["train_micro_batch_size_per_gpu"] + * deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] + * accelerator.num_processes + ) + accelerator.state.deepspeed_plugin.deepspeed_config_process(**kwargs) + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + self.assertTrue( + "You cannot specify an optimizer in the config file and in the code at the same time" + in str(cm.exception) + ) + + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + self.assertTrue( + "You cannot specify a scheduler in the config file and in the code at the same time" + in str(cm.exception) + ) + + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + self.assertTrue( + "You cannot specify a scheduler in the config file and in the code at the same time" + in str(cm.exception) + ) + + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + self.assertTrue(type(model) == DeepSpeedEngine) + self.assertTrue(type(optimizer) == DeepSpeedOptimizerWrapper) + self.assertTrue(type(lr_scheduler) == DeepSpeedSchedulerWrapper) + self.assertTrue(type(accelerator.deepspeed_engine_wrapped) == DeepSpeedEngineWrapper) + + elif optim_type == CUSTOM_OPTIMIZER and scheduler_type == DS_SCHEDULER: + # Test custom optimizer + DeepSpeed scheduler + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=self.ds_config_file[ZERO2]) + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=10, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=5, shuffle=False) + model = AutoModel.from_pretrained(GPT2_TINY) + optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5) + lr_scheduler = get_scheduler( + name="linear", + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=1000, + ) + dummy_optimizer = DummyOptim(params=model.parameters()) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer) + kwargs["train_batch_size"] = ( + kwargs["train_micro_batch_size_per_gpu"] + * deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] + * accelerator.num_processes + ) + accelerator.state.deepspeed_plugin.deepspeed_config_process(**kwargs) + del accelerator.state.deepspeed_plugin.deepspeed_config["optimizer"] + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + self.assertTrue(type(model) == DeepSpeedEngine) + self.assertTrue(type(optimizer) == DeepSpeedOptimizerWrapper) + self.assertTrue(type(lr_scheduler) == DeepSpeedSchedulerWrapper) + self.assertTrue(type(accelerator.deepspeed_engine_wrapped) == DeepSpeedEngineWrapper) + elif optim_type == DS_OPTIMIZER and scheduler_type == CUSTOM_SCHEDULER: + # Test deepspeed optimizer + custom scheduler + deepspeed_plugin = DeepSpeedPlugin(hf_ds_config=self.ds_config_file[ZERO2]) + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=10, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=5, shuffle=False) + model = AutoModel.from_pretrained(GPT2_TINY) + optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5) + lr_scheduler = get_scheduler( + name="linear", + optimizer=optimizer, + num_warmup_steps=0, + num_training_steps=1000, + ) + dummy_optimizer = DummyOptim(params=model.parameters()) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer) + kwargs["train_batch_size"] = ( + kwargs["train_micro_batch_size_per_gpu"] + * deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] + * accelerator.num_processes + ) + accelerator.state.deepspeed_plugin.deepspeed_config_process(**kwargs) + del accelerator.state.deepspeed_plugin.deepspeed_config["scheduler"] + with self.assertRaises(ValueError) as cm: + model, optimizer, train_dataloader, eval_dataloader, lr_scheduler = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, lr_scheduler + ) + self.assertTrue( + "You can only specify `accelerate.utils.DummyScheduler` in the code when using `accelerate.utils.DummyOptim`." + in str(cm.exception) + ) + + def test_save_checkpoints(self): + deepspeed_plugin = DeepSpeedPlugin( + hf_ds_config=self.ds_config_file[ZERO3], + zero3_init_flag=True, + ) + del deepspeed_plugin.deepspeed_config["bf16"] + kwargs = { + "fp16.enabled": True, + "bf16.enabled": False, + "optimizer.params.lr": 5e-5, + "optimizer.params.weight_decay": 0.0, + "scheduler.params.warmup_min_lr": 0.0, + "scheduler.params.warmup_max_lr": 5e-5, + "scheduler.params.warmup_num_steps": 0, + "train_micro_batch_size_per_gpu": 16, + "gradient_clipping": 1.0, + "train_batch_size": 16, + "zero_optimization.reduce_bucket_size": 5e5, + "zero_optimization.stage3_prefetch_bucket_size": 5e5, + "zero_optimization.stage3_param_persistence_threshold": 5e5, + "zero_optimization.stage3_gather_16bit_weights_on_model_save": False, + } + + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) + kwargs["train_batch_size"] = ( + kwargs["train_micro_batch_size_per_gpu"] + * deepspeed_plugin.deepspeed_config["gradient_accumulation_steps"] + * accelerator.num_processes + ) + accelerator.state.deepspeed_plugin.deepspeed_config_process(**kwargs) + + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=16, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=32, shuffle=False) + model = AutoModelForCausalLM.from_pretrained("gpt2") + dummy_optimizer = DummyOptim(params=model.parameters()) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer) + + model, _, train_dataloader, eval_dataloader, _ = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + with self.assertRaises(ValueError) as cm: + accelerator.get_state_dict(model) + msg = ( + "Cannot get 16bit model weights because `stage3_gather_16bit_weights_on_model_save` in DeepSpeed config is False. " + "To save the model weights in 16bit, set `stage3_gather_16bit_weights_on_model_save` to True in DeepSpeed config file or " + "set `zero3_save_16bit_model` to True when using `accelerate config`. " + "To save the full checkpoint, run `model.save_checkpoint(save_dir)` and use `zero_to_fp32.py` to recover weights." + ) + self.assertTrue(msg in str(cm.exception)) + + def test_autofill_dsconfig(self): + deepspeed_plugin = DeepSpeedPlugin( + hf_ds_config=self.ds_config_file[ZERO3], + zero3_init_flag=True, + ) + del deepspeed_plugin.deepspeed_config["bf16"] + del deepspeed_plugin.deepspeed_config["fp16"] + + with mockenv_context(**self.dist_env): + accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin) + train_set = RegressionDataset(length=80) + eval_set = RegressionDataset(length=20) + train_dataloader = DataLoader(train_set, batch_size=16, shuffle=True) + eval_dataloader = DataLoader(eval_set, batch_size=32, shuffle=False) + model = AutoModelForCausalLM.from_pretrained("gpt2") + dummy_optimizer = DummyOptim(params=model.parameters(), lr=5e-5, weight_decay=1e-4) + dummy_lr_scheduler = DummyScheduler(dummy_optimizer, warmup_num_steps=10, total_num_steps=1000) + hidden_size = model.config.hidden_size + model, _, train_dataloader, eval_dataloader, _ = accelerator.prepare( + model, dummy_optimizer, train_dataloader, eval_dataloader, dummy_lr_scheduler + ) + self.assertEqual(accelerator.deepspeed_config["train_micro_batch_size_per_gpu"], 16) + self.assertEqual(accelerator.deepspeed_config["train_batch_size"], 16) + + self.assertEqual(accelerator.deepspeed_config["optimizer"]["params"]["lr"], 5e-5) + self.assertEqual(accelerator.deepspeed_config["optimizer"]["params"]["weight_decay"], 1e-4) + + self.assertEqual(accelerator.deepspeed_config["scheduler"]["params"]["warmup_min_lr"], 0.0) + self.assertEqual(accelerator.deepspeed_config["scheduler"]["params"]["warmup_max_lr"], 5e-5) + self.assertEqual(accelerator.deepspeed_config["scheduler"]["params"]["warmup_num_steps"], 10) + + self.assertEqual(accelerator.deepspeed_config["gradient_clipping"], 1.0) + self.assertEqual( + accelerator.deepspeed_config["zero_optimization"]["reduce_bucket_size"], hidden_size * hidden_size + ) + self.assertEqual( + accelerator.deepspeed_config["zero_optimization"]["stage3_prefetch_bucket_size"], + 0.9 * hidden_size * hidden_size, + ) + self.assertEqual( + accelerator.deepspeed_config["zero_optimization"]["stage3_param_persistence_threshold"], + 10 * hidden_size, + ) + self.assertFalse( + accelerator.deepspeed_config["zero_optimization"]["stage3_gather_16bit_weights_on_model_save"] + ) + + def test_basic_run(self): + mod_file = inspect.getfile(accelerate.test_utils) + test_file_path = os.path.sep.join( + mod_file.split(os.path.sep)[:-1] + ["scripts", "external_deps", "test_performance.py"] + ) + with tempfile.TemporaryDirectory() as dirpath: + cmd = [ + "accelerate", + "launch", + "--num_processes=1", + "--num_machines=1", + "--machine_rank=0", + "--mixed_precision=fp16", + "--use_deepspeed", + "--gradient_accumulation_steps=1", + "--zero_stage=2", + "--offload_optimizer_device=none", + "--offload_param_device=none", + test_file_path, + "--model_name_or_path=distilbert-base-uncased", + "--num_epochs=1", + f"--output_dir={dirpath}", + ] + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd, env=os.environ.copy()) + + +@require_deepspeed +@require_multi_gpu +@slow +class DeepSpeedIntegrationTest(TempDirTestCase): + def setUp(self): + super().setUp() + self._test_file_path = inspect.getfile(self.__class__) + path = Path(self._test_file_path).resolve() + self.test_file_dir_str = str(path.parents[0]) + + self.ds_config_file = dict( + zero2=f"{self.test_file_dir_str}/ds_config_zero2.json", + zero3=f"{self.test_file_dir_str}/ds_config_zero3.json", + ) + + self.stages = [1, 2, 3] + self.zero3_offload_config = False + self.performance_lower_bound = 0.82 + self.peak_memory_usage_upper_bound = { + "multi_gpu_fp16": 3200, + "deepspeed_stage_1_fp16": 1600, + "deepspeed_stage_2_fp16": 2500, + "deepspeed_stage_3_zero_init_fp16": 2800, + # Disabling below test as it overwhelms the RAM memory usage + # on CI self-hosted runner leading to tests getting killed. + # "deepspeed_stage_3_cpu_offload_fp16": 1900, + } + self.n_train = 160 + self.n_val = 160 + + mod_file = inspect.getfile(accelerate.test_utils) + self.test_scripts_folder = os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ["scripts", "external_deps"]) + + def test_performance(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_performance.py") + cmd = [ + "accelerate", + "launch", + "--num_processes=2", + "--num_machines=1", + "--machine_rank=0", + "--mixed_precision=fp16", + "--use_deepspeed", + "--gradient_accumulation_steps=1", + "--gradient_clipping=1", + "--zero3_init_flag=True", + "--zero3_save_16bit_model=True", + ] + for stage in self.stages: + if stage == 1: + continue + cmd_stage = cmd.copy() + cmd_stage.extend([f"--zero_stage={stage}"]) + cmd_stage.extend(["--offload_optimizer_device=none", "--offload_param_device=none"]) + if self.zero3_offload_config: + with io.open(self.ds_config_file[ZERO3], "r", encoding="utf-8") as f: + ds_config = json.load(f) + del ds_config["bf16"] + del ds_config["optimizer"]["params"]["torch_adam"] + del ds_config["optimizer"]["params"]["adam_w_mode"] + ds_config["fp16"]["enabled"] = True + ds_config_path = os.path.join(self.tmpdir, "ds_config.json") + with open(ds_config_path, "w") as out_file: + json.dump(ds_config, out_file) + + cmd_stage.extend([f"--deepspeed_config_file={ds_config_path}"]) + + cmd_stage.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + f"--performance_lower_bound={self.performance_lower_bound}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_stage, env=os.environ.copy()) + + def test_checkpointing(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_checkpointing.py") + cmd = [ + "accelerate", + "launch", + "--num_processes=2", + "--num_machines=1", + "--machine_rank=0", + "--mixed_precision=fp16", + "--use_deepspeed", + "--gradient_accumulation_steps=1", + "--gradient_clipping=1", + "--zero3_init_flag=True", + "--zero3_save_16bit_model=True", + ] + for stage in self.stages: + if stage == 1: + continue + cmd_stage = cmd.copy() + cmd_stage.extend([f"--zero_stage={stage}"]) + cmd_stage.extend(["--offload_optimizer_device=none", "--offload_param_device=none"]) + if self.zero3_offload_config: + with io.open(self.ds_config_file[ZERO3], "r", encoding="utf-8") as f: + ds_config = json.load(f) + del ds_config["bf16"] + del ds_config["optimizer"]["params"]["torch_adam"] + del ds_config["optimizer"]["params"]["adam_w_mode"] + ds_config["fp16"]["enabled"] = True + ds_config_path = os.path.join(self.tmpdir, "ds_config.json") + with open(ds_config_path, "w") as out_file: + json.dump(ds_config, out_file) + + cmd_stage.extend([f"--deepspeed_config_file={ds_config_path}"]) + + cmd_stage.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + "--partial_train_epoch=1", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_stage, env=os.environ.copy()) + + cmd_stage = cmd_stage[:-1] + resume_from_checkpoint = os.path.join(self.tmpdir, "epoch_0") + cmd_stage.extend( + [ + f"--resume_from_checkpoint={resume_from_checkpoint}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_stage, env=os.environ.copy()) + + def test_peak_memory_usage(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_peak_memory_usage.py") + cmd = [ + "accelerate", + "launch", + "--num_processes=2", + "--num_machines=1", + "--machine_rank=0", + ] + for spec, peak_mem_upper_bound in self.peak_memory_usage_upper_bound.items(): + cmd_stage = cmd.copy() + if "fp16" in spec: + cmd_stage.extend(["--mixed_precision=fp16"]) + + if "multi_gpu" in spec: + continue + else: + cmd_stage.extend( + [ + "--use_deepspeed", + "--gradient_accumulation_steps=1", + "--gradient_clipping=1", + "--zero3_init_flag=True", + "--zero3_save_16bit_model=True", + ] + ) + for i in range(3): + if f"stage_{i+1}" in spec: + cmd_stage.extend([f"--zero_stage={i+1}"]) + break + cmd_stage.extend(["--offload_optimizer_device=none", "--offload_param_device=none"]) + if "cpu_offload" in spec: + with io.open(self.ds_config_file[ZERO3], "r", encoding="utf-8") as f: + ds_config = json.load(f) + del ds_config["bf16"] + del ds_config["fp16"] + del ds_config["optimizer"]["params"]["torch_adam"] + del ds_config["optimizer"]["params"]["adam_w_mode"] + ds_config_path = os.path.join(self.tmpdir, "ds_config.json") + with open(ds_config_path, "w") as out_file: + json.dump(ds_config, out_file) + + cmd_stage.extend([f"--deepspeed_config_file={ds_config_path}"]) + + cmd_stage.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + f"--peak_memory_upper_bound={peak_mem_upper_bound}", + f"--n_train={self.n_train}", + f"--n_val={self.n_val}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_stage, env=os.environ.copy()) diff --git a/v0.13.2/accelerate-0.13.2/tests/fsdp/test_fsdp.py b/v0.13.2/accelerate-0.13.2/tests/fsdp/test_fsdp.py new file mode 100644 index 0000000..249d2b6 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/fsdp/test_fsdp.py @@ -0,0 +1,334 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import inspect +import os +import unittest + +import torch + +import accelerate +from accelerate.accelerator import Accelerator +from accelerate.state import AcceleratorState +from accelerate.test_utils.testing import ( + TempDirTestCase, + execute_subprocess_async, + require_cuda, + require_fsdp, + require_multi_gpu, + slow, +) +from accelerate.utils.constants import ( + FSDP_AUTO_WRAP_POLICY, + FSDP_BACKWARD_PREFETCH, + FSDP_SHARDING_STRATEGY, + FSDP_STATE_DICT_TYPE, +) +from accelerate.utils.dataclasses import FullyShardedDataParallelPlugin +from accelerate.utils.other import patch_environment +from transformers import AutoModel +from transformers.testing_utils import mockenv_context +from transformers.trainer_utils import set_seed + + +set_seed(42) + +BERT_BASE_CASED = "bert-base-cased" +FP16 = "fp16" +BF16 = "bf16" +dtypes = [FP16, BF16] + + +@require_fsdp +@require_cuda +class FSDPPluginIntegration(unittest.TestCase): + def setUp(self): + super().setUp() + + self.dist_env = dict( + USE_FSDP="true", + MASTER_ADDR="localhost", + MASTER_PORT="10999", + RANK="0", + LOCAL_RANK="0", + WORLD_SIZE="1", + ) + + def tearDown(self): + super().tearDown() + AcceleratorState._reset_state() + + def test_sharding_strategy(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import ShardingStrategy + + for i, strategy in enumerate(FSDP_SHARDING_STRATEGY): + env = self.dist_env.copy() + env["FSDP_SHARDING_STRATEGY"] = f"{i + 1}" + env["FSDP_SHARDING_STRATEGY_NAME"] = strategy + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + self.assertEqual(fsdp_plugin.sharding_strategy, ShardingStrategy(i + 1)) + + def test_backward_prefetch(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import BackwardPrefetch + + for i, prefetch_policy in enumerate(FSDP_BACKWARD_PREFETCH): + env = self.dist_env.copy() + env["FSDP_BACKWARD_PREFETCH"] = prefetch_policy + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + if prefetch_policy == "NO_PREFETCH": + self.assertIsNone(fsdp_plugin.backward_prefetch) + else: + self.assertEqual(fsdp_plugin.backward_prefetch, BackwardPrefetch(i + 1)) + + def test_state_dict_type(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import StateDictType, _state_dict_type_to_config + + for i, state_dict_type in enumerate(FSDP_STATE_DICT_TYPE): + env = self.dist_env.copy() + env["FSDP_STATE_DICT_TYPE"] = state_dict_type + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + self.assertEqual(fsdp_plugin.state_dict_type, StateDictType(i + 1)) + self.assertEqual( + type(fsdp_plugin.state_dict_config), type(_state_dict_type_to_config[StateDictType(i + 1)]()) + ) + if state_dict_type == "FULL_STATE_DICT": + self.assertTrue(fsdp_plugin.state_dict_config.offload_to_cpu) + self.assertTrue(fsdp_plugin.state_dict_config.rank0_only) + + def test_auto_wrap_policy(self): + model = AutoModel.from_pretrained(BERT_BASE_CASED) + for policy in FSDP_AUTO_WRAP_POLICY: + env = self.dist_env.copy() + env["FSDP_AUTO_WRAP_POLICY"] = policy + if policy == "TRANSFORMER_BASED_WRAP": + env["FSDP_TRANSFORMER_CLS_TO_WRAP"] = "BertLayer" + elif policy == "SIZE_BASED_WRAP": + env["FSDP_MIN_NUM_PARAMS"] = "2000" + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + fsdp_plugin.set_auto_wrap_policy(model) + if policy == "NO_WRAP": + self.assertIsNone(fsdp_plugin.auto_wrap_policy) + else: + self.assertIsNotNone(fsdp_plugin.auto_wrap_policy) + + env = self.dist_env.copy() + env["FSDP_AUTO_WRAP_POLICY"] = "TRANSFORMER_BASED_WRAP" + env["FSDP_TRANSFORMER_CLS_TO_WRAP"] = "T5Layer" + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + with self.assertRaises(Exception) as cm: + fsdp_plugin.set_auto_wrap_policy(model) + self.assertTrue("Could not find the transformer layer class to wrap in the model." in str(cm.exception)) + + env = self.dist_env.copy() + env["FSDP_AUTO_WRAP_POLICY"] = "SIZE_BASED_WRAP" + env["FSDP_MIN_NUM_PARAMS"] = "0" + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + fsdp_plugin.set_auto_wrap_policy(model) + self.assertIsNone(fsdp_plugin.auto_wrap_policy) + + def test_mixed_precision(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import MixedPrecision + from torch.distributed.fsdp.sharded_grad_scaler import ShardedGradScaler + + for mp_dtype in dtypes: + env = self.dist_env.copy() + env["MIXED_PRECISION"] = mp_dtype + with mockenv_context(**env): + accelerator = Accelerator() + if mp_dtype == "fp16": + dtype = torch.float16 + elif mp_dtype == "bf16": + dtype = torch.bfloat16 + mp_policy = MixedPrecision(param_dtype=dtype, reduce_dtype=dtype, buffer_dtype=dtype) + self.assertEqual(accelerator.state.fsdp_plugin.mixed_precision_policy, mp_policy) + if mp_dtype == FP16: + self.assertTrue(isinstance(accelerator.scaler, ShardedGradScaler)) + elif mp_dtype == BF16: + self.assertIsNone(accelerator.scaler) + AcceleratorState._reset_state() + + def test_cpu_offload(self): + from torch.distributed.fsdp.fully_sharded_data_parallel import CPUOffload + + for flag in [True, False]: + env = self.dist_env.copy() + env["FSDP_OFFLOAD_PARAMS"] = str(flag).lower() + with mockenv_context(**env): + fsdp_plugin = FullyShardedDataParallelPlugin() + self.assertEqual(fsdp_plugin.cpu_offload, CPUOffload(offload_params=flag)) + + +@require_fsdp +@require_multi_gpu +@slow +class FSDPIntegrationTest(TempDirTestCase): + def setUp(self): + super().setUp() + self.performance_lower_bound = 0.82 + self.performance_configs = [ + "fsdp_shard_grad_op_transformer_based_wrap", + "fsdp_full_shard_transformer_based_wrap", + ] + self.peak_memory_usage_upper_bound = { + "multi_gpu_fp16": 3200, + "fsdp_shard_grad_op_transformer_based_wrap_fp16": 2000, + "fsdp_full_shard_transformer_based_wrap_fp16": 1900, + # Disabling below test as it overwhelms the RAM memory usage + # on CI self-hosted runner leading to tests getting killed. + # "fsdp_full_shard_cpu_offload_transformer_based_wrap_fp32": 1500, # fp16 was leading to indefinite hang + } + self.n_train = 160 + self.n_val = 160 + + mod_file = inspect.getfile(accelerate.test_utils) + self.test_scripts_folder = os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ["scripts", "external_deps"]) + + def test_performance(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_performance.py") + cmd = ["accelerate", "launch", "--num_processes=2", "--num_machines=1", "--machine_rank=0", "--use_fsdp"] + for config in self.performance_configs: + cmd_config = cmd.copy() + for i, strategy in enumerate(FSDP_SHARDING_STRATEGY): + if strategy.lower() in config: + cmd_config.append(f"--fsdp_sharding_strategy={i+1}") + break + + if "fp32" in config: + cmd_config.append("--mixed_precision=no") + else: + cmd_config.append("--mixed_precision=fp16") + + if "cpu_offload" in config: + cmd_config.append("--fsdp_offload_params=True") + + for policy in FSDP_AUTO_WRAP_POLICY: + if policy.lower() in config: + cmd_config.append(f"--fsdp_auto_wrap_policy={policy}") + break + + if policy == "TRANSFORMER_BASED_WRAP": + cmd_config.append("--fsdp_transformer_layer_cls_to_wrap=BertLayer") + elif policy == "SIZE_BASED_WRAP": + cmd_config.append("--fsdp_min_num_params=2000") + + cmd_config.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + f"--performance_lower_bound={self.performance_lower_bound}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_config, env=os.environ.copy()) + + def test_checkpointing(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_checkpointing.py") + cmd = [ + "accelerate", + "launch", + "--num_processes=2", + "--num_machines=1", + "--machine_rank=0", + "--use_fsdp", + "--mixed_precision=fp16", + "--fsdp_transformer_layer_cls_to_wrap=BertLayer", + ] + + for i, strategy in enumerate(FSDP_SHARDING_STRATEGY): + cmd_config = cmd.copy() + cmd_config.append(f"--fsdp_sharding_strategy={i+1}") + if strategy != "FULL_SHARD": + continue + state_dict_config_index = len(cmd_config) + for state_dict_type in FSDP_STATE_DICT_TYPE: + cmd_config = cmd_config[:state_dict_config_index] + if state_dict_type == "SHARDED_STATE_DICT": + continue + cmd_config.append(f"--fsdp_state_dict_type={state_dict_type}") + cmd_config.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + "--partial_train_epoch=1", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_config, env=os.environ.copy()) + + cmd_config = cmd_config[:-1] + resume_from_checkpoint = os.path.join(self.tmpdir, "epoch_0") + cmd_config.extend( + [ + f"--resume_from_checkpoint={resume_from_checkpoint}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_config, env=os.environ.copy()) + + def test_peak_memory_usage(self): + self.test_file_path = os.path.join(self.test_scripts_folder, "test_peak_memory_usage.py") + cmd = [ + "accelerate", + "launch", + "--num_processes=2", + "--num_machines=1", + "--machine_rank=0", + ] + for spec, peak_mem_upper_bound in self.peak_memory_usage_upper_bound.items(): + cmd_config = cmd.copy() + if "fp16" in spec: + cmd_config.extend(["--mixed_precision=fp16"]) + else: + cmd_config.extend(["--mixed_precision=no"]) + + if "multi_gpu" in spec: + continue + else: + cmd_config.extend(["--use_fsdp"]) + for i, strategy in enumerate(FSDP_SHARDING_STRATEGY): + if strategy.lower() in spec: + cmd_config.append(f"--fsdp_sharding_strategy={i+1}") + break + + if "cpu_offload" in spec: + cmd_config.append("--fsdp_offload_params=True") + + for policy in FSDP_AUTO_WRAP_POLICY: + if policy.lower() in spec: + cmd_config.append(f"--fsdp_auto_wrap_policy={policy}") + break + + if policy == "TRANSFORMER_BASED_WRAP": + cmd_config.append("--fsdp_transformer_layer_cls_to_wrap=BertLayer") + elif policy == "SIZE_BASED_WRAP": + cmd_config.append("--fsdp_min_num_params=2000") + + cmd_config.extend( + [ + self.test_file_path, + f"--output_dir={self.tmpdir}", + f"--peak_memory_upper_bound={peak_mem_upper_bound}", + f"--n_train={self.n_train}", + f"--n_val={self.n_val}", + ] + ) + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd_config, env=os.environ.copy()) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_big_modeling.py b/v0.13.2/accelerate-0.13.2/tests/test_big_modeling.py new file mode 100644 index 0000000..4f738f4 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_big_modeling.py @@ -0,0 +1,449 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import unittest +from tempfile import TemporaryDirectory + +import torch +import torch.nn as nn + +from accelerate.big_modeling import ( + cpu_offload, + disk_offload, + dispatch_model, + init_empty_weights, + load_checkpoint_and_dispatch, +) +from accelerate.hooks import remove_hook_from_submodules +from accelerate.test_utils import require_cuda, require_multi_gpu, require_torch_min_version, slow +from accelerate.utils import offload_state_dict +from transformers import AutoModelForCausalLM, AutoTokenizer + + +class ModelForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = nn.Linear(3, 4) + self.batchnorm = nn.BatchNorm1d(4) + self.linear2 = nn.Linear(4, 5) + + def forward(self, x): + return self.linear2(self.batchnorm(self.linear1(x))) + + +class BiggerModelForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = nn.Linear(3, 4) + self.linear2 = nn.Linear(4, 5) + self.batchnorm = nn.BatchNorm1d(5) + self.linear3 = nn.Linear(5, 6) + self.linear4 = nn.Linear(6, 5) + + def forward(self, x): + return self.linear4(self.linear3(self.batchnorm(self.linear2(self.linear1(x))))) + + +# To test preload_module_classes +class ModuleWithUnusedSubModules(nn.Module): + def __init__(self, input_dim, output_dim): + super().__init__() + self.linear = nn.Linear(input_dim, output_dim) + + def forward(self, x): + return x @ self.linear.weight.t() + self.linear.bias + + +class ModelWithUnusedSubModulesForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = ModuleWithUnusedSubModules(3, 4) + self.linear2 = ModuleWithUnusedSubModules(4, 5) + self.batchnorm = nn.BatchNorm1d(5) + self.linear3 = ModuleWithUnusedSubModules(5, 6) + self.linear4 = ModuleWithUnusedSubModules(6, 5) + + def forward(self, x): + return self.linear4(self.linear3(self.batchnorm(self.linear2(self.linear1(x))))) + + +@require_torch_min_version(version="1.9.0") +class BigModelingTester(unittest.TestCase): + def test_init_empty_weights(self): + # base use + with init_empty_weights(): + module = nn.Linear(4, 5) + self.assertEqual(module.weight.device, torch.device("meta")) + + # base use with buffers, they are not touched + with init_empty_weights(): + module = nn.BatchNorm1d(4) + self.assertEqual(module.weight.device, torch.device("meta")) + self.assertEqual(module.running_mean.device, torch.device("cpu")) + + # Use with include_buffers=True + with init_empty_weights(include_buffers=True): + module = nn.BatchNorm1d(4) + self.assertEqual(module.weight.device, torch.device("meta")) + self.assertEqual(module.running_mean.device, torch.device("meta")) + + # Double check we didn't break PyTorch + module = nn.BatchNorm1d(4) + self.assertEqual(module.weight.device, torch.device("cpu")) + self.assertEqual(module.running_mean.device, torch.device("cpu")) + + def test_init_empty_weights_very_large_model(self): + # This is a 100 billion parameters model. + with init_empty_weights(): + _ = nn.Sequential(*[nn.Linear(10000, 10000) for _ in range(1000)]) + + def test_cpu_offload(self): + model = ModelForTest() + x = torch.randn(2, 3) + expected = model(x) + + device = torch.device(0 if torch.cuda.is_available() else "cpu") + + cpu_offload(model, execution_device=device) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + # Clean up for next test. + remove_hook_from_submodules(model) + + cpu_offload(model, execution_device=device, offload_buffers=True) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + def test_cpu_offload_with_unused_submodules(self): + model = ModelWithUnusedSubModulesForTest() + x = torch.randn(2, 3) + expected = model(x) + + device = torch.device(0 if torch.cuda.is_available() else "cpu") + + cpu_offload(model, execution_device=device, preload_module_classes=["ModuleWithUnusedSubModules"]) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + # Clean up for next test. + remove_hook_from_submodules(model) + + cpu_offload( + model, + execution_device=device, + offload_buffers=True, + preload_module_classes=["ModuleWithUnusedSubModules"], + ) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + @slow + @require_cuda + def test_cpu_offload_gpt2(self): + tokenizer = AutoTokenizer.from_pretrained("gpt2") + inputs = tokenizer("Hello world! My name is", return_tensors="pt").to(0) + + gpt2 = AutoModelForCausalLM.from_pretrained("gpt2") + cpu_offload(gpt2, execution_device=0) + outputs = gpt2.generate(inputs["input_ids"]) + self.assertEqual( + tokenizer.decode(outputs[0].tolist()), + "Hello world! My name is Kiyoshi, and I'm a student at the University of Tokyo", + ) + + def test_disk_offload(self): + model = ModelForTest() + x = torch.randn(2, 3) + expected = model(x) + + device = torch.device(0 if torch.cuda.is_available() else "cpu") + + with TemporaryDirectory() as tmp_dir: + disk_offload(model, tmp_dir, execution_device=device) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + # Clean up for next test. + remove_hook_from_submodules(model) + + with TemporaryDirectory() as tmp_dir: + disk_offload(model, tmp_dir, execution_device=device, offload_buffers=True) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + def test_disk_offload_with_unused_submodules(self): + model = ModelWithUnusedSubModulesForTest() + x = torch.randn(2, 3) + expected = model(x) + + device = torch.device(0 if torch.cuda.is_available() else "cpu") + + with TemporaryDirectory() as tmp_dir: + disk_offload( + model, tmp_dir, execution_device=device, preload_module_classes=["ModuleWithUnusedSubModules"] + ) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + # Clean up for next test. + remove_hook_from_submodules(model) + + with TemporaryDirectory() as tmp_dir: + disk_offload( + model, + tmp_dir, + execution_device=device, + offload_buffers=True, + preload_module_classes=["ModuleWithUnusedSubModules"], + ) + output = model(x) + self.assertTrue( + torch.allclose(expected, output.cpu(), 1e-4, 1e-5), msg=f"Expected: {expected}\nActual: {output.cpu()}" + ) + + @slow + @require_cuda + def test_disk_offload_gpt2(self): + tokenizer = AutoTokenizer.from_pretrained("gpt2") + inputs = tokenizer("Hello world! My name is", return_tensors="pt").to(0) + + gpt2 = AutoModelForCausalLM.from_pretrained("gpt2") + with TemporaryDirectory() as tmp_dir: + disk_offload(gpt2, tmp_dir, execution_device=0) + outputs = gpt2.generate(inputs["input_ids"]) + self.assertEqual( + tokenizer.decode(outputs[0].tolist()), + "Hello world! My name is Kiyoshi, and I'm a student at the University of Tokyo", + ) + + @require_cuda + def test_dispatch_model(self): + model = ModelForTest() + device_map = {"linear1": "disk", "batchnorm": "cpu", "linear2": 0} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + dispatch_model(model, device_map, offload_dir=tmp_dir) + output = model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_multi_gpu + def test_dispatch_model_multi_gpu(self): + model = BiggerModelForTest() + device_map = {"linear1": "cpu", "linear2": "disk", "batchnorm": "cpu", "linear3": 0, "linear4": 1} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + dispatch_model(model, device_map, offload_dir=tmp_dir) + output = model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @slow + @require_multi_gpu + def test_dispatch_model_gpt2_on_two_gpus(self): + tokenizer = AutoTokenizer.from_pretrained("gpt2") + inputs = tokenizer("Hello world! My name is", return_tensors="pt").to(0) + + gpt2 = AutoModelForCausalLM.from_pretrained("gpt2") + # Dispatch on GPUs 0 and 1 + device_map = { + "transformer.wte": 0, + "transformer.wpe": 0, + "transformer.ln_f": 1, + "lm_head": 1, + } + for i in range(12): + device_map[f"transformer.h.{i}"] = 0 if i <= 5 else 1 + + gpt2 = dispatch_model(gpt2, device_map) + outputs = gpt2.generate(inputs["input_ids"]) + self.assertEqual( + tokenizer.decode(outputs[0].tolist()), + "Hello world! My name is Kiyoshi, and I'm a student at the University of Tokyo", + ) + + # Dispatch with a bit of CPU offload + gpt2 = AutoModelForCausalLM.from_pretrained("gpt2") + for i in range(4): + device_map[f"transformer.h.{i}"] = "cpu" + gpt2 = dispatch_model(gpt2, device_map) + outputs = gpt2.generate(inputs["input_ids"]) + self.assertEqual( + tokenizer.decode(outputs[0].tolist()), + "Hello world! My name is Kiyoshi, and I'm a student at the University of Tokyo", + ) + # Dispatch with a bit of CPU and disk offload + gpt2 = AutoModelForCausalLM.from_pretrained("gpt2") + for i in range(2): + device_map[f"transformer.h.{i}"] = "disk" + + with TemporaryDirectory() as tmp_dir: + state_dict = { + k: p for k, p in gpt2.state_dict().items() if "transformer.h.0" in k or "transformer.h.1" in k + } + offload_state_dict(tmp_dir, state_dict) + gpt2 = dispatch_model(gpt2, device_map, offload_dir=tmp_dir) + outputs = gpt2.generate(inputs["input_ids"]) + self.assertEqual( + tokenizer.decode(outputs[0].tolist()), + "Hello world! My name is Kiyoshi, and I'm a student at the University of Tokyo", + ) + + @require_cuda + def test_dispatch_model_with_unused_submodules(self): + model = ModelWithUnusedSubModulesForTest() + device_map = {"linear1": "cpu", "linear2": "disk", "batchnorm": "cpu", "linear3": 0, "linear4": 0} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + dispatch_model( + model, device_map, offload_dir=tmp_dir, preload_module_classes=["ModuleWithUnusedSubModules"] + ) + output = model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_multi_gpu + def test_dispatch_model_with_unused_submodules_multi_gpu(self): + model = ModelWithUnusedSubModulesForTest() + device_map = {"linear1": "cpu", "linear2": "disk", "batchnorm": "cpu", "linear3": 0, "linear4": 1} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + dispatch_model( + model, device_map, offload_dir=tmp_dir, preload_module_classes=["ModuleWithUnusedSubModules"] + ) + output = model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_cuda + def test_load_checkpoint_and_dispatch(self): + model = ModelForTest() + device_map = {"linear1": "cpu", "batchnorm": "cpu", "linear2": 0} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + checkpoint = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), checkpoint) + + new_model = ModelForTest() + new_model = load_checkpoint_and_dispatch(new_model, checkpoint, device_map=device_map) + + # CPU-offloaded weights are on the meta device while waiting for the forward pass. + self.assertEqual(new_model.linear1.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear2.weight.device, torch.device(0)) + + output = new_model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_multi_gpu + def test_load_checkpoint_and_dispatch_multi_gpu(self): + model = BiggerModelForTest() + device_map = {"linear1": "cpu", "linear2": "cpu", "batchnorm": 0, "linear3": 0, "linear4": 1} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + checkpoint = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), checkpoint) + + new_model = BiggerModelForTest() + new_model = load_checkpoint_and_dispatch(new_model, checkpoint, device_map=device_map) + + # CPU-offloaded weights are on the meta device while waiting for the forward pass. + self.assertEqual(new_model.linear1.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear2.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear3.weight.device, torch.device(0)) + self.assertEqual(new_model.linear4.weight.device, torch.device(1)) + + output = new_model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_cuda + def test_load_checkpoint_and_dispatch_with_unused_submodules(self): + model = ModelWithUnusedSubModulesForTest() + device_map = {"linear1": "cpu", "linear2": "cpu", "batchnorm": 0, "linear3": 0, "linear4": 0} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + checkpoint = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), checkpoint) + + new_model = ModelWithUnusedSubModulesForTest() + new_model = load_checkpoint_and_dispatch( + new_model, checkpoint, device_map=device_map, preload_module_classes=["ModuleWithUnusedSubModules"] + ) + + # CPU-offloaded weights are on the meta device while waiting for the forward pass. + self.assertEqual(new_model.linear1.linear.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear2.linear.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear3.linear.weight.device, torch.device(0)) + self.assertEqual(new_model.linear4.linear.weight.device, torch.device(0)) + + output = new_model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) + + @require_multi_gpu + def test_load_checkpoint_and_dispatch_multi_gpu_with_unused_submodules(self): + model = ModelWithUnusedSubModulesForTest() + device_map = {"linear1": "cpu", "linear2": "cpu", "batchnorm": 0, "linear3": 0, "linear4": 1} + + x = torch.randn(2, 3) + expected = model(x) + + with TemporaryDirectory() as tmp_dir: + checkpoint = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), checkpoint) + + new_model = ModelWithUnusedSubModulesForTest() + new_model = load_checkpoint_and_dispatch( + new_model, checkpoint, device_map=device_map, preload_module_classes=["ModuleWithUnusedSubModules"] + ) + + # CPU-offloaded weights are on the meta device while waiting for the forward pass. + self.assertEqual(new_model.linear1.linear.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear2.linear.weight.device, torch.device("meta")) + self.assertEqual(new_model.linear3.linear.weight.device, torch.device(0)) + self.assertEqual(new_model.linear4.linear.weight.device, torch.device(1)) + + output = new_model(x) + self.assertTrue(torch.allclose(expected, output.cpu(), atol=1e-5)) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_cpu.py b/v0.13.2/accelerate-0.13.2/tests/test_cpu.py new file mode 100644 index 0000000..ab73058 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_cpu.py @@ -0,0 +1,24 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +from accelerate import debug_launcher +from accelerate.test_utils import require_cpu, test_script + + +@require_cpu +class MultiCPUTester(unittest.TestCase): + def test_cpu(self): + debug_launcher(test_script.main) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_data_loader.py b/v0.13.2/accelerate-0.13.2/tests/test_data_loader.py new file mode 100644 index 0000000..2d3b6a3 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_data_loader.py @@ -0,0 +1,222 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import random +import unittest + +from torch.utils.data import BatchSampler, IterableDataset + +from accelerate.data_loader import BatchSamplerShard, IterableDatasetShard + + +class RandomIterableDataset(IterableDataset): + # For testing, an iterable dataset of random length + def __init__(self, p_stop=0.01, max_length=1000): + self.p_stop = p_stop + self.max_length = max_length + + def __iter__(self): + count = 0 + stop = False + while not stop and count < self.max_length: + yield count + count += 1 + stop = random.random() < self.p_stop + + +class DataLoaderTester(unittest.TestCase): + def check_batch_sampler_shards(self, batch_sampler, expected, split_batches=False): + batch_sampler_shards = [BatchSamplerShard(batch_sampler, 2, i, split_batches) for i in range(2)] + batch_sampler_lists = [list(batch_sampler_shard) for batch_sampler_shard in batch_sampler_shards] + if not split_batches: + self.assertListEqual([len(shard) for shard in batch_sampler_shards], [len(e) for e in expected]) + self.assertListEqual(batch_sampler_lists, expected) + + def test_batch_sampler_shards_with_no_splits(self): + # Check the shards when the dataset is a round multiple of total batch size. + batch_sampler = BatchSampler(range(24), batch_size=3, drop_last=False) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14], [18, 19, 20]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17], [21, 22, 23]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + batch_sampler = BatchSampler(range(24), batch_size=3, drop_last=True) + # Expected shouldn't change + self.check_batch_sampler_shards(batch_sampler, expected) + + # Check the shards when the dataset is a round multiple of batch size but not total batch size. + batch_sampler = BatchSampler(range(21), batch_size=3, drop_last=False) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14], [18, 19, 20]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17], [0, 1, 2]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + batch_sampler = BatchSampler(range(21), batch_size=3, drop_last=True) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + # Check the shards when the dataset is not a round multiple of batch size but has a multiple of + # num_processes batch. + batch_sampler = BatchSampler(range(22), batch_size=3, drop_last=False) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14], [18, 19, 20]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17], [21, 0, 1]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + batch_sampler = BatchSampler(range(22), batch_size=3, drop_last=True) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + # Check the shards when the dataset is not a round multiple of batch size but and has not a multiple of + # num_processes batch. + batch_sampler = BatchSampler(range(20), batch_size=3, drop_last=False) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14], [18, 19, 0]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17], [1, 2, 3]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + batch_sampler = BatchSampler(range(20), batch_size=3, drop_last=True) + expected = [ + [[0, 1, 2], [6, 7, 8], [12, 13, 14]], + [[3, 4, 5], [9, 10, 11], [15, 16, 17]], + ] + self.check_batch_sampler_shards(batch_sampler, expected) + + # Check the shards when the dataset is very small. + batch_sampler = BatchSampler(range(2), batch_size=3, drop_last=False) + expected = [[[0, 1, 0]], [[1, 0, 1]]] + self.check_batch_sampler_shards(batch_sampler, expected) + + batch_sampler = BatchSampler(range(2), batch_size=3, drop_last=True) + expected = [[], []] + self.check_batch_sampler_shards(batch_sampler, expected) + + def test_batch_sampler_shards_with_splits(self): + # Check the shards when the dataset is a round multiple of batch size. + batch_sampler = BatchSampler(range(24), batch_size=4, drop_last=False) + expected = [ + [[0, 1], [4, 5], [8, 9], [12, 13], [16, 17], [20, 21]], + [[2, 3], [6, 7], [10, 11], [14, 15], [18, 19], [22, 23]], + ] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + batch_sampler = BatchSampler(range(24), batch_size=4, drop_last=True) + # Expected shouldn't change + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + # Check the shards when the dataset is not a round multiple of batch size. + batch_sampler = BatchSampler(range(22), batch_size=4, drop_last=False) + expected = [ + [[0, 1], [4, 5], [8, 9], [12, 13], [16, 17], [20, 21]], + [[2, 3], [6, 7], [10, 11], [14, 15], [18, 19], [0, 1]], + ] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + batch_sampler = BatchSampler(range(22), batch_size=4, drop_last=True) + expected = [ + [[0, 1], [4, 5], [8, 9], [12, 13], [16, 17]], + [[2, 3], [6, 7], [10, 11], [14, 15], [18, 19]], + ] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + # Check the shards when the dataset is not a round multiple of batch size or num_processes. + batch_sampler = BatchSampler(range(21), batch_size=4, drop_last=False) + expected = [ + [[0, 1], [4, 5], [8, 9], [12, 13], [16, 17], [20, 0]], + [[2, 3], [6, 7], [10, 11], [14, 15], [18, 19], [1, 2]], + ] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + batch_sampler = BatchSampler(range(21), batch_size=4, drop_last=True) + expected = [ + [[0, 1], [4, 5], [8, 9], [12, 13], [16, 17]], + [[2, 3], [6, 7], [10, 11], [14, 15], [18, 19]], + ] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + # Check the shards when the dataset is very small. + batch_sampler = BatchSampler(range(2), batch_size=4, drop_last=False) + expected = [[[0, 1]], [[0, 1]]] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + batch_sampler = BatchSampler(range(2), batch_size=4, drop_last=True) + expected = [[], []] + self.check_batch_sampler_shards(batch_sampler, expected, split_batches=True) + + def check_iterable_dataset_shards( + self, dataset, seed, batch_size, drop_last=False, num_processes=2, split_batches=False + ): + random.seed(seed) + reference = list(dataset) + + iterable_dataset_shards = [ + IterableDatasetShard( + dataset, + batch_size=batch_size, + drop_last=drop_last, + num_processes=num_processes, + process_index=i, + split_batches=split_batches, + ) + for i in range(num_processes) + ] + iterable_dataset_lists = [] + for iterable_dataset_shard in iterable_dataset_shards: + # Since our random iterable dataset will be... random... we need to use a seed to get reproducible results. + random.seed(seed) + iterable_dataset_lists.append(list(iterable_dataset_shard)) + + shard_batch_size = batch_size // num_processes if split_batches else batch_size + # All iterable dataset shard should have the same length, a round multiple of shard_batch_size + first_list = iterable_dataset_lists[0] + for l in iterable_dataset_lists[1:]: + self.assertEqual(len(l), len(first_list)) + self.assertTrue(len(l) % shard_batch_size == 0) + + observed = [] + for idx in range(0, len(first_list), shard_batch_size): + for l in iterable_dataset_lists: + observed += l[idx : idx + shard_batch_size] + + if not drop_last: + while len(reference) < len(observed): + reference += reference + self.assertListEqual(observed, reference[: len(observed)]) + + def test_iterable_dataset_shard(self): + seed = 42 + dataset = RandomIterableDataset() + + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=False, split_batches=False) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=True, split_batches=False) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=False, split_batches=True) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=True, split_batches=True) + + # Edge case with a very small dataset + dataset = RandomIterableDataset(max_length=2) + + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=False, split_batches=False) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=True, split_batches=False) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=False, split_batches=True) + self.check_iterable_dataset_shards(dataset, seed, batch_size=4, drop_last=True, split_batches=True) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_examples.py b/v0.13.2/accelerate-0.13.2/tests/test_examples.py new file mode 100644 index 0000000..9197070 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_examples.py @@ -0,0 +1,215 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import ast +import os +import re +import shutil +import tempfile +import unittest +from unittest import mock + +import torch + +from accelerate.test_utils.examples import compare_against_test +from accelerate.test_utils.testing import TempDirTestCase, require_trackers, run_command, slow +from accelerate.utils import write_basic_config + + +# DataLoaders built from `test_samples/MRPC` for quick testing +# Should mock `{script_name}.get_dataloaders` via: +# @mock.patch("{script_name}.get_dataloaders", mocked_dataloaders) + +EXCLUDE_EXAMPLES = [ + "cross_validation.py", + "gradient_accumulation.py", + "multi_process_metrics.py", + "memory.py", + "automatic_gradient_accumulation.py", + "fsdp_with_peak_mem_tracking.py", + "deepspeed_with_config_support.py", +] + + +class ExampleDifferenceTests(unittest.TestCase): + """ + This TestCase checks that all of the `complete_*` scripts contain all of the + information found in the `by_feature` scripts, line for line. If one fails, + then a complete example does not contain all of the features in the features + scripts, and should be updated. + + Each example script should be a single test (such as `test_nlp_example`), + and should run `one_complete_example` twice: once with `parser_only=True`, + and the other with `parser_only=False`. This is so that when the test + failures are returned to the user, they understand if the discrepancy lies in + the `main` function, or the `training_loop` function. Otherwise it will be + unclear. + + Also, if there are any expected differences between the base script used and + `complete_nlp_example.py` (the canonical base script), these should be included in + `special_strings`. These would be differences in how something is logged, print statements, + etc (such as calls to `Accelerate.log()`) + """ + + def one_complete_example( + self, complete_file_name: str, parser_only: bool, secondary_filename: str = None, special_strings: list = None + ): + """ + Tests a single `complete` example against all of the implemented `by_feature` scripts + + Args: + complete_file_name (`str`): + The filename of a complete example + parser_only (`bool`): + Whether to look at the main training function, or the argument parser + secondary_filename (`str`, *optional*): + A potential secondary base file to strip all script information not relevant for checking, + such as "cv_example.py" when testing "complete_cv_example.py" + special_strings (`list`, *optional*): + A list of strings to potentially remove before checking no differences are left. These should be + diffs that are file specific, such as different logging variations between files. + """ + self.maxDiff = None + by_feature_path = os.path.abspath(os.path.join("examples", "by_feature")) + examples_path = os.path.abspath("examples") + for item in os.listdir(by_feature_path): + if item not in EXCLUDE_EXAMPLES: + item_path = os.path.join(by_feature_path, item) + if os.path.isfile(item_path) and ".py" in item_path: + with self.subTest( + tested_script=complete_file_name, + feature_script=item, + tested_section="main()" if parser_only else "training_function()", + ): + diff = compare_against_test( + os.path.join(examples_path, complete_file_name), item_path, parser_only, secondary_filename + ) + diff = "\n".join(diff) + if special_strings is not None: + for string in special_strings: + diff = diff.replace(string, "") + self.assertEqual(diff, "") + + def test_nlp_examples(self): + self.one_complete_example("complete_nlp_example.py", True) + self.one_complete_example("complete_nlp_example.py", False) + + def test_cv_examples(self): + cv_path = os.path.abspath(os.path.join("examples", "cv_example.py")) + special_strings = [ + " " * 16 + "{\n\n", + " " * 20 + '"accuracy": eval_metric["accuracy"],\n\n', + " " * 20 + '"f1": eval_metric["f1"],\n\n', + " " * 20 + '"train_loss": total_loss.item() / len(train_dataloader),\n\n', + " " * 20 + '"epoch": epoch,\n\n', + " " * 16 + "},\n\n", + " " * 16 + "step=epoch,\n", + " " * 12, + ] + self.one_complete_example("complete_cv_example.py", True, cv_path, special_strings) + self.one_complete_example("complete_cv_example.py", False, cv_path, special_strings) + + +@mock.patch.dict(os.environ, {"TESTING_MOCKED_DATALOADERS": "1"}) +class FeatureExamplesTests(TempDirTestCase): + clear_on_setup = False + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls._tmpdir = tempfile.mkdtemp() + cls.configPath = os.path.join(cls._tmpdir, "default_config.yml") + + write_basic_config(save_location=cls.configPath) + cls._launch_args = ["accelerate", "launch", "--config_file", cls.configPath] + + @classmethod + def tearDownClass(cls): + super().tearDownClass() + shutil.rmtree(cls._tmpdir) + + def test_checkpointing_by_epoch(self): + testargs = f""" + examples/by_feature/checkpointing.py + --checkpointing_steps epoch + --output_dir {self.tmpdir} + """.split() + run_command(self._launch_args + testargs) + self.assertTrue(os.path.exists(os.path.join(self.tmpdir, "epoch_0"))) + + def test_checkpointing_by_steps(self): + testargs = f""" + examples/by_feature/checkpointing.py + --checkpointing_steps 1 + --output_dir {self.tmpdir} + """.split() + _ = run_command(self._launch_args + testargs) + self.assertTrue(os.path.exists(os.path.join(self.tmpdir, "step_2"))) + + def test_load_states_by_epoch(self): + testargs = f""" + examples/by_feature/checkpointing.py + --resume_from_checkpoint {os.path.join(self.tmpdir, "epoch_0")} + """.split() + output = run_command(self._launch_args + testargs, return_stdout=True) + self.assertNotIn("epoch 0:", output) + self.assertIn("epoch 1:", output) + + def test_load_states_by_steps(self): + testargs = f""" + examples/by_feature/checkpointing.py + --resume_from_checkpoint {os.path.join(self.tmpdir, "step_2")} + """.split() + output = run_command(self._launch_args + testargs, return_stdout=True) + if torch.cuda.is_available(): + num_processes = torch.cuda.device_count() + else: + num_processes = 1 + if num_processes > 1: + self.assertNotIn("epoch 0:", output) + self.assertIn("epoch 1:", output) + else: + self.assertIn("epoch 0:", output) + self.assertIn("epoch 1:", output) + + @slow + def test_cross_validation(self): + testargs = """ + examples/by_feature/cross_validation.py + --num_folds 2 + """.split() + with mock.patch.dict(os.environ, {"TESTING_MOCKED_DATALOADERS": "0"}): + output = run_command(self._launch_args + testargs, return_stdout=True) + results = ast.literal_eval(re.findall("({.+})", output)[-1]) + self.assertGreaterEqual(results["accuracy"], 0.75) + + def test_multi_process_metrics(self): + testargs = ["examples/by_feature/multi_process_metrics.py"] + run_command(self._launch_args + testargs) + + @require_trackers + @mock.patch.dict(os.environ, {"WANDB_MODE": "offline"}) + def test_tracking(self): + with tempfile.TemporaryDirectory() as tmpdir: + testargs = f""" + examples/by_feature/tracking.py + --with_tracking + --logging_dir {tmpdir} + """.split() + run_command(self._launch_args + testargs) + self.assertTrue(os.path.exists(os.path.join(tmpdir, "tracking"))) + + def test_gradient_accumulation(self): + testargs = ["examples/by_feature/gradient_accumulation.py"] + run_command(self._launch_args + testargs) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_grad_sync.py b/v0.13.2/accelerate-0.13.2/tests/test_grad_sync.py new file mode 100644 index 0000000..182d3ef --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_grad_sync.py @@ -0,0 +1,55 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import os +import unittest + +import torch + +import accelerate +from accelerate import debug_launcher +from accelerate.test_utils import ( + execute_subprocess_async, + require_cpu, + require_multi_gpu, + require_single_gpu, + test_sync, +) +from accelerate.utils import get_launch_prefix, patch_environment + + +class SyncScheduler(unittest.TestCase): + def setUp(self): + mod_file = inspect.getfile(accelerate.test_utils) + self.test_file_path = os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ["scripts", "test_sync.py"]) + + @require_cpu + def test_gradient_sync_cpu_noop(self): + debug_launcher(test_sync.main, num_processes=1) + + @require_cpu + def test_gradient_sync_cpu_multi(self): + debug_launcher(test_sync.main) + + @require_single_gpu + def test_gradient_sync_gpu(self): + test_sync.main() + + @require_multi_gpu + def test_gradient_sync_gpu_multi(self): + print(f"Found {torch.cuda.device_count()} devices.") + cmd = get_launch_prefix() + [f"--nproc_per_node={torch.cuda.device_count()}", self.test_file_path] + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd, env=os.environ.copy()) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_hooks.py b/v0.13.2/accelerate-0.13.2/tests/test_hooks.py new file mode 100644 index 0000000..9d48db9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_hooks.py @@ -0,0 +1,331 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import unittest + +import torch +import torch.nn as nn + +from accelerate.hooks import ( + AlignDevicesHook, + ModelHook, + SequentialHook, + add_hook_to_module, + attach_align_device_hook, + remove_hook_from_module, + remove_hook_from_submodules, +) +from accelerate.test_utils import require_multi_gpu, require_torch_min_version + + +class ModelForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = nn.Linear(3, 4) + self.batchnorm = nn.BatchNorm1d(4) + self.linear2 = nn.Linear(4, 5) + + def forward(self, x): + return self.linear2(self.batchnorm(self.linear1(x))) + + +class PreForwardHook(ModelHook): + def pre_forward(self, module, *args, **kwargs): + return (args[0] + 1,) + args[1:], kwargs + + +class PostForwardHook(ModelHook): + def post_forward(self, module, output): + return output + 1 + + +@require_torch_min_version(version="1.9.0") +class HooksModelTester(unittest.TestCase): + def test_add_and_remove_hooks(self): + test_model = ModelForTest() + test_hook = ModelHook() + + add_hook_to_module(test_model, test_hook) + self.assertEqual(test_model._hf_hook, test_hook) + self.assertTrue(hasattr(test_model, "_old_forward")) + + # Check adding the hook did not change the name or the signature + self.assertEqual(test_model.forward.__name__, "forward") + self.assertListEqual(list(inspect.signature(test_model.forward).parameters), ["x"]) + + remove_hook_from_module(test_model) + self.assertFalse(hasattr(test_model, "_hf_hook")) + self.assertFalse(hasattr(test_model, "_old_forward")) + + def test_pre_forward_hook_is_executed(self): + test_model = ModelForTest() + x = torch.randn(2, 3) + expected = test_model(x + 1) + expected2 = test_model(x + 2) + + test_hook = PreForwardHook() + add_hook_to_module(test_model, test_hook) + output1 = test_model(x) + self.assertTrue(torch.allclose(output1, expected, atol=1e-5)) + + # Attaching a hook to a model when it already has one replaces, does not chain + test_hook = PreForwardHook() + add_hook_to_module(test_model, test_hook) + output1 = test_model(x) + self.assertTrue(torch.allclose(output1, expected, atol=1e-5)) + + # You need to use the sequential hook to chain two or more hooks + test_hook = SequentialHook(PreForwardHook(), PreForwardHook()) + add_hook_to_module(test_model, test_hook) + + output2 = test_model(x) + assert torch.allclose(output2, expected2, atol=1e-5) + + def test_post_forward_hook_is_executed(self): + test_model = ModelForTest() + x = torch.randn(2, 3) + output = test_model(x) + + test_hook = PostForwardHook() + add_hook_to_module(test_model, test_hook) + output1 = test_model(x) + self.assertTrue(torch.allclose(output1, output + 1, atol=1e-5)) + + # Attaching a hook to a model when it already has one replaces, does not chain + test_hook = PostForwardHook() + add_hook_to_module(test_model, test_hook) + output1 = test_model(x) + self.assertTrue(torch.allclose(output1, output + 1, atol=1e-5)) + + # You need to use the sequential hook to chain two or more hooks + test_hook = SequentialHook(PostForwardHook(), PostForwardHook()) + add_hook_to_module(test_model, test_hook) + + output2 = test_model(x) + assert torch.allclose(output2, output + 2, atol=1e-5) + + def test_no_grad_in_hook(self): + test_model = ModelForTest() + x = torch.randn(2, 3) + output = test_model(x) + + test_hook = PostForwardHook() + add_hook_to_module(test_model, test_hook) + output1 = test_model(x) + self.assertTrue(torch.allclose(output1, output + 1)) + self.assertTrue(output1.requires_grad) + + test_hook.no_grad = True + output1 = test_model(x) + self.assertFalse(output1.requires_grad) + + @require_multi_gpu + def test_align_devices_as_model_parallelism(self): + model = ModelForTest() + # Everything is on CPU + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # This will move each submodule on different devices + add_hook_to_module(model.linear1, AlignDevicesHook(execution_device=0)) + add_hook_to_module(model.batchnorm, AlignDevicesHook(execution_device=0)) + add_hook_to_module(model.linear2, AlignDevicesHook(execution_device=1)) + + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.running_mean.device, torch.device(0)) + self.assertEqual(model.linear2.weight.device, torch.device(1)) + + # We can still make a forward pass. The input does not need to be on any particular device + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, torch.device(1)) + + # We can add a general hook to put back output on same device as input. + add_hook_to_module(model, AlignDevicesHook(io_same_device=True)) + x = torch.randn(2, 3).to(0) + output = model(x) + self.assertEqual(output.device, torch.device(0)) + + def test_align_devices_as_cpu_offload(self): + model = ModelForTest() + + # Everything is on CPU + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # This will move each submodule on different devices + hook_kwargs = {"execution_device": 0 if torch.cuda.is_available() else "cpu", "offload": True} + + add_hook_to_module(model.linear1, AlignDevicesHook(**hook_kwargs)) + add_hook_to_module(model.batchnorm, AlignDevicesHook(**hook_kwargs)) + add_hook_to_module(model.linear2, AlignDevicesHook(**hook_kwargs)) + + # Parameters have been offloaded, so on the meta device + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + # Buffers are not included in the offload by default, so are on the execution device + device = torch.device(hook_kwargs["execution_device"]) + self.assertEqual(model.batchnorm.running_mean.device, device) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_module(model.linear1) + remove_hook_from_module(model.batchnorm) + remove_hook_from_module(model.linear2) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # Now test with buffers included in the offload + hook_kwargs = { + "execution_device": 0 if torch.cuda.is_available() else "cpu", + "offload": True, + "offload_buffers": True, + } + + add_hook_to_module(model.linear1, AlignDevicesHook(**hook_kwargs)) + add_hook_to_module(model.batchnorm, AlignDevicesHook(**hook_kwargs)) + add_hook_to_module(model.linear2, AlignDevicesHook(**hook_kwargs)) + + # Parameters have been offloaded, so on the meta device, buffers included + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.running_mean.device, torch.device("meta")) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_module(model.linear1) + remove_hook_from_module(model.batchnorm) + remove_hook_from_module(model.linear2) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + def test_attach_align_device_hook_as_cpu_offload(self): + model = ModelForTest() + + # Everything is on CPU + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # This will move each submodule on different devices + execution_device = 0 if torch.cuda.is_available() else "cpu" + attach_align_device_hook(model, execution_device=execution_device, offload=True) + + # Parameters have been offloaded, so on the meta device + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + # Buffers are not included in the offload by default, so are on the execution device + device = torch.device(execution_device) + self.assertEqual(model.batchnorm.running_mean.device, device) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_submodules(model) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # Now test with buffers included in the offload + attach_align_device_hook(model, execution_device=execution_device, offload=True, offload_buffers=True) + + # Parameters have been offloaded, so on the meta device, buffers included + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.running_mean.device, torch.device("meta")) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_submodules(model) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + def test_attach_align_device_hook_as_cpu_offload_with_weight_map(self): + model = ModelForTest() + + # Everything is on CPU + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # This will move each submodule on different devices + execution_device = 0 if torch.cuda.is_available() else "cpu" + attach_align_device_hook( + model, execution_device=execution_device, offload=True, weights_map=model.state_dict() + ) + + # Parameters have been offloaded, so on the meta device + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + # Buffers are not included in the offload by default, so are on the execution device + device = torch.device(execution_device) + self.assertEqual(model.batchnorm.running_mean.device, device) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_submodules(model) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # Now test with buffers included in the offload + attach_align_device_hook( + model, + execution_device=execution_device, + offload=True, + weights_map=model.state_dict(), + offload_buffers=True, + ) + + # Parameters have been offloaded, so on the meta device, buffers included + self.assertEqual(model.linear1.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.weight.device, torch.device("meta")) + self.assertEqual(model.linear2.weight.device, torch.device("meta")) + self.assertEqual(model.batchnorm.running_mean.device, torch.device("meta")) + + x = torch.randn(2, 3) + output = model(x) + self.assertEqual(output.device, device) + + # Removing hooks loads back the weights in the model. + remove_hook_from_submodules(model) + self.assertEqual(model.linear1.weight.device, torch.device("cpu")) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_kwargs_handlers.py b/v0.13.2/accelerate-0.13.2/tests/test_kwargs_handlers.py new file mode 100644 index 0000000..d8c8932 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_kwargs_handlers.py @@ -0,0 +1,98 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import os +import sys +import unittest +from dataclasses import dataclass + +import torch + +from accelerate import Accelerator, DistributedDataParallelKwargs, GradScalerKwargs +from accelerate.state import AcceleratorState +from accelerate.test_utils import execute_subprocess_async, require_cuda, require_multi_gpu +from accelerate.utils import KwargsHandler + + +@dataclass +class MockClass(KwargsHandler): + a: int = 0 + b: bool = False + c: float = 3.0 + + +class DataLoaderTester(unittest.TestCase): + def test_kwargs_handler(self): + # If no defaults are changed, `to_kwargs` returns an empty dict. + self.assertDictEqual(MockClass().to_kwargs(), {}) + self.assertDictEqual(MockClass(a=2).to_kwargs(), {"a": 2}) + self.assertDictEqual(MockClass(a=2, b=True).to_kwargs(), {"a": 2, "b": True}) + self.assertDictEqual(MockClass(a=2, c=2.25).to_kwargs(), {"a": 2, "c": 2.25}) + + @require_cuda + def test_grad_scaler_kwargs(self): + # If no defaults are changed, `to_kwargs` returns an empty dict. + scaler_handler = GradScalerKwargs(init_scale=1024, growth_factor=2) + AcceleratorState._reset_state() + accelerator = Accelerator(mixed_precision="fp16", kwargs_handlers=[scaler_handler]) + print(accelerator.use_fp16) + scaler = accelerator.scaler + + # Check the kwargs have been applied + self.assertEqual(scaler._init_scale, 1024.0) + self.assertEqual(scaler._growth_factor, 2.0) + + # Check the other values are at the default + self.assertEqual(scaler._backoff_factor, 0.5) + self.assertEqual(scaler._growth_interval, 2000) + self.assertEqual(scaler._enabled, True) + + @require_multi_gpu + def test_ddp_kwargs(self): + distributed_args = f""" + -m torch.distributed.launch + --nproc_per_node={torch.cuda.device_count()} + --use_env + {inspect.getfile(self.__class__)} + """.split() + cmd = [sys.executable] + distributed_args + execute_subprocess_async(cmd, env=os.environ.copy()) + + +if __name__ == "__main__": + ddp_scaler = DistributedDataParallelKwargs(bucket_cap_mb=15, find_unused_parameters=True) + accelerator = Accelerator(kwargs_handlers=[ddp_scaler]) + model = torch.nn.Linear(100, 200) + model = accelerator.prepare(model) + + # Check the values changed in kwargs + error_msg = "" + observed_bucket_cap_map = model.bucket_bytes_cap // (1024 * 1024) + if observed_bucket_cap_map != 15: + error_msg += f"Kwargs badly passed, should have `15` but found {observed_bucket_cap_map}.\n" + if model.find_unused_parameters is not True: + error_msg += f"Kwargs badly passed, should have `True` but found {model.find_unused_parameters}.\n" + + # Check the values of the defaults + if model.dim != 0: + error_msg += f"Default value not respected, should have `0` but found {model.dim}.\n" + if model.broadcast_buffers is not True: + error_msg += f"Default value not respected, should have `True` but found {model.broadcast_buffers}.\n" + if model.gradient_as_bucket_view is not False: + error_msg += f"Default value not respected, should have `False` but found {model.gradient_as_bucket_view}.\n" + + # Raise error at the end to make sure we don't stop at the first failure. + if len(error_msg) > 0: + raise ValueError(error_msg) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_memory_utils.py b/v0.13.2/accelerate-0.13.2/tests/test_memory_utils.py new file mode 100644 index 0000000..df125ea --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_memory_utils.py @@ -0,0 +1,91 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +from accelerate.utils.memory import find_executable_batch_size + + +def raise_fake_out_of_memory(): + raise RuntimeError("CUDA out of memory.") + + +class MemoryTest(unittest.TestCase): + def test_memory_implicit(self): + batch_sizes = [] + + @find_executable_batch_size(starting_batch_size=128) + def mock_training_loop_function(batch_size): + nonlocal batch_sizes + batch_sizes.append(batch_size) + if batch_size != 8: + raise_fake_out_of_memory() + + mock_training_loop_function() + self.assertListEqual(batch_sizes, [128, 64, 32, 16, 8]) + + def test_memory_explicit(self): + batch_sizes = [] + + @find_executable_batch_size(starting_batch_size=128) + def mock_training_loop_function(batch_size, arg1): + nonlocal batch_sizes + batch_sizes.append(batch_size) + if batch_size != 8: + raise_fake_out_of_memory() + return batch_size, arg1 + + bs, arg1 = mock_training_loop_function("hello") + self.assertListEqual(batch_sizes, [128, 64, 32, 16, 8]) + self.assertListEqual([bs, arg1], [8, "hello"]) + + def test_start_zero(self): + @find_executable_batch_size(starting_batch_size=0) + def mock_training_loop_function(batch_size): + pass + + with self.assertRaises(RuntimeError) as cm: + mock_training_loop_function() + self.assertIn("No executable batch size found, reached zero.", cm.exception.args[0]) + + def test_approach_zero(self): + @find_executable_batch_size(starting_batch_size=16) + def mock_training_loop_function(batch_size): + if batch_size > 0: + raise_fake_out_of_memory() + pass + + with self.assertRaises(RuntimeError) as cm: + mock_training_loop_function() + self.assertIn("No executable batch size found, reached zero.", cm.exception.args[0]) + + def test_verbose_guard(self): + @find_executable_batch_size(starting_batch_size=128) + def mock_training_loop_function(batch_size, arg1, arg2): + if batch_size != 8: + raise raise_fake_out_of_memory() + + with self.assertRaises(TypeError) as cm: + mock_training_loop_function(128, "hello", "world") + self.assertIn("Batch size was passed into `f`", cm.exception.args[0]) + self.assertIn("`f(arg1='hello', arg2='world')", cm.exception.args[0]) + + def test_any_other_error(self): + @find_executable_batch_size(starting_batch_size=16) + def mock_training_loop_function(batch_size): + raise ValueError("Oops, we had an error!") + + with self.assertRaises(ValueError) as cm: + mock_training_loop_function() + self.assertIn("Oops, we had an error!", cm.exception.args[0]) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_metrics.py b/v0.13.2/accelerate-0.13.2/tests/test_metrics.py new file mode 100644 index 0000000..9dd0984 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_metrics.py @@ -0,0 +1,64 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import os +import unittest + +import torch + +import accelerate +from accelerate import debug_launcher +from accelerate.test_utils import ( + execute_subprocess_async, + require_cpu, + require_huggingface_suite, + require_multi_gpu, + require_single_gpu, + require_torch_min_version, +) +from accelerate.utils import get_launch_prefix, patch_environment + + +@require_huggingface_suite +@require_torch_min_version(version="1.8.0") +class MetricTester(unittest.TestCase): + def setUp(self): + mod_file = inspect.getfile(accelerate.test_utils) + self.test_file_path = os.path.sep.join( + mod_file.split(os.path.sep)[:-1] + ["scripts", "external_deps", "test_metrics.py"] + ) + + from accelerate.test_utils.scripts.external_deps import test_metrics # noqa: F401 + + self.test_metrics = test_metrics + + @require_cpu + def test_metric_cpu_noop(self): + debug_launcher(self.test_metrics.main, num_processes=1) + + @require_cpu + def test_metric_cpu_multi(self): + debug_launcher(self.test_metrics.main) + + @require_single_gpu + def test_metric_gpu(self): + self.test_metrics.main() + + @require_multi_gpu + def test_metric_gpu_multi(self): + print(f"Found {torch.cuda.device_count()} devices.") + cmd = get_launch_prefix() + [f"--nproc_per_node={torch.cuda.device_count()}", self.test_file_path] + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd, env=os.environ.copy()) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_modeling_utils.py b/v0.13.2/accelerate-0.13.2/tests/test_modeling_utils.py new file mode 100644 index 0000000..1c6f608 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_modeling_utils.py @@ -0,0 +1,377 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import os +import tempfile +import unittest + +import torch +import torch.nn as nn + +from accelerate.test_utils import require_cuda, require_multi_gpu +from accelerate.test_utils.testing import require_torch_min_version +from accelerate.utils.modeling import ( + check_device_map, + clean_device_map, + compute_module_sizes, + find_tied_parameters, + get_balanced_memory, + infer_auto_device_map, + load_checkpoint_in_model, + named_module_tensors, + set_module_tensor_to_device, +) + + +class ModelForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = nn.Linear(3, 4) + self.batchnorm = nn.BatchNorm1d(4) + self.linear2 = nn.Linear(4, 5) + + def forward(self, x): + return self.linear2(self.batchnorm(self.linear1(x))) + + +@require_torch_min_version(version="1.9.0") +class ModelingUtilsTester(unittest.TestCase): + def check_set_module_tensor_for_device(self, model, device1, device2): + self.assertEqual(model.linear1.weight.device, torch.device(device1)) + + with self.subTest("Access by submodule and direct name for a parameter"): + set_module_tensor_to_device(model.linear1, "weight", device2) + self.assertEqual(model.linear1.weight.device, torch.device(device2)) + + if torch.device(device2) == torch.device("meta"): + with self.assertRaises(ValueError): + # We need a `value` to set the weight back on device1 + set_module_tensor_to_device(model.linear1, "weight", device1) + + set_module_tensor_to_device(model.linear1, "weight", device1, value=torch.randn(4, 3)) + else: + set_module_tensor_to_device(model.linear1, "weight", device1) + self.assertEqual(model.linear1.weight.device, torch.device(device1)) + + with self.subTest("Access by module and full name for a parameter"): + set_module_tensor_to_device(model, "linear1.weight", device2) + self.assertEqual(model.linear1.weight.device, torch.device(device2)) + + if torch.device(device2) == torch.device("meta"): + with self.assertRaises(ValueError): + # We need a `value` to set the weight back on device1 + set_module_tensor_to_device(model, "linear1.weight", device1) + set_module_tensor_to_device(model, "linear1.weight", device1, value=torch.randn(4, 3)) + else: + set_module_tensor_to_device(model, "linear1.weight", device1) + self.assertEqual(model.linear1.weight.device, torch.device(device1)) + + self.assertEqual(model.batchnorm.running_mean.device, torch.device(device1)) + + with self.subTest("Access by submodule and direct name for a buffer"): + set_module_tensor_to_device(model.batchnorm, "running_mean", device2) + self.assertEqual(model.batchnorm.running_mean.device, torch.device(device2)) + + if torch.device(device2) == torch.device("meta"): + with self.assertRaises(ValueError): + # We need a `value` to set the weight back on device1 + set_module_tensor_to_device(model.batchnorm, "running_mean", device1) + set_module_tensor_to_device(model.batchnorm, "running_mean", device1, value=torch.randn(4)) + else: + set_module_tensor_to_device(model.batchnorm, "running_mean", device1) + self.assertEqual(model.batchnorm.running_mean.device, torch.device(device1)) + + with self.subTest("Access by module and full name for a parameter"): + set_module_tensor_to_device(model, "batchnorm.running_mean", device2) + self.assertEqual(model.batchnorm.running_mean.device, torch.device(device2)) + + if torch.device(device2) == torch.device("meta"): + with self.assertRaises(ValueError): + # We need a `value` to set the weight back on CPU + set_module_tensor_to_device(model, "batchnorm.running_mean", device1) + + set_module_tensor_to_device(model, "batchnorm.running_mean", device1, value=torch.randn(4)) + else: + set_module_tensor_to_device(model, "batchnorm.running_mean", device1) + self.assertEqual(model.batchnorm.running_mean.device, torch.device(device1)) + + def test_set_module_tensor_to_meta_and_cpu(self): + model = ModelForTest() + self.check_set_module_tensor_for_device(model, "cpu", "meta") + + @require_cuda + def test_set_module_tensor_to_cpu_and_gpu(self): + model = ModelForTest() + self.check_set_module_tensor_for_device(model, "cpu", 0) + + @require_cuda + def test_set_module_tensor_to_meta_and_gpu(self): + model = ModelForTest().to(0) + self.check_set_module_tensor_for_device(model, 0, "meta") + + @require_multi_gpu + def test_set_module_tensor_between_gpus(self): + model = ModelForTest().to(0) + self.check_set_module_tensor_for_device(model, 0, 1) + + def test_named_tensors(self): + model = nn.BatchNorm1d(4) + named_tensors = named_module_tensors(model) + self.assertListEqual( + [name for name, _ in named_tensors], + ["weight", "bias", "running_mean", "running_var", "num_batches_tracked"], + ) + + named_tensors = named_module_tensors(model, include_buffers=False) + self.assertListEqual([name for name, _ in named_tensors], ["weight", "bias"]) + + model = ModelForTest() + named_tensors = named_module_tensors(model) + self.assertListEqual([name for name, _ in named_tensors], []) + + named_tensors = named_module_tensors(model, recurse=True) + self.assertListEqual( + [name for name, _ in named_tensors], + [ + "linear1.weight", + "linear1.bias", + "batchnorm.weight", + "batchnorm.bias", + "linear2.weight", + "linear2.bias", + "batchnorm.running_mean", + "batchnorm.running_var", + "batchnorm.num_batches_tracked", + ], + ) + + named_tensors = named_module_tensors(model, include_buffers=False, recurse=True) + self.assertListEqual( + [name for name, _ in named_tensors], + ["linear1.weight", "linear1.bias", "batchnorm.weight", "batchnorm.bias", "linear2.weight", "linear2.bias"], + ) + + def test_find_tied_parameters(self): + model = ModelForTest() + self.assertDictEqual(find_tied_parameters(model), {}) + model.linear2.weight = model.linear1.weight + self.assertDictEqual(find_tied_parameters(model), {"linear1.weight": "linear2.weight"}) + + def test_compute_module_sizes(self): + model = ModelForTest() + expected_sizes = {"": 236, "linear1": 64, "linear1.weight": 48, "linear1.bias": 16} + expected_sizes.update({"linear2": 100, "linear2.weight": 80, "linear2.bias": 20}) + expected_sizes.update({"batchnorm": 72, "batchnorm.weight": 16, "batchnorm.bias": 16}) + expected_sizes.update( + {"batchnorm.running_mean": 16, "batchnorm.running_var": 16, "batchnorm.num_batches_tracked": 8} + ) + + module_sizes = compute_module_sizes(model) + self.assertDictEqual(module_sizes, expected_sizes) + + model.half() + expected_sizes = {k: s // 2 for k, s in expected_sizes.items()} + # This one is not converted to half. + expected_sizes["batchnorm.num_batches_tracked"] = 8 + # This impacts batchnorm and total + expected_sizes["batchnorm"] += 4 + expected_sizes[""] += 4 + + module_sizes = compute_module_sizes(model) + self.assertDictEqual(module_sizes, expected_sizes) + + def test_check_device_map(self): + model = ModelForTest() + check_device_map(model, {"": 0}) + with self.assertRaises(ValueError): + check_device_map(model, {"linear1": 0, "linear2": 1}) + + check_device_map(model, {"linear1": 0, "linear2": 1, "batchnorm": 1}) + + def shard_test_model(self, model, tmp_dir): + module_index = { + "linear1": "checkpoint_part1.bin", + "batchnorm": "checkpoint_part2.bin", + "linear2": "checkpoint_part3.bin", + } + index = {} + for name, _ in model.state_dict().items(): + module = name.split(".")[0] + index[name] = module_index[module] + + with open(os.path.join(tmp_dir, "weight_map.index.json"), "w") as f: + json.dump(index, f) + + for module, fname in module_index.items(): + state_dict = {k: v for k, v in model.state_dict().items() if k.startswith(module)} + full_fname = os.path.join(tmp_dir, fname) + torch.save(state_dict, full_fname) + + def test_load_checkpoint_in_model(self): + # Check with whole checkpoint + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + fname = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), fname) + load_checkpoint_in_model(model, fname) + + # Check with sharded index + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + index_file = os.path.join(tmp_dir, "weight_map.index.json") + load_checkpoint_in_model(model, index_file) + + # Check with sharded checkpoint + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + load_checkpoint_in_model(model, tmp_dir) + + @require_cuda + def test_load_checkpoint_in_model_one_gpu(self): + device_map = {"linear1": 0, "batchnorm": "cpu", "linear2": "cpu"} + + # Check with whole checkpoint + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + fname = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), fname) + load_checkpoint_in_model(model, fname, device_map=device_map) + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # Check with sharded index + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + index_file = os.path.join(tmp_dir, "weight_map.index.json") + load_checkpoint_in_model(model, index_file, device_map=device_map) + + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + # Check with sharded checkpoint folder + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + load_checkpoint_in_model(model, tmp_dir, device_map=device_map) + + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device("cpu")) + + @require_multi_gpu + def test_load_checkpoint_in_model_two_gpu(self): + device_map = {"linear1": 0, "batchnorm": "cpu", "linear2": 1} + + # Check with whole checkpoint + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + fname = os.path.join(tmp_dir, "pt_model.bin") + torch.save(model.state_dict(), fname) + load_checkpoint_in_model(model, fname, device_map=device_map) + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device(1)) + + # Check with sharded index + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + index_file = os.path.join(tmp_dir, "weight_map.index.json") + load_checkpoint_in_model(model, index_file, device_map=device_map) + + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device(1)) + + # Check with sharded checkpoint + model = ModelForTest() + with tempfile.TemporaryDirectory() as tmp_dir: + self.shard_test_model(model, tmp_dir) + load_checkpoint_in_model(model, tmp_dir, device_map=device_map) + + self.assertEqual(model.linear1.weight.device, torch.device(0)) + self.assertEqual(model.batchnorm.weight.device, torch.device("cpu")) + self.assertEqual(model.linear2.weight.device, torch.device(1)) + + def test_clean_device_map(self): + # Regroup everything if all is on the same device + self.assertDictEqual(clean_device_map({"a": 0, "b": 0, "c": 0}), {"": 0}) + # Regroups children of level 1 on the same device + self.assertDictEqual( + clean_device_map({"a.x": 0, "a.y": 0, "b.x": 1, "b.y": 1, "c": 1}), {"a": 0, "b": 1, "c": 1} + ) + # Regroups children of level 2 on the same device + self.assertDictEqual( + clean_device_map({"a.x": 0, "a.y": 0, "b.x.0": 1, "b.x.1": 1, "b.y.0": 2, "b.y.1": 2, "c": 2}), + {"a": 0, "b.x": 1, "b.y": 2, "c": 2}, + ) + + def test_infer_auto_device_map(self): + model = ModelForTest() + # model has size 236: linear1 64, batchnorm 72, linear2 100 + + device_map = infer_auto_device_map(model, max_memory={0: 200, 1: 200}) + # only linear1 fits on device 0 as we keep memory available for the maximum layer in case of offload + self.assertDictEqual(device_map, {"linear1": 0, "batchnorm": 1, "linear2": 1}) + + device_map = infer_auto_device_map(model, max_memory={0: 200, 1: 172, 2: 200}) + # On device 1, we don't care about keeping size available for the max layer, so even if there is just the + # size available for batchnorm + linear2, they fit here. + self.assertDictEqual(device_map, {"linear1": 0, "batchnorm": 1, "linear2": 1}) + + model.linear1.weight = model.linear2.weight + device_map = infer_auto_device_map(model, max_memory={0: 200, 1: 200}) + # By tying weights, the whole model fits on device 0 + self.assertDictEqual(device_map, {"": 0}) + + # When splitting a bigger model, the split is done at the layer level + model = nn.Sequential(ModelForTest(), ModelForTest(), ModelForTest()) + device_map = infer_auto_device_map(model, max_memory={0: 500, 1: 500}) + self.assertDictEqual(device_map, {"0": 0, "1.linear1": 0, "1.batchnorm": 0, "1.linear2": 1, "2": 1}) + + # With no_split_module_classes, it's done at that module level + model = nn.Sequential(ModelForTest(), ModelForTest(), ModelForTest()) + device_map = infer_auto_device_map( + model, max_memory={0: 500, 1: 500}, no_split_module_classes=["ModelForTest"] + ) + self.assertDictEqual(device_map, {"0": 0, "1": 1, "2": 1}) + + # Now if we have weights tied inside submodules, tied weights are on the same device. + model = nn.Sequential(ModelForTest(), ModelForTest(), ModelForTest()) + layer0 = getattr(model, "0") + layer2 = getattr(model, "2") + layer0.linear2.weight = layer2.linear2.weight + device_map = infer_auto_device_map(model, max_memory={0: 400, 1: 500}) + expected = {"0": 0, "2.linear2": 0, "1": 1, "2.linear1": 1, "2.batchnorm": 1} + self.assertDictEqual(device_map, expected) + + @require_cuda + def test_get_balanced_memory(self): + model = ModelForTest() + # model has size 236: linear1 64, batchnorm 72, linear2 100 + max_memory = get_balanced_memory(model, max_memory={0: 200, 1: 200}) + self.assertDictEqual({0: 200, 1: 200}, max_memory) + + max_memory = get_balanced_memory(model, max_memory={0: 300, 1: 300}) + self.assertDictEqual({0: 215, 1: 300}, max_memory) + + # Last device always get max memory to give more buffer and avoid accidental CPU offload + max_memory = get_balanced_memory(model, max_memory={0: 300, 1: 500}) + self.assertDictEqual({0: 215, 1: 500}, max_memory) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_multigpu.py b/v0.13.2/accelerate-0.13.2/tests/test_multigpu.py new file mode 100644 index 0000000..2c0403e --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_multigpu.py @@ -0,0 +1,72 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import os +import unittest + +import torch + +import accelerate +from accelerate import Accelerator +from accelerate.test_utils import execute_subprocess_async, require_multi_gpu +from accelerate.utils import get_launch_prefix, patch_environment + + +class MultiGPUTester(unittest.TestCase): + def setUp(self): + mod_file = inspect.getfile(accelerate.test_utils) + self.test_file_path = os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ["scripts", "test_script.py"]) + + @require_multi_gpu + def test_multi_gpu(self): + print(f"Found {torch.cuda.device_count()} devices.") + cmd = get_launch_prefix() + [self.test_file_path] + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd, env=os.environ.copy()) + + @require_multi_gpu + def test_pad_across_processes(self): + cmd = get_launch_prefix() + [inspect.getfile(self.__class__)] + with patch_environment(omp_num_threads=1): + execute_subprocess_async(cmd, env=os.environ.copy()) + + +if __name__ == "__main__": + accelerator = Accelerator() + shape = (accelerator.state.process_index + 2, 10) + tensor = torch.randint(0, 10, shape).to(accelerator.device) + + error_msg = "" + + tensor1 = accelerator.pad_across_processes(tensor) + if tensor1.shape[0] != accelerator.state.num_processes + 1: + error_msg += f"Found shape {tensor1.shape} but should have {accelerator.state.num_processes + 1} at dim 0." + if not torch.equal(tensor1[: accelerator.state.process_index + 2], tensor): + error_msg += "Tensors have different values." + if not torch.all(tensor1[accelerator.state.process_index + 2 :] == 0): + error_msg += "Padding was not done with the right value (0)." + + tensor2 = accelerator.pad_across_processes(tensor, pad_first=True) + if tensor2.shape[0] != accelerator.state.num_processes + 1: + error_msg += f"Found shape {tensor2.shape} but should have {accelerator.state.num_processes + 1} at dim 0." + index = accelerator.state.num_processes - accelerator.state.process_index - 1 + if not torch.equal(tensor2[index:], tensor): + error_msg += "Tensors have different values." + if not torch.all(tensor2[:index] == 0): + error_msg += "Padding was not done with the right value (0)." + + # Raise error at the end to make sure we don't stop at the first failure. + if len(error_msg) > 0: + raise ValueError(error_msg) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_offload.py b/v0.13.2/accelerate-0.13.2/tests/test_offload.py new file mode 100644 index 0000000..765a968 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_offload.py @@ -0,0 +1,107 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import unittest +from tempfile import TemporaryDirectory + +import torch +import torch.nn as nn + +from accelerate.utils import ( + OffloadedWeightsLoader, + is_torch_version, + load_offloaded_weight, + offload_state_dict, + offload_weight, +) + + +class ModelForTest(nn.Module): + def __init__(self): + super().__init__() + self.linear1 = nn.Linear(3, 4) + self.batchnorm = nn.BatchNorm1d(4) + self.linear2 = nn.Linear(4, 5) + + def forward(self, x): + return self.linear2(self.batchnorm(self.linear1(x))) + + +class OffloadTester(unittest.TestCase): + def test_offload_state_dict(self): + model = ModelForTest() + with TemporaryDirectory() as tmp_dir: + offload_state_dict(tmp_dir, model.state_dict()) + index_file = os.path.join(tmp_dir, "index.json") + self.assertTrue(os.path.isfile(index_file)) + # TODO: add tests on what is inside the index + + for key in ["linear1.weight", "linear1.bias", "linear2.weight", "linear2.bias"]: + weight_file = os.path.join(tmp_dir, f"{key}.dat") + self.assertTrue(os.path.isfile(weight_file)) + # TODO: add tests on the fact weights are properly loaded + + def test_offload_weight(self): + dtypes = [torch.float16, torch.float32] + if is_torch_version(">=", "1.10"): + dtypes.append(torch.bfloat16) + + for dtype in dtypes: + weight = torch.randn(2, 3, dtype=dtype) + with TemporaryDirectory() as tmp_dir: + index = offload_weight(weight, "weight", tmp_dir, {}) + weight_file = os.path.join(tmp_dir, "weight.dat") + self.assertTrue(os.path.isfile(weight_file)) + self.assertDictEqual(index, {"weight": {"shape": [2, 3], "dtype": str(dtype).split(".")[1]}}) + + new_weight = load_offloaded_weight(weight_file, index["weight"]) + self.assertTrue(torch.equal(weight, new_weight)) + + def test_offload_weights_loader(self): + model = ModelForTest() + state_dict = model.state_dict() + cpu_part = {k: v for k, v in state_dict.items() if "linear2" not in k} + disk_part = {k: v for k, v in state_dict.items() if "linear2" in k} + + with TemporaryDirectory() as tmp_dir: + offload_state_dict(tmp_dir, disk_part) + weight_map = OffloadedWeightsLoader(state_dict=cpu_part, save_folder=tmp_dir) + + # Every key is there with the right value + self.assertEqual(sorted(weight_map), sorted(state_dict.keys())) + for key, param in state_dict.items(): + self.assertTrue(torch.allclose(param, weight_map[key])) + + cpu_part = {k: v for k, v in state_dict.items() if "weight" in k} + disk_part = {k: v for k, v in state_dict.items() if "weight" not in k} + + with TemporaryDirectory() as tmp_dir: + offload_state_dict(tmp_dir, disk_part) + weight_map = OffloadedWeightsLoader(state_dict=cpu_part, save_folder=tmp_dir) + + # Every key is there with the right value + self.assertEqual(sorted(weight_map), sorted(state_dict.keys())) + for key, param in state_dict.items(): + self.assertTrue(torch.allclose(param, weight_map[key])) + + with TemporaryDirectory() as tmp_dir: + offload_state_dict(tmp_dir, state_dict) + # Duplicates are removed + weight_map = OffloadedWeightsLoader(state_dict=cpu_part, save_folder=tmp_dir) + + # Every key is there with the right value + self.assertEqual(sorted(weight_map), sorted(state_dict.keys())) + for key, param in state_dict.items(): + self.assertTrue(torch.allclose(param, weight_map[key])) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_sagemaker.py b/v0.13.2/accelerate-0.13.2/tests/test_sagemaker.py new file mode 100644 index 0000000..2824493 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_sagemaker.py @@ -0,0 +1,62 @@ +import unittest +from dataclasses import dataclass + +import pytest +from accelerate.commands.config.config_args import SageMakerConfig +from accelerate.commands.launch import _convert_nargs_to_dict +from accelerate.utils import ComputeEnvironment + + +@dataclass +class MockLaunchConfig(SageMakerConfig): + compute_environment = ComputeEnvironment.AMAZON_SAGEMAKER + fp16 = True + ec2_instance_type = "ml.p3.2xlarge" + iam_role_name = "accelerate_sagemaker_execution_role" + profile = "hf-sm" + region = "us-east-1" + num_machines = 1 + base_job_name = "accelerate-sagemaker-1" + pytorch_version = "1.6" + transformers_version = "4.4" + training_script = "train.py" + success_training_script_args = [ + "--model_name_or_path", + "bert", + "--do_train", + "False", + "--epochs", + "3", + "--learning_rate", + "5e-5", + "--max_steps", + "50.5", + ] + fail_training_script_args = [ + "--model_name_or_path", + "bert", + "--do_train", + "--do_test", + "False", + "--do_predict", + "--epochs", + "3", + "--learning_rate", + "5e-5", + "--max_steps", + "50.5", + ] + + +class SageMakerLaunch(unittest.TestCase): + def test_args_convert(self): + # If no defaults are changed, `to_kwargs` returns an empty dict. + converted_args = _convert_nargs_to_dict(MockLaunchConfig.success_training_script_args) + assert isinstance(converted_args["model_name_or_path"], str) + assert isinstance(converted_args["do_train"], bool) + assert isinstance(converted_args["epochs"], int) + assert isinstance(converted_args["learning_rate"], float) + assert isinstance(converted_args["max_steps"], float) + + with pytest.raises(ValueError): + _convert_nargs_to_dict(MockLaunchConfig.fail_training_script_args) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/dev.csv b/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/dev.csv new file mode 100644 index 0000000..96beccd --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/dev.csv @@ -0,0 +1,7 @@ +label,sentence1,sentence2 +equivalent,He said the foodservice pie business doesn 't fit the company 's long-term growth strategy .,""" The foodservice pie business does not fit our long-term growth strategy ." +not_equivalent,Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war .,"His wife said he was "" 100 percent behind George Bush "" and looked forward to using his years of training in the war ." +not_equivalent,"The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat .","The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent ." +equivalent,The AFL-CIO is waiting until October to decide if it will endorse a candidate .,The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . +not_equivalent,No dates have been set for the civil or the criminal trial .,"No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty ." +equivalent,Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed .,It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/train.csv b/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/train.csv new file mode 100644 index 0000000..96beccd --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_samples/MRPC/train.csv @@ -0,0 +1,7 @@ +label,sentence1,sentence2 +equivalent,He said the foodservice pie business doesn 't fit the company 's long-term growth strategy .,""" The foodservice pie business does not fit our long-term growth strategy ." +not_equivalent,Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war .,"His wife said he was "" 100 percent behind George Bush "" and looked forward to using his years of training in the war ." +not_equivalent,"The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat .","The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent ." +equivalent,The AFL-CIO is waiting until October to decide if it will endorse a candidate .,The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . +not_equivalent,No dates have been set for the civil or the criminal trial .,"No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty ." +equivalent,Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed .,It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/v0.13.2/accelerate-0.13.2/tests/test_scheduler.py b/v0.13.2/accelerate-0.13.2/tests/test_scheduler.py new file mode 100644 index 0000000..c1ef18f --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_scheduler.py @@ -0,0 +1,96 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest +from functools import partial + +import torch + +from accelerate import Accelerator, debug_launcher +from accelerate.test_utils import require_cpu + + +def one_cycle_test(num_processes=2, step_scheduler_with_optimizer=True, split_batches=False): + accelerator = Accelerator(step_scheduler_with_optimizer=step_scheduler_with_optimizer, split_batches=split_batches) + model = torch.nn.Linear(2, 4) + optimizer = torch.optim.AdamW(model.parameters(), lr=1.0) + scheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer, max_lr=0.01, steps_per_epoch=2, epochs=1) + model, optimizer, scheduler = accelerator.prepare(model, optimizer, scheduler) + + # Optimizer has stepped + scheduler.step() + if step_scheduler_with_optimizer or (num_processes == 1): + assert ( + scheduler.scheduler.last_epoch == num_processes + ), f"Last Epoch ({scheduler.scheduler.last_epoch}) != Num Processes ({num_processes})" + else: + assert ( + scheduler.scheduler.last_epoch != num_processes + ), f"Last Epoch ({scheduler.scheduler.last_epoch}) == Num Processes ({num_processes})" + + +def lambda_test(num_processes=2, step_scheduler_with_optimizer=True, split_batches=False): + accelerator = Accelerator(step_scheduler_with_optimizer=step_scheduler_with_optimizer, split_batches=split_batches) + model = torch.nn.Linear(2, 4) + optimizer = torch.optim.AdamW(model.parameters(), lr=1.0) + scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda n: 1 - n / 10) + model, optimizer, scheduler = accelerator.prepare(model, optimizer, scheduler) + + # Optimizer has stepped + optimizer._is_overflow = False + scheduler.step() + expected_lr = 1 - (num_processes if (step_scheduler_with_optimizer and not split_batches) else 1) / 10 + assert ( + scheduler.get_last_lr()[0] == expected_lr + ), f"Wrong lr found at first step, expected {expected_lr}, got {scheduler.get_last_lr()[0]}" + + # Optimizer has not stepped + optimizer._is_overflow = True + scheduler.step() + if not step_scheduler_with_optimizer: + expected_lr = 1 - 2 / 10 + assert ( + scheduler.get_last_lr()[0] == expected_lr + ), f"Wrong lr found at second step, expected {expected_lr}, got {scheduler.get_last_lr()[0]}" + + +@require_cpu +class SchedulerTester(unittest.TestCase): + def test_lambda_scheduler_steps_with_optimizer_single_process(self): + debug_launcher(partial(lambda_test, num_processes=1), num_processes=1) + debug_launcher(partial(lambda_test, num_processes=1, split_batches=True), num_processes=1) + + def test_one_cycle_scheduler_steps_with_optimizer_single_process(self): + debug_launcher(partial(one_cycle_test, num_processes=1), num_processes=1) + debug_launcher(partial(one_cycle_test, num_processes=1, split_batches=True), num_processes=1) + + def test_lambda_scheduler_not_step_with_optimizer_single_process(self): + debug_launcher(partial(lambda_test, num_processes=1, step_scheduler_with_optimizer=False), num_processes=1) + + def test_one_cycle_scheduler_not_step_with_optimizer_single_process(self): + debug_launcher(partial(one_cycle_test, num_processes=1, step_scheduler_with_optimizer=False), num_processes=1) + + def test_lambda_scheduler_steps_with_optimizer_multiprocess(self): + debug_launcher(lambda_test) + debug_launcher(partial(lambda_test, num_processes=1, split_batches=True), num_processes=1) + + def test_one_cycle_scheduler_steps_with_optimizer_multiprocess(self): + debug_launcher(one_cycle_test) + debug_launcher(partial(one_cycle_test, num_processes=1, split_batches=True), num_processes=1) + + def test_lambda_scheduler_not_step_with_optimizer_multiprocess(self): + debug_launcher(partial(lambda_test, step_scheduler_with_optimizer=False)) + + def test_one_cycle_scheduler_not_step_with_optimizer_multiprocess(self): + debug_launcher(partial(one_cycle_test, step_scheduler_with_optimizer=False)) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_state_checkpointing.py b/v0.13.2/accelerate-0.13.2/tests/test_state_checkpointing.py new file mode 100644 index 0000000..87b2d3b --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_state_checkpointing.py @@ -0,0 +1,165 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import os +import random +import tempfile +import unittest + +import torch +from torch import nn +from torch.utils.data import DataLoader, TensorDataset + +from accelerate import Accelerator +from accelerate.utils import set_seed + + +logger = logging.getLogger(__name__) + + +def dummy_dataloaders(a=2, b=3, batch_size=16, n_train_batches: int = 10, n_valid_batches: int = 2): + "Generates a tuple of dummy DataLoaders to test with" + + def get_dataset(n_batches): + x = torch.randn(batch_size * n_batches, 1) + return TensorDataset(x, a * x + b + 0.1 * torch.randn(batch_size * n_batches, 1)) + + train_dataset = get_dataset(n_train_batches) + valid_dataset = get_dataset(n_valid_batches) + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=batch_size, num_workers=4) + valid_dataloader = DataLoader(valid_dataset, shuffle=False, batch_size=batch_size, num_workers=4) + return (train_dataloader, valid_dataloader) + + +def train(num_epochs, model, dataloader, optimizer, accelerator, scheduler=None): + "Trains for `num_epochs`" + rands = [] + for epoch in range(num_epochs): + # Train quickly + model.train() + for batch in dataloader: + x, y = batch + outputs = model(x) + loss = torch.nn.functional.mse_loss(outputs, y) + accelerator.backward(loss) + optimizer.step() + optimizer.zero_grad() + rands.append(random.random()) # Introduce some randomness + if scheduler is not None: + scheduler.step() + return rands + + +class DummyModel(nn.Module): + "Simple model to do y=mx+b" + + def __init__(self): + super().__init__() + self.a = nn.Parameter(torch.randn(1)) + self.b = nn.Parameter(torch.randn(1)) + + def forward(self, x): + return x * self.a + self.b + + +class CheckpointTest(unittest.TestCase): + def test_can_resume_training(self): + with tempfile.TemporaryDirectory() as tmpdir: + set_seed(42) + model = DummyModel() + optimizer = torch.optim.Adam(params=model.parameters(), lr=1e-3) + train_dataloader, valid_dataloader = dummy_dataloaders() + # Train baseline + accelerator = Accelerator() + model, optimizer, train_dataloader, valid_dataloader = accelerator.prepare( + model, optimizer, train_dataloader, valid_dataloader + ) + # Save initial + initial = os.path.join(tmpdir, "initial") + accelerator.save_state(initial) + (a, b) = model.a.item(), model.b.item() + opt_state = optimizer.state_dict() + ground_truth_rands = train(3, model, train_dataloader, optimizer, accelerator) + (a1, b1) = model.a.item(), model.b.item() + opt_state1 = optimizer.state_dict() + + # Train partially + set_seed(42) + model = DummyModel() + optimizer = torch.optim.Adam(params=model.parameters(), lr=1e-3) + train_dataloader, valid_dataloader = dummy_dataloaders() + accelerator = Accelerator() + model, optimizer, train_dataloader, valid_dataloader = accelerator.prepare( + model, optimizer, train_dataloader, valid_dataloader + ) + accelerator.load_state(initial) + (a2, b2) = model.a.item(), model.b.item() + opt_state2 = optimizer.state_dict() + self.assertEqual(a, a2) + self.assertEqual(b, b2) + self.assertEqual(opt_state, opt_state2) + + test_rands = train(2, model, train_dataloader, optimizer, accelerator) + # Save everything + checkpoint = os.path.join(tmpdir, "checkpoint") + accelerator.save_state(checkpoint) + + # Load everything back in and make sure all states work + accelerator.load_state(checkpoint) + test_rands += train(1, model, train_dataloader, optimizer, accelerator) + (a3, b3) = model.a.item(), model.b.item() + opt_state3 = optimizer.state_dict() + self.assertEqual(a1, a3) + self.assertEqual(b1, b3) + self.assertEqual(opt_state1, opt_state3) + self.assertEqual(ground_truth_rands, test_rands) + + def test_invalid_registration(self): + t = torch.tensor([1, 2, 3]) + t1 = torch.tensor([2, 3, 4]) + net = DummyModel() + opt = torch.optim.Adam(net.parameters()) + accelerator = Accelerator() + with self.assertRaises(ValueError) as ve: + accelerator.register_for_checkpointing(t, t1, net, opt) + message = str(ve.exception) + self.assertTrue("Item at index 0" in message) + self.assertTrue("Item at index 1" in message) + self.assertFalse("Item at index 2" in message) + self.assertFalse("Item at index 3" in message) + + def test_with_scheduler(self): + with tempfile.TemporaryDirectory() as tmpdir: + set_seed(42) + model = DummyModel() + optimizer = torch.optim.Adam(params=model.parameters(), lr=1e-3) + scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.99) + train_dataloader, valid_dataloader = dummy_dataloaders() + # Train baseline + accelerator = Accelerator() + model, optimizer, train_dataloader, valid_dataloader = accelerator.prepare( + model, optimizer, train_dataloader, valid_dataloader + ) + accelerator.register_for_checkpointing(scheduler) + # Save initial + initial = os.path.join(tmpdir, "initial") + accelerator.save_state(initial) + scheduler_state = scheduler.state_dict() + train(3, model, train_dataloader, optimizer, accelerator, scheduler) + self.assertNotEqual(scheduler_state, scheduler.state_dict()) + + # Load everything back in and make sure all states work + accelerator.load_state(initial) + self.assertEqual(scheduler_state, scheduler.state_dict()) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_tpu.py b/v0.13.2/accelerate-0.13.2/tests/test_tpu.py new file mode 100644 index 0000000..bffa8b8 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_tpu.py @@ -0,0 +1,38 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import inspect +import os +import sys +import unittest + +import accelerate +from accelerate.test_utils import execute_subprocess_async, require_tpu + + +class MultiTPUTester(unittest.TestCase): + def setUp(self): + mod_file = inspect.getfile(accelerate.test_utils) + self.test_file_path = os.path.sep.join(mod_file.split(os.path.sep)[:-1] + ["scripts", "test_script.py"]) + self.test_dir = os.path.sep.join(inspect.getfile(self.__class__).split(os.path.sep)[:-1]) + + @require_tpu + def test_tpu(self): + distributed_args = f""" + {self.test_dir}/xla_spawn.py + --num_cores 8 + {self.test_file_path} + """.split() + cmd = [sys.executable] + distributed_args + execute_subprocess_async(cmd, env=os.environ.copy()) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_tracking.py b/v0.13.2/accelerate-0.13.2/tests/test_tracking.py new file mode 100644 index 0000000..5e26eb9 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_tracking.py @@ -0,0 +1,285 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import csv +import json +import logging +import os +import re +import tempfile +import unittest +import zipfile +from pathlib import Path +from typing import Optional +from unittest import mock + +# We use TF to parse the logs +from accelerate import Accelerator +from accelerate.test_utils.testing import ( + MockingTestCase, + TempDirTestCase, + require_comet_ml, + require_tensorboard, + require_wandb, +) +from accelerate.tracking import CometMLTracker, GeneralTracker +from accelerate.utils import is_comet_ml_available + + +if is_comet_ml_available(): + from comet_ml import OfflineExperiment + +logger = logging.getLogger(__name__) + + +@require_tensorboard +class TensorBoardTrackingTest(unittest.TestCase): + def test_init_trackers(self): + project_name = "test_project_with_config" + with tempfile.TemporaryDirectory() as dirpath: + accelerator = Accelerator(log_with="tensorboard", logging_dir=dirpath) + config = {"num_iterations": 12, "learning_rate": 1e-2, "some_boolean": False, "some_string": "some_value"} + accelerator.init_trackers(project_name, config) + accelerator.end_training() + for child in Path(f"{dirpath}/{project_name}").glob("*/**"): + log = list(filter(lambda x: x.is_file(), child.iterdir()))[0] + self.assertNotEqual(str(log), "") + + def test_log(self): + project_name = "test_project_with_log" + with tempfile.TemporaryDirectory() as dirpath: + accelerator = Accelerator(log_with="tensorboard", logging_dir=dirpath) + accelerator.init_trackers(project_name) + values = {"total_loss": 0.1, "iteration": 1, "my_text": "some_value"} + accelerator.log(values, step=0) + accelerator.end_training() + # Logged values are stored in the outermost-tfevents file and can be read in as a TFRecord + # Names are randomly generated each time + log = list(filter(lambda x: x.is_file(), Path(f"{dirpath}/{project_name}").iterdir()))[0] + self.assertNotEqual(str(log), "") + + def test_logging_dir(self): + with self.assertRaisesRegex(ValueError, "Logging with `tensorboard` requires a `logging_dir`"): + _ = Accelerator(log_with="tensorboard") + with tempfile.TemporaryDirectory() as dirpath: + _ = Accelerator(log_with="tensorboard", logging_dir=dirpath) + + +@require_wandb +@mock.patch.dict(os.environ, {"WANDB_MODE": "offline"}) +class WandBTrackingTest(TempDirTestCase, MockingTestCase): + def setUp(self): + super().setUp() + # wandb let's us override where logs are stored to via the WANDB_DIR env var + self.add_mocks(mock.patch.dict(os.environ, {"WANDB_DIR": self.tmpdir})) + + @staticmethod + def get_value_from_log(key: str, log: str, key_occurrence: int = 0): + """ + Parses wandb log for `key` and returns the value. + If parsing through multiple calls to .log, pass in a `key_occurrence` + """ + res = re.findall(rf"(?<={key} )[^\s]+", log)[key_occurrence] + if '"' in res: + return re.findall(r'"([^"]*)"', res)[0] + else: + return res + + def test_init_trackers(self): + project_name = "test_project_with_config" + accelerator = Accelerator(log_with="wandb") + config = {"num_iterations": 12, "learning_rate": 1e-2, "some_boolean": False, "some_string": "some_value"} + kwargs = {"wandb": {"tags": ["my_tag"]}} + accelerator.init_trackers(project_name, config, kwargs) + accelerator.end_training() + # The latest offline log is stored at wandb/latest-run/*.wandb + for child in Path(f"{self.tmpdir}/wandb/latest-run").glob("*"): + logger.info(child) + if child.is_file() and child.suffix == ".wandb": + with open(child, "rb") as f: + content = f.read() + break + + # Check HPS through careful parsing and cleaning + cleaned_log = re.sub(r"[\x00-\x1f]+", " ", content.decode("utf8", "ignore")) + self.assertEqual(self.get_value_from_log("num_iterations", cleaned_log), "12") + self.assertEqual(self.get_value_from_log("learning_rate", cleaned_log), "0.01") + self.assertEqual(self.get_value_from_log("some_boolean", cleaned_log), "false") + self.assertEqual(self.get_value_from_log("some_string", cleaned_log), "some_value") + self.assertIn("my_tag", cleaned_log) + + def test_log(self): + project_name = "test_project_with_log" + accelerator = Accelerator(log_with="wandb") + accelerator.init_trackers(project_name) + values = {"total_loss": 0.1, "iteration": 1, "my_text": "some_value"} + accelerator.log(values, step=0) + accelerator.end_training() + # The latest offline log is stored at wandb/latest-run/*.wandb + for child in Path(f"{self.tmpdir}/wandb/latest-run").glob("*"): + if child.is_file() and child.suffix == ".wandb": + with open(child, "rb") as f: + content = f.read() + break + # Check HPS through careful parsing and cleaning + cleaned_log = re.sub(r"[\x00-\x1f]+", " ", content.decode("utf8", "ignore")) + self.assertTrue("0.1" in self.get_value_from_log("total_loss", cleaned_log)) + self.assertTrue("1" in self.get_value_from_log("iteration", cleaned_log)) + self.assertTrue("some_value" in self.get_value_from_log("my_text", cleaned_log)) + self.assertTrue("0" in self.get_value_from_log("_step", cleaned_log)) + + +# Comet has a special `OfflineExperiment` we need to use for testing +def offline_init(self, run_name: str, tmpdir: str): + self.run_name = run_name + self.writer = OfflineExperiment(project_name=run_name, offline_directory=tmpdir) + logger.info(f"Initialized offline CometML project {self.run_name}") + logger.info("Make sure to log any initial configurations with `self.store_init_configuration` before training!") + + +@require_comet_ml +@mock.patch.object(CometMLTracker, "__init__", offline_init) +class CometMLTest(unittest.TestCase): + @staticmethod + def get_value_from_key(log_list, key: str, is_param: bool = False): + "Extracts `key` from Comet `log`" + for log in log_list: + j = json.loads(log)["payload"] + if is_param and "param" in j.keys(): + if j["param"]["paramName"] == key: + return j["param"]["paramValue"] + if "log_other" in j.keys(): + if j["log_other"]["key"] == key: + return j["log_other"]["val"] + if "metric" in j.keys(): + if j["metric"]["metricName"] == key: + return j["metric"]["metricValue"] + + def test_init_trackers(self): + with tempfile.TemporaryDirectory() as d: + tracker = CometMLTracker("test_project_with_config", d) + accelerator = Accelerator(log_with=tracker) + config = {"num_iterations": 12, "learning_rate": 1e-2, "some_boolean": False, "some_string": "some_value"} + accelerator.init_trackers(None, config) + accelerator.end_training() + log = os.listdir(d)[0] # Comet is nice, it's just a zip file here + # We parse the raw logs + p = os.path.join(d, log) + archive = zipfile.ZipFile(p, "r") + log = archive.open("messages.json").read().decode("utf-8") + list_of_json = log.split("\n")[:-1] + self.assertEqual(self.get_value_from_key(list_of_json, "num_iterations", True), 12) + self.assertEqual(self.get_value_from_key(list_of_json, "learning_rate", True), 0.01) + self.assertEqual(self.get_value_from_key(list_of_json, "some_boolean", True), False) + self.assertEqual(self.get_value_from_key(list_of_json, "some_string", True), "some_value") + + def test_log(self): + with tempfile.TemporaryDirectory() as d: + tracker = CometMLTracker("test_project_with_config", d) + accelerator = Accelerator(log_with=tracker) + accelerator.init_trackers(None) + values = {"total_loss": 0.1, "iteration": 1, "my_text": "some_value"} + accelerator.log(values, step=0) + accelerator.end_training() + log = os.listdir(d)[0] # Comet is nice, it's just a zip file here + # We parse the raw logs + p = os.path.join(d, log) + archive = zipfile.ZipFile(p, "r") + log = archive.open("messages.json").read().decode("utf-8") + list_of_json = log.split("\n")[:-1] + self.assertEqual(self.get_value_from_key(list_of_json, "curr_step", True), 0) + self.assertEqual(self.get_value_from_key(list_of_json, "total_loss"), 0.1) + self.assertEqual(self.get_value_from_key(list_of_json, "iteration"), 1) + self.assertEqual(self.get_value_from_key(list_of_json, "my_text"), "some_value") + + +class MyCustomTracker(GeneralTracker): + "Basic tracker that writes to a csv for testing" + _col_names = [ + "total_loss", + "iteration", + "my_text", + "learning_rate", + "num_iterations", + "some_boolean", + "some_string", + ] + + name = "my_custom_tracker" + requires_logging_directory = False + + def __init__(self, dir: str): + self.f = open(f"{dir}/log.csv", "w+") + self.writer = csv.DictWriter(self.f, fieldnames=self._col_names) + self.writer.writeheader() + + @property + def tracker(self): + return self.writer + + def store_init_configuration(self, values: dict): + logger.info("Call init") + self.writer.writerow(values) + + def log(self, values: dict, step: Optional[int]): + logger.info("Call log") + self.writer.writerow(values) + + def finish(self): + self.f.close() + + +class CustomTrackerTestCase(unittest.TestCase): + def test_init_trackers(self): + with tempfile.TemporaryDirectory() as d: + tracker = MyCustomTracker(d) + accelerator = Accelerator(log_with=tracker) + config = {"num_iterations": 12, "learning_rate": 1e-2, "some_boolean": False, "some_string": "some_value"} + accelerator.init_trackers("Some name", config) + accelerator.end_training() + with open(f"{d}/log.csv", "r") as f: + data = csv.DictReader(f) + data = next(data) + truth = { + "total_loss": "", + "iteration": "", + "my_text": "", + "learning_rate": "0.01", + "num_iterations": "12", + "some_boolean": "False", + "some_string": "some_value", + } + self.assertDictEqual(data, truth) + + def test_log(self): + with tempfile.TemporaryDirectory() as d: + tracker = MyCustomTracker(d) + accelerator = Accelerator(log_with=tracker) + accelerator.init_trackers("Some name") + values = {"total_loss": 0.1, "iteration": 1, "my_text": "some_value"} + accelerator.log(values, step=0) + accelerator.end_training() + with open(f"{d}/log.csv", "r") as f: + data = csv.DictReader(f) + data = next(data) + truth = { + "total_loss": "0.1", + "iteration": "1", + "my_text": "some_value", + "learning_rate": "", + "num_iterations": "", + "some_boolean": "", + "some_string": "", + } + self.assertDictEqual(data, truth) diff --git a/v0.13.2/accelerate-0.13.2/tests/test_utils.py b/v0.13.2/accelerate-0.13.2/tests/test_utils.py new file mode 100644 index 0000000..1e9d18c --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/test_utils.py @@ -0,0 +1,85 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import pickle +import unittest +from collections import UserDict, namedtuple + +import torch + +from accelerate.test_utils.training import RegressionModel +from accelerate.utils import convert_outputs_to_fp32, find_device, patch_environment, send_to_device + + +ExampleNamedTuple = namedtuple("ExampleNamedTuple", "a b c") + + +class UtilsTester(unittest.TestCase): + def test_send_to_device(self): + tensor = torch.randn(5, 2) + device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") + + result1 = send_to_device(tensor, device) + self.assertTrue(torch.equal(result1.cpu(), tensor)) + + result2 = send_to_device((tensor, [tensor, tensor], 1), device) + self.assertIsInstance(result2, tuple) + self.assertTrue(torch.equal(result2[0].cpu(), tensor)) + self.assertIsInstance(result2[1], list) + self.assertTrue(torch.equal(result2[1][0].cpu(), tensor)) + self.assertTrue(torch.equal(result2[1][1].cpu(), tensor)) + self.assertEqual(result2[2], 1) + + result2 = send_to_device({"a": tensor, "b": [tensor, tensor], "c": 1}, device) + self.assertIsInstance(result2, dict) + self.assertTrue(torch.equal(result2["a"].cpu(), tensor)) + self.assertIsInstance(result2["b"], list) + self.assertTrue(torch.equal(result2["b"][0].cpu(), tensor)) + self.assertTrue(torch.equal(result2["b"][1].cpu(), tensor)) + self.assertEqual(result2["c"], 1) + + result3 = send_to_device(ExampleNamedTuple(a=tensor, b=[tensor, tensor], c=1), device) + self.assertIsInstance(result3, ExampleNamedTuple) + self.assertTrue(torch.equal(result3.a.cpu(), tensor)) + self.assertIsInstance(result3.b, list) + self.assertTrue(torch.equal(result3.b[0].cpu(), tensor)) + self.assertTrue(torch.equal(result3.b[1].cpu(), tensor)) + self.assertEqual(result3.c, 1) + + result4 = send_to_device(UserDict({"a": tensor, "b": [tensor, tensor], "c": 1}), device) + self.assertIsInstance(result4, UserDict) + self.assertTrue(torch.equal(result4["a"].cpu(), tensor)) + self.assertIsInstance(result4["b"], list) + self.assertTrue(torch.equal(result4["b"][0].cpu(), tensor)) + self.assertTrue(torch.equal(result4["b"][1].cpu(), tensor)) + self.assertEqual(result4["c"], 1) + + def test_patch_environment(self): + with patch_environment(aa=1, BB=2): + self.assertEqual(os.environ.get("AA"), "1") + self.assertEqual(os.environ.get("BB"), "2") + + self.assertNotIn("AA", os.environ) + self.assertNotIn("BB", os.environ) + + def test_convert_to_32_lets_model_pickle(self): + model = RegressionModel() + model.forward = convert_outputs_to_fp32(model.forward) + _ = pickle.dumps(model) + + def test_find_device(self): + self.assertEqual(find_device([1, "a", torch.tensor([1, 2, 3])]), torch.device("cpu")) + self.assertEqual(find_device({"a": 1, "b": torch.tensor([1, 2, 3])}), torch.device("cpu")) + self.assertIsNone(find_device([1, "a"])) diff --git a/v0.13.2/accelerate-0.13.2/tests/xla_spawn.py b/v0.13.2/accelerate-0.13.2/tests/xla_spawn.py new file mode 100644 index 0000000..1a07af2 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/tests/xla_spawn.py @@ -0,0 +1,85 @@ +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +A simple launcher script for TPU training + +Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py + +:: + >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE + YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other + arguments of your training script) + +""" + + +import importlib +import sys +from argparse import REMAINDER, ArgumentParser +from pathlib import Path + +import torch_xla.distributed.xla_multiprocessing as xmp + + +def parse_args(): + """ + Helper function parsing the command line options + @retval ArgumentParser + """ + parser = ArgumentParser( + description=( + "PyTorch TPU distributed training launch " + "helper utility that will spawn up " + "multiple distributed processes" + ) + ) + + # Optional arguments for the launch helper + parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") + + # positional + parser.add_argument( + "training_script", + type=str, + help=( + "The full path to the single TPU training " + "program/script to be launched in parallel, " + "followed by all the arguments for the " + "training script" + ), + ) + + # rest from the training program + parser.add_argument("training_script_args", nargs=REMAINDER) + + return parser.parse_args() + + +def main(): + args = parse_args() + + # Import training_script as a module. + script_fpath = Path(args.training_script) + sys.path.append(str(script_fpath.parent.resolve())) + mod_name = script_fpath.stem + mod = importlib.import_module(mod_name) + + # Patch sys.argv + sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] + xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/utils/log_reports.py b/v0.13.2/accelerate-0.13.2/utils/log_reports.py new file mode 100644 index 0000000..f701f08 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/utils/log_reports.py @@ -0,0 +1,34 @@ +import json +from pathlib import Path +import subprocess + +failed = [] +passed = [] + +group_info = [] + +total_num_failed = 0 +for log in Path().glob("*.log"): + section_num_failed = 0 + with open(log, "r") as f: + for line in f: + line = json.loads(line) + if line.get("nodeid", "") != "": + test = line["nodeid"] + if line.get("duration", None) is not None: + duration = f'{line["duration"]:.4f}' + if line.get("outcome", "") == "failed": + section_num_failed += 1 + failed.append([test, duration]) + else: + passed.append([test, duration]) + group_info.append([str(log), section_num_failed]) + +if len(failed) > 0: + result = "## Failed Tests:\n" + failed_table = '| Test Location | Test Class | Test Name |\n|---|---|---|\n| ' + for test in failed: + failed_table += ' | '.join(test[0].split("::")) + failed_table += " |" + result += failed_table + print(result) \ No newline at end of file diff --git a/v0.13.2/accelerate-0.13.2/utils/stale.py b/v0.13.2/accelerate-0.13.2/utils/stale.py new file mode 100644 index 0000000..1d8f902 --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/utils/stale.py @@ -0,0 +1,66 @@ +# Copyright 2022 The HuggingFace Team, the AllenNLP library authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Script to close stale issue. Taken in part from the AllenNLP repository. +https://github.com/allenai/allennlp. +""" +from datetime import datetime as dt +import os + +from github import Github + + +LABELS_TO_EXEMPT = [ + "good first issue", + "feature request", + "wip", +] + + +def main(): + g = Github(os.environ["GITHUB_TOKEN"]) + repo = g.get_repo("huggingface/accelerate") + open_issues = repo.get_issues(state="open") + + for issue in open_issues: + comments = sorted([comment for comment in issue.get_comments()], key=lambda i: i.created_at, reverse=True) + last_comment = comments[0] if len(comments) > 0 else None + current_time = dt.utcnow() + days_since_updated = (current_time - issue.updated_at).days + days_since_creation = (current_time - issue.created_at).days + if ( + last_comment is not None and last_comment.user.login == "github-actions[bot]" + and days_since_updated > 7 + and days_since_creation >= 30 + and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()) + ): + # Close issue since it has been 7 days of inactivity since bot mention. + issue.edit(state="closed") + elif ( + days_since_updated > 23 + and days_since_creation >= 30 + and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()) + ): + # Add stale comment + issue.create_comment( + "This issue has been automatically marked as stale because it has not had " + "recent activity. If you think this still needs to be addressed " + "please comment on this thread.\n\nPlease note that issues that do not follow the " + "[contributing guidelines](https://github.com/huggingface/accelerate/blob/main/CONTRIBUTING.md) " + "are likely to be ignored." + ) + + +if __name__ == "__main__": + main() diff --git a/v0.13.2/accelerate-0.13.2/utils/style_doc.py b/v0.13.2/accelerate-0.13.2/utils/style_doc.py new file mode 100644 index 0000000..0422ebe --- /dev/null +++ b/v0.13.2/accelerate-0.13.2/utils/style_doc.py @@ -0,0 +1,556 @@ +# coding=utf-8 +# Copyright 2020 The HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Style utils for the .rst and the docstrings.""" + +import argparse +import os +import re +import warnings + +import black + + +BLACK_AVOID_PATTERNS = {} + + +# Regexes +# Re pattern that catches list introduction (with potential indent) +_re_list = re.compile(r"^(\s*-\s+|\s*\*\s+|\s*\d+\.\s+)") +# Re pattern that catches code block introduction (with potential indent) +_re_code = re.compile(r"^(\s*)```(.*)$") +# Re pattern that catches rst args blocks of the form `Parameters:`. +_re_args = re.compile("^\s*(Args?|Arguments?|Params?|Parameters?):\s*$") +# Re pattern that catches return blocks of the form `Return:`. +_re_returns = re.compile("^\s*Returns?:\s*$") +# Matches the special tag to ignore some paragraphs. +_re_doc_ignore = re.compile(r"(\.\.|#)\s*docstyle-ignore") +# Re pattern that matches , and blocks. +_re_tip = re.compile("^\s*|\s+warning={true}>)\s*$") + +DOCTEST_PROMPTS = [">>>", "..."] + + +def is_empty_line(line): + return len(line) == 0 or line.isspace() + + +def find_indent(line): + """ + Returns the number of spaces that start a line indent. + """ + search = re.search("^(\s*)(?:\S|$)", line) + if search is None: + return 0 + return len(search.groups()[0]) + + +def parse_code_example(code_lines): + """ + Parses a code example + + Args: + code_lines (`List[str]`): The code lines to parse. + max_len (`int`): The maximum length per line. + + Returns: + (List[`str`], List[`str`]): The list of code samples and the list of outputs. + """ + has_doctest = code_lines[0][:3] in DOCTEST_PROMPTS + + code_samples = [] + outputs = [] + in_code = True + current_bit = [] + + for line in code_lines: + if in_code and has_doctest and not is_empty_line(line) and line[:3] not in DOCTEST_PROMPTS: + code_sample = "\n".join(current_bit) + code_samples.append(code_sample.strip()) + in_code = False + current_bit = [] + elif not in_code and line[:3] in DOCTEST_PROMPTS: + output = "\n".join(current_bit) + outputs.append(output.strip()) + in_code = True + current_bit = [] + + # Add the line without doctest prompt + if line[:3] in DOCTEST_PROMPTS: + line = line[4:] + current_bit.append(line) + + # Add last sample + if in_code: + code_sample = "\n".join(current_bit) + code_samples.append(code_sample.strip()) + else: + output = "\n".join(current_bit) + outputs.append(output.strip()) + + return code_samples, outputs + + +def format_code_example(code: str, max_len: int, in_docstring: bool = False): + """ + Format a code example using black. Will take into account the doctest syntax as well as any initial indentation in + the code provided. + + Args: + code (`str`): The code example to format. + max_len (`int`): The maximum length per line. + in_docstring (`bool`, *optional*, defaults to `False`): Whether or not the code example is inside a docstring. + + Returns: + `str`: The formatted code. + """ + code_lines = code.split("\n") + + # Find initial indent + idx = 0 + while idx < len(code_lines) and is_empty_line(code_lines[idx]): + idx += 1 + if idx >= len(code_lines): + return "", "" + indent = find_indent(code_lines[idx]) + + # Remove the initial indent for now, we will had it back after styling. + # Note that l[indent:] works for empty lines + code_lines = [l[indent:] for l in code_lines[idx:]] + has_doctest = code_lines[0][:3] in DOCTEST_PROMPTS + + code_samples, outputs = parse_code_example(code_lines) + + # Let's blackify the code! We put everything in one big text to go faster. + delimiter = "\n\n### New code sample ###\n" + full_code = delimiter.join(code_samples) + line_length = max_len - indent + if has_doctest: + line_length -= 4 + + for k, v in BLACK_AVOID_PATTERNS.items(): + full_code = full_code.replace(k, v) + try: + mode = black.Mode(target_versions={black.TargetVersion.PY37}, line_length=line_length) + formatted_code = black.format_str(full_code, mode=mode) + error = "" + except Exception as e: + formatted_code = full_code + error = f"Code sample:\n{full_code}\n\nError message:\n{e}" + + # Let's get back the formatted code samples + for k, v in BLACK_AVOID_PATTERNS.items(): + formatted_code = formatted_code.replace(v, k) + # Triple quotes will mess docstrings. + if in_docstring: + formatted_code = formatted_code.replace('"""', "'''") + + code_samples = formatted_code.split(delimiter) + # We can have one output less than code samples + if len(outputs) == len(code_samples) - 1: + outputs.append("") + + formatted_lines = [] + for code_sample, output in zip(code_samples, outputs): + # black may have added some new lines, we remove them + code_sample = code_sample.strip() + in_triple_quotes = False + in_decorator = False + for line in code_sample.strip().split("\n"): + if has_doctest and not is_empty_line(line): + prefix = ( + "... " + if line.startswith(" ") or line in [")", "]", "}"] or in_triple_quotes or in_decorator + else ">>> " + ) + else: + prefix = "" + indent_str = "" if is_empty_line(line) else (" " * indent) + formatted_lines.append(indent_str + prefix + line) + + if '"""' in line: + in_triple_quotes = not in_triple_quotes + if line.startswith(" "): + in_decorator = False + if line.startswith("@"): + in_decorator = True + + formatted_lines.extend([" " * indent + line for line in output.split("\n")]) + if not output.endswith("===PT-TF-SPLIT==="): + formatted_lines.append("") + + result = "\n".join(formatted_lines) + return result.rstrip(), error + + +def format_text(text, max_len, prefix="", min_indent=None): + """ + Format a text in the biggest lines possible with the constraint of a maximum length and an indentation. + + Args: + text (`str`): The text to format + max_len (`int`): The maximum length per line to use + prefix (`str`, *optional*, defaults to `""`): A prefix that will be added to the text. + The prefix doesn't count toward the indent (like a - introducing a list). + min_indent (`int`, *optional*): The minimum indent of the text. + If not set, will default to the length of the `prefix`. + + Returns: + `str`: The formatted text. + """ + text = re.sub(r"\s+", " ", text) + if min_indent is not None: + if len(prefix) < min_indent: + prefix = " " * (min_indent - len(prefix)) + prefix + + indent = " " * len(prefix) + new_lines = [] + words = text.split(" ") + current_line = f"{prefix}{words[0]}" + for word in words[1:]: + try_line = f"{current_line} {word}" + if len(try_line) > max_len: + new_lines.append(current_line) + current_line = f"{indent}{word}" + else: + current_line = try_line + new_lines.append(current_line) + return "\n".join(new_lines) + + +def split_line_on_first_colon(line): + splits = line.split(":") + return splits[0], ":".join(splits[1:]) + + +def style_docstring(docstring, max_len): + """ + Style a docstring by making sure there is no useless whitespace and the maximum horizontal space is used. + + Args: + docstring (`str`): The docstring to style. + max_len (`int`): The maximum length of each line. + + Returns: + `str`: The styled docstring + """ + lines = docstring.split("\n") + new_lines = [] + + # Initialization + current_paragraph = None + current_indent = -1 + in_code = False + param_indent = -1 + prefix = "" + black_errors = [] + + # Special case for docstrings that begin with continuation of Args with no Args block. + idx = 0 + while idx < len(lines) and is_empty_line(lines[idx]): + idx += 1 + if ( + len(lines[idx]) > 1 + and lines[idx].rstrip().endswith(":") + and find_indent(lines[idx + 1]) > find_indent(lines[idx]) + ): + param_indent = find_indent(lines[idx]) + + for idx, line in enumerate(lines): + # Doing all re searches once for the one we need to repeat. + list_search = _re_list.search(line) + code_search = _re_code.search(line) + + # Are we starting a new paragraph? + # New indentation or new line: + new_paragraph = find_indent(line) != current_indent or is_empty_line(line) + # List item + new_paragraph = new_paragraph or list_search is not None + # Code block beginning + new_paragraph = new_paragraph or code_search is not None + # Beginning/end of tip + new_paragraph = new_paragraph or _re_tip.search(line) + + # In this case, we treat the current paragraph + if not in_code and new_paragraph and current_paragraph is not None and len(current_paragraph) > 0: + paragraph = " ".join(current_paragraph) + new_lines.append(format_text(paragraph, max_len, prefix=prefix, min_indent=current_indent)) + current_paragraph = None + + if code_search is not None: + if not in_code: + current_paragraph = [] + current_indent = len(code_search.groups()[0]) + current_code = code_search.groups()[1] + prefix = "" + if current_indent < param_indent: + param_indent = -1 + else: + current_indent = -1 + code = "\n".join(current_paragraph) + if current_code in ["py", "python"]: + formatted_code, error = format_code_example(code, max_len, in_docstring=True) + new_lines.append(formatted_code) + if len(error) > 0: + black_errors.append(error) + else: + new_lines.append(code) + current_paragraph = None + new_lines.append(line) + in_code = not in_code + + elif in_code: + current_paragraph.append(line) + elif is_empty_line(line): + current_paragraph = None + current_indent = -1 + prefix = "" + new_lines.append(line) + elif list_search is not None: + prefix = list_search.groups()[0] + current_indent = len(prefix) + current_paragraph = [line[current_indent:]] + elif _re_args.search(line): + new_lines.append(line) + param_indent = find_indent(lines[idx + 1]) + elif _re_tip.search(line): + # Add a new line before if not present + if not is_empty_line(new_lines[-1]): + new_lines.append("") + new_lines.append(line) + # Add a new line after if not present + if idx < len(lines) - 1 and not is_empty_line(lines[idx + 1]): + new_lines.append("") + elif current_paragraph is None or find_indent(line) != current_indent: + indent = find_indent(line) + # Special behavior for parameters intros. + if indent == param_indent: + # Special rules for some docstring where the Returns blocks has the same indent as the parameters. + if _re_returns.search(line) is not None: + param_indent = -1 + new_lines.append(line) + elif len(line) < max_len: + new_lines.append(line) + else: + intro, description = split_line_on_first_colon(line) + new_lines.append(intro + ":") + if len(description) != 0: + if find_indent(lines[idx + 1]) > indent: + current_indent = find_indent(lines[idx + 1]) + else: + current_indent = indent + 4 + current_paragraph = [description.strip()] + prefix = "" + else: + # Check if we have exited the parameter block + if indent < param_indent: + param_indent = -1 + + current_paragraph = [line.strip()] + current_indent = find_indent(line) + prefix = "" + elif current_paragraph is not None: + current_paragraph.append(line.lstrip()) + + if current_paragraph is not None and len(current_paragraph) > 0: + paragraph = " ".join(current_paragraph) + new_lines.append(format_text(paragraph, max_len, prefix=prefix, min_indent=current_indent)) + + return "\n".join(new_lines), "\n\n".join(black_errors) + + +def style_docstrings_in_code(code, max_len=119): + """ + Style all docstrings in some code. + + Args: + code (`str`): The code in which we want to style the docstrings. + max_len (`int`): The maximum number of characters per line. + + Returns: + `Tuple[str, str]`: A tuple with the clean code and the black errors (if any) + """ + # fmt: off + splits = code.split('\"\"\"') + splits = [ + (s if i % 2 == 0 or _re_doc_ignore.search(splits[i - 1]) is not None else style_docstring(s, max_len=max_len)) + for i, s in enumerate(splits) + ] + black_errors = "\n\n".join([s[1] for s in splits if isinstance(s, tuple) and len(s[1]) > 0]) + splits = [s[0] if isinstance(s, tuple) else s for s in splits] + clean_code = '\"\"\"'.join(splits) + # fmt: on + + return clean_code, black_errors + + +def style_file_docstrings(code_file, max_len=119, check_only=False): + """ + Style all docstrings in a given file. + + Args: + code_file (`str` or `os.PathLike`): The file in which we want to style the docstring. + max_len (`int`): The maximum number of characters per line. + check_only (`bool`, *optional*, defaults to `False`): + Whether to restyle file or just check if they should be restyled. + + Returns: + `bool`: Whether or not the file was or should be restyled. + """ + with open(code_file, "r", encoding="utf-8", newline="\n") as f: + code = f.read() + + clean_code, black_errors = style_docstrings_in_code(code, max_len=max_len) + + diff = clean_code != code + if not check_only and diff: + print(f"Overwriting content of {code_file}.") + with open(code_file, "w", encoding="utf-8", newline="\n") as f: + f.write(clean_code) + + return diff, black_errors + + +def style_mdx_file(mdx_file, max_len=119, check_only=False): + """ + Style a MDX file by formatting all Python code samples. + + Args: + mdx_file (`str` or `os.PathLike`): The file in which we want to style the examples. + max_len (`int`): The maximum number of characters per line. + check_only (`bool`, *optional*, defaults to `False`): + Whether to restyle file or just check if they should be restyled. + + Returns: + `bool`: Whether or not the file was or should be restyled. + """ + with open(mdx_file, "r", encoding="utf-8", newline="\n") as f: + content = f.read() + + lines = content.split("\n") + current_code = [] + current_language = "" + in_code = False + new_lines = [] + black_errors = [] + + for line in lines: + if _re_code.search(line) is not None: + in_code = not in_code + if in_code: + current_language = _re_code.search(line).groups()[1] + current_code = [] + else: + code = "\n".join(current_code) + if current_language in ["py", "python"]: + code, error = format_code_example(code, max_len) + if len(error) > 0: + black_errors.append(error) + new_lines.append(code) + + new_lines.append(line) + elif in_code: + current_code.append(line) + else: + new_lines.append(line) + + if in_code: + raise ValueError(f"There was a problem when styling {mdx_file}. A code block is opened without being closed.") + + clean_content = "\n".join(new_lines) + diff = clean_content != content + if not check_only and diff: + print(f"Overwriting content of {mdx_file}.") + with open(mdx_file, "w", encoding="utf-8", newline="\n") as f: + f.write(clean_content) + + return diff, "\n\n".join(black_errors) + + +def style_doc_files(*files, max_len=119, check_only=False): + """ + Applies doc styling or checks everything is correct in a list of files. + + Args: + files (several `str` or `os.PathLike`): The files to treat. + max_len (`int`): The maximum number of characters per line. + check_only (`bool`, *optional*, defaults to `False`): + Whether to restyle file or just check if they should be restyled. + + Returns: + List[`str`]: The list of files changed or that should be restyled. + """ + changed = [] + black_errors = [] + for file in files: + # Treat folders + if os.path.isdir(file): + files = [os.path.join(file, f) for f in os.listdir(file)] + files = [f for f in files if os.path.isdir(f) or f.endswith(".mdx") or f.endswith(".py")] + changed += style_doc_files(*files, max_len=max_len, check_only=check_only) + # Treat mdx + elif file.endswith(".mdx"): + try: + diff, black_error = style_mdx_file(file, max_len=max_len, check_only=check_only) + if diff: + changed.append(file) + if len(black_error) > 0: + black_errors.append( + f"There was a problem while formatting an example in {file} with black:\m{black_error}" + ) + except Exception: + print(f"There is a problem in {file}.") + raise + # Treat python files + elif file.endswith(".py"): + try: + diff, black_error = style_file_docstrings(file, max_len=max_len, check_only=check_only) + if diff: + changed.append(file) + if len(black_error) > 0: + black_errors.append( + f"There was a problem while formatting an example in {file} with black:\m{black_error}" + ) + except Exception: + print(f"There is a problem in {file}.") + raise + else: + warnings.warn(f"Ignoring {file} because it's not a py or an mdx file or a folder.") + if len(black_errors) > 0: + black_message = "\n\n".join(black_errors) + raise ValueError( + "Some code examples can't be interpreted by black, which means they aren't regular python:\n\n" + + black_message + + "\n\nMake sure to fix the corresponding docstring or doc file, or remove the py/python after ``` if it " + + "was not supposed to be a Python code sample." + ) + return changed + + +def main(*files, max_len=119, check_only=False): + changed = style_doc_files(*files, max_len=max_len, check_only=check_only) + if check_only and len(changed) > 0: + raise ValueError(f"{len(changed)} files should be restyled!") + elif len(changed) > 0: + print(f"Cleaned {len(changed)} files!") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("files", nargs="+", help="The file(s) or folder(s) to restyle.") + parser.add_argument("--max_len", type=int, help="The maximum length of lines.") + parser.add_argument("--check_only", action="store_true", help="Whether to only check and not fix styling issues.") + args = parser.parse_args() + + main(*args.files, max_len=args.max_len, check_only=args.check_only)

      wLO&o1nV+B*+zE0fL*?B$i%H&_WBxd)n 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≷oS5#>DBIy}INnuv3CatartpN}H-Vfw|*^ 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%0DQI=g+${DxG*v|mVzaT1T?JcCOx2+`^Y?Z*~u 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 z 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

B`6d#Q5=$!S=)aH!jOD;yLhIeZVD`iS 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

L$9u3JtyM*x% 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 o{?`P7sOTYxwL=iM_tjbkzWL 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ν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≀ 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ξ8=`Q`P_NcLYT7ioGev1kMDB$^ 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
kD(_%AL%RSBd?}4d>_BnYi{SK&5Rwqs!7H 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
0HMKZ#` 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