问题标签 [pytorch-lightning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 无法在类字段中分配 BERT 模型
我有一个扩展 Pytorch Lightning 的 LightningModule 类的类,并且有一个字段 bert_model。我正在尝试执行以下操作
但是,在执行此行之后,字段 bert_model 为 None。如果我这样做:
变量 bert_model 已正确初始化,而类字段 bert_model 仍为 None。
关于可能是什么问题的任何建议?
tensorboard - 用 pytorch 闪电组织张量板图
我已将默认的 tensorboard 记录器 ( from pytorch_lightning.loggers import TensorBoardLogger
) 添加到我的 pytorch 闪电训练器中log_graph=True
。
当我训练我的模型时,我的图表的第一个视图显示了三个块:
输入 => MyNetworkClassName => 输出
到现在为止还挺好。
但是,当我扩展 MyNetworkClassName 时,它绝对给了我网络中发生的一切。到处都是箭。我想将此图组织成带有可扩展子图的更简单的块。所以在我的例子中,我的网络有一个典型的编码器 - 增强器 - 解码器结构,我想要更像这样的东西:
第一张图:
- 输入 => MyNetworkClassName => 输出
放大 MyNetworkClassName:
- 编码器 => 增强器 -> 解码器
放大编码器:
- 编码器层1 => 编码器层2 => ...
放大encoder_layer1:
- conv2d => 批处理规范
我在这里有什么选择?我应该把所有东西都放在单独的类中吗?是否有任何命令可以让我将某些操作组合在一起?
pytorch-lightning - 在 DDP Pytorch Lightning 中跨 GPU 拆分训练数据
目标:使用 Pytorch Lightning 框架在分布式数据并行 (DDP) 设置中训练模型
问题:
训练数据分区:如何使用 Pytorch Lightning 处理跨不同 GPU 的数据分区?我应该手动分区数据还是 Pytorch 闪电会解决这个问题?
损失平均:我是否必须自己汇总损失,或者 Pytorch Lightning 会自动执行此操作?
我一直在花时间研究 pytorch 闪电的代码库,寻找如何处理 DDP 同步,但找不到确切的代码。希望对此作出澄清。
pytorch-lightning - validation_epoch_end 与 DDP Pytorch 闪电
你的问题是什么?
我正在尝试实现一个需要访问整个数据的指标。因此,我没有在 *_step() 方法中更新指标,而是尝试在 *_epoch_end() 方法中收集输出。但是,输出仅包含每个设备获取的数据分区的输出。基本上,如果有 n 个设备,那么每个设备将获得总输出的 1/n。
你的环境是什么?
machine-learning - Pytorch Lightning 为每个 gpu 重复主脚本
我有一台带有两个显卡的机器。我想同时使用它们来训练我的模型。为了让我的生活更轻松,我正在使用 pytorch 闪电。
当我在没有 gpus 的情况下运行脚本时,一切正常:
但我想在多个 GPU 上运行它。令人困惑的是,手册首先指出,对于一台具有多个 GPU 的机器,您应该使用“dp”加速器:
这将启动培训课程,但给我一个 BroadcastBackward 错误,我只有在尝试使用 dp 加速器时才会收到该错误(详情如下)。
但是手册继续说
PyTorch 和 Lightning 不鼓励使用 DP。使用更稳定且速度至少快 3 倍的 DDP
听起来很棒!所以我这样做:
但是现在当我跑步时trainer.fit
,培训师会启动第二个过程(proc = subprocess.Popen(command, env=env_copy, cwd=cwd)
在 ddp_accelerator.py.
一方面这是预期的行为(每个 gpu 一个进程),但另一方面,它确实重新运行了我的主脚本(它不仅仅是重新导入,因此保护 withif __name__ == "__main__":
无济于事)。我的脚本是一个优化方案,流程如下:
- 生成超参数(基于早期运行的结果)
- 构建、训练、评估模型:返回性能度量
- 从 1 开始重复
这意味着第二个过程获得的超参数与第一个不同,这显然会引发错误。
顺便说一句,在 1 个 gpu 上运行可以正常工作(训练完成且没有错误):
我应该如何解决这个问题?坚持使用“dp”并修复我的 BroadcastBackward 错误?或者坚持使用 ddp,但是我该如何修复脚本重复错误?
dp 错误详情:
在文件 X 中的 X 行中,向前 self.RMr.lerp_(Mr.squeeze(),exponential_average_factor) RuntimeError:BroadcastBackward 的输出 0 是一个视图,正在就地修改。此视图是返回多个视图的函数的输出。此类功能不允许就地修改输出视图。您应该将就地操作替换为就地操作。
系统详细信息:ubuntu,python:3.8,pytorch-lightning:1.0.7,pytorch:1.6.0
pytorch-lightning - 在多 GPU Pytorch Lightning 上训练时在 1 个 GPU 上运行验证
有什么方法可以在使用 DDP 的多个 GPUvalidation_step
时在单个 GPU 上执行方法。training_step
我想做的原因是因为我想要实现的几个指标需要完全访问数据,并且在单个 GPU 上运行将确保这一点。我已经尝试过validation_step_end
方法,但不知何故我只得到了部分数据。那篇文章在这里:Stack Overflow Post
pytorch - Pytorch Lighting 的 model.to(device)
我目前使用 Pytorch Lightning 使用 GPU 训练我的模型
关于如何使用定义为使用 GPU 的训练器运行测试样本的说明也很清楚
以及如何加载模型并以交互方式使用它
我使用后者通过 docker 容器中的套接字与交互式系统交互。
有没有合适的方法让这个 Pytorch Lightning 模型在 GPU 上运行? 闪电指令说不要使用 model.to(device),但它似乎像 Pytorch 一样工作。避免副作用的说明的原因?
我开始阅读有关 ONNX 的内容,但宁愿有一种简单的方法来指定 GPU,因为交互式设置与 cpu 完美配合。
deep-learning - 是否可以使用 PyTorch Lightning Bolts 在实例分割任务上微调 SimCLR?
我有一个高分辨率无人机图像数据集,我已将其拆分为大小为 512x512 的图块。瓷砖将通过描绘特定类型的植被进行注释,并以 COCO 格式存储。我想使用自我监督学习来进行瓷砖中的实例分割。Pytorch Lightning bolts 模块提供了已经预训练的自我监督模型,例如 SimCLR。根据bolts 模块文档,应该可以使用 bolts 在任何计算机视觉任务上微调 SimCLR,例如实例分割。
然而,我发现的唯一示例显示了 SimCLR 如何在分类任务上进行微调。如何在实例分割任务上微调 SimCLR(或另一个自监督模型)?
pytorch - "MisconfigurationError: No TPU devices were found" even when TPU is connected in PyTorch Lightning
Have been frustrated over the past few hours over a problem, though It's likely its a problem I started myself hah.
I'm trying to connect to the TPU in Colab. I'm pretty sure I've gotten all the import stuff down. My code is here. I'm not completely set on everything, so the entire document isn't functional, but you should be able to see my attempts at TPU connection.
I'm running Pytorch in version 1.5.0 and torchvision in 0.6.0 because I was finding I couldn't install XLA with anything later than 1.5.0. I'm running XLA in version 20200325.
This is the image that seems so confusing: It states that we have a connection with xla: 1 yet when trying to flag it in the trainer I get an error saying no TPUs can be found.
If anyone could help me, that would be amazing.
Thanks, A
python - 在类中调用 self 有什么作用?
我注意到在 Pytorch Lightning 的文档中,提到你可以从同一个类中的另一个方法调用 forward 方法,只需调用self(x)
. 我无法找到有关其工作原理的任何信息。我一直以为您会使用以下方法调用该方法self.forward
显然,它调用了 forward 方法,但是如何调用呢?有没有关于发生了什么的python文档?
我在以下 URL 找到了这个: https ://pytorch-lightning.readthedocs.io/en/stable/new-project.html
具体的代码片段是这样的: