code: def generate_kernel(n_dimensions):
      exp_kernel = MaternKernel(
          2.5,
          lengthscale_constraint=Interval(
              torch.tensor(
                  np.exp(-6.754111155189306).repeat(n_dimensions)
              ),
              torch.tensor(
                  np.exp(0.0858637988771976).repeat(n_dimensions)
              ),
              transform=None,
              initial_value=1.0,
          ),
          ard_num_dims=n_dimensions,
          active_dims=torch.arange(n_dimensions),
      ).double()
  
      kernel = ScaleKernel(
          exp_kernel,
          outputscale_constraint=Interval(
              np.exp(-10.0),
              np.exp(2.0),
              transform=None,
              initial_value=2.0,
          ),
      ).double()
      return kernel
  
imports: import copy
  import unittest.mock
  import gpytorch
  import numpy
  import torch
  from gpytorch.constraints.constraints import Interval
  from gpytorch.distributions import MultivariateNormal
  from gpytorch.kernels import MaternKernel, ScaleKernel
  from gpytorch.kernels.inducing_point_kernel import InducingPointKernel
  from gpytorch.lazy import LazyEvaluatedKernelTensor, delazify
  from gpytorch.likelihoods import GaussianLikelihood
  from gpytorch.means.zero_mean import ZeroMean
  from gpytorch.models.exact_gp import ExactGP
  from smac.model.gaussian_process.kernels._boing import FITCKernel, FITCMean
  from smac.model.utils import check_subspace_points
label_desc: Use image node_id 2 for calling a global function with example usage: generate_kernel(n_dimensions) and returns: kernel