经过我的多次实际模型训练和模型环境搭建,可以说明高版本的pytorch和cuda可以兼容低版本的模型代码。如果说在运行时报错,大概率也就是只有极个别的库函数在新版本被删掉了,需要你使用别的函数替代。这种情况很少,通常只需要修改几个函数就能在高版本的pytorch下运行了。

举个常见的不兼容例子:

CuPy v10以上版本中使用cuda.compile_with_cache方法,在get_function时报错AttributeError:‘NoneType’ object has no attribute ‘get_function’。

出现这种错误的原因是:
CuPy v10及其之后的版本中,cupy.cuda.compile_with_cache方法已经被弃用了。如果不修改代码,就会报错。

解决方案

一个可行的解决方案是使用cupy.RawKernel替换cupy.cuda.compile_with_cache,即将下列代码

cupy_krl = cupy.cuda.compile_with_cache(strKernel)
cupy_launchr = cupy_krl.get_function(strFunction )

替换为:

cupy_launchr = cupy.RawKernel(strKernel, strFunction)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐