class_docstr: Implementation of the multi-task sparse axis-aligned subspace priors (SAAS) model.
  
  The multi-task model uses an ICM kernel. The data kernel is same as the single task
  SAAS model in order to handle high-dimensional parameter spaces. The task kernel
  is a Matern-5/2 kernel using learned task embeddings as the input.
code: def sample_task_lengthscale(
      self,
      concentration: float = 6.0,
      rate: float = 3.0,
      **tkwargs: Any,
  ):
      return pyro.sample(
          "task_lengthscale",
          pyro.distributions.Gamma(
              torch.tensor(concentration, **tkwargs),
              torch.tensor(rate, **tkwargs),
          ).expand(torch.Size([self.task_rank])),
      )
  
imports: from typing import Any, Dict, List, Mapping, NoReturn, Optional, Tuple, Union
  import pyro
  import torch
  from botorch.acquisition.objective import PosteriorTransform
  from botorch.models.fully_bayesian import matern52_kernel, MIN_INFERRED_NOISE_LEVEL, PyroModel, reshape_and_detach, SaasPyroModel
  from botorch.models.multitask import MultiTaskGP
  from botorch.models.transforms.input import InputTransform
  from botorch.models.transforms.outcome import OutcomeTransform
  from botorch.posteriors.fully_bayesian import GaussianMixturePosterior, MCMC_DIM
  from botorch.utils.datasets import MultiTaskDataset, SupervisedDataset
  from gpytorch.distributions.multivariate_normal import MultivariateNormal
  from gpytorch.kernels import MaternKernel
  from gpytorch.kernels.kernel import Kernel
  from gpytorch.likelihoods.likelihood import Likelihood
  from gpytorch.means.mean import Mean
  from torch import Tensor
  from torch.nn.parameter import Parameter
label_desc: Use image node_id 4 for calling the MultitaskSaasPyroModel obj's underlying member method code with example usage: obj.sample_task_lengthscale(concentration, rate) and returns: pyro