EvoTalk / quantize.py
akkiisfrommars's picture
Upload quantize.py with huggingface_hub
0cd6684 verified
Raw
History Blame Contribute Delete
1.44 kB
"""Load a training checkpoint and save a lean inference-only model file.
Keeps only the fp16 model weights (plus the config needed to rebuild the
architecture). Drops optimizer state, scaler state, and everything else.
Usage:
python quantize.py --input ckpt.pt --output evotalk_fp16.pt
"""
import os
import argparse
import torch
from model import EvoTalk
def quantize(input_path, output_path):
ckpt = torch.load(input_path, map_location="cpu", weights_only=False)
config = ckpt.get("config", None)
if config is None:
raise ValueError("checkpoint has no config; cannot rebuild the model")
model = EvoTalk(config)
model.load_state_dict(ckpt["model"])
model.eval()
state = {
"model": {k: v.half() for k, v in model.state_dict().items()},
"config": config,
"step": ckpt.get("step", 0),
}
os.makedirs(os.path.dirname(output_path) or ".", exist_ok=True)
torch.save(state, output_path)
print(f"saved fp16 weights -> {output_path}")
print(f"weights: {sum(v.numel() for v in state['model'].values()) / 1e6:.2f}M "
f"({os.path.getsize(output_path) / 1e6:.1f} MB)")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--input", type=str, default="ckpt.pt")
parser.add_argument("--output", type=str, default="evotalk_fp16.pt")
args = parser.parse_args()
quantize(args.input, args.output)