对于一个非计算机专业的外外行,一直都用jupyter跑代码,训练模型,对于那种好多个文件夹的github大项目望而却步,想用他们的网络训练自己的数据更是让人头大,一度想去某海鲜市场买个老师教教我,但是价格之昂贵让我决定还是自己试试!!我用的是linux系统的服务器~

今天就用PointRNN任务为例,先来试一下:https://github.com/hehefan/PointRNN-PyTorch/tree/master 我们来搞这个pytorch版本,https://github.com/hehefan/PointRNN/tree/master  这个是tensorflow的

 1、把项目拷贝到服务器上:
git clone https://github.com/hehefan/PointRNN.git
2、创建一个新的conda虚拟环境来运行这个项目,这里我们创建一个python3.9,名为pointrnn的虚拟环境
conda create --name pointrnn python==3.9 #创建环境
conda activate pointrnn #进入环境

CUDA安装

3、接着我们来装cuda,在安装cuda前,我们先要用nvidia-smi来检测自己服务器上的最高可以安装的cuda版本
nvidia-smi

跟据CUDA Version,我们在服务器上可以安装小于等于11.7版本的cuda,这里我们就安装11.7版本

4、安装对应版本的cuda,下载对应版本的安装包CUDA Toolkit Archive | NVIDIA Developer

这里我们参考手把手教你在linux上安装pytorch与cuda_linux系统下安装pytorch和cuda-CSDN博客这位大佬的CUDA安装教程!!

选择好对应版本的安装包后,在服务器上直接通过下面的方式下载并安装,也可以下载到本地再上传到服务器

wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run

然后cd到cuda toolkit安装包的位置,使用下面的方式进行安装

sh cuda_11.7.1_515.65.01_linux.run

接下来看大神教程:

因为我们上面自定义了路径,所以我们要配置环境信息,首先vim ~/.bashrc进入文件配置用户环境变量

vim ~/.bashrc

然后在文件的最后加上这下面两段话并保存(:wq),把下面代码中的两个/path/to/cuda11.7替换成上面你自定义的路径就好

export PATH=/path/to/cuda11.7/bin:$PATH
export LD_LIBRARY_PATH=/path/to/cuda11.7/lib64:$LD_LIBRARY_PATH

最后用source ~/.bashrc更新用户环境,更新后可能会自动退出虚拟环境,记得再conda activate pointrnn 进入虚拟环境

source ~/.bashrc

这时候cuda toolkit11.7已经安装完毕,输入nvcc -V命令,安装成功会显示如下信息,当我们要更换其他版本的cuda toolkit的时候,只需要按照同样的流程走下来,然后修改环境变量就好。(亲测有效,再次感谢斯内克贾

nvcc -V

pytorch安装

5、安装pytorch,这里面我是先参考斯内克贾 给的教程来安装的,但是可能是版本不兼容等问题,所以一直就没有成功,会报错,如果你们也按照那个教程走到最后一步也报错的话,可以试一下下面方法:

去pytorch的官网找到cuda对应版本的pytorch,Previous PyTorch Versions | PyTorch 这里我们选择torch 2.0.0,找到pip安装语法。

首先我们在服务器上先安装cpu版本的pytorch

conda install pytorch==2.0.0

然后再用官网给定的pip方式安装,不知道为什么conda安装语法就会报错

pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1

这时我们在服务器输入python,并运行下面代码,如果显示True则说明gpu版本的pytorch安装完成

import torch
torch.cuda.is_available()

虚拟环境gcc升级

6、到这一步我们基本环境算是配置完成了,但是我还遇到了一个问题,就是在运行项目这一步时会提示系统的gcc版本过低,不支持项目所需要的配置,所以我们需要在虚拟环境中单独升级我们的gcc

首先我们通过gcc -v来查看现在环境中的gcc版本

gcc -v

我们通过下面语句先查看有哪些符合需求的gcc版本,

conda search -c conda-forge gcc

选择并在虚拟环境安装升级指定版本的gcc,并安装c++编译器。这里我们安装gcc 8.5.0以满足项目需求,注意下面代码也需要在虚拟环境下进行

conda install -c conda-forge gcc==8.5.0
conda install -c conda-forge cxx-compiler

安装完成后,我们再通过gcc -v来查看现在环境中的gcc版本,发现已经升级完成

安装确实包,调整不兼容包的版本

7、上述环境基本配置完成,但是当我们配置项目中pointnet所需要的cuda layer时候还会遇到一些问题
python setup.py install

例如在运行完上述代码后报错表明在编译过程中缺少 crypt.h 头文件

/home/wczhao/anaconda3/envs/pointrnn/include/python3.9/Python.h:44:10: fatal error: crypt.h: No such file or directory
#include <crypt.h>
^~~~~~~~~
compilation terminated.
error: command '/home/wczhao/anaconda3/envs/pointrnn/bin/x86_64-conda-linux-gnu-cc' failed with exit code 1

所以我们需要在虚拟环境中安装 libcrypt-dev

conda install conda-forge::libxcrypt

例如我们还会遇到numpy版本过高的提示,使用NumPy 1.x编译的模块无法在NumPy 2.0.2中运行,可能会导致崩溃。

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.2 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.

因此我们可以选择通过下面语句来将NumPy降级到2.0以下的版本

pip install 'numpy<2'

按照github中的README.md来配置并训练

8、通过解决了前面所有的配置问题后,运行下面代码

    cd modules
    python setup.py install
python pointrnn_cell_impl.py  

我们会得到下图所示的返回结果,证明我们已经完成了pointnet++的cuda layer配置

9、由于这个项目中没有给定测试集和训练集,因此我们需要自行下载并把它放到正确的位置

首先我们查看train.py文件,发现其训练集应该在data/minst文件夹中,测试集应该在data文件夹下一个叫test-1mnist-64-128point-20step.npy的文件

我们随后查看了PointRNN-PyTorch/datasets/moving_mnist.py文件,发现训练数据集为'train-images-idx3-ubyte.gz'文件

我们发现测试数据集在pointrnn-tensorflow中提供了下载链接GitHub - hehefan/PointRNN: TensorFlow implementation of PointRNN, PointGRU and PointLSTM. 

训练集由于时手写数字的标准数据集,可以在官网上下载得到MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges

我们下载好数据并在项目文件夹PointRNN-PyTorch/下建立data文件夹以及data/minst文件夹,放入相应的数据集

mkdir data
cd data
mkdir minst

最后所有的数据以及环境都准备好后,通过运行下面代码,实现Pointrnn运行

python train.py 

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐