code: def test_autoformer_forecaster_tune_multi_processes(self):
      name = "parallel-example-torch"
      storage = "sqlite:///example_autoformer.db"  # take sqlite for test, recommand to use mysql
      if os.path.exists("./example_autoformer.db"):
          os.remove("./example_autoformer.db")
      import bigdl.nano.automl.hpo.space as space
  
      train_data, val_data, test_data = create_data(loader=False)
      forecaster = AutoformerForecaster(
          past_seq_len=24,
          future_seq_len=5,
          input_feature_num=2,
          output_feature_num=2,
          label_len=12,
          d_model=space.Categorical(32, 64, 128, 256, 512, 1024),
          freq="s",
          loss="mse",
          metrics=["mae", "mse", "mape"],
          lr=0.001,
      )
      from bigdl.nano.automl.hpo.backend import SamplerType
  
      forecaster.tune(
          train_data,
          validation_data=val_data,
          n_trials=5,
          study_name=name,
          sampler=SamplerType.Grid,
          storage=storage,
          n_parallels=2,
      )
      forecaster.fit(train_data, epochs=3, batch_size=32)
      evaluate = forecaster.evaluate(val_data)
      os.remove("./example_autoformer.db")
      # test remove
      forecaster.tune(
          train_data,
          validation_data=val_data,
          n_trials=2,
          study_name=name,
          sampler=SamplerType.Grid,
          storage=storage,
          n_parallels=2,
      )
  
imports: import numpy
  import pandas
  import tempfile
  import os
  from bigdl.chronos.utils import LazyImport
  from bigdl.chronos.data import TSDataset
  from unittest import TestCase
  import pytest
  from ..None import op_torch, op_automl
label_desc: Use image node_id 23 for calling the TestChronosModelAutoformerForecaster obj's underlying member method code with example usage: obj.test_autoformer_forecaster_tune_multi_processes() without return types