class_docstr: Runtime metrics for a PhysicalOperator.
  
  Metrics are updated dynamically during the execution of the Dataset.
  This class can be used for either observablity or scheduling purposes.
  
  DO NOT modify the fields of this class directly. Instead, use the provided
  callback methods.
class_docstr_tok: ["Runtime","metrics","for","a","PhysicalOperator",".","Metrics","are","updated","dynamically","during","the","execution","of","the","Dataset",".","This","class","can","be","used","for","either","observablity","or","scheduling","purposes",".","DO","NOT","modify","the","fields","of","this","class","directly",".","Instead",",","use","the","provided","callback","methods","."]
docstr: Average size difference in bytes of input ref bundles and output ref
  bundles per task.
docstr_tok: ["Average","size","difference","in","bytes","of","input","ref","bundles","and","output","ref","bundles","per","task","."]
code: def average_bytes_change_per_task(self) -> Optional[float]:
      """Average size difference in bytes of input ref bundles and output ref
      bundles per task."""
      if (
          self.average_bytes_inputs_per_task is None
          or self.average_bytes_outputs_per_task is None
      ):
          return None
  
      return (
          self.average_bytes_outputs_per_task
          - self.average_bytes_inputs_per_task
      )
  
imports: from dataclasses import dataclass, field, fields
  from typing import TYPE_CHECKING, Any, Dict, Optional
  import ray
  from ray.data._internal.execution.interfaces.ref_bundle import RefBundle
  from ray.data._internal.memory_tracing import trace_allocation
label_desc: Use image node_id 8 for calling the OpRuntimeMetrics obj's underlying member method code with example usage: obj.average_bytes_change_per_task() and returns: unknown, None