Ubuntu20.4中复现Graspness
文章目录
- Ubuntu20.4中复现Graspness
-
- 1.安装cuda和cudnn
- 2.安装pytorch
- 3.安装MinkowskiEngine
- 4.编译graspnetAPI
- [5. RuntimeError: "floor" "_vml_cpu" not implemented for 'Int'](#5. RuntimeError: "floor" "_vml_cpu" not implemented for 'Int')
- Refernece
🚀非常重要的环境配置🚀
- ubuntu 20.04
- cuda 11.1.0
- cudnn v8.9.7
- python 3.8.19
- pytorch 1.8.0
- numpy 1.23.5
详细配置如图所示:
1.安装cuda和cudnn
具体可以参考这篇:ubuntu配置多版本cuda+cudnn环境,及版本切换方法
2.安装pytorch
具体可以参考这篇:【Linux】Ubuntu20.04版本配置pytorch环境2023.09.05【教程】
3.安装MinkowskiEngine
在安装MinkowskiEngine
之前,我们需要先安装相关的依赖:
bash
pip install ninja #官方文档没说,这里依赖还需要安装ninja库
conda install openblas-devel -c anaconda #安装依赖
然后,我们可以参考nvidia的官方流程:MinkowskiEngine,官方文档里说,MinkowskiEngine
只支持CUDA 10.2
和CUDA 11.X
版本,分别有两个安装的流程,这里以CUDA 11.X
版本为例:
这里推荐使用本地安装的方式,而不是使用pip
或者conda
,本地安装的方式更容易成功。
本地安装的流程如下:
bash
export CUDA_HOME=/usr/local/cuda-11.1 # 安装前需要先制定你的CUDA_HOME
export MAX_JOBS=2 # 然后降低占用CPU的核心数目,避免卡死
git clone https://github.com/NVIDIA/MinkowskiEngine.git
cd MinkowskiEngine
python setup.py install --blas_include_dirs=${CONDA_PREFIX}/include --blas=openblas
安装完毕后,如果能成功导入就表明安装成功了,比如
4.编译graspnetAPI
直接参考官方给的流程就好,参考这里:graspness_implementation
如果出现numpy
相关的问题:
ImportError: numpy.core.multiarray failed to import ( auto-generated, because you didn't call 'numpy.import _array()' after cimporting numpy; use 'numpy.import array' to disable if you are certain you don't need it)
或者其他numpy
相关的问题,我们可以把numpy
的版本换成numpy==1.23.5
,而不是默认的numpy==1.20.3
直接在你的虚拟环境中
bash
pip install numpy==1.23.5
然后就可以安装官方给出的方式进行训练了。
5. RuntimeError: "floor" "_vml_cpu" not implemented for 'Int'
如果在infer的时候出现问题:
bash
...
File ".../miniconda3/envs/grasp/lib/python3.8/site-packages/MinkowskiEngine-0.5.4-py3.8-linux-x86_64.egg/MinkowskiEngine/utils/quantization.py", line 262, in sparse_quantize
discrete_coordinates = _auto_floor(coordinates)
File ".../miniconda3/envs/grasp/lib/python3.8/site-packages/MinkowskiEngine-0.5.4-py3.8-linux-x86_64.egg/MinkowskiEngine/utils/quantization.py", line 133, in _auto_floor
return torch.floor(array)
RuntimeError: "floor" "_vml_cpu" not implemented for 'Int'
这表明,我们的包里配置有点问题,进入文件:
.../miniconda3/envs/grasp/lib/python3.8/site-packages/MinkowskiEngine-0.5.4-py3.8-linux-x86_64.egg/MinkowskiEngine/utils/quantization.py
的133
行,将
python
return torch.floor(array)
# 改为:
return torch.floor(array.float())
这样就能成功进行训练了,进行infer的结果如下: