(original_state_dict: dict[str, Any], version: str)
| 452 | |
| 453 | |
| 454 | def convert_ltx2_transformer(original_state_dict: dict[str, Any], version: str) -> dict[str, Any]: |
| 455 | config, rename_dict, special_keys_remap = get_ltx2_transformer_config(version) |
| 456 | diffusers_config = config["diffusers_config"] |
| 457 | |
| 458 | transformer_state_dict, _ = split_transformer_and_connector_state_dict(original_state_dict) |
| 459 | |
| 460 | with init_empty_weights(): |
| 461 | transformer = LTX2VideoTransformer3DModel.from_config(diffusers_config) |
| 462 | |
| 463 | # Handle official code --> diffusers key remapping via the remap dict |
| 464 | for key in list(transformer_state_dict.keys()): |
| 465 | new_key = key[:] |
| 466 | for replace_key, rename_key in rename_dict.items(): |
| 467 | new_key = new_key.replace(replace_key, rename_key) |
| 468 | update_state_dict_inplace(transformer_state_dict, key, new_key) |
| 469 | |
| 470 | # Handle any special logic which can't be expressed by a simple 1:1 remapping with the handlers in |
| 471 | # special_keys_remap |
| 472 | for key in list(transformer_state_dict.keys()): |
| 473 | for special_key, handler_fn_inplace in special_keys_remap.items(): |
| 474 | if special_key not in key: |
| 475 | continue |
| 476 | handler_fn_inplace(key, transformer_state_dict) |
| 477 | |
| 478 | transformer.load_state_dict(transformer_state_dict, strict=True, assign=True) |
| 479 | return transformer |
| 480 | |
| 481 | |
| 482 | def convert_ltx2_connectors(original_state_dict: dict[str, Any], version: str) -> LTX2TextConnectors: |
no test coverage detected
searching dependent graphs…