1、cuda安裝
1.1 卸載安裝失敗的cuda
參考:https://blog.csdn.net/weixin_40826634/article/details/127493809
注意:因為/usr/local/cuda-xx.x/bin/下沒有卸載腳本,很可能是apt安裝的,所以通過執行下面的命令刪除:
apt-get --purge remove "cuda*"
apt-get autoremove
然后執行find / -name “cuda”,查看是否還有殘留的cuda相關文件,比如/etc/alternatives/cuda-12還存在,則執行下面的命令:
rm /etc/alternatives/cuda-12
1.2 安裝cuda及cudnn
參考:https://blog.csdn.net/weixin_40826634/article/details/127493809
注意:
- 服務器顯卡驅動支持的cuda最高版本是12.4,SparseDrive官方教程依賴的cuda運行時版本是11.6,因為運行時版本只要小于最高版本即可,所以這里安裝的是cuda-11.6。
- 安裝完cuda后,發現/usr/local/cuda-11.6/samples路徑下沒有測試用例,從官網使用命令git clone https://github.com/NVIDIA/cuda-samples.git拉取了測試用例倉庫,驗證cuda成功安裝。
- cudnn減壓后的文件夾名為cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive,和參考文檔里減壓后的文件夾cuda是對應的,只不過這里是cuda11.6對應的cudnn,參考文檔里是cuda10.0對應的cudnn。
2、數據集準備
數據集的目錄:
nuSenses/
├── can_bus
├── maps
│ ├── 36092f0b03a857c6a3403e25b4b7aab3.png
│ ├── 37819e65e09e5547b8a3ceaefba56bb2.png
│ ├── 53992ee3023e5494b90c316c183be829.png
│ ├── 93406b464a165eaba6d9de76ca09f5da.png
│ ├── basemap
│ ├── expansion
│ └── prediction
├── samples
│ ├── CAM_BACK
│ ├── CAM_BACK_LEFT
│ ├── CAM_BACK_RIGHT
│ ├── CAM_FRONT
│ ├── CAM_FRONT_LEFT
│ ├── CAM_FRONT_RIGHT
│ ├── LIDAR_TOP
│ ├── RADAR_BACK_LEFT
│ ├── RADAR_BACK_RIGHT
│ ├── RADAR_FRONT
│ ├── RADAR_FRONT_LEFT
│ └── RADAR_FRONT_RIGHT
├── sweeps
│ ├── CAM_BACK
│ ├── CAM_BACK_LEFT
│ ├── CAM_BACK_RIGHT
│ ├── CAM_FRONT
│ ├── CAM_FRONT_LEFT
│ ├── CAM_FRONT_RIGHT
│ ├── LIDAR_TOP
│ ├── RADAR_BACK_LEFT
│ ├── RADAR_BACK_RIGHT
│ ├── RADAR_FRONT
│ ├── RADAR_FRONT_LEFT
│ └── RADAR_FRONT_RIGHT
└── v1.0-trainval
├── attribute.json
├── calibrated_sensor.json
├── category.json
├── ego_pose.json
├── instance.json
├── log.json
├── map.json
├── sample.json
├── sample_annotation.json
├── sample_data.json
├── scene.json
├── sensor.json
└── visibility.json
注意:要將nuScenes-map-expansion-v1.3中的basemap、expansion、prediction拷貝到maps下。
3、SparseDrive訓練
完全按照官網的教程進行部署,訓練腳本不需要修改,就是兩步,執行訓練腳本遇到如下的問題:
排查是因為共享空間不足
mount -t tmpfs -o size=8g tmpfs /dev/shm
4、使用screen在服務器后臺運行程序
用ssh遠程的服務器終端只要關閉該終端,訓練程序也會中斷,是因為雖然ssh的終端是在本地電腦上顯示的,但是其實是服務器端的終端,所以關掉ssh的終端,就是關掉了服務器的終端,在終端上運行的程序就會中斷,通過使用screen就可以讓程序在后臺運行,即使關掉終端,程序仍然會在后臺運行。
screen常用命令:
screen -S sparsedrive #創建一個名字為sparsedrive的會話按ctrl+a后再按d,退出會話screen -r sparsedrive #重新進入會話screen -ls #查看所有會話
screen -X -S 27444 quit 刪除會話
5、報顯存不足的解決方法
在訓練時,如果發現顯存不足,用htop查看未釋放顯存的進程,如果存在程序已經結束,但是顯存還沒釋放的進程,則用下面的命令強制殺死這些進程:
kill -9 <進程id>
然后,用nvidia-smi查看,會發現素所有gpu的util都是0了,即顯存都被釋放了。