Advertisement
Guest User

Merge Base Models Safetensors

a guest
Jun 15th, 2025
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. # merge_bases.py
  2. import argparse
  3. import torch
  4. from safetensors.torch import load_file, save_file
  5. import os
  6.  
  7. def merge_bases(base_paths, alpha, output_path):
  8. if len(base_paths) < 2:
  9. raise ValueError("Need at least two base models to merge.")
  10.  
  11. print(f"🔄 Merging {len(base_paths)} base models with alpha={alpha}")
  12.  
  13. state_dicts = [load_file(path) for path in base_paths]
  14. keys = state_dicts[0].keys()
  15.  
  16. # Ensure all keys match
  17. for sd in state_dicts[1:]:
  18. if sd.keys() != keys:
  19. raise ValueError("Base models do not have matching keys.")
  20.  
  21. merged = {}
  22. for k in keys:
  23. tensors = [sd[k] for sd in state_dicts]
  24. weights = [(1 - alpha) if i else alpha for i in range(len(tensors))] # first gets alpha, rest get (1-alpha)/(n-1)
  25. blended = sum(w * t for w, t in zip(weights, tensors))
  26. merged[k] = blended
  27.  
  28. save_file(merged, output_path)
  29. print(f"✅ Merged base model saved to {output_path}")
  30.  
  31. if __name__ == "__main__":
  32. parser = argparse.ArgumentParser(description="Merge two or more base model files.")
  33. parser.add_argument('--bases', nargs='+', required=True, help='Paths to base model files (.safetensors)')
  34. parser.add_argument('--alpha', type=float, required=True, help='Blend weight (0.0 - 1.0) for the first model')
  35. parser.add_argument('--output', type=str, required=True, help='Output path for the merged base')
  36. args = parser.parse_args()
  37.  
  38. merge_bases(args.bases, args.alpha, args.output)
  39.  
  40. # python merge_bases.py --bases "C:\Users\diarrhea\Models\diffusion_models\hunyuan\hunyuan_video_v2_replace_image_to_video_720p_bf16.safetensors" "C:\Users\diarrhea\Models\diffusion_models\hunyuan\hunyuan_video_720_cfgdistill_bf16.safetensors" --alpha 0.5 --output "C:\Users\diarrhea\Models\diffusion_models\hunyuan\hunyuan_video_merge_720_i2v_+_t2v_bf16_50-50.safetensors"
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement