def METHOD_NAME(
    self,
    *args,
):
    """
    Parameters
    ----------
    *args
        A list of torch.Tensor(s) containing the input mini-batch data. The fusion model doesn't need to
        directly access the mini-batch data since it aims to fuse the individual models'
        output features.
    Returns
    -------
    If "loss_weight" is None, it returns dictionary containing the fusion model's logits and
    features. Otherwise, it returns a list of dictionaries collecting all the models' output,
    including the fusion model's.
    """
    multimodal_features = []
    multimodal_logits = []
    offset = 0
    for per_model, per_adapter in zip(self.model, self.adapter):
        per_model_args = args[offset : offset + len(per_model.input_keys)]
        batch = dict(zip(per_model.input_keys, per_model_args))
        per_output = run_model(per_model, batch)
        multimodal_features.append(
            per_adapter(per_output[per_model.prefix][FEATURES].to(per_adapter.weight.dtype))
        )
        multimodal_logits.append(per_output[per_model.prefix][LOGITS])
        offset += len(per_model.input_keys)
    features = self.fusion_mlp(torch.cat(multimodal_features, dim=1))
    logits = self.head(features)
    return features, logits, multimodal_logits