互联网技术 / 互联网资讯 · 2024年1月17日

动态计算图的GPU操作支持

动态计算图和GPU支持操作动态计算图

在深度学习中使用 PyTorch 的主要原因之一,是我们可以自动获得定义的函数的梯度/导数。

当我们操作我们的输入时,会自动创建一个计算图。该图显示了如何从输入到输出的动态计算过程。

为了熟悉计算图的概念,下面将为以下函数创建一个:

 动态计算图和GPU支持操作

这里的 是我们的参数,我们想要优化(最大化或最小化)输出 . 为此,我们想要获得梯度.

在下面的代码中,我将使用[1,2,3]作输入。

# 只有浮动张量有梯度 x = Torch.aRange(1,4, dtype=Torch.float32, RequiRes_gRad=TRue)  pRint(“X”, x)  # X tensoR([1., 2., 3.], RequiRes_gRad=TRue) 

现在让我来一步一步地构建计算图,了解每个操作是到底是如何添加到计算图中的。

 

a = x + 2 b = a ** 2 c = b + 3 y = c.Mean() pRint(“Y”, y) # Y tensoR(19.6667, gRad_fn=) 

使用上面的语句,我们创建了一个类似于下图的计算图(通过tensoRBOARd )查看:

动态计算图和GPU支持操作

我们计算 a 基于输入x 和常数2, b是 a平方等等操作。计算图通常以相反的方向可视化(箭头从结果指向输入)。

我们可以通过backwaRd()在最后一个输出上调用函数来对计算图执行反向传播,这样可以,计算了每个具有属性的张量的梯度RequiRes_gRad=TRue:

y.backwaRd() 

最后打印x.gRad就可以查看对应梯度。

 动态计算图和GPU支持操作

GPU支持操作

在PyTorch中GPU 可以并行执行数以千计的小运算,因此非常适合在神经网络中执行大型矩阵运算。

「CPU 与 GPU的区别」

动态计算图和GPU支持操作

PyTorch 使用GPU,需要搭建NVIDIA 的CUDA和cuDNN。

下面代码,检查是否有可用的 GPU:

 动态计算图和GPU支持操作

现在创建一个张量并将其推送到GPU设备:

device = Torch.device(“cuda”) if Torch.cuda.is_avAIlable() else Torch.device(“CPu”) pRint(“Device”, device) x = x.to(device) pRint(“X”, x)  # Device cuda # X tensoR([1., 1., 1.], device=””cuda:0””) 

cuda 旁边的零表示这是计算机上的第0个 GPU 设备。因此,PyToRch 还支持多 GPU 系统,

下面将CPU 上的大型矩阵乘法的运行时间与 GPU 上的运算进行比较:

动态计算图和GPU支持操作

根据系统中的配置而定,GPU加速提高模型的训练速度。

 

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册