class_docstr: GPUAMD is a class for monitoring AMD GPU devices.
  
  Uses AMD's rocm_smi tool to get GPU stats.
  For the list of supported environments and devices, see
  https://github.com/RadeonOpenCompute/ROCm/blob/develop/docs/deploy/
code: def probe(self) -> dict:
      info: _InfoDict = {}
      try:
          stats = get_rocm_smi_stats()
  
          info["gpu_count"] = len(
              [key for key in stats.keys() if key.startswith("card")]
          )
          key_mapping = {
              "id": "GPU ID",
              "unique_id": "Unique ID",
              "vbios_version": "VBIOS version",
              "performance_level": "Performance Level",
              "gpu_overdrive": "GPU OverDrive value (%)",
              "gpu_memory_overdrive": "GPU Memory OverDrive value (%)",
              "max_power": "Max Graphics Package Power (W)",
              "series": "Card series",
              "model": "Card model",
              "vendor": "Card vendor",
              "sku": "Card SKU",
              "sclk_range": "Valid sclk range",
              "mclk_range": "Valid mclk range",
          }
  
          info["gpu_devices"] = [
              {
                  k: stats[key][v]
                  for k, v in key_mapping.items()
                  if stats[key].get(v)
              }
              for key in stats.keys()
              if key.startswith("card")
          ]
      except Exception as e:
          logger.exception(f"GPUAMD probe error: {e}")
      return info
  
imports: import json
  import logging
  import shutil
  import subprocess
  import sys
  import threading
  from collections import deque
  from typing import TYPE_CHECKING, Any, Dict, List, Union
  from wandb.sdk.lib import telemetry
  from .aggregators import aggregate_mean
  from .asset_registry import asset_registry
  from .interfaces import Interface, Metric, MetricsMonitor
label_desc: Use image node_id 5 for calling the GPUAMD obj's underlying member method code with example usage: obj.probe() and returns: info