code: def session_start_pb(
      hparams,
      model_uri="",
      monitor_url="",
      group_name="",
      start_time_secs=None,
  ):
      """Constructs a SessionStartInfo protobuffer.
  
      Creates a summary that contains a training session metadata information.
      One such summary per training session should be created. Each should have
      a different run.
  
      Args:
        hparams: A dictionary with string keys. Describes the hyperparameter values
                 used in the session, mapping each hyperparameter name to its value.
                 Supported value types are  `bool`, `int`, `float`, `str`, `list`,
                 `tuple`.
                 The type of value must correspond to the type of hyperparameter
                 (defined in the corresponding api_pb2.HParamInfo member of the
                 Experiment protobuf) as follows:
  
                  +-----------------+---------------------------------+
                  |Hyperparameter   | Allowed (Python) value types    |
                  |type             |                                 |
                  +-----------------+---------------------------------+
                  |DATA_TYPE_BOOL   | bool                            |
                  |DATA_TYPE_FLOAT64| int, float                      |
                  |DATA_TYPE_STRING | str, tuple, list   |
                  +-----------------+---------------------------------+
  
                 Tuple and list instances will be converted to their string
                 representation.
        model_uri: See the comment for the field with the same name of
                   plugin_data_pb2.SessionStartInfo.
        monitor_url: See the comment for the field with the same name of
                     plugin_data_pb2.SessionStartInfo.
        group_name:  See the comment for the field with the same name of
                     plugin_data_pb2.SessionStartInfo.
        start_time_secs: float. The time to use as the session start time.
                         Represented as seconds since the UNIX epoch. If None uses
                         the current time.
      Returns:
        The summary protobuffer mentioned above.
      """
      if start_time_secs is None:
          start_time_secs = time.time()
      session_start_info = plugin_data_pb2.SessionStartInfo(
          model_uri=model_uri,
          monitor_url=monitor_url,
          group_name=group_name,
          start_time_secs=start_time_secs,
      )
      for hp_name, hp_val in hparams.items():
          # Boolean typed values need to be checked before integers since in Python
          # isinstance(True/False, int) returns True.
          if isinstance(hp_val, bool):
              session_start_info.hparams[hp_name].bool_value = hp_val
          elif isinstance(hp_val, (float, int)):
              session_start_info.hparams[hp_name].number_value = hp_val
          elif isinstance(hp_val, str):
              session_start_info.hparams[hp_name].string_value = hp_val
          elif isinstance(hp_val, (list, tuple)):
              session_start_info.hparams[hp_name].string_value = str(
                  hp_val
              )
          else:
              raise TypeError(
                  "hparams[%s]=%s has type: %s which is not supported"
                  % (hp_name, hp_val, type(hp_val))
              )
      return _summary(
          metadata.SESSION_START_INFO_TAG,
          plugin_data_pb2.HParamsPluginData(
              session_start_info=session_start_info
          ),
      )
  
file_path: tensorboard/tensorboard/plugins/hparams/summary.py
imports: import time
  import tensorflow
  from tensorboard.plugins.hparams import api_pb2
  from tensorboard.plugins.hparams import metadata
  from tensorboard.plugins.hparams import plugin_data_pb2
label_desc: Use image node_id 2 for calling a global function with example usage: session_start_pb(hparams, model_uri, monitor_url, group_name, start_time_secs) and returns: _summary