MCPcopy Index your code
hub / github.com/huggingface/diffusers / convert_transformer

Function convert_transformer

scripts/convert_skyreelsv2_to_diffusers.py:317–365  ·  view source on GitHub ↗
(model_type: str)

Source from the content-addressed store, hash-verified

315
316
317def convert_transformer(model_type: str):
318 config = get_transformer_config(model_type)
319 diffusers_config = config["diffusers_config"]
320 model_id = config["model_id"]
321
322 if "1.3B" in model_type:
323 original_state_dict = load_file(hf_hub_download(model_id, "model.safetensors"))
324 else:
325 os.makedirs(model_type, exist_ok=True)
326 model_dir = pathlib.Path(model_type)
327 if "720P" in model_type:
328 top_shard = 7 if "I2V" in model_type else 6
329 zeros = "0" * (4 if "I2V" or "T2V" in model_type else 3)
330 model_name = "diffusion_pytorch_model"
331 elif "540P" in model_type:
332 top_shard = 14 if "I2V" in model_type else 12
333 model_name = "model"
334
335 for i in range(1, top_shard + 1):
336 shard_path = f"{model_name}-{i:05d}-of-{zeros}{top_shard}.safetensors"
337 hf_hub_download(model_id, shard_path, local_dir=model_dir)
338 original_state_dict = load_sharded_safetensors(model_dir)
339
340 with init_empty_weights():
341 transformer = SkyReelsV2Transformer3DModel.from_config(diffusers_config)
342
343 for key in list(original_state_dict.keys()):
344 new_key = key[:]
345 for replace_key, rename_key in TRANSFORMER_KEYS_RENAME_DICT.items():
346 new_key = new_key.replace(replace_key, rename_key)
347 update_state_dict_(original_state_dict, key, new_key)
348
349 for key in list(original_state_dict.keys()):
350 for special_key, handler_fn_inplace in TRANSFORMER_SPECIAL_KEYS_REMAP.items():
351 if special_key not in key:
352 continue
353 handler_fn_inplace(key, original_state_dict)
354
355 if "FLF2V" in model_type:
356 if (
357 hasattr(transformer.condition_embedder, "image_embedder")
358 and hasattr(transformer.condition_embedder.image_embedder, "pos_embed")
359 and transformer.condition_embedder.image_embedder.pos_embed is not None
360 ):
361 pos_embed_shape = transformer.condition_embedder.image_embedder.pos_embed.shape
362 original_state_dict["condition_embedder.image_embedder.pos_embed"] = torch.zeros(pos_embed_shape)
363
364 transformer.load_state_dict(original_state_dict, strict=True, assign=True)
365 return transformer
366
367
368def convert_vae():

Calls 5

get_transformer_configFunction · 0.70
load_sharded_safetensorsFunction · 0.70
update_state_dict_Function · 0.70
from_configMethod · 0.45
load_state_dictMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…