Spaces:
Running on Zero
Running on Zero
| """ | |
| Ernie-Image TextEncoder for DiffSynth-Studio. | |
| Wraps transformers Ministral3Model to output text embeddings. | |
| Pattern: lazy import + manual config dict + torch.nn.Module wrapper. | |
| Only loads the text (language) model, ignoring vision components. | |
| """ | |
| import torch | |
| class ErnieImageTextEncoder(torch.nn.Module): | |
| """ | |
| Text encoder using Ministral3Model (transformers). | |
| Only the text_config portion of the full Mistral3Model checkpoint. | |
| Uses the base model (no lm_head) since the checkpoint only has embeddings. | |
| """ | |
| def __init__(self): | |
| super().__init__() | |
| from transformers import Ministral3Config, Ministral3Model | |
| text_config = { | |
| "attention_dropout": 0.0, | |
| "bos_token_id": 1, | |
| "dtype": "bfloat16", | |
| "eos_token_id": 2, | |
| "head_dim": 128, | |
| "hidden_act": "silu", | |
| "hidden_size": 3072, | |
| "initializer_range": 0.02, | |
| "intermediate_size": 9216, | |
| "max_position_embeddings": 262144, | |
| "model_type": "ministral3", | |
| "num_attention_heads": 32, | |
| "num_hidden_layers": 26, | |
| "num_key_value_heads": 8, | |
| "pad_token_id": 11, | |
| "rms_norm_eps": 1e-05, | |
| "rope_parameters": { | |
| "beta_fast": 32.0, | |
| "beta_slow": 1.0, | |
| "factor": 16.0, | |
| "llama_4_scaling_beta": 0.1, | |
| "mscale": 1.0, | |
| "mscale_all_dim": 1.0, | |
| "original_max_position_embeddings": 16384, | |
| "rope_theta": 1000000.0, | |
| "rope_type": "yarn", | |
| "type": "yarn", | |
| }, | |
| "sliding_window": None, | |
| "tie_word_embeddings": True, | |
| "use_cache": True, | |
| "vocab_size": 131072, | |
| } | |
| config = Ministral3Config(**text_config) | |
| self.model = Ministral3Model(config) | |
| self.config = config | |
| def forward( | |
| self, | |
| input_ids=None, | |
| attention_mask=None, | |
| position_ids=None, | |
| **kwargs, | |
| ): | |
| outputs = self.model( | |
| input_ids=input_ids, | |
| attention_mask=attention_mask, | |
| position_ids=position_ids, | |
| output_hidden_states=True, | |
| return_dict=True, | |
| **kwargs, | |
| ) | |
| return (outputs.hidden_states,) | |