nemo 项目也使用了 torch lightning 作为底座,派生类中实现了 configure_optimizers 方法,但最终都调用到了基类 modelPT 的 setup_optimization 方法: if optimizer_name == 'mcore_distributed_optim': # setup megatron_optim_config and get Mcore based optimizer with the wrapper megatron_optim_config = self...
2. configure_optimizers 3. train_dataloader 4. train_step 有了这4种方法的填充,我们可以使我们遇到的任何ML模型都得到很好的训练。任何需要超过这些方法的东西都可以很好地与Lightning中剩余的接口和回调配合。有关这些可用接口的完整列表,请查看Lightning文档。现在,让我们看看我们的轻量化模型。 初始化 首先,我们...
__init__()函数中import相应模型类,然后老老实实加入configure_optimizers, training_step, validation_step等函数,用一个接口类控制所有模型。不同部分使用输入参数控制。 main.py函数只负责: 定义parser,添加parse项。 选好需要的callback函数们。 实例化MInterface, DInterface, Trainer。 完事。 完全版模板可以在...
def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=0.02) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 可以看出: 训练数据是通过参数传递给training_step的,不在model内。 configur_optimizers 返回为模型设定的优化器。 训练方法: train...
同样,这两者完全相同,只是它被组织到configure optimizers功能中。Lightning非常容易扩展。例如,如果想使用多个优化器(即GAN),则可以在此处返回两者。 还会注意到,在Lightning中,传入了self.parameters() 而不是model,因为LightningModule就是model。 2.6 损失函数 loss ...
cross_entropy(self(x), y) tensorboard_logs = {'train_loss': loss} return {'loss': loss, 'log': tensorboard_logs} def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=0.02) # 训练! train_loader = DataLoader(MNIST(os.getcwd(), train=True, download=True, ...
同理,在model_interface中建立class MInterface(pl.LightningModule):类,作为模型的中间接口。__init__()函数中import相应模型类,然后老老实实加入configure_optimizers,training_step,validation_step等函数,用一个接口类控制所有模型。不同部分使用输入参数控制。
这部分代码只执行一次。 1. `__init__()`(初始化 LightningModule ) 2. `prepare_data()` (准备数据,包括下载数据、预处理等等) 3. `configure_optimizers()` (配置优化器) 测试“验证代码”。 提前来做的意义在于:不需要等待漫长的训练过程才发现验证代码有错。
其中,必须实现的函数只有__init__() 、training_step()、configure_optimizers()。 3. 定义一个数据模型:LightningDataModule 通过定义LightningDataModule的子类,数据集分割、加载的代码将整合在一起,可以实现的方法有: 1classMyDataModule(LightningDataModule):2def__init__(self):3super().__init__()4defpr...
definit(self): 定义网络架构(model);def forward(self, x):定义推理、预测的前向传播; def training_step(self, batch, batch_idx): 定义train loop; def configure_optimizers(self): 定义优化器 因此,定义的是一个系统而不是单纯的模型。 至...