code: def __init__(
      self,
      actor_num_params: int,
      critic_num_params: int,
      initial_model_num_params: int,
      reward_model_num_params: int,
  ) -> None:
      super().__init__()
      self.world_size = get_world_size()
      self.actor_num_params = actor_num_params
      self.critic_num_params = critic_num_params
      self.initial_model_num_params = initial_model_num_params
      self.reward_model_num_params = reward_model_num_params
  
      self.batch_timer = Timer()
      self.send_timer = Timer()
      self.make_experience_timer = Timer()
      self.total_samples: int = 0
      self.make_experience_flop: int = 0
  
      print_rank_0(
          f"ExperienceMaker actor: {actor_num_params/1024**3:.2f}B, critic: {critic_num_params/1024**3:.2f}B, initial model: {initial_model_num_params/1024**3:.2f}B, reward model: {reward_model_num_params/1024**3:.2f}B, world size: {self.world_size}"
      )
  
imports: from time import time
  from typing import Optional
  import torch
  import torch.distributed
  from coati.experience_maker import Experience
  from .base import MakerCallback, TrainerCallback
label_desc: Use image node_id 1 to create a new ExperienceMakerPerformanceEvaluator object from inherited base classes: MakerCallback with example: obj = ExperienceMakerPerformanceEvaluator(actor_num_params, critic_num_params, initial_model_num_params, reward_model_num_params)