code: def create_experiment_dir(
      checkpoint_dir: pathlib.Path, all_arguments: Dict[str, Any]
  ) -> pathlib.Path:
      """Create an experiment directory and save all arguments in it.
      Additionally, also store the githash and gitdiff. Finally create
      a directory for `Tensorboard` logs. The structure would look something
      like
          checkpoint_dir
              `-experiment-name
                  |- hparams.json
                  |- githash.log
                  |- gitdiff.log
                  `- tb_dir/
  
      Args:
          checkpoint_dir (pathlib.Path):
              The base checkpoint directory
          all_arguments (Dict[str, Any]):
              The arguments to save
  
      Returns:
          pathlib.Path: The experiment directory
      """
      # experiment name follows the following convention
      # {exp_type}.{YYYY}.{MM}.{DD}.{HH}.{MM}.{SS}.{uuid}
      current_time = datetime.datetime.now(pytz.timezone("US/Pacific"))
      expname = "bert_pretrain.{0}.{1}.{2}.{3}.{4}.{5}.{6}".format(
          current_time.year,
          current_time.month,
          current_time.day,
          current_time.hour,
          current_time.minute,
          current_time.second,
          get_unique_identifier(),
      )
      exp_dir = checkpoint_dir / expname
      if not is_rank_0():
          return exp_dir
      exp_dir.mkdir(exist_ok=False)
      hparams_file = exp_dir / "hparams.json"
      with hparams_file.open("w") as handle:
          json.dump(obj=all_arguments, fp=handle, indent=2)
      # Save the git hash
      try:
          gitlog = sh.git.log(
              "-1", format="%H", _tty_out=False, _fg=False
          )
          with (exp_dir / "githash.log").open("w") as handle:
              handle.write(gitlog.stdout.decode("utf-8"))
      except sh.ErrorReturnCode_128:
          log_dist(
              "Seems like the code is not running from"
              " within a git repo, so hash will"
              " not be stored. However, it"
              " is strongly advised to use"
              " version control.",
              ranks=[0],
              level=logging.INFO,
          )
      # And the git diff
      try:
          gitdiff = sh.git.diff(_fg=False, _tty_out=False)
          with (exp_dir / "gitdiff.log").open("w") as handle:
              handle.write(gitdiff.stdout.decode("utf-8"))
      except sh.ErrorReturnCode_129:
          log_dist(
              "Seems like the code is not running from"
              " within a git repo, so diff will"
              " not be stored. However, it"
              " is strongly advised to use"
              " version control.",
              ranks=[0],
              level=logging.INFO,
          )
      # Finally create the Tensorboard Dir
      tb_dir = exp_dir / "tb_dir"
      tb_dir.mkdir(exist_ok=False)
      return exp_dir
  
imports: import os
  import datetime
  import json
  import pathlib
  import re
  import string
  from functools import partial
  from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, TypeVar, Union
  import random
  import datasets
  import fire
  import logging
  import loguru
  import numpy
  import pytz
  import sh
  import torch
  import torch.nn
  import deepspeed
  from torch.utils.data import DataLoader, Dataset
  from torch.utils.tensorboard import SummaryWriter
  from transformers import AutoTokenizer, PreTrainedTokenizer, PreTrainedTokenizerFast
  from transformers.models.roberta import RobertaConfig, RobertaModel
  from transformers.models.roberta.modeling_roberta import RobertaLMHead, RobertaPreTrainedModel
  from deepspeed.accelerator import get_accelerator
label_desc: Use image node_id 8 for calling a global function with example usage: create_experiment_dir(checkpoint_dir, all_arguments) and returns: exp_dir, exp_dir