def from_cwd(cls) -> Content: """ Generate Content object from git or from current path. Notes: 1. First try to get it from git -> If not succeed use current path. 2. No validation to path validity. TODO: 1. Add attribute which init only changed objects by git. """ repo = cls.git() if repo: content = Content(repo.working_tree_dir) else: content = Content(Path.cwd()) return content
def cli_main(): pl.seed_everything(1234) # ------------ # args # ------------ parser = ArgumentParser() parser.add_argument('--batch_size', default=32, type=int) parser.add_argument('--hidden_dim', type=int, default=128) parser = pl.Trainer.add_argparse_args(parser) parser = LitClassifier.add_model_specific_args(parser) args = parser.parse_args() # ------------ # data # ------------ dataset = MNIST(_DATASETS_PATH, train=True, download=True, transform=transforms.ToTensor()) mnist_test = MNIST(_DATASETS_PATH, train=False, download=True, transform=transforms.ToTensor()) mnist_train, mnist_val = random_split(dataset, [55000, 5000]) train_loader = DataLoader(mnist_train, batch_size=args.batch_size) val_loader = DataLoader(mnist_val, batch_size=args.batch_size) test_loader = DataLoader(mnist_test, batch_size=args.batch_size) # ------------ # model # ------------ model = LitClassifier(Backbone(hidden_dim=args.hidden_dim), args.learning_rate) # ------------ # training # ------------ experiment_dir = Path.cwd() checkpoint_callback = ModelCheckpoint(dirpath=experiment_dir) trainer = pl.Trainer.from_argparse_args(args) trainer.fit(model, train_loader, val_loader,gradient_clip_val=0.5, benchmark=True, callbacks=[GPUStatsMonitor(),checkpoint_callback],) # ------------ # testing # ------------ result = trainer.test(test_dataloaders=test_loader, gradient_clip_val=0.5, benchmark=True, callbacks=[GPUStatsMonitor(),checkpoint_callback],) print(result)
def git() -> Optional[Repo]: """ Git repository object. Returns: Repo: Repo object of content repo if exists else retun None. References: 1. GitPython - https://github.com/gitpython-developers/GitPython Notes: 1. Should be called when cwd inside content repository. """ try: repo = Repo(Path.cwd(), search_parent_directories=True) except InvalidGitRepositoryError: repo = None return repo