# {py:mod}`evorl.algorithms.erl.erl_workflow` ```{py:module} evorl.algorithms.erl.erl_workflow ``` ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow :parser: autodoc2_docstrings_parser :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ERLTrainMetric ` - * - {py:obj}`ERLWorkflowBase ` - * - {py:obj}`WorkflowMetric ` - ```` ### API `````{py:class} ERLTrainMetric :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric Bases: {py:obj}`evorl.metrics.MetricBase` ````{py:attribute} ec_info :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.ec_info :type: evorl.types.PyTreeDict :value: > 'metric_field(...)' ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.ec_info :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} pop_episode_lengths :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.pop_episode_lengths :type: chex.Array | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.pop_episode_lengths :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} pop_episode_returns :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.pop_episode_returns :type: chex.Array | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.pop_episode_returns :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} rb_size :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rb_size :type: chex.Array | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rb_size :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} rl_episode_lengths :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_episode_lengths :type: chex.Array | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_episode_lengths :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} rl_episode_returns :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_episode_returns :type: chex.Array | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_episode_returns :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} rl_metrics :canonical: evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_metrics :type: evorl.metrics.MetricBase | None :value: > None ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLTrainMetric.rl_metrics :parser: autodoc2_docstrings_parser ``` ```` ````` `````{py:class} ERLWorkflowBase(*, env: evorl.envs.Env, agent: evorl.agent.Agent, agent_state_vmap_axes: evorl.agent.AgentStateAxis, optimizer: optax.GradientTransformation, ec_optimizer: evorl.ec.optimizers.EvoOptimizer, ec_collector: evorl.evaluators.EpisodeCollector, rl_collector: evorl.evaluators.EpisodeCollector, evaluator: evorl.evaluators.Evaluator, replay_buffer: evorl.replay_buffers.AbstractReplayBuffer, config: omegaconf.DictConfig) :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase Bases: {py:obj}`evorl.workflows.Workflow` ````{py:method} build_from_config(config: omegaconf.DictConfig, enable_multi_devices: bool = False, enable_jit: bool = True) -> typing_extensions.Self :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.build_from_config :classmethod: ```` ````{py:method} enable_jit() -> None :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.enable_jit :classmethod: ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.enable_jit :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} evaluate(state: evorl.types.State) -> tuple[evorl.metrics.MetricBase, evorl.types.State] :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.evaluate :abstractmethod: ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.evaluate :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} setup(key: chex.PRNGKey) -> evorl.types.State :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.setup ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.setup :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} warmup_step(state: evorl.types.State) -> tuple[evorl.metrics.MetricBase, evorl.types.State] :canonical: evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.warmup_step :abstractmethod: ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.ERLWorkflowBase.warmup_step :parser: autodoc2_docstrings_parser ``` ```` ````` `````{py:class} WorkflowMetric :canonical: evorl.algorithms.erl.erl_workflow.WorkflowMetric Bases: {py:obj}`evorl.metrics.MetricBase` ````{py:attribute} iterations :canonical: evorl.algorithms.erl.erl_workflow.WorkflowMetric.iterations :type: chex.Array :value: > 'zeros(...)' ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.WorkflowMetric.iterations :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} rl_sampled_timesteps :canonical: evorl.algorithms.erl.erl_workflow.WorkflowMetric.rl_sampled_timesteps :type: chex.Array :value: > 'zeros(...)' ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.WorkflowMetric.rl_sampled_timesteps :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} sampled_episodes :canonical: evorl.algorithms.erl.erl_workflow.WorkflowMetric.sampled_episodes :type: chex.Array :value: > 'zeros(...)' ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.WorkflowMetric.sampled_episodes :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} sampled_timesteps :canonical: evorl.algorithms.erl.erl_workflow.WorkflowMetric.sampled_timesteps :type: chex.Array :value: > 'zeros(...)' ```{autodoc2-docstring} evorl.algorithms.erl.erl_workflow.WorkflowMetric.sampled_timesteps :parser: autodoc2_docstrings_parser ``` ```` `````