| |
| |
| |
| |
| |
|
|
| """ |
| Legacy functions used at the time of the first release, kept for referencd. |
| """ |
|
|
| from pathlib import Path |
| import typing as tp |
|
|
| from omegaconf import OmegaConf, DictConfig |
| import torch |
|
|
| from audiocraft import __version__ |
|
|
|
|
| def _clean_lm_cfg(cfg: DictConfig): |
| OmegaConf.set_struct(cfg, False) |
| |
| |
| cfg['transformer_lm']['card'] = 2048 |
| n_q = 4 |
| stereo_cfg = getattr(cfg, 'interleave_stereo_codebooks', None) |
| if stereo_cfg is not None and stereo_cfg.use: |
| if 'downsample' in stereo_cfg: |
| del stereo_cfg['downsample'] |
| n_q = 8 |
| cfg['transformer_lm']['n_q'] = n_q |
| |
| bad_params = ['spectral_norm_attn_iters', 'spectral_norm_ff_iters', |
| 'residual_balancer_attn', 'residual_balancer_ff', 'layer_drop'] |
| for name in bad_params: |
| del cfg['transformer_lm'][name] |
| OmegaConf.set_struct(cfg, True) |
| return cfg |
|
|
|
|
| def export_encodec(checkpoint_path: tp.Union[Path, str], out_file: tp.Union[Path, str]): |
| pkg = torch.load(checkpoint_path, 'cpu') |
| new_pkg = { |
| 'best_state': pkg['ema']['state']['model'], |
| 'xp.cfg': OmegaConf.to_yaml(pkg['xp.cfg']), |
| |
| 'version': __version__, |
| 'exported': True, |
| } |
| Path(out_file).parent.mkdir(exist_ok=True, parents=True) |
| torch.save(new_pkg, out_file) |
| return out_file |
|
|
|
|
| def export_lm(checkpoint_path: tp.Union[Path, str], out_file: tp.Union[Path, str]): |
| pkg = torch.load(checkpoint_path, 'cpu') |
| if pkg['fsdp_best_state']: |
| best_state = pkg['fsdp_best_state']['model'] |
| else: |
| best_state = pkg['best_state']['model'] |
| new_pkg = { |
| 'best_state': best_state, |
| 'xp.cfg': OmegaConf.to_yaml(_clean_lm_cfg(pkg['xp.cfg'])), |
| |
| 'version': __version__, |
| 'exported': True, |
| } |
| Path(out_file).parent.mkdir(exist_ok=True, parents=True) |
| torch.save(new_pkg, out_file) |
| return out_file |
|
|