code: def run(csv_filename):
      callback = AimCallback()
  
      # Wrap these methods so we can check that they were called
      callback.on_train_init = Mock(side_effect=callback.on_train_init)
      callback.on_train_start = Mock(
          side_effect=callback.on_train_start
      )
  
      # Image Inputs
      with tempfile.TemporaryDirectory() as tmpdir:
          image_dest_folder = os.path.join(tmpdir, "generated_images")
  
          # Inputs & Outputs
          input_features = [image_feature(folder=image_dest_folder)]
          output_features = [category_feature(output_feature=True)]
          rel_path = generate_data(
              input_features, output_features, csv_filename
          )
  
          # Run experiment
          run_experiment(
              input_features,
              output_features,
              dataset=rel_path,
              callbacks=[callback],
          )
  
      # Check that these methods were called at least once
      callback.on_train_init.assert_called()
      callback.on_train_start.assert_called()
  
file_path: ludwig/tests/integration_tests/scripts/run_train_aim.py
imports: import argparse
  import os
  import sys
  import tempfile
  from unittest.mock import Mock
  import aim
  from ludwig.contribs.aim import AimCallback
  from tests.integration_tests.utils import category_feature, generate_data, image_feature, run_experiment
label_desc: Use image node_id 1 for calling a global function with example usage: run(csv_filename) without return types