code: def test_profiler():
      gc_ipu_info = MockGcIpuInfo()
      ipu_profiler = IPUStats(pid=CURRENT_PID, gc_ipu_info=gc_ipu_info)
  
      metrics = {
          "ipu.1.user process id": CURRENT_PID,
          "ipu.1.average board temp (C)": 30,
          "ipu.1.average die temp (C)": 39,
          "ipu.1.board ipu index": 1,
          "ipu.1.clock (MHz)": 1300,
          "ipu.1.id": 1,
          "ipu.1.ipu power (W)": 120,
          "ipu.1.ipu utilisation (%)": 21.25,
          "ipu.1.ipu utilisation (session) (%)": 15.65,
      }
      ipu_profiler.sample()
      assert ipu_profiler.samples[0] == metrics
  
      changed_metrics = {
          "ipu.1.average board temp (C)": 30,
          "ipu.1.average die temp (C)": 39,
          "ipu.1.clock (MHz)": 1300,
          "ipu.1.ipu power (W)": 120,
          "ipu.1.ipu utilisation (%)": 21.25,
          "ipu.1.ipu utilisation (session) (%)": 15.65,
      }
      ipu_profiler.sample()
      assert ipu_profiler.samples[1] == changed_metrics
  
file_path: wandb/tests/pytest_tests/unit_tests/test_system_metrics/test_ipu.py
imports: import threading
  import time
  from unittest import mock
  import wandb
  from wandb.sdk.internal.settings_static import SettingsStatic
  from wandb.sdk.internal.system.assets import IPU
  from wandb.sdk.internal.system.assets.ipu import IPUStats
  from wandb.sdk.internal.system.system_monitor import AssetInterface
label_desc: Use image node_id 1 for calling a global function with example usage: test_profiler() without return types