code: def _prepare_data(csv_filename, config_filename):
      # Single sequence input, single category output
      input_features = [
          sequence_feature(encoder={"reduce_output": "sum"})
      ]
      output_features = [
          category_feature(
              decoder={"vocab_size": 3}, reduce_input="sum"
          )
      ]
  
      # Generate test data
      dataset_filename = generate_data(
          input_features, output_features, csv_filename
      )
  
      # generate config file
      config = {
          "input_features": input_features,
          "output_features": output_features,
          "combiner": {"type": "concat", "output_size": 14},
          TRAINER: {"epochs": 2, BATCH_SIZE: 128, EVAL_BATCH_SIZE: 128},
      }
  
      with open(config_filename, "w") as f:
          yaml.dump(config, f)
  
      return dataset_filename
  
imports: import json
  import os
  import os.path
  import pathlib
  import shutil
  import subprocess
  from typing import List, Set
  import pytest
  import yaml
  from ludwig.constants import BATCH_SIZE, COMBINER, EVAL_BATCH_SIZE, INPUT_FEATURES, NAME, OUTPUT_FEATURES, PREPROCESSING, TRAINER
  from ludwig.types import FeatureConfigDict
  from ludwig.utils.data_utils import load_yaml
  from tests.integration_tests.utils import category_feature, generate_data, number_feature, sequence_feature
label_desc: Use image node_id 4 for calling a global function with example usage: _prepare_data(csv_filename, config_filename) and returns: dataset_filename