如何在Nvidia GPU上执行python脚本(在非常大的数据集上进行人脸检测)

时间:2019-10-07 22:56:43

标签: python gpu face-detection numba

我有一个python脚本,该脚本循环遍历视频数据集,并将脸部和嘴唇检测器功能应用于每个视频。该函数返回每个帧中以人的嘴唇为中心的3D numpy像素数据数组。

数据集非常大(总计70GB,每个持续时间约1秒钟,每个视频约有500,000个视频),在正常的CPU上执行将需要几天的时间。我有一个Nvidia 2080 Ti,我想用来执行代码。是否可以包含一些在可用GPU上执行我的整个脚本的代码?还是我简化了一个复杂的问题?

到目前为止,我一直在尝试使用numba和pycuda进行实现,但是由于所提供的示例并不完全适合我的问题,因此没有取得任何进展。

1 个答案:

答案 0 :(得分:1)

您的第一个问题实际上是让您的Python代码在所有CPU内核上运行!

Python并不快,这在很大程度上是设计使然。更准确地说,Python的设计强调了其他品质。通常,多线程相当困难,由于这些设计约束,Python无法使其变得简单。可惜,因为现代CPU是高度并行的。就您而言,这是个幸运的逃生。您的问题也是高度并行的。您可以将这500,000个视频的CPU内核划分。每个内核都在其自己的输入上运行Python脚本的副本。即使是四核,使用该策略也可以处理4x125.000个文件。

对于GPU,这对Python代码没有多大帮助。 Python根本不知道如何将数据发送到GPU,如何将命令发送到CPU或获取结果。一些Python扩展可以使用GPU,例如Tensorflow。但是他们将GPU用于内部目的,而不是运行Python代码。