class_docstr: Coordinator of n (possibly remote) Learner workers.
  
  Each Learner worker has a copy of the RLModule, the loss function(s), and
  one or more optimizers.
docstr: Loads the state of the LearnerGroup.
  
  Args:
      path: The path to load the state from.
docstr_tok: ["Loads","the","state","of","the","LearnerGroup",".","Args",":","path",":","The","path","to","load","the","state","from","."]
code: def load_state(self, path: str) -> None:
      """Loads the state of the LearnerGroup.
  
      Args:
          path: The path to load the state from.
      """
      path = str(self._resolve_checkpoint_path(path))
  
      if self.is_local:
          self._learner.load_state(path)
      else:
          assert (
              len(self._workers)
              == self._worker_manager.num_healthy_actors()
          )
          head_node_ip = ray.util.get_node_ip_address()
          workers = self._worker_manager.healthy_actor_ids()
  
          def _load_state(w):
              # doing imports here since they might not be imported on the worker
              import ray
              import tempfile
  
              worker_node_ip = ray.util.get_node_ip_address()
              # if the worker is on the same node as the head, load the checkpoint
              # directly from the path otherwise sync the checkpoint from the head
              # to the worker and load it from there
              if worker_node_ip == head_node_ip:
                  w.load_state(path)
              else:
                  with tempfile.TemporaryDirectory() as temp_dir:
                      sync_dir_between_nodes(
                          head_node_ip, path, worker_node_ip, temp_dir
                      )
                      w.load_state(temp_dir)
  
          self._worker_manager.foreach_actor(
              _load_state, remote_actor_ids=workers
          )
  
imports: from collections import defaultdict, Counter
  from functools import partial
  import pathlib
  from typing import Any, Callable, Dict, List, Optional, Set, Type, Union
  import uuid
  import ray
  from ray.rllib.algorithms.algorithm_config import AlgorithmConfig
  from ray.rllib.core.learner.learner import Learner
  from ray.rllib.core.learner.reduce_result_dict_fn import _reduce_mean_results
  from ray.rllib.core.rl_module.rl_module import SingleAgentRLModuleSpec, RLMODULE_STATE_DIR_NAME
  from ray.rllib.policy.sample_batch import MultiAgentBatch
  from ray.rllib.utils.actor_manager import FaultTolerantActorManager
  from ray.rllib.utils.deprecation import Deprecated, deprecation_warning
  from ray.rllib.utils.minibatch_utils import ShardBatchIterator, ShardEpisodesIterator
  from ray.rllib.utils.numpy import convert_to_numpy
  from ray.rllib.utils.typing import EpisodeType, ModuleID, ResultDict, RLModuleSpec, ShouldModuleBeUpdatedFn
  from ray.train._internal.backend_executor import BackendExecutor
  from ray.tune.utils.file_transfer import sync_dir_between_nodes
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 20 for calling the LearnerGroup obj's underlying member method code with example usage: obj.load_state(path) without return types