code: def main():
      # Create experiment
      experiment.create(name="aft")
      # Create configs
      conf = Configs()
      # Override configurations
      experiment.configs(
          conf,
          {
              # Use character level tokenizer
              "tokenizer": "character",
              # Prompt separator is blank
              "prompt_separator": "",
              # Starting prompt for sampling
              "prompt": "It is ",
              # Use Tiny Shakespeare dataset
              "text": "tiny_shakespeare",
              # Use a context size of $128$
              "seq_len": 256,
              # Train for $32$ epochs
              "epochs": 128,
              # Batch size $128$
              "batch_size": 32,
              # Switch between training and validation for $10$ times
              # per epoch
              "inner_iterations": 10,
              # Embedding size
              "d_model": 128,
              # FFN hidden dimension size
              "transformer.ffn.d_ff": 256,
              # Optimizer
              "optimizer.optimizer": "Noam",
              "optimizer.learning_rate": 1.0,
          },
      )
  
      # Set models for saving and loading
      experiment.add_pytorch_models({"model": conf.model})
  
      # Start the experiment
      with experiment.start():
          # Run training
          conf.run()
  
file_path: annotated_deep_learning_paper_implementations/labml_nn/transformers/aft/experiment.py
imports: import torch
  from labml import experiment
  from labml.configs import option
  from labml_helpers.module import Module
  from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs
  from labml_nn.transformers import TransformerConfigs, Encoder
  from labml_nn.transformers.utils import subsequent_mask
label_desc: Use image node_id 3 for calling a global function with example usage: main() without return types