Download quantize.py from akkiisfrommars/EvoTalk: direct link, hf CLI and curl.
- Browser
- Download file 1.44 kB
-
https://huggingface.co/akkiisfrommars/EvoTalk/resolve/main/quantize.py
- Command line
-
hf download hf://akkiisfrommars/EvoTalk/quantize.py
-
curl -L -o quantize.py https://huggingface.co/akkiisfrommars/EvoTalk/resolve/main/quantize.py
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) | |