超过15小时后,在0%的情况下使用深度学习检测对象

2224
12
06-25-2021 06:16上午
标签(2)
HKrell
通过
新贡献者II

早上好,

我试图运行使用深度学习工具检测物体来检测NAIP图像中的太阳能电池板。我使用的是ArcGIS Pro 2.7,我选择了一个小的邮政编码区域来检测对象。然而,该工具已经运行了超过15个小时,仍然没有完成。我的CPU几乎是100%,所以工具肯定在运行。有人遇到过这个问题或者知道解决办法吗?如果可以请帮忙!

Capture.PNG

0荣誉
12个回复
Tim_McGinnes
通过
临时贡献者III

即使您选择了一个邮政编码,该工具也不知道—它正在尝试处理整个图像。您有两个选项:剪切您想要处理的区域并在工具中使用它,或者使用Environments选项卡中的Extent设置。最简单的选择可能是放大到所需的区域,并选择当前显示范围。

无论如何,使用CPU进行深度学习是非常缓慢的。你有专用显卡吗(最好是NVidia)?如果是这样,在环境选项卡中,你应该将处理器类型设置为GPU。您可能还必须根据显卡上可用的内存数量减少Batch Size参数(可能从4开始,如果出现内存不足错误则减少)。

tim_mcginnes_1 - 1624629855199. - png

tim_mcginnes_0 - 1624629834311. - png

MartyRyan
通过
新贡献者III

蒂姆,我有一个类似的关于CPU/GPU性能的相关问题。我在ArcGIS Pro 2.8中运行深度学习工具的训练模型,当将GPU设置为处理器类型时,我的任务管理器显示GPU几乎没有活动,CPU和以太网中有巨大的活动。(我正在使用远程桌面连接一台带有NVIDIA显卡的PC(我们专门使用NVIDIA功能)。我在Epoch 1(0%) 3个小时,任务管理器中的活动告诉我正在发生一些事情,看起来我很少使用带有NVIDIA卡的GPU。

martyryan_0 - 1624635445837. - png

谢谢你或其他任何人的任何建议。

标签(2)
0荣誉
Tim_McGinnes
通过
临时贡献者III

@MartyRyan

首先,确保你已经安装了刚刚发布的Pro 2.8.1补丁-它修复了深度学习和gpu的问题。

如果未检测到GPU, Pro将自动降回使用CPU。首先找到你的GPU模型和内存-最简单的方法是在Nvidia控制面板。单击左下角的系统信息。这是我的:

tim_mcginnes_0 - 1624661793349. - png

重要的信息是卡模型和专用内存。的需求部分Esri深度学习Github网站推荐至少2Gb的专用内存(但你真的需要至少4Gb来做任何重要的事情)。你还需要CUDA计算能力至少3.5,6.1或更高推荐。找到你的GPUNvidia CUDA GPU分页并检查您的能力。这是我的:

tim_mcginnes_1 - 1624662099738. - png

如果您的卡符合要求,那么我会建议您更新到最新的显卡驱动程序(如果它们有一段时间没有更新)。现在我们要确保它在ArcGIS Pro中被识别。打开专业版,打开一个新的笔记本。将以下代码粘贴到单元格中并运行它。

import torch device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')type == 'cuda': print('设备名称:' + torch.cuda.get_device_name())

如果输出说cuda和打印你的显卡模型,你应该是好的。如果上面写着cpu,那么它就不能被识别。这是我的:

tim_mcginnes_3 - 1624662370319. - png

看你怎么走。可能是卡或驱动程序的技术问题,甚至是Pro安装的问题。

0荣誉
RyanKammerer
通过
新的因素

嗨,蒂姆,

你能告诉我在哪能买到Pro 2.8.1补丁吗?我正在运行Github上的2.8版本。

谢谢!

0荣誉
RyanKammerer
通过
新的因素

没关系,我认为这是深度学习工具的更新和ArcGIS专业更新。抱歉,我知道了。

0荣誉
MartyRyan
通过
新贡献者III

蒂姆,

对不起,我没有早点回应-我检查了,我在运行该代码时看到了这一点

使用设备:cuda设备名称:Quadro M4000
0荣誉
MartyRyan
通过
新贡献者III

更新:火车模型工具失败后,我有更多关于GPU\CPU使用的问题。我再次为深度学习导出训练数据。我的火车模型失败显示为:

RuntimeError: cuda运行时错误(101):无效的设备序号在..\torch\csrc\cuda\Module.cpp:59

我选择处理器类型为GPU, GPU ID为“1”:1(对于NVIDIA GPU如下所示)

martyryan_0 - 1628081040752. - png

该工具运行了42分钟才显示此错误。我试图确保我在火车模型工具中识别正确的GPU -我认为我选择“1”是正确的。然而,当我在命令提示符中使用nvidia-smi检查时,我得到:

martyryan_1 - 1628081229031. - png

这里图形处理器被标识为“0”。

我该如何调和这种明显的矛盾呢?如何确保NVIDIA GPU得到最适当和最有效的使用?我在导出训练数据工具中得到了非常缓慢的性能(每小时大约1%的进度),并且不确定我的NVIDIA GPU的使用率是否足够-它的使用率从未超过11%左右。当我训练下一个模型时,我需要知道正确的GPU设置。

谢谢你的帮助

0荣誉
Tim_McGinnes
通过
临时贡献者III

不知道为什么nvidia-smi所有内容都显示为0。导出训练数据工具不使用GPU,只是训练模型和检测对象\分类像素等。

我通常只使用Windows任务管理器在性能选项卡中监视。您可以设置其中一个图形来显示Cuda统计数据,以查看正在使用的GPU。专用内存是另一个-你可以增加批处理大小来使用更多的内存,这可能会使训练更快(我不知道这是否真的是这样)。

tim_mcginnes_0 - 1628224594250. - png

你要训练这个模型多少个周期?您应该能够看到每个epoch所花费的时间(将在笔记本的单元格下方或地理处理工具的消息中输出)。

你有多少训练样本?更多的样本=更长的训练时间。

也许从一个非常小的训练数据集和几个epoch开始,然后在整个过程中选择不同的选项并检查使用的GPU。

0荣誉
MartyRyan
通过
新贡献者III

蒂姆,

谢谢你-这是非常有帮助的,我会在训练我的下一个模型时记住它。我仍然在运行用于深度学习的导出训练数据(对我来说进展似乎很慢,但我有更多的数据,所以我不确定)。所有东西都在我的本地机器上,所以我希望在训练模型和分类时表现更好。

0荣誉