def __init__(self, args, gpt_model, 
            text_model=None, img_model=None, aud_model=None, 
            text_connector=None, img_connector=None, aud_connector=None,
            bos=0, eos=2):
        """
        text_model: bidirectional text model, such as roberta, bert, electra
        img_model: image model, such as ViT, CLIP, BEIT
        aud_model: audio model, such as HuBERT, wavLM
        """
        super().__init__()
        self.args = args
        self.gpt_model = gpt_model
        
        self.text_model = text_model
        self.text_connector = text_connector
        self.img_model = img_model
        self.img_connector = img_connector
        self.aud_model = aud_model
        self.aud_connector = aud_connector

        self.bos = bos
        self.eos = eos
        self.classification_heads = nn.ModuleDict()
        self.ft_type = args.ft_type

        if args.freeze_gpt:
            for p in self.gpt_model.parameters():
                p.requires_grad = False

        text_model: bidirectional text model, such as roberta, bert, electra
        img_model: image model, such as ViT, CLIP, BEIT
        aud_model: audio model, such as HuBERT, wavLM
        
kosmos-2/unilm/models/unigpt.py