一个github算法在低端显卡上的运行

https://github.com/zorzi-s/PolyWorldPretrainedNetwork

这个算法在win10 nvidia上成功运行的代码调整,只要能跑出来就行

低端是多低?我跑了下这个项目,差不多最少要3G左右的显存才行,这还是非训练情况下,单张推理需要大概这么多。如果2G我也不知道会不会报OOM
另外楼上说的cuda问题,torch版本需要有cuda的,你如果显卡太低了安装不了cuda也是没办法的。
所以,满足显存3G以上,最好4g左右,能够安装上cuda10.2是最好的。
简单的写一个测试程序,将下面的代码放到prediction.py里面的prediction函数下面,然后运行,如果cuda没有报错,说明你的显卡可以跑(前提请正确安装pytorch和对应的cuda版本),cuda报错那就老老实实CPU吧。

img

def prediction2(batch_size, images_directory,device="cpu"):
    cuda = torch.cuda.is_available() and device != 'cpu'
    from skimage import io
    from skimage.transform import resize
    model = R2U_Net()
    model = model.eval()
    head_ver = DetectionBranch()
    head_ver = head_ver.eval()
    suppression = NonMaxSuppression()
    matching = OptimalMatching()
    matching = matching.eval()
    if cuda:
        suppression = suppression.cuda()
        model = model.cuda()
        matching = matching.cuda()
        head_ver = head_ver.cuda()


    # NOTE: The modules are set to .train() mode during inference to make sure that the BatchNorm layers
    # rely on batch statistics rather than the mean and variance estimated during training.
    # Experimentally, using batch stats makes the network perform better during inference.

    print("Loading pretrained model")
    model.load_state_dict(torch.load("./trained_weights/polyworld_backbone"))
    head_ver.load_state_dict(torch.load("./trained_weights/polyworld_seg_head"))
    matching.load_state_dict(torch.load("./trained_weights/polyworld_matching"))

    # Initiate the dataloader
    image_path=f"{images_directory}P0032.png"
    window_size = 320
    max_points = 256
    image = io.imread(image_path)
    image = resize(image, (window_size, window_size, 3), anti_aliasing=True, preserve_range=True)
    image = torch.from_numpy(image)
    rgb = image.permute(2, 0, 1) / 255.0
    rgb = rgb[None]
    if cuda:
        rgb = rgb.cuda()

    speed = []
    predictions = []

    t0 = time.time()

    features = model(rgb)
    occupancy_grid = head_ver(features)

    _, graph_pressed = suppression(occupancy_grid)

    poly = matching.predict(rgb, features, graph_pressed)

    speed.append(time.time() - t0)


    for i, pp in enumerate(poly):
        for p in pp:
            predictions.append(single_annotation(0, [p]))

    del features
    del occupancy_grid
    del graph_pressed
    del poly
    del rgb

    print("Average model speed: ", np.mean(speed) / batch_size, " [s / image]")

    fp = open("predictions.json", "w")
    fp.write(json.dumps(predictions))
    fp.close()


if __name__ == '__main__':
    prediction2(batch_size=1,
            images_directory="./images/", #图片路径
            device="cuda"
            )

torch起码需要cuda5,也就是GTX950以上的卡
低端显卡没用,低端显卡其实要跑就是相当于CPU运算

赶紧换个显卡吧

代码要求运行的 显卡是 Nvidia RTX 3090
Nvidia RTX 3090 是一款高性能的图形处理器(GPU),属于Nvidia的GeForce系列产品之一。
在低端显卡上运行,算力不够。
无解的

PolyWorldPretrainedNetwork是一个基于OpenAI Gym和PyTorch实现的强化学习算法,需要在具备一定计算能力的设备上运行。如果您想在低端显卡上运行该算法,可能需要进行一些调整。

以下是一些可能有用的调整方法:

降低模型复杂度:
该算法使用的模型比较复杂,可能需要比较高的计算能力才能运行。您可以尝试降低模型的复杂度,例如减少神经网络的层数或减少每层的神经元数量。这样可以减少计算量,从而提高算法在低端设备上的运行速度。

降低训练轮数:
该算法需要经过一定的训练才能取得良好的结果。您可以尝试降低训练轮数,从而减少算法需要的计算量。不过,这可能会影响算法的性能。

使用GPU加速:
如果您的低端设备支持GPU加速,可以尝试使用GPU加速来提高算法的运行速度。该算法使用PyTorch实现,PyTorch支持CUDA加速,可以利用GPU来加速计算。您可以在PyTorch的文档中了解如何使用CUDA加速。

使用更小的环境:
该算法使用的环境比较大,可能需要比较高的计算能力才能运行。您可以尝试使用更小的环境,例如使用更小的游戏场景或者更少的物体数量。这样可以减少计算量,从而提高算法在低端设备上的运行速度。

调整超参数:
该算法使用了一些超参数,例如学习率和优化算法等。您可以尝试调整这些超参数,从而优化算法的性能和计算速度。例如,可以尝试使用更小的学习率来减少计算量,或者使用更简单的优化算法来加速优化过程。

请注意,对于该算法的具体调整方式,需要根据您的具体设备和运行环境来进行调整,需要您具备一定的深度学习和计算机知识。此外,调整算法可能会影响算法性能和计算结果,需要进行充分测试和验证。因此,建议您在进行调整之前先了解算法的原理和实现细节,并仔细阅读算法的文档和代码,以避免不必要的错误和问题。如果您遇到了具体的问题或困难,可以提出具体问题,我们将尽力帮助您解决。

由于您没有提到具体的算法和代码,我无法针对您的情况给出具体的解决方法。但是,您可以尝试以下几个方面来调整代码,以确保它在Windows 10 Nvidia上能够成功运行:

  1. 检查GPU驱动程序是否正确安装。确保您的显卡驱动程序是最新版本,并且与您的操作系统和GPU型号兼容。
  2. 检查CUDA和cuDNN是否正确安装。确保CUDA和cuDNN的版本与您的GPU和TensorFlow版本兼容。
  3. 修改代码以便在GPU上运行。如果您的代码在CPU上运行正常,但在GPU上出现问题,那么可能需要修改代码,以便在GPU上运行。例如,您可以使用GPU版本的TensorFlow,并将模型和数据移动到GPU上进行计算。
  4. 调整代码以解决特定问题。如果问题只发生在特定情况下,例如特定数据集或模型配置,您可以考虑修改代码以解决这些问题。
  5. 确保Python环境设置正确。如果您使用的是Anaconda等Python发行版,确保您的环境设置正确,并且与您的代码和GPU兼容。
  6. 调整计算机硬件设置。如果您的GPU不是最新的,或者您的计算机硬件配置不足以支持您的任务,您可能需要考虑使用更强大的GPU或升级计算机硬件配置。
    总之,要确保代码能够在Windows 10 Nvidia上成功运行,需要一些不同的调整和优化,这需要根据您的具体情况来进行。您可以参考上述一些方面进行尝试,同时可以在网上搜索相关资料和教程来帮助您解决问题。

训练AI主要吃显卡,最好的办法就是升级显卡,通过修改代码效果不大。另一个解决办法就是使用训练好的AI模型

该回答引用ChatGPT4与博主@晓码自在合作编写:

这是一个使用PyTorch实现的多态世界环境中的强化学习算法。要在Windows 10与NVIDIA GPU上运行此代码,需要做以下调整:

  1. 安装CUDA和CuDNN,这是PyTorch对NVIDIA GPU的支持所依赖的。

  2. 安装PyTorch,选择 CUDA 10.1 支持的版本,这里选择1.5.0版本。在cmd中输入:

pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

  1. 安装gym和其他依赖项:

pip install -r requirements.txt

  1. 下载PolyWorld环境,解压并将polyworld文件夹添加到PYTHONPATH:
git clone https://github.com/ethz-asl/polyworld.git 
set PYTHONPATH=%PYTHONPATH%;D:\polyworld

  1. 由于原作者使用的是Linux,文件夹路径使用/,需要替换成Windows的,并修改环境变量名:
将polyworld_env.py中的POLYWORLD_ENV_PATH = './polyworld/'改为:
POLYWORLD_ENV_PATH = r'.\polyworld\\'
将run_rl.py中的`basename = os.path.basename(__file__)`改为:
basename = os.path.basename(os.path.abspath(__file__))

  1. 运行代码,在cmd中输入:
python run_rl.py 

  1. 在运行过程中,如果提示找不到SDL2.dll文件,需要下载SDL2开发库,将SDL2.dll文件复制到代码文件夹中即可。

通过上述步骤,可以成功在Windows 10与NVIDIA GPU上运行PolyWorld环境的强化学习代码。主要是安装CUDA、PyTorch和环境本身的依赖,并修改代码中Linux风格的路径为Windows路径。

该答案引用chitgpt

使用numpy、scikit-learn等已经优化好的库,它们已经实现了GPU加速的算法。

使用PyCUDA或者PyOpenCL等Python的GPU计算库,可以直接在Python中使用GPU运算,加速计算。

使用numba库,它可以将Python代码转换成CUDA或者OpenCL代码,从而实现GPU加速。