def cli_main(): pl.seed_everything(1234) # ------------ # args # ------------ parser = ArgumentParser() parser = pl.Trainer.add_argparse_args(parser) parser = LitClassifier.add_model_specific_args(parser) parser = MNISTDataModule.add_argparse_args(parser) args = parser.parse_args() # ------------ # data # ------------ dm = MNISTDataModule.from_argparse_args(args) # ------------ # model # ------------ model = LitClassifier(args.hidden_dim, args.learning_rate) # ------------ # training # ------------ trainer = pl.Trainer.from_argparse_args(args) trainer.fit(model, datamodule=dm) # ------------ # testing # ------------ # todo: without passing model it fails for missing best weights # MisconfigurationException, 'ckpt_path is "best", but ModelCheckpoint is not configured to save the best model.' result = trainer.test(model, datamodule=dm) pprint(result)
def cli_main(): pl.seed_everything(1234) # ------------ # args # ------------ parser = ArgumentParser() parser = pl.Trainer.add_argparse_args(parser) parser = LitClassifier.add_model_specific_args(parser) parser = MNISTDataModule.add_argparse_args(parser) args = parser.parse_args() # ------------ # data # ------------ dm = MNISTDataModule.from_argparse_args(args) # ------------ # model # ------------ model = LitClassifier(args.hidden_dim, args.learning_rate) # ------------ # training # ------------ trainer = pl.Trainer.from_argparse_args(args) trainer.fit(model, datamodule=dm) # ------------ # testing # ------------ result = trainer.test(model, datamodule=dm) pprint(result)
def main(args: Namespace) -> None: # ------------------------ # 1 INIT LIGHTNING MODEL # ------------------------ model = GAN(lr=args.lr, b1=args.b1, b2=args.b2, latent_dim=args.latent_dim) # ------------------------ # 2 INIT TRAINER # ------------------------ # If use distributed training PyTorch recommends to use DistributedDataParallel. # See: https://pytorch.org/docs/stable/nn.html#torch.nn.DataParallel dm = MNISTDataModule.from_argparse_args(args) trainer = Trainer.from_argparse_args(args) # ------------------------ # 3 START TRAINING # ------------------------ trainer.fit(model, dm)
return acc def accuracy(self, logits, y): # currently IPU poptorch doesn't implicit convert bools to tensor # hence we use an explicit calculation for accuracy here. Once fixed in poptorch # we can use the accuracy metric. acc = torch.sum(torch.eq(torch.argmax(logits, -1), y).to(torch.float32)) / len(y) return acc def validation_epoch_end(self, outputs) -> None: # since the training step/validation step and test step are run on the IPU device # we must log the average loss outside the step functions. self.log("val_acc", torch.stack(outputs).mean(), prog_bar=True) def test_epoch_end(self, outputs) -> None: self.log("test_acc", torch.stack(outputs).mean()) def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=self.hparams.learning_rate) if __name__ == "__main__": dm = MNISTDataModule(batch_size=32) model = LitClassifier() trainer = pl.Trainer(max_epochs=2, ipus=8) trainer.fit(model, datamodule=dm) trainer.test(model, datamodule=dm)
# ------------------------ # 2 INIT TRAINER # ------------------------ # If use distributed training PyTorch recommends to use DistributedDataParallel. # See: https://pytorch.org/docs/stable/nn.html#torch.nn.DataParallel dm = MNISTDataModule.from_argparse_args(args) trainer = Trainer.from_argparse_args(args) # ------------------------ # 3 START TRAINING # ------------------------ trainer.fit(model, dm) if __name__ == "__main__": cli_lightning_logo() parser = ArgumentParser() # Add program level args, if any. # ------------------------ # Add LightningDataLoader args parser = MNISTDataModule.add_argparse_args(parser) # Add model specific args parser = GAN.add_argparse_args(parser) # Add trainer args parser = Trainer.add_argparse_args(parser) # Parse all arguments args = parser.parse_args() main(args)