Pytorch Lighting 的 model.to(device)

Posted

技术标签:

【中文标题】Pytorch Lighting 的 model.to(device)【英文标题】:model.to(device) for Pytorch Lighting 【发布时间】:2021-03-18 23:43:29 【问题描述】:

我目前使用 Pytorch Lightning 使用 GPU 训练我的模型

trainer = pl.Trainer( gpus=[0,1],  
        distributed_backend='ddp', 
        resume_from_checkpoint=hparams["resume_from_checkpoint"])
    
    trainer.fit(model, train_dataloader=train_loader, val_dataloaders=val_loader)

关于如何使用定义为使用 GPU 的训练器运行测试样本的说明也很明确

trainer.test(test_dataloader=test_dataloader)

以及如何加载模型并以交互方式使用它

model = transformer.Model.load_from_checkpoint('/checkpoints/run_300_epoch_217.ckpt')
results = model(in_data,

我使用后者通过 docker 容器中的套接字与交互式系统交互。

有没有合适的方法让这个 Pytorch Lightning 模型在 GPU 上运行? 闪电指令说不要使用 model.to(device),但它似乎像 Pytorch 一样工作。说明避免副作用的原因?

我开始阅读有关 ONNX 的文章,但我希望有一种简单的方法来指定 GPU,因为交互式设置与 cpu 完美配合。

【问题讨论】:

【参考方案1】:

我的理解是“删除任何 .cuda() 或 to.device() 调用”仅适用于 Lightning 培训师,因为培训师自己处理。

如果您不使用训练器,LightningModule 模块基本上只是一个带有一些命名约定的常规 PyTorch 模型。所以使用model.to(device)是如何在GPU上运行的。

【讨论】:

以上是关于Pytorch Lighting 的 model.to(device)的主要内容,如果未能解决你的问题,请参考以下文章

深度学习系列21:pytorch lightning和torchline

pytorch-lightning入门—— 初了解

pytorch踩坑之model.eval()和model.train()输出差距很大

segmentation_models.pytorch实战:使用segmentation_models.pytorch图像分割框架实现对人物的抠图

caffe的model和prototxt转pytorch的model

什么是 pytorch 中的 model.training?