agilerl 2.8.0.dev2__tar.gz → 2.8.1.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (646) hide show
  1. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/.gitignore +3 -0
  2. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/README.md +330 -0
  3. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/__init__.py +34 -0
  4. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/core/base.py +5648 -0
  5. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/core/registry.py +525 -0
  6. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/cqn.py +325 -0
  7. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/ddpg.py +562 -0
  8. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/dpo.py +657 -0
  9. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/dqn.py +409 -0
  10. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/dqn_rainbow.py +557 -0
  11. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/grpo.py +1834 -0
  12. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/ilql.py +2244 -0
  13. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/ippo.py +956 -0
  14. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/maddpg.py +958 -0
  15. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/matd3.py +1052 -0
  16. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/neural_ts_bandit.py +330 -0
  17. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/neural_ucb_bandit.py +339 -0
  18. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/ppo.py +1292 -0
  19. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/ppo_llm.py +1453 -0
  20. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/reinforce_llm.py +1178 -0
  21. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/sft.py +385 -0
  22. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/algorithms/td3.py +616 -0
  23. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/__init__.py +13 -0
  24. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/data.py +116 -0
  25. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/multi_agent_replay_buffer.py +242 -0
  26. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/replay_buffer.py +428 -0
  27. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/rollout_buffer.py +970 -0
  28. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/sampler.py +226 -0
  29. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/components/segment_tree.py +182 -0
  30. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/hpo/mutation.py +1218 -0
  31. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/hpo/tournament.py +203 -0
  32. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/llm_envs/preference.py +135 -0
  33. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/llm_envs/reasoning.py +163 -0
  34. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/llm_envs/sft.py +99 -0
  35. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/networks/actors.py +425 -0
  36. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/networks/base.py +567 -0
  37. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/networks/q_networks.py +443 -0
  38. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/networks/value_networks.py +129 -0
  39. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/protocols.py +637 -0
  40. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/rollouts/on_policy.py +6 -0
  41. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_bandits.py +364 -0
  42. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_llm.py +1908 -0
  43. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_multi_agent_off_policy.py +612 -0
  44. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_multi_agent_on_policy.py +623 -0
  45. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_off_policy.py +617 -0
  46. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_offline.py +364 -0
  47. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/training/train_on_policy.py +511 -0
  48. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/typing.py +191 -0
  49. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/algo_utils.py +2107 -0
  50. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/evolvable_networks.py +769 -0
  51. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/llm_utils.py +0 -81
  52. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/minari_utils.py +162 -0
  53. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/probe_envs.py +1328 -0
  54. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/probe_envs_ma.py +2091 -0
  55. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/utils/utils.py +1631 -0
  56. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/wrappers/__init__.py +0 -0
  57. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/wrappers/agent.py +814 -0
  58. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/wrappers/learning.py +92 -0
  59. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/wrappers/pettingzoo_wrappers.py +69 -0
  60. agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/pyproject.toml +204 -0
  61. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/LICENSE +214 -0
  62. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/__init__.py +44 -0
  63. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/bc_lm.py +672 -0
  64. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/cispo.py +20 -0
  65. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/__init__.py +17 -0
  66. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/base.py +6105 -0
  67. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/llm_ops/__init__.py +49 -0
  68. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/llm_ops/fused_logprobs.py +274 -0
  69. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/llm_ops/fused_lora.py +271 -0
  70. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/llm_ops/fused_loss.py +769 -0
  71. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/llm_ops/vllm_colocate.py +201 -0
  72. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/core/optimizer_wrapper.py +467 -0
  73. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/dpo.py +686 -0
  74. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/grpo.py +1767 -0
  75. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/gspo.py +20 -0
  76. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/ippo.py +1 -1
  77. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/maddpg.py +2 -2
  78. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/matd3.py +2 -2
  79. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/ppo.py +8 -4
  80. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/ppo_llm.py +1404 -0
  81. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/reinforce_llm.py +1114 -0
  82. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/algorithms/sft.py +398 -0
  83. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/data/__init__.py +0 -0
  84. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/data/language_environment.py +74 -0
  85. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/data/rl_data.py +289 -0
  86. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/data/tokenizer.py +48 -0
  87. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/data/torch_datasets.py +44 -0
  88. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/hpo/__init__.py +0 -0
  89. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/llm_envs/__init__.py +71 -0
  90. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/llm_envs/dataset_env.py +402 -0
  91. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/llm_envs/openenv.py +807 -0
  92. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/llm_envs/rollout_env.py +1322 -0
  93. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/logger.py +10 -1
  94. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/metrics.py +29 -10
  95. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algo.py +725 -0
  96. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/cispo.py +30 -0
  97. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/dpo.py +34 -0
  98. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/grpo.py +60 -0
  99. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/gspo.py +25 -0
  100. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/llmppo.py +63 -0
  101. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/llmreinforce.py +58 -0
  102. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/algorithms/sft.py +34 -0
  103. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/models/env.py +912 -0
  104. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/__init__.py +27 -0
  105. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/base.py +918 -0
  106. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/bert.py +780 -0
  107. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/cnn.py +799 -0
  108. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/configs.py +197 -0
  109. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/custom_components.py +261 -0
  110. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/dummy.py +75 -0
  111. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/gpt.py +976 -0
  112. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/lstm.py +306 -0
  113. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/mlp.py +336 -0
  114. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/multi_input.py +535 -0
  115. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/resnet.py +283 -0
  116. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/modules/simba.py +222 -0
  117. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/networks/__init__.py +14 -0
  118. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/networks/custom_modules.py +188 -0
  119. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/networks/distributions.py +358 -0
  120. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/protocols.py +702 -0
  121. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/rollouts/__init__.py +3 -0
  122. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/rollouts/on_policy.py +318 -0
  123. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/__init__.py +0 -0
  124. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/llm/__init__.py +14 -0
  125. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/llm/common.py +128 -0
  126. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/llm/dataset.py +276 -0
  127. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/llm/rollout.py +379 -0
  128. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/training/trainer.py +959 -0
  129. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/typing.py +187 -0
  130. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/__init__.py +0 -0
  131. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/cache.py +129 -0
  132. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/ilql_utils.py +83 -0
  133. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/llm_packing.py +276 -0
  134. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/llm_utils.py +2101 -0
  135. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/log_utils.py +138 -0
  136. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/ppo_value_head.py +279 -0
  137. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/probe_envs_llm.py +154 -0
  138. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/sampling_utils.py +122 -0
  139. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/torch_utils.py +621 -0
  140. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/trainer_utils.py +333 -0
  141. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/utils/utils.py +1646 -0
  142. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/vector/pz_async_vec_env.py +1037 -0
  143. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/vector/pz_vec_env.py +217 -0
  144. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/wrappers/__init__.py +0 -0
  145. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/wrappers/make_evolvable.py +1314 -0
  146. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/agilerl/wrappers/utils.py +67 -0
  147. agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv/pyproject.toml +235 -0
  148. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/LICENSE +214 -0
  149. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/README.md +330 -0
  150. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/__init__.py +33 -0
  151. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/__init__.py +44 -0
  152. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/bc_lm.py +672 -0
  153. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/cispo.py +20 -0
  154. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/__init__.py +17 -0
  155. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/base.py +5357 -0
  156. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/llm_ops/__init__.py +49 -0
  157. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/llm_ops/fused_logprobs.py +274 -0
  158. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/llm_ops/fused_lora.py +270 -0
  159. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/llm_ops/fused_loss.py +769 -0
  160. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/llm_ops/vllm_colocate.py +201 -0
  161. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/optimizer_wrapper.py +467 -0
  162. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/core/registry.py +523 -0
  163. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/cqn.py +310 -0
  164. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/ddpg.py +548 -0
  165. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/dpo.py +650 -0
  166. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/dqn.py +398 -0
  167. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/dqn_rainbow.py +546 -0
  168. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/grpo.py +1744 -0
  169. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/gspo.py +20 -0
  170. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/ilql.py +2244 -0
  171. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/ippo.py +943 -0
  172. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/maddpg.py +922 -0
  173. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/matd3.py +1009 -0
  174. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/neural_ts_bandit.py +319 -0
  175. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/neural_ucb_bandit.py +326 -0
  176. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/ppo.py +1276 -0
  177. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/ppo_llm.py +1374 -0
  178. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/reinforce_llm.py +1099 -0
  179. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/sft.py +378 -0
  180. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/algorithms/td3.py +601 -0
  181. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/__init__.py +13 -0
  182. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/data.py +116 -0
  183. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/multi_agent_replay_buffer.py +242 -0
  184. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/replay_buffer.py +428 -0
  185. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/rollout_buffer.py +970 -0
  186. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/sampler.py +226 -0
  187. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/components/segment_tree.py +182 -0
  188. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/data/__init__.py +0 -0
  189. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/data/language_environment.py +74 -0
  190. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/data/rl_data.py +289 -0
  191. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/data/tokenizer.py +48 -0
  192. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/data/torch_datasets.py +44 -0
  193. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/hpo/__init__.py +0 -0
  194. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/hpo/mutation.py +1202 -0
  195. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/hpo/tournament.py +199 -0
  196. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/llm_envs/__init__.py +41 -0
  197. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/llm_envs/base.py +102 -0
  198. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/llm_envs/dataset_env.py +421 -0
  199. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/llm_envs/openenv.py +858 -0
  200. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/llm_envs/rollout_env.py +1118 -0
  201. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/__init__.py +27 -0
  202. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/base.py +918 -0
  203. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/bert.py +780 -0
  204. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/cnn.py +799 -0
  205. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/configs.py +197 -0
  206. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/custom_components.py +261 -0
  207. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/dummy.py +75 -0
  208. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/gpt.py +976 -0
  209. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/lstm.py +306 -0
  210. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/mlp.py +336 -0
  211. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/multi_input.py +535 -0
  212. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/resnet.py +283 -0
  213. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/modules/simba.py +222 -0
  214. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/__init__.py +14 -0
  215. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/actors.py +425 -0
  216. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/base.py +567 -0
  217. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/custom_modules.py +188 -0
  218. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/distributions.py +358 -0
  219. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/q_networks.py +443 -0
  220. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/networks/value_networks.py +129 -0
  221. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/protocols.py +664 -0
  222. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/rollouts/__init__.py +3 -0
  223. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/rollouts/on_policy.py +317 -0
  224. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/__init__.py +0 -0
  225. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_bandits.py +327 -0
  226. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_llm.py +1337 -0
  227. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_multi_agent_off_policy.py +574 -0
  228. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_multi_agent_on_policy.py +594 -0
  229. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_off_policy.py +580 -0
  230. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_offline.py +313 -0
  231. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/training/train_on_policy.py +483 -0
  232. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/typing.py +186 -0
  233. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/__init__.py +0 -0
  234. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/algo_utils.py +2054 -0
  235. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/cache.py +129 -0
  236. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/distributed.py +289 -0
  237. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/evolvable_networks.py +769 -0
  238. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/ilql_utils.py +81 -0
  239. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/llm_packing.py +276 -0
  240. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/llm_utils.py +1803 -0
  241. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/log_utils.py +147 -0
  242. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/minari_utils.py +152 -0
  243. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/ppo_value_head.py +279 -0
  244. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/probe_envs.py +1328 -0
  245. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/probe_envs_llm.py +154 -0
  246. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/probe_envs_ma.py +2091 -0
  247. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/sampling_utils.py +122 -0
  248. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/torch_utils.py +621 -0
  249. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/utils/utils.py +1503 -0
  250. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/vector/__init__.py +0 -0
  251. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/vector/pz_async_vec_env.py +1037 -0
  252. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/vector/pz_vec_env.py +217 -0
  253. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/__init__.py +0 -0
  254. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/agent.py +815 -0
  255. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/learning.py +92 -0
  256. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/make_evolvable.py +1303 -0
  257. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/pettingzoo_wrappers.py +69 -0
  258. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/agilerl/wrappers/utils.py +67 -0
  259. agilerl-2.8.1.dev0/.worktrees/fsdp-tool-masking/pyproject.toml +205 -0
  260. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/LICENSE +214 -0
  261. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/README.md +317 -0
  262. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/__init__.py +34 -0
  263. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/__init__.py +44 -0
  264. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/bc_lm.py +672 -0
  265. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/cispo.py +23 -0
  266. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/__init__.py +17 -0
  267. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/base.py +5860 -0
  268. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/llm_ops/__init__.py +53 -0
  269. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/llm_ops/fused_lora.py +151 -0
  270. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/llm_ops/fused_loss.py +685 -0
  271. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/llm_ops/vllm_weight_sharing.py +1088 -0
  272. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/optimizer_wrapper.py +467 -0
  273. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/core/registry.py +525 -0
  274. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/cqn.py +325 -0
  275. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/ddpg.py +562 -0
  276. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/dpo.py +626 -0
  277. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/dqn.py +409 -0
  278. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/dqn_rainbow.py +555 -0
  279. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/grpo.py +1741 -0
  280. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/gspo.py +23 -0
  281. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/ilql.py +2244 -0
  282. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/ippo.py +956 -0
  283. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/maddpg.py +958 -0
  284. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/matd3.py +1061 -0
  285. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/neural_ts_bandit.py +330 -0
  286. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/neural_ucb_bandit.py +339 -0
  287. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/ppo.py +1289 -0
  288. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/ppo_llm.py +1340 -0
  289. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/reinforce_llm.py +1066 -0
  290. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/sft.py +341 -0
  291. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/algorithms/td3.py +616 -0
  292. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/__init__.py +13 -0
  293. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/data.py +116 -0
  294. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/multi_agent_replay_buffer.py +242 -0
  295. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/replay_buffer.py +428 -0
  296. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/rollout_buffer.py +970 -0
  297. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/sampler.py +225 -0
  298. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/components/segment_tree.py +182 -0
  299. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/data/__init__.py +0 -0
  300. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/data/language_environment.py +74 -0
  301. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/data/rl_data.py +289 -0
  302. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/data/tokenizer.py +48 -0
  303. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/data/torch_datasets.py +44 -0
  304. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/hpo/__init__.py +0 -0
  305. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/hpo/mutation.py +1207 -0
  306. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/hpo/tournament.py +203 -0
  307. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/__init__.py +37 -0
  308. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/base.py +261 -0
  309. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/preference.py +135 -0
  310. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/reasoning.py +163 -0
  311. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/search.py +120 -0
  312. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/sft.py +99 -0
  313. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/sync_vec_env.py +311 -0
  314. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/llm_envs/token_observation.py +484 -0
  315. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/__init__.py +27 -0
  316. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/base.py +918 -0
  317. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/bert.py +780 -0
  318. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/cnn.py +788 -0
  319. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/configs.py +197 -0
  320. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/custom_components.py +261 -0
  321. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/dummy.py +71 -0
  322. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/gpt.py +976 -0
  323. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/lstm.py +306 -0
  324. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/mlp.py +336 -0
  325. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/multi_input.py +535 -0
  326. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/resnet.py +283 -0
  327. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/modules/simba.py +222 -0
  328. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/__init__.py +14 -0
  329. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/actors.py +425 -0
  330. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/base.py +567 -0
  331. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/custom_modules.py +188 -0
  332. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/distributions.py +358 -0
  333. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/q_networks.py +443 -0
  334. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/networks/value_networks.py +129 -0
  335. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/protocols.py +637 -0
  336. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/rollouts/__init__.py +3 -0
  337. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/rollouts/on_policy.py +319 -0
  338. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/__init__.py +0 -0
  339. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_bandits.py +364 -0
  340. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_llm.py +2312 -0
  341. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_multi_agent_off_policy.py +612 -0
  342. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_multi_agent_on_policy.py +623 -0
  343. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_off_policy.py +616 -0
  344. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_offline.py +364 -0
  345. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/training/train_on_policy.py +511 -0
  346. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/typing.py +175 -0
  347. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/__init__.py +0 -0
  348. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/algo_utils.py +2007 -0
  349. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/cache.py +129 -0
  350. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/evolvable_networks.py +769 -0
  351. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/ilql_utils.py +83 -0
  352. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/llm_packing.py +291 -0
  353. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/llm_utils.py +1860 -0
  354. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/log_utils.py +138 -0
  355. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/minari_utils.py +152 -0
  356. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/ppo_value_head.py +279 -0
  357. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/probe_envs.py +1328 -0
  358. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/probe_envs_llm.py +154 -0
  359. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/probe_envs_ma.py +2225 -0
  360. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/sampling_utils.py +122 -0
  361. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/torch_utils.py +621 -0
  362. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/utils/utils.py +1698 -0
  363. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/vector/__init__.py +0 -0
  364. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/vector/pz_async_vec_env.py +1037 -0
  365. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/vector/pz_vec_env.py +216 -0
  366. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/__init__.py +0 -0
  367. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/agent.py +792 -0
  368. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/learning.py +95 -0
  369. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/llm_envs.py +19 -0
  370. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/make_evolvable.py +1314 -0
  371. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/pettingzoo_wrappers.py +69 -0
  372. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/agilerl/wrappers/utils.py +67 -0
  373. agilerl-2.8.1.dev0/.worktrees/lora-only-sync/pyproject.toml +203 -0
  374. agilerl-2.8.1.dev0/LICENSE +214 -0
  375. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/PKG-INFO +3 -3
  376. agilerl-2.8.1.dev0/README.md +433 -0
  377. agilerl-2.8.1.dev0/agilerl/__init__.py +77 -0
  378. agilerl-2.8.1.dev0/agilerl/algorithms/__init__.py +44 -0
  379. agilerl-2.8.1.dev0/agilerl/algorithms/bc_lm.py +672 -0
  380. agilerl-2.8.1.dev0/agilerl/algorithms/cispo.py +20 -0
  381. agilerl-2.8.1.dev0/agilerl/algorithms/core/__init__.py +17 -0
  382. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/core/base.py +138 -12
  383. agilerl-2.8.1.dev0/agilerl/algorithms/core/llm_ops/__init__.py +49 -0
  384. agilerl-2.8.1.dev0/agilerl/algorithms/core/llm_ops/fused_logprobs.py +274 -0
  385. agilerl-2.8.1.dev0/agilerl/algorithms/core/llm_ops/fused_lora.py +271 -0
  386. agilerl-2.8.1.dev0/agilerl/algorithms/core/llm_ops/fused_loss.py +769 -0
  387. agilerl-2.8.1.dev0/agilerl/algorithms/core/llm_ops/vllm_colocate.py +201 -0
  388. agilerl-2.8.1.dev0/agilerl/algorithms/core/optimizer_wrapper.py +467 -0
  389. agilerl-2.8.1.dev0/agilerl/algorithms/core/registry.py +550 -0
  390. agilerl-2.8.1.dev0/agilerl/algorithms/cqn.py +343 -0
  391. agilerl-2.8.1.dev0/agilerl/algorithms/ddpg.py +575 -0
  392. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/dpo.py +2 -0
  393. agilerl-2.8.1.dev0/agilerl/algorithms/dqn.py +432 -0
  394. agilerl-2.8.1.dev0/agilerl/algorithms/dqn_rainbow.py +574 -0
  395. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/grpo.py +5 -1
  396. agilerl-2.8.1.dev0/agilerl/algorithms/gspo.py +20 -0
  397. agilerl-2.8.1.dev0/agilerl/algorithms/ilql.py +2246 -0
  398. agilerl-2.8.1.dev0/agilerl/algorithms/ippo.py +986 -0
  399. agilerl-2.8.1.dev0/agilerl/algorithms/maddpg.py +976 -0
  400. agilerl-2.8.1.dev0/agilerl/algorithms/matd3.py +1074 -0
  401. agilerl-2.8.1.dev0/agilerl/algorithms/neural_ts_bandit.py +358 -0
  402. agilerl-2.8.1.dev0/agilerl/algorithms/neural_ucb_bandit.py +365 -0
  403. agilerl-2.8.1.dev0/agilerl/algorithms/ppo.py +1158 -0
  404. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/ppo_llm.py +7 -6
  405. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/reinforce_llm.py +7 -6
  406. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/algorithms/sft.py +2 -0
  407. agilerl-2.8.1.dev0/agilerl/algorithms/td3.py +638 -0
  408. agilerl-2.8.1.dev0/agilerl/components/__init__.py +11 -0
  409. agilerl-2.8.1.dev0/agilerl/components/data.py +165 -0
  410. agilerl-2.8.1.dev0/agilerl/components/replay_buffer.py +475 -0
  411. agilerl-2.8.1.dev0/agilerl/components/rollout_buffer.py +965 -0
  412. agilerl-2.8.1.dev0/agilerl/components/sampler.py +220 -0
  413. agilerl-2.8.1.dev0/agilerl/components/segment_tree.py +242 -0
  414. agilerl-2.8.1.dev0/agilerl/data/__init__.py +0 -0
  415. agilerl-2.8.1.dev0/agilerl/data/language_environment.py +74 -0
  416. agilerl-2.8.1.dev0/agilerl/data/rl_data.py +289 -0
  417. agilerl-2.8.1.dev0/agilerl/data/tokenizer.py +48 -0
  418. agilerl-2.8.1.dev0/agilerl/data/torch_datasets.py +44 -0
  419. agilerl-2.8.1.dev0/agilerl/hpo/__init__.py +0 -0
  420. agilerl-2.8.1.dev0/agilerl/hpo/mutation.py +1218 -0
  421. agilerl-2.8.1.dev0/agilerl/hpo/tournament.py +214 -0
  422. agilerl-2.8.1.dev0/agilerl/llm_envs/__init__.py +37 -0
  423. agilerl-2.8.1.dev0/agilerl/llm_envs/base.py +265 -0
  424. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/llm_envs/reasoning.py +3 -1
  425. agilerl-2.8.1.dev0/agilerl/llm_envs/search.py +120 -0
  426. agilerl-2.8.1.dev0/agilerl/llm_envs/sync_vec_env.py +325 -0
  427. agilerl-2.8.1.dev0/agilerl/llm_envs/token_observation.py +491 -0
  428. agilerl-2.8.1.dev0/agilerl/logger.py +262 -0
  429. agilerl-2.8.1.dev0/agilerl/metrics.py +393 -0
  430. agilerl-2.8.1.dev0/agilerl/models/__init__.py +82 -0
  431. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algo.py +33 -14
  432. agilerl-2.8.1.dev0/agilerl/models/algorithms/__init__.py +54 -0
  433. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/cispo.py +1 -1
  434. agilerl-2.8.1.dev0/agilerl/models/algorithms/cqn.py +41 -0
  435. agilerl-2.8.1.dev0/agilerl/models/algorithms/ddpg.py +48 -0
  436. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/dpo.py +1 -1
  437. agilerl-2.8.1.dev0/agilerl/models/algorithms/dqn.py +40 -0
  438. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/grpo.py +1 -1
  439. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/gspo.py +1 -1
  440. agilerl-2.8.1.dev0/agilerl/models/algorithms/ippo.py +50 -0
  441. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/llmppo.py +1 -1
  442. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/llmreinforce.py +1 -1
  443. agilerl-2.8.1.dev0/agilerl/models/algorithms/maddpg.py +49 -0
  444. agilerl-2.8.1.dev0/agilerl/models/algorithms/matd3.py +50 -0
  445. agilerl-2.8.1.dev0/agilerl/models/algorithms/neural_ts.py +43 -0
  446. agilerl-2.8.1.dev0/agilerl/models/algorithms/neural_ucb.py +43 -0
  447. agilerl-2.8.1.dev0/agilerl/models/algorithms/ppo.py +59 -0
  448. agilerl-2.8.1.dev0/agilerl/models/algorithms/rainbow_dqn.py +54 -0
  449. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/algorithms/sft.py +1 -1
  450. agilerl-2.8.1.dev0/agilerl/models/algorithms/td3.py +48 -0
  451. agilerl-2.8.1.dev0/agilerl/models/hpo.py +81 -0
  452. agilerl-2.8.1.dev0/agilerl/models/manifest.py +470 -0
  453. agilerl-2.8.1.dev0/agilerl/models/networks.py +515 -0
  454. agilerl-2.8.1.dev0/agilerl/models/training.py +255 -0
  455. agilerl-2.8.1.dev0/agilerl/modules/__init__.py +27 -0
  456. agilerl-2.8.1.dev0/agilerl/modules/base.py +918 -0
  457. agilerl-2.8.1.dev0/agilerl/modules/bert.py +780 -0
  458. agilerl-2.8.1.dev0/agilerl/modules/cnn.py +799 -0
  459. agilerl-2.8.1.dev0/agilerl/modules/configs.py +197 -0
  460. agilerl-2.8.1.dev0/agilerl/modules/custom_components.py +261 -0
  461. agilerl-2.8.1.dev0/agilerl/modules/dummy.py +75 -0
  462. agilerl-2.8.1.dev0/agilerl/modules/gpt.py +976 -0
  463. agilerl-2.8.1.dev0/agilerl/modules/lstm.py +306 -0
  464. agilerl-2.8.1.dev0/agilerl/modules/mlp.py +336 -0
  465. agilerl-2.8.1.dev0/agilerl/modules/multi_input.py +535 -0
  466. agilerl-2.8.1.dev0/agilerl/modules/resnet.py +283 -0
  467. agilerl-2.8.1.dev0/agilerl/modules/simba.py +222 -0
  468. agilerl-2.8.1.dev0/agilerl/networks/__init__.py +14 -0
  469. agilerl-2.8.1.dev0/agilerl/networks/actors.py +424 -0
  470. agilerl-2.8.1.dev0/agilerl/networks/base.py +567 -0
  471. agilerl-2.8.1.dev0/agilerl/networks/custom_modules.py +188 -0
  472. agilerl-2.8.1.dev0/agilerl/networks/distributions.py +358 -0
  473. agilerl-2.8.1.dev0/agilerl/networks/q_networks.py +443 -0
  474. agilerl-2.8.1.dev0/agilerl/networks/value_networks.py +129 -0
  475. agilerl-2.8.1.dev0/agilerl/population.py +738 -0
  476. agilerl-2.8.1.dev0/agilerl/rollouts/__init__.py +3 -0
  477. agilerl-2.8.1.dev0/agilerl/rollouts/on_policy.py +318 -0
  478. agilerl-2.8.1.dev0/agilerl/train.py +159 -0
  479. agilerl-2.8.1.dev0/agilerl/training/__init__.py +0 -0
  480. agilerl-2.8.1.dev0/agilerl/training/llm/__init__.py +11 -0
  481. agilerl-2.8.1.dev0/agilerl/training/llm/common.py +134 -0
  482. agilerl-2.8.1.dev0/agilerl/training/llm/multiturn.py +380 -0
  483. agilerl-2.8.1.dev0/agilerl/training/llm/preference.py +269 -0
  484. agilerl-2.8.1.dev0/agilerl/training/llm/reasoning.py +318 -0
  485. agilerl-2.8.1.dev0/agilerl/training/llm/sft.py +249 -0
  486. agilerl-2.8.1.dev0/agilerl/training/train_bandits.py +290 -0
  487. agilerl-2.8.1.dev0/agilerl/training/train_llm.py +28 -0
  488. agilerl-2.8.1.dev0/agilerl/training/train_multi_agent_off_policy.py +375 -0
  489. agilerl-2.8.1.dev0/agilerl/training/train_multi_agent_on_policy.py +394 -0
  490. agilerl-2.8.1.dev0/agilerl/training/train_off_policy.py +448 -0
  491. agilerl-2.8.1.dev0/agilerl/training/train_offline.py +314 -0
  492. agilerl-2.8.1.dev0/agilerl/training/train_on_policy.py +292 -0
  493. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/training/trainer.py +51 -26
  494. agilerl-2.8.1.dev0/agilerl/utils/__init__.py +0 -0
  495. agilerl-2.8.1.dev0/agilerl/utils/algo_utils.py +2235 -0
  496. agilerl-2.8.1.dev0/agilerl/utils/cache.py +129 -0
  497. agilerl-2.8.1.dev0/agilerl/utils/env_utils.py +260 -0
  498. agilerl-2.8.1.dev0/agilerl/utils/evolvable_networks.py +769 -0
  499. agilerl-2.8.1.dev0/agilerl/utils/ilql_utils.py +83 -0
  500. agilerl-2.8.1.dev0/agilerl/utils/llm_packing.py +276 -0
  501. agilerl-2.8.1.dev0/agilerl/utils/llm_utils.py +2167 -0
  502. agilerl-2.8.1.dev0/agilerl/utils/log_utils.py +138 -0
  503. agilerl-2.8.1.dev0/agilerl/utils/minari_utils.py +182 -0
  504. agilerl-2.8.1.dev0/agilerl/utils/population_utils.py +212 -0
  505. agilerl-2.8.1.dev0/agilerl/utils/ppo_value_head.py +279 -0
  506. agilerl-2.8.1.dev0/agilerl/utils/probe_envs.py +1283 -0
  507. agilerl-2.8.1.dev0/agilerl/utils/probe_envs_llm.py +154 -0
  508. agilerl-2.8.1.dev0/agilerl/utils/probe_envs_ma.py +2096 -0
  509. agilerl-2.8.1.dev0/agilerl/utils/sampling_utils.py +122 -0
  510. agilerl-2.8.1.dev0/agilerl/utils/torch_utils.py +621 -0
  511. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/utils/utils.py +1 -1
  512. agilerl-2.8.1.dev0/agilerl/vector/__init__.py +10 -0
  513. agilerl-2.8.1.dev0/agilerl/vector/dummy_vec_env.py +339 -0
  514. agilerl-2.8.1.dev0/agilerl/vector/pz_async_vec_env.py +1037 -0
  515. agilerl-2.8.1.dev0/agilerl/vector/pz_vec_env.py +217 -0
  516. agilerl-2.8.1.dev0/agilerl/wrappers/__init__.py +0 -0
  517. agilerl-2.8.1.dev0/agilerl/wrappers/agent.py +810 -0
  518. agilerl-2.8.1.dev0/agilerl/wrappers/learning.py +141 -0
  519. agilerl-2.8.1.dev0/agilerl/wrappers/llm_envs.py +19 -0
  520. agilerl-2.8.1.dev0/agilerl/wrappers/make_evolvable.py +1314 -0
  521. agilerl-2.8.1.dev0/agilerl/wrappers/pettingzoo_wrappers.py +128 -0
  522. agilerl-2.8.1.dev0/agilerl/wrappers/utils.py +67 -0
  523. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/pyproject.toml +3 -3
  524. agilerl-2.8.0.dev2/agilerl/training/train_llm.py +0 -1205
  525. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/LICENSE +0 -0
  526. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/__init__.py +0 -0
  527. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/bc_lm.py +0 -0
  528. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/cispo.py +0 -0
  529. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/__init__.py +0 -0
  530. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/llm_ops/__init__.py +0 -0
  531. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/llm_ops/fused_logprobs.py +0 -0
  532. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/llm_ops/fused_lora.py +0 -0
  533. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/llm_ops/fused_loss.py +0 -0
  534. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/llm_ops/vllm_colocate.py +0 -0
  535. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/core/optimizer_wrapper.py +0 -0
  536. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/algorithms/gspo.py +0 -0
  537. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/data/__init__.py +0 -0
  538. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/data/language_environment.py +0 -0
  539. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/data/rl_data.py +0 -0
  540. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/data/tokenizer.py +0 -0
  541. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/data/torch_datasets.py +0 -0
  542. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/hpo/__init__.py +0 -0
  543. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/llm_envs/__init__.py +0 -0
  544. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/llm_envs/base.py +0 -0
  545. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/llm_envs/search.py +0 -0
  546. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/llm_envs/sync_vec_env.py +0 -0
  547. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/llm_envs/token_observation.py +0 -0
  548. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/__init__.py +0 -0
  549. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/base.py +0 -0
  550. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/bert.py +0 -0
  551. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/cnn.py +0 -0
  552. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/configs.py +0 -0
  553. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/custom_components.py +0 -0
  554. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/dummy.py +0 -0
  555. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/gpt.py +0 -0
  556. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/lstm.py +0 -0
  557. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/mlp.py +0 -0
  558. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/multi_input.py +0 -0
  559. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/resnet.py +0 -0
  560. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/modules/simba.py +0 -0
  561. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/networks/__init__.py +0 -0
  562. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/networks/custom_modules.py +0 -0
  563. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/networks/distributions.py +0 -0
  564. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/rollouts/__init__.py +0 -0
  565. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/training/__init__.py +0 -0
  566. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/__init__.py +0 -0
  567. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/cache.py +0 -0
  568. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/ilql_utils.py +0 -0
  569. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/llm_packing.py +0 -0
  570. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/log_utils.py +0 -0
  571. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/ppo_value_head.py +0 -0
  572. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/probe_envs_llm.py +0 -0
  573. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/sampling_utils.py +0 -0
  574. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/utils/torch_utils.py +0 -0
  575. {agilerl-2.8.0.dev2/agilerl/wrappers → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix/agilerl/vector}/__init__.py +0 -0
  576. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/vector/pz_async_vec_env.py +0 -0
  577. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/vector/pz_vec_env.py +0 -0
  578. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/wrappers/llm_envs.py +0 -0
  579. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/wrappers/make_evolvable.py +0 -0
  580. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-arg-fix}/agilerl/wrappers/utils.py +0 -0
  581. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/README.md +0 -0
  582. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/__init__.py +0 -0
  583. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/core/registry.py +0 -0
  584. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/cqn.py +0 -0
  585. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/ddpg.py +0 -0
  586. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/dqn.py +0 -0
  587. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/dqn_rainbow.py +0 -0
  588. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/ilql.py +0 -0
  589. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/neural_ts_bandit.py +0 -0
  590. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/neural_ucb_bandit.py +0 -0
  591. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/algorithms/td3.py +0 -0
  592. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/__init__.py +0 -0
  593. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/data.py +0 -0
  594. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/replay_buffer.py +0 -0
  595. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/rollout_buffer.py +0 -0
  596. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/sampler.py +0 -0
  597. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/components/segment_tree.py +0 -0
  598. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/hpo/mutation.py +0 -0
  599. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/hpo/tournament.py +0 -0
  600. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/__init__.py +0 -0
  601. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/__init__.py +0 -0
  602. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/cqn.py +0 -0
  603. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/ddpg.py +0 -0
  604. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/dqn.py +0 -0
  605. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/ippo.py +0 -0
  606. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/maddpg.py +0 -0
  607. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/matd3.py +0 -0
  608. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/neural_ts.py +0 -0
  609. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/neural_ucb.py +0 -0
  610. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/ppo.py +0 -0
  611. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/rainbow_dqn.py +0 -0
  612. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/algorithms/td3.py +0 -0
  613. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/hpo.py +0 -0
  614. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/manifest.py +0 -0
  615. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/networks.py +0 -0
  616. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/models/training.py +0 -0
  617. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/networks/actors.py +0 -0
  618. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/networks/base.py +0 -0
  619. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/networks/q_networks.py +0 -0
  620. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/networks/value_networks.py +0 -0
  621. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/population.py +0 -0
  622. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/train.py +0 -0
  623. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_bandits.py +0 -0
  624. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_multi_agent_off_policy.py +0 -0
  625. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_multi_agent_on_policy.py +0 -0
  626. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_off_policy.py +0 -0
  627. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_offline.py +0 -0
  628. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/training/train_on_policy.py +0 -0
  629. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/algo_utils.py +0 -0
  630. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/env_utils.py +0 -0
  631. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/evolvable_networks.py +0 -0
  632. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/minari_utils.py +0 -0
  633. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/population_utils.py +0 -0
  634. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/probe_envs.py +0 -0
  635. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/utils/probe_envs_ma.py +0 -0
  636. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/vector/__init__.py +0 -0
  637. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/vector/dummy_vec_env.py +0 -0
  638. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/wrappers/agent.py +0 -0
  639. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/wrappers/learning.py +0 -0
  640. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0/.worktrees/feature-granular-reward-openenv}/agilerl/wrappers/pettingzoo_wrappers.py +0 -0
  641. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/llm_envs/preference.py +0 -0
  642. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/llm_envs/sft.py +0 -0
  643. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/models/env.py +0 -0
  644. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/protocols.py +0 -0
  645. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/typing.py +0 -0
  646. {agilerl-2.8.0.dev2 → agilerl-2.8.1.dev0}/agilerl/utils/trainer_utils.py +0 -0
@@ -164,3 +164,6 @@ AGENTS.md
164
164
 
165
165
  # Symlink for type-checking (repo root only)
166
166
  /agilerl/arena/
167
+
168
+ # Local Arena client backend switcher (dev tooling)
169
+ /set-local-client.sh
@@ -0,0 +1,330 @@
1
+ <p align="center">
2
+ <img src=https://user-images.githubusercontent.com/47857277/222710068-e09a4e3c-368c-458a-9e01-b68674806887.png height="120">
3
+ </p>
4
+ <p align="center"><b>Reinforcement learning streamlined.</b><br>Easier and faster reinforcement learning with RLOps. Visit our <a href="https://agilerl.com">website</a>. View <a href="https://docs.agilerl.com">documentation</a>.<br>Join the <a href="https://discord.gg/eB8HyTA2ux">Discord Server</a> for questions, help and collaboration.</p>
5
+
6
+ <div align="center">
7
+
8
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
9
+ [![Documentation Status](https://readthedocs.org/projects/agilerl/badge/?version=latest)](https://docs.agilerl.com/en/latest/?badge=latest)
10
+ [![Coverage](https://codecov.io/gh/AgileRL/AgileRL/graph/badge.svg?token=20SOBJFVYL)](https://codecov.io/gh/AgileRL/AgileRL)
11
+ [![Linux](https://github.com/AgileRL/AgileRL/actions/workflows/linux-tests.yml/badge.svg)](https://github.com/AgileRL/AgileRL/actions/workflows/linux-tests.yml)
12
+ [![macOS](https://github.com/AgileRL/AgileRL/actions/workflows/macos-tests.yml/badge.svg)](https://github.com/AgileRL/AgileRL/actions/workflows/macos-tests.yml)
13
+ [![Windows](https://github.com/AgileRL/AgileRL/actions/workflows/windows-tests.yml/badge.svg)](https://github.com/AgileRL/AgileRL/actions/workflows/windows-tests.yml)
14
+ [![Downloads](https://static.pepy.tech/badge/agilerl)](https://pypi.python.org/pypi/agilerl/)
15
+ [![Discord](https://dcbadge.limes.pink/api/server/https://discord.gg/eB8HyTA2ux?style=flat)](https://discord.gg/eB8HyTA2ux)
16
+ [![Arena](./.github/badges/arena-github-badge.svg)](https://arena.agilerl.com)
17
+ <br>
18
+ <h3><i>🚀 <b>Train super-fast for free on <a href="https://arena.agilerl.com">Arena</a>, the RLOps platform from AgileRL 🚀</b></i></h3>
19
+ </div>
20
+ <br>
21
+
22
+ AgileRL is a Deep Reinforcement Learning library focused on improving development by introducing RLOps - MLOps for reinforcement learning.
23
+
24
+ This library is initially focused on reducing the time taken for training models and hyperparameter optimization (HPO) by pioneering [evolutionary HPO techniques](https://docs.agilerl.com/en/latest/evo_hyperparam_opt/index.html) for reinforcement learning.<br>
25
+ Evolutionary HPO has been shown to drastically reduce overall training times by automatically converging on optimal hyperparameters, without requiring numerous training runs.<br>
26
+ We are constantly adding more algorithms and features. AgileRL already includes state-of-the-art evolvable [LLM fine-tuning](https://docs.agilerl.com/en/latest/llm_finetuning/index.html), [on-policy](https://docs.agilerl.com/en/latest/on_policy/index.html), [off-policy](https://docs.agilerl.com/en/latest/off_policy/index.html), [offline](https://docs.agilerl.com/en/latest/offline_training/index.html), [multi-agent](https://docs.agilerl.com/en/latest/multi_agent_training/index.html) and [contextual multi-armed bandit](https://docs.agilerl.com/en/latest/bandits/index.html) reinforcement learning algorithms with [distributed training](https://docs.agilerl.com/en/latest/distributed_training/index.html).
27
+
28
+ <p align="center">
29
+ <img src=https://user-images.githubusercontent.com/47857277/236407686-21363eb3-ffcf-419f-b019-0be4ddf1ed4a.gif width="100%" max-width="900">
30
+ </p>
31
+ <p align="center">AgileRL offers 10x faster hyperparameter optimization than SOTA.</p>
32
+
33
+ ## Table of Contents
34
+ * [Get Started](#get-started)
35
+ * [Benchmarks](#benchmarks)
36
+ * [Tutorials](#tutorials)
37
+ * [Algorithms implemented](#evolvable-algorithms-more-coming-soon)
38
+ * [Train an agent](#train-an-agent-to-beat-a-gym-environment)
39
+ * [Citing AgileRL](#citing-agilerl)
40
+
41
+ ## Get Started
42
+
43
+ To see the full AgileRL documentation, including tutorials, visit our [documentation site](https://docs.agilerl.com/). To ask questions and get help, collaborate, or discuss anything related to reinforcement learning, join the [AgileRL Discord Server](https://discord.gg/eB8HyTA2ux).
44
+
45
+ Install as a package with pip:
46
+ ```bash
47
+ pip install agilerl
48
+ ```
49
+ Or install in development mode:
50
+ ```bash
51
+ git clone https://github.com/AgileRL/AgileRL.git && cd AgileRL
52
+ pip install -e .
53
+ ```
54
+
55
+ If you wish to install all additional dependencies please specify `[all]` or if you want to install a specific family of dependencies specify that family directly. At present, we have just one family, `[llm]`, which contains the dependencies related to our LLM RFT algorithms (datasets, deepspeed, peft, transformers, vllm).
56
+
57
+ ```bash
58
+ pip install agilerl[all]
59
+ ```
60
+ Or in development mode:
61
+ ```bash
62
+ pip install -e ".[all]"
63
+ ```
64
+
65
+ To install the ``nightly`` version of AgileRL with the latest features, use:
66
+
67
+ ```bash
68
+ pip install git+https://github.com/AgileRL/AgileRL.git@nightly
69
+ ```
70
+
71
+ ## Benchmarks
72
+
73
+ ### LLM Fine-tuning benchmarks
74
+
75
+ AgileRL's multi-turn LLM training enables state-of-the-art performance on long-horizon tasks with small models. In the following example, AgileRL's CISPO was benchmarked against ART and TRL on the <a href="https://github.com/axon-rl/gem">GEM</a> Sudoku Hard task. This is a difficult multi-turn problem, which requires a context length of 32k tokens and up to 50 turns per rollout. The sync AgileRL run is a single agent using the AgileRL framework. The async and HPO runs were performed on <a href="https://arena.agilerl.com">Arena</a>, AgileRL's RLOps platform. All runs used the same starting hyperparameters. AgileRL runs were run on A100 40GB nodes, whereas ART and TRL required A100 80GB nodes due to a lack of optimizations. AgileRL runs significantly outperformed those using the ART and TRL frameworks.
76
+
77
+ <p align="center">
78
+ <img src="https://raw.githubusercontent.com/AgileRL/AgileRL/main/docs/_static/multi_turn_llm_benchmarks.png" min-width="100%" width="700">
79
+ </p>
80
+
81
+
82
+ ### Classic RL benchmarks
83
+
84
+ Reinforcement learning algorithms and libraries are usually benchmarked once the optimal hyperparameters for training are known, but it often takes hundreds or thousands of experiments to discover these. This is unrealistic and does not reflect the true, total time taken for training. What if we could remove the need to conduct all these prior experiments?
85
+
86
+ In the charts below, a single AgileRL run, which automatically tunes hyperparameters, is benchmarked against Optuna's multiple training runs traditionally required for hyperparameter optimization, demonstrating the real time savings possible. Global steps is the sum of every step taken by any agent in the environment, including across an entire population.
87
+
88
+ <p align="center">
89
+ <img src=https://user-images.githubusercontent.com/47857277/227481592-27a9688f-7c0a-4655-ab32-90d659a71c69.png min-width="100%" width="600">
90
+ </p>
91
+ <p align="center">AgileRL offers an order of magnitude speed up in hyperparameter optimization vs popular reinforcement learning training frameworks combined with Optuna. Remove the need for multiple training runs and save yourself hours.</p>
92
+
93
+ AgileRL also supports multi-agent reinforcement learning using the Petting Zoo-style (parallel API). The charts below highlight the performance of our MADDPG and MATD3 algorithms with evolutionary hyper-parameter optimisation (HPO), benchmarked against epymarl's MADDPG algorithm with grid-search HPO for the simple speaker listener and simple spread environments.
94
+
95
+ <p align="center">
96
+ <img src=https://github-production-user-asset-6210df.s3.amazonaws.com/118982716/264712154-4965ea5f-b777-423c-989b-e4db86eda3bd.png min-width="100%" width="700">
97
+ </p>
98
+
99
+ ## Tutorials
100
+
101
+ We are constantly updating our tutorials to showcase the latest features of AgileRL and how users can leverage our evolutionary HPO to achieve 10x faster hyperparameter optimization. Please see the available tutorials below.
102
+
103
+ | Tutorial Type | Description | Tutorials |
104
+ |---------------|-------------|-----------|
105
+ | [Single-agent tasks](https://docs.agilerl.com/en/latest/tutorials/gymnasium/index.html) | Guides for training both on and off-policy agents to beat a variety of Gymnasium environments. | [PPO - Acrobot](https://docs.agilerl.com/en/latest/tutorials/gymnasium/agilerl_ppo_tutorial.html) <br> [TD3 - Lunar Lander](https://docs.agilerl.com/en/latest/tutorials/gymnasium/agilerl_td3_tutorial.html) <br> [Rainbow DQN - CartPole](https://docs.agilerl.com/en/latest/tutorials/gymnasium/agilerl_rainbow_dqn_tutorial.html) <br> [Recurrent PPO - Masked Pendulum](https://docs.agilerl.com/en/latest/tutorials/gymnasium/agilerl_recurrent_ppo_tutorial.html) |
106
+ | [Multi-agent tasks](https://docs.agilerl.com/en/latest/tutorials/pettingzoo/index.html) | Use of PettingZoo environments such as training DQN to play Connect Four with curriculum learning and self-play, and for multi-agent tasks in MPE environments. | [DQN - Connect Four](https://docs.agilerl.com/en/latest/tutorials/pettingzoo/dqn.html) <br> [MADDPG - Space Invaders](https://docs.agilerl.com/en/latest/tutorials/pettingzoo/maddpg.html) <br> [MATD3 - Speaker Listener](https://docs.agilerl.com/en/latest/tutorials/pettingzoo/matd3.html) |
107
+ | [Hierarchical curriculum learning](https://docs.agilerl.com/en/latest/tutorials/skills/index.html) | Shows how to teach agents Skills and combine them to achieve an end goal. | [PPO - Lunar Lander](https://docs.agilerl.com/en/latest/tutorials/skills/index.html) |
108
+ | [Contextual multi-arm bandits](https://docs.agilerl.com/en/latest/tutorials/bandits/index.html) | Learn to make the correct decision in environments that only have one timestep. | [NeuralUCB - Iris Dataset](https://docs.agilerl.com/en/latest/tutorials/bandits/agilerl_neural_ucb_tutorial.html) <br> [NeuralTS - PenDigits](https://docs.agilerl.com/en/latest/tutorials/bandits/agilerl_neural_ts_tutorial.html) |
109
+ | [Custom Modules & Networks](https://docs.agilerl.com/en/latest/tutorials/custom_networks/index.html) | Learn how to create custom evolvable modules and networks for RL algorithms. | [Dueling Distributional Q Network](https://docs.agilerl.com/en/latest/tutorials/custom_networks/agilerl_rainbow_tutorial.html) <br> [EvolvableSimBa](https://docs.agilerl.com/en/latest/tutorials/custom_networks/agilerl_simba_tutorial.html) |
110
+ | [LLM Finetuning](https://docs.agilerl.com/en/latest/tutorials/llm_finetuning/index.html) | Learn how to finetune an LLM using AgileRL. | [GRPO](https://docs.agilerl.com/en/latest/tutorials/llm_finetuning/grpo_finetuning.html) <br> [GRPO with HPO](https://docs.agilerl.com/en/latest/tutorials/llm_finetuning/grpo_hpo.html) <br> [SFT & DPO](https://docs.agilerl.com/en/latest/tutorials/llm_finetuning/sft_dpo_finetuning.html) <br> [Multi-turn LLMPPO, LLMREINFORCE & GRPO](https://docs.agilerl.com/en/latest/tutorials/llm_finetuning/multiturn_grpo_ppo.html) |
111
+
112
+ ## Evolvable algorithms (more coming soon!)
113
+
114
+ ### Single-agent algorithms
115
+
116
+ | RL | Algorithm |
117
+ | ---------- | --------- |
118
+ | [On-Policy](https://docs.agilerl.com/en/latest/on_policy/index.html) | [Proximal Policy Optimization (PPO)](https://docs.agilerl.com/en/latest/api/algorithms/ppo.html) |
119
+ | [Off-Policy](https://docs.agilerl.com/en/latest/off_policy/index.html) | [Deep Q Learning (DQN)](https://docs.agilerl.com/en/latest/api/algorithms/dqn.html) <br> [Rainbow DQN](https://docs.agilerl.com/en/latest/api/algorithms/dqn_rainbow.html) <br> [Deep Deterministic Policy Gradient (DDPG)](https://docs.agilerl.com/en/latest/api/algorithms/ddpg.html) <br> [Twin Delayed Deep Deterministic Policy Gradient (TD3)](https://docs.agilerl.com/en/latest/api/algorithms/td3.html) |
120
+ | [Offline](https://docs.agilerl.com/en/latest/offline_training/index.html) | [Conservative Q-Learning (CQL)](https://docs.agilerl.com/en/latest/api/algorithms/cql.html) <br> [Implicit Language Q-Learning (ILQL)](https://docs.agilerl.com/en/latest/api/algorithms/ilql.html) |
121
+
122
+ ### Multi-agent algorithms
123
+
124
+ | RL | Algorithm |
125
+ | ---------- | --------- |
126
+ | [Multi-agent](https://docs.agilerl.com/en/latest/multi_agent_training/index.html) | [Multi-Agent Deep Deterministic Policy Gradient (MADDPG)](https://docs.agilerl.com/en/latest/api/algorithms/maddpg.html) <br> [Multi-Agent Twin-Delayed Deep Deterministic Policy Gradient (MATD3)](https://docs.agilerl.com/en/latest/api/algorithms/matd3.html) <br> [Independent Proximal Policy Optimization (IPPO)](https://docs.agilerl.com/en/latest/api/algorithms/ippo.html)|
127
+
128
+ ### Contextual multi-armed bandit algorithms
129
+
130
+ | RL | Algorithm |
131
+ | ---------- | --------- |
132
+ | [Bandits](https://docs.agilerl.com/en/latest/bandits/index.html) | [Neural Contextual Bandits with UCB-based Exploration (NeuralUCB)](https://docs.agilerl.com/en/latest/api/algorithms/neural_ucb.html) <br> [Neural Contextual Bandits with Thompson Sampling (NeuralTS)](https://docs.agilerl.com/en/latest/api/algorithms/neural_ts.html) |
133
+
134
+ ### LLM Fine-tuning Algorithms
135
+
136
+ | Type | Algorithm |
137
+ | ------------ | --------- |
138
+ | [On-Policy RL](https://docs.agilerl.com/en/latest/llm_finetuning/index.html) | [Group Relative Policy Optimization (GRPO)](https://docs.agilerl.com/en/latest/api/algorithms/grpo.html) <br> [Clipped IS-weight Policy Optimization (CISPO)](https://docs.agilerl.com/en/latest/api/algorithms/cispo.html) <br> [Group Sequence Policy Optimization (GSPO)](https://docs.agilerl.com/en/latest/api/algorithms/gspo.html) <br> [LLM Proximal Policy Optimization (LLM PPO)](https://docs.agilerl.com/en/latest/api/algorithms/llmppo.html) <br> [LLM REINFORCE](https://docs.agilerl.com/en/latest/api/algorithms/llmreinforce.html) |
139
+ | [Preference Optimization](https://docs.agilerl.com/en/latest/llm_finetuning/index.html) | [Direct Preference Optimization (DPO)](https://docs.agilerl.com/en/latest/api/algorithms/dpo.html) |
140
+ | [Supervised Fine-Tuning](https://docs.agilerl.com/en/latest/llm_finetuning/index.html) | [Supervised Fine-Tuning (SFT)](https://docs.agilerl.com/en/latest/api/algorithms/sft.html) |
141
+
142
+
143
+ ## Train an Agent to Beat a Gym Environment
144
+
145
+ Before starting training, there are some meta-hyperparameters and settings that must be set. These are defined in <code>INIT_HP</code>, for general parameters, and <code>MUTATION_PARAMS</code>, which define the evolutionary probabilities, and <code>NET_CONFIG</code>, which defines the network architecture. For example:
146
+
147
+ <details>
148
+ <summary>Basic Hyperparameters</summary>
149
+
150
+ ```python
151
+ INIT_HP = {
152
+ 'ENV_NAME': 'LunarLander-v3', # Gym environment name
153
+ 'ALGO': 'DQN', # Algorithm
154
+ 'DOUBLE': True, # Use double Q-learning
155
+ 'CHANNELS_LAST': False, # Swap image channels dimension from last to first [H, W, C] -> [C, H, W]
156
+ 'BATCH_SIZE': 256, # Batch size
157
+ 'LR': 1e-3, # Learning rate
158
+ 'MAX_STEPS': 1_000_000, # Max no. steps
159
+ 'TARGET_SCORE': 200., # Early training stop at avg score of last 100 episodes
160
+ 'GAMMA': 0.99, # Discount factor
161
+ 'MEMORY_SIZE': 10000, # Max memory buffer size
162
+ 'LEARN_STEP': 1, # Learning frequency
163
+ 'TAU': 1e-3, # For soft update of target parameters
164
+ 'TOURN_SIZE': 2, # Tournament size
165
+ 'ELITISM': True, # Elitism in tournament selection
166
+ 'POP_SIZE': 6, # Population size
167
+ 'EVO_STEPS': 10_000, # Evolution frequency
168
+ 'EVAL_STEPS': None, # Evaluation steps
169
+ 'EVAL_LOOP': 1, # Evaluation episodes
170
+ 'LEARNING_DELAY': 1000, # Steps before starting learning
171
+ 'WANDB': True, # Log with Weights and Biases
172
+ }
173
+ ```
174
+
175
+ </details>
176
+
177
+ <details>
178
+ <summary>Mutation Hyperparameters</summary>
179
+
180
+ ```python
181
+ MUTATION_PARAMS = {
182
+ # Relative probabilities
183
+ 'NO_MUT': 0.4, # No mutation
184
+ 'ARCH_MUT': 0.2, # Architecture mutation
185
+ 'NEW_LAYER': 0.2, # New layer mutation
186
+ 'PARAMS_MUT': 0.2, # Network parameters mutation
187
+ 'ACT_MUT': 0, # Activation layer mutation
188
+ 'RL_HP_MUT': 0.2, # Learning HP mutation
189
+ 'MUT_SD': 0.1, # Mutation strength
190
+ 'RAND_SEED': 1, # Random seed
191
+ }
192
+ ```
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary>Basic Network Configuration</summary>
198
+
199
+ ```python
200
+ NET_CONFIG = {
201
+ 'latent_dim': 16
202
+ 'encoder_config': {
203
+ 'hidden_size': [32] # Observation encoder configuration
204
+ }
205
+ 'head_config': {
206
+ 'hidden_size': [32] # Network head configuration
207
+ }
208
+
209
+ }
210
+ ```
211
+
212
+ </details>
213
+
214
+ ### Creating a Population of Agents
215
+
216
+ First, use <code>utils.utils.create_population</code> to create a list of agents - our population that will evolve and mutate to the optimal hyperparameters.
217
+
218
+ <details>
219
+ <summary>Population Creation Example</summary>
220
+
221
+ ```python
222
+ import torch
223
+ from agilerl.utils.utils import (
224
+ make_vect_envs,
225
+ create_population,
226
+ observation_space_channels_to_first
227
+ )
228
+
229
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
230
+
231
+ num_envs = 16
232
+ env = make_vect_envs(env_name=INIT_HP['ENV_NAME'], num_envs=num_envs)
233
+
234
+ observation_space = env.single_observation_space
235
+ action_space = env.single_action_space
236
+ if INIT_HP['CHANNELS_LAST']:
237
+ observation_space = observation_space_channels_to_first(observation_space)
238
+
239
+ agent_pop = create_population(
240
+ algo=INIT_HP['ALGO'], # Algorithm
241
+ observation_space=observation_space, # Observation space
242
+ action_space=action_space, # Action space
243
+ net_config=NET_CONFIG, # Network configuration
244
+ INIT_HP=INIT_HP, # Initial hyperparameters
245
+ population_size=INIT_HP['POP_SIZE'], # Population size
246
+ num_envs=num_envs, # Number of vectorized environments
247
+ device=device
248
+ )
249
+ ```
250
+
251
+ </details>
252
+
253
+ ### Initializing Evolutionary HPO
254
+
255
+ Next, create the tournament, mutations and experience replay buffer objects that allow agents to share memory and efficiently perform evolutionary HPO.
256
+
257
+ <details>
258
+ <summary>Mutations and Tournament Selection Example</summary>
259
+
260
+ ```python
261
+ from agilerl.components.replay_buffer import ReplayBuffer
262
+ from agilerl.hpo.tournament import TournamentSelection
263
+ from agilerl.hpo.mutation import Mutations
264
+
265
+ memory = ReplayBuffer(
266
+ max_size=INIT_HP['MEMORY_SIZE'], # Max replay buffer size
267
+ device=device,
268
+ )
269
+
270
+ tournament = TournamentSelection(
271
+ tournament_size=INIT_HP['TOURN_SIZE'], # Tournament selection size
272
+ elitism=INIT_HP['ELITISM'], # Elitism in tournament selection
273
+ population_size=INIT_HP['POP_SIZE'], # Population size
274
+ eval_loop=INIT_HP['EVAL_LOOP'], # Evaluate using last N fitness scores
275
+ )
276
+
277
+ mutations = Mutations(
278
+ no_mutation=MUTATION_PARAMS['NO_MUT'], # No mutation
279
+ architecture=MUTATION_PARAMS['ARCH_MUT'], # Architecture mutation
280
+ new_layer_prob=MUTATION_PARAMS['NEW_LAYER'], # New layer mutation
281
+ parameters=MUTATION_PARAMS['PARAMS_MUT'], # Network parameters mutation
282
+ activation=MUTATION_PARAMS['ACT_MUT'], # Activation layer mutation
283
+ rl_hp=MUTATION_PARAMS['RL_HP_MUT'], # Learning HP mutation
284
+ mutation_sd=MUTATION_PARAMS['MUT_SD'], # Mutation strength
285
+ rand_seed=MUTATION_PARAMS['RAND_SEED'], # Random seed
286
+ device=device,
287
+ )
288
+ ```
289
+
290
+ </details>
291
+
292
+ ### Train A Population of Agents
293
+
294
+ The easiest training loop implementation is to use our <code>train_off_policy()</code> function. It requires the <code>agent</code> have methods <code>get_action()</code> and <code>learn().</code>
295
+
296
+
297
+ ```python
298
+ from agilerl.training.train_off_policy import train_off_policy
299
+
300
+ trained_pop, pop_fitnesses = train_off_policy(
301
+ env=env, # Gym-style environment
302
+ env_name=INIT_HP['ENV_NAME'], # Environment name
303
+ algo=INIT_HP['ALGO'], # Algorithm
304
+ pop=agent_pop, # Population of agents
305
+ memory=memory, # Replay buffer
306
+ swap_channels=INIT_HP['CHANNELS_LAST'], # Swap image channel from last to first
307
+ max_steps=INIT_HP["MAX_STEPS"], # Max number of training steps
308
+ evo_steps=INIT_HP['EVO_STEPS'], # Evolution frequency
309
+ eval_steps=INIT_HP["EVAL_STEPS"], # Number of steps in evaluation episode
310
+ eval_loop=INIT_HP["EVAL_LOOP"], # Number of evaluation episodes
311
+ learning_delay=INIT_HP['LEARNING_DELAY'], # Steps before starting learning
312
+ target=INIT_HP['TARGET_SCORE'], # Target score for early stopping
313
+ tournament=tournament, # Tournament selection object
314
+ mutation=mutations, # Mutations object
315
+ wb=INIT_HP['WANDB'], # Weights and Biases tracking
316
+ )
317
+
318
+ ```
319
+
320
+ ## Citing AgileRL
321
+
322
+ If you use AgileRL in your work, please cite the repository:
323
+ ```bibtex
324
+ @software{Ustaran-Anderegg_AgileRL,
325
+ author = {Ustaran-Anderegg, Nicholas and Pratt, Michael and Sabal-Bermudez, Jaime},
326
+ license = {Apache-2.0},
327
+ title = {{AgileRL}},
328
+ url = {https://github.com/AgileRL/AgileRL}
329
+ }
330
+ ```
@@ -0,0 +1,34 @@
1
+ from importlib.metadata import PackageNotFoundError, metadata, version
2
+
3
+ from packaging.markers import default_environment
4
+ from packaging.requirements import Requirement
5
+
6
+
7
+ def get_extra_dependencies(package: str, extra: str) -> list[str]:
8
+ requires = metadata(package).get_all("Requires-Dist") or []
9
+ marker_environment = default_environment()
10
+ marker_environment["extra"] = extra
11
+ deps = []
12
+ for req in requires:
13
+ r = Requirement(req)
14
+ if r.marker and r.marker.evaluate(marker_environment):
15
+ deps.append(r.name)
16
+ return deps
17
+
18
+
19
+ LLM_PACKAGES = get_extra_dependencies("agilerl", "llm")
20
+
21
+
22
+ def _is_distribution_installed(distribution: str) -> bool:
23
+ try:
24
+ version(distribution)
25
+ except PackageNotFoundError:
26
+ return False
27
+ return True
28
+
29
+
30
+ # Use these flags for lazy import checks
31
+ HAS_LLM_DEPENDENCIES = all(_is_distribution_installed(pkg) for pkg in LLM_PACKAGES)
32
+ HAS_LIGER_KERNEL = _is_distribution_installed("liger-kernel")
33
+ HAS_VLLM = _is_distribution_installed("vllm")
34
+ HAS_DEEPSPEED = _is_distribution_installed("deepspeed")