(
self,
transformer_config: Phi3Config,
patch_size=2,
in_channels=4,
pe_interpolation: float = 1.0,
pos_embed_max_size: int = 192,
)
| 328 | Diffusion model with a Transformer backbone. |
| 329 | """ |
| 330 | def __init__( |
| 331 | self, |
| 332 | transformer_config: Phi3Config, |
| 333 | patch_size=2, |
| 334 | in_channels=4, |
| 335 | pe_interpolation: float = 1.0, |
| 336 | pos_embed_max_size: int = 192, |
| 337 | ): |
| 338 | super().__init__() |
| 339 | self.in_channels = in_channels |
| 340 | self.out_channels = in_channels |
| 341 | self.patch_size = patch_size |
| 342 | self.pos_embed_max_size = pos_embed_max_size |
| 343 | |
| 344 | hidden_size = transformer_config.hidden_size |
| 345 | |
| 346 | self.x_embedder = PatchEmbedMR(patch_size, in_channels, hidden_size, bias=True) |
| 347 | self.input_x_embedder = PatchEmbedMR(patch_size, in_channels, hidden_size, bias=True) |
| 348 | |
| 349 | self.time_token = TimestepEmbedder(hidden_size) |
| 350 | self.t_embedder = TimestepEmbedder(hidden_size) |
| 351 | |
| 352 | self.pe_interpolation = pe_interpolation |
| 353 | pos_embed = get_2d_sincos_pos_embed(hidden_size, pos_embed_max_size, interpolation_scale=self.pe_interpolation, base_size=64) |
| 354 | self.register_buffer("pos_embed", torch.from_numpy(pos_embed).float().unsqueeze(0), persistent=True) |
| 355 | |
| 356 | self.final_layer = FinalLayer(hidden_size, patch_size, self.out_channels) |
| 357 | |
| 358 | self.initialize_weights() |
| 359 | |
| 360 | self.llm = Phi3Transformer(config=transformer_config) |
| 361 | self.llm.config.use_cache = False |
| 362 | |
| 363 | @classmethod |
| 364 | def from_pretrained(cls, model_name): |
nothing calls this directly
no test coverage detected