如何使用纯Python激活Google Colab GPU

4

我刚接触 Google Colab。

我正在尝试进行深度学习。

我编写了一个类来创建和训练 LSTM 网络,只使用了 Python,没有使用任何专用的深度学习库,如 tensorflow、pytorch 等。

我认为我已经正确选择了在 colab 中的运行时类型,所以我在使用 gpu。

然而,在代码执行期间,我有时会收到退出 gpu 模式的消息,因为我没有使用它。

那么,我的问题是:怎样才能在 Google Colab 上使用 gpu,只使用普通的 Python,而不需要特殊的 AI 库?是否有像“装饰器代码”这样的东西可以放在我的原始代码中,以激活 gpu?

2个回答

1

确保Nvidia驱动程序是最新的,您也可以安装Cuda工具包(不确定您在collab中是否需要)

还有numba

如果您想要,可以使用conda来安装它们

示例


conda install numba & conda install cudatoolkit
or
pip install numba


我们将使用numba.jit修饰符来计算GPU上的函数。该修饰符有几个参数,但我们只使用target参数。目标告诉jit编译哪些源代码(“CPU”或“Cuda”)。 “Cuda”对应于GPU。但是,如果传递CPU作为参数,则jit尝试优化代码以在CPU上更快地运行并提高速度。

from numba import jit, cuda 
import numpy as np

@jit(target ="cuda")                          
def func(a): 
    for i in range(10000000): 
        a[i]+= 1

感谢您的回复。但是当我尝试使用@jit(target ="cuda")时,我会收到错误消息“NotImplementedError:CUDA不支持边界检查”,这会停止代码的执行。同样的错误消息还说“UserWarning:autojit已被弃用,并将在未来的版本中删除。请改用jit。”。如果我只使用@jit,则执行会一直进行到结束,但会给出一个巨大的警告。 - Alessandro Pereira Rodrigues
很抱歉我评论了这么多次,但现在我可以确定即使使用@jit装饰器,colab gpu也没有被使用。我仍然收到相同的消息,提示我退出gpu模式,因为我没有使用它。 - Alessandro Pereira Rodrigues
@AlessandroPereiraRodrigues 抱歉回复晚了,请问您使用的Cuda版本是多少? - Paritosh Yadav
你能否尝试使用Cuda 8版本,我相信Collab已经安装(默认)Cuda 9.0+。 - Paritosh Yadav
Colab安装的CUDA版本是10.1.243。我已经得到以下代码在colab中安装版本8: "!pip install mxnet-cu80"。但我不知道我是否正确。请告诉我CUDA版本8的安装、导入和使用细节。我需要改变我的方法代码内部来使用CUDA吗?非常感谢您迄今为止的帮助。 - Alessandro Pereira Rodrigues
显示剩余3条评论

1

使用像PyTorch或Tensorflow这样的框架更容易。

如果不行,您可以尝试使用pycuda或numba,它们更接近“纯”GPU编程。这比仅仅使用PyTorch更难。


谢谢您的回答。假设我将我的纯Python代码转换为TensorFlow,并在TensorFlow中编写自己的反向传播方法,您认为我是否可以获得GPU或TPU的好处,而不使用TensorFlow优化工具? - Alessandro Pereira Rodrigues
不,你做不到。也许你可以使用Swift for TensorFlow快速完成它。 - korakot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接