Download scripts/training.py from OneScience-Group/SaProt: direct link, hf CLI and curl.
- Browser
- Download file 1.95 kB
-
https://huggingface.co/OneScience-Group/SaProt/resolve/main/scripts/training.py
- Command line
-
hf download hf://OneScience-Group/SaProt/scripts/training.py
-
curl -L -o training.py https://huggingface.co/OneScience-Group/SaProt/resolve/main/scripts/training.py
1.95 kB
| import sys | |
| sys.path.append('.') | |
| import yaml | |
| import argparse | |
| from easydict import EasyDict | |
| from scripts.utils.others import setup_seed | |
| from scripts.utils.module_loader import * | |
| def run(config): | |
| # Initialize a model | |
| model = load_model(config.model) | |
| # for i, (name, param) in enumerate(model.named_parameters()): | |
| # print(f"{i}: {name}", param.requires_grad, id(param)) | |
| # return | |
| # Initialize a dataset | |
| data_module = load_dataset(config.dataset) | |
| # Initialize a trainer | |
| trainer = load_trainer(config) | |
| # Train and validate | |
| trainer.fit(model=model, datamodule=data_module) | |
| # Load best model and test performance | |
| if model.save_path is not None: | |
| if config.model.kwargs.get("use_lora", False): | |
| # Load LoRA model | |
| config.model.kwargs.lora_config_path = model.save_path | |
| model = load_model(config.model) | |
| else: | |
| model.load_checkpoint(model.save_path, load_prev_scheduler=model.load_prev_scheduler) | |
| trainer.test(model=model, datamodule=data_module) | |
| def get_args(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('-c', '--config', help="running configurations", type=str, required=True) | |
| return parser.parse_args() | |
| def main(args): | |
| with open(args.config, 'r', encoding='utf-8') as r: | |
| config = EasyDict(yaml.safe_load(r)) | |
| if config.setting.seed: | |
| setup_seed(config.setting.seed) | |
| # set os environment variables | |
| for k, v in config.setting.os_environ.items(): | |
| if v is not None and k not in os.environ: | |
| os.environ[k] = str(v) | |
| elif k in os.environ: | |
| # override the os environment variables | |
| config.setting.os_environ[k] = os.environ[k] | |
| # Only the root node will print the log | |
| if config.setting.os_environ.NODE_RANK != 0: | |
| config.Trainer.logger = False | |
| run(config) | |
| if __name__ == '__main__': | |
| main(get_args()) |