class_docstr: Peft model for mixing different types of adapters.
  
  This class currently does not support saving and loading. Instead, it is assumed that the adapters are already
  trained and loading the model requires a script to be run each time.
  
  Currently, the main purpose of mixed adapter types is to combine trained adapters for inference. Although it is
  technically possible to train a mixed adapter model, this has not been tested and is not recommended.
  
  Note: This class should usually not be initialized directly. Instead, use `get_peft_model` with the argument
  `mixed=True`.
  
  Below is an example that shows how to load a mixed model with two different types of adapters.
  
  ```py
  >>> from peft import get_peft_model
  
  >>> base_model = ...  # load the base model, e.g. from transformers
  >>> peft_model = PeftMixedModel.from_pretrained(base_model, path_to_adapter1, "adapter1").eval()
  >>> peft_model.load_adapter(path_to_adapter2, "adapter2")
  >>> peft_model.set_adapter(["adapter1", "adapter2"])  # activate both adapters
  >>> peft_model(data)  # forward pass using both adapters
  ```
  
  Tips:
  
  - Not all adapter types can be combined. See `peft.tuners.mixed.COMPATIBLE_TUNER_TYPES` for a list of compatible
    types. An error will be raised if you are trying to combine incompatible adapter types.
  - It is possible to mix multiple adapters of the same type. This can be useful to combine adapters with very
    different configs.
  - If you want to combine a lot of different adapters, it is most performant to add the same types of adapters
    consecutively. E.g., add LoRA1, LoRA2, LoHa1, LoHa2 in this order, instead of LoRA1, LoHa1, LoRA2, LoHa2. As long
    as the adapters are commutative, the order does not matter for the final result.
  
  Args:
      model (`torch.nn.Module`):
          The model to be tuned.
      config (`PeftConfig`):
          The config of the model to be tuned. The adapter type must be compatible.
      adapter_name (`str`, `optional`, defaults to `"default"`):
          The name of the first adapter.
code: def create_or_update_model_card(self, output_dir: str):
      raise NotImplementedError(
          f"Model card creation is not supported for {self.__class__.__name__} (yet)."
      )
  
imports: from __future__ import annotations
  import os
  from contextlib import contextmanager
  from typing import Any, Optional, Union
  import torch
  from accelerate.hooks import remove_hook_from_submodules
  from torch import nn
  from transformers.utils import PushToHubMixin
  from peft.tuners.mixed import COMPATIBLE_TUNER_TYPES
  from .config import PeftConfig
  from .peft_model import PeftModel
  from .tuners import AdaLoraModel, IA3Model, LoHaModel, LoKrModel, LoraModel, MixedModel, OFTModel
  from .utils import PeftType, _set_adapter, _set_trainable
label_desc: Use image node_id 18 for calling the PeftMixedModel obj's underlying member method code with example usage: obj.create_or_update_model_card(output_dir) without return types