前言
由于经常需要在新机器上配置环境,所以索性记录下来,后续有内容也会慢慢补充
下面是自己的开发环境配置流程,主要是围绕基于 Pytorch 框架开发的目标检测算法的相关环境配置
提示:
除了第一个部分:‘‘Ubuntu基础开发环境配置’’之外,不是每个大模块都必须配置,可以根据实际需求进行配置
如果跟着流程全配置好了,基本上深度学习的开发环境后续均不用再次配置
注:以下内容仅供大家参考
一、 Ubuntu 基础开发环境配置
1.1 nvidia显卡驱动配置
首先先确保自己的显卡是nvidia,并且是独立显卡
- 查看电脑显卡型号
先终端输入以下命令,查看是否已经安装显卡驱动,若有信息输出则无需安装显卡驱动
nvidia-smi
若不知道自己显卡型号,可以通过以下命令查看显卡的代号
lspci | grep -i vga
PCI 网址
通过输入终端显示的编号到下面PCI 网址的窗口,即可获得具体显卡的型号

- 禁用原本驱动
禁用原本驱动的步骤可以参考其他博客
使用以下命令验证是否完成禁用(没有输出则表示成功禁用):
lsmod | grep nouveau
- 下载对应nvidia驱动
nvidia驱动网址
根据已知的显卡型号,选择对应显卡型号的驱动点击下载

1.2 CUDA以及cuDnn配置
- 查看现有cuda版本
nvcc -V
若无,则继续以下安装步骤;若有输出信息则跳到cuDnn的配置
- 去官网下载对应CUDA
CUDA Toolkit Archive

需要注意这里下载的版本不能大于上面命令nvidia-smi显示的CUDA Version
(作者这里为12.4,也就是一会下载的cuda版本不能大于12.4)

查看是否存在已安装的驱动版本
ls /usr/src | grep nvidia
若无其他输出,则继续安装
查看ubuntu版本
lsb_release -a
确定了当前ubuntu版本,则可以选择安装方式,安装方式有两种:一种是deb,一种是run
方法一:使用下面base installer的命令安装cuda(这里选择用deb的方式安装)

安装报错:

如遇到nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
建议重装nvidia驱动
方法二:使用run文件安装
由于上面deb文件安装经常报错,因此改为run文件安装:
下载…

给文件权限并运行run文件(这里选择使用run文件安装)
chmod 777 ./cuda_xxxx_linux.run
sudo ./cuda_xxxxxx_linux.run
选择continue

输入accept

在选择勾选的时候,注意需要把nvidia驱动的选项去掉,因为前面已经手动安装了nvidia的驱动,这里不需要安装

运行需要一段时间,漫长的等待后…
如输出以下信息则表示成功安装cuda

- 配置CUDA环境
- 用vim编辑器打开.bashrc
sudo vim ~/.bashrc
- 在最后添加以下路径
export PATH=/usr/local/cuda-11.x/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.x/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- 最后激活一下
source ~/.bashrc
- 验证
nvcc -V
若输出以下信息表示安装成功

- 配置cuDNN
- 去官网下载CUDA版本对应的cudnn
cuDNN Archive

选择tar格式
 - 使用以下命令,复制所需文件到cuda文件夹里面,并赋予权限
sudo cp cudnn-xxxxxxxxx/include/cudnn* /usr/local/cuda-11.x/include
sudo cp -P cudnn-xxxxxxxxx/lib/libcudnn* /usr/local/cuda-11.x/lib64
sudo chmod a+r /usr/local/cuda-11.x/include/cudnn*.h /usr/local/cuda-11.x/lib64/libcudnn*
验证
cat /usr/local/cuda-11.x/include/cudnn.h | grep CUDNN_MAJOR -A 2
若上述验证命令没有反应,尝试下面
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
若输出以下信息,则成功,表示安装的版本为8.9.0

如果需要重装CUDA、cuDnn则需要卸载干净原有的版本!!!
卸载流程如下:
- 卸载CUDA
cd /usr/local/cuda-xx.x/bin
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-xx.x
- 删除cudnn
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
- 验证
nvcc -V
如果输出以下信息则成功

1.3 Conda配置
- 去官网下载linux版本
anaconda
 - 安装Anaconda
bash ./Anaconda3-xxxx-Linux-x86_64.sh
一路enter,遇到许可证按q退出查看,再yes一下,然后一路enter
输出以下信息表示安装成功

最后激活一下环境变量
source ~/.bashrc
验证
conda
若输出以下信息,则表示安装成功!

若报错输出,conda:未找到命令

- 则需要配置一下环境路径
sudo vim ~/.bashrc
- 在文件最后添加,/path/to/conda是自己的conda的安装路径,默认在~/anaconda3/bin
export PATH="/path/to/conda/bin:$PATH"
source ~/.bashrc
再次验证即可
- 创建环境
conda create -n name python=3.9
注:附上conda常用命令
查看所有环境
conda env list
激活环境
conda activate env
退出环境
conda deactivate
删除环境
conda remove --name env --all
查看已安装的包
conda list
1.4 Pytorch(GPU版)配置
- 激活刚刚的虚拟环境
conda activate name
如遇到如下报错,运行一下conda init,然后关闭当前终端,重新开一个终端即可

- 下载pytorch
PyTorch官网

但是一般选择以前的版本下载比较稳定

选择合适cuda版本的pytorch,复制命令并在刚刚激活的虚拟环境中下载即可
如
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
经过漫长的下载…
输出以下信息,表示安装成功

- 验证
如果在终端验证则先输入python,进入python后依次输入下面指令
如果在ide里面则直接运行该脚本,若正常输出信息则表示安装成功
import torch
print(torch.__version__)
print(torch.version.cuda) # gpu
print(torch.backends.cudnn.version()) # cudnn
print(torch.cuda.is_available()) # gpu
print(torch.cuda.device_count())
1.5 TensorRT(C++)配置
- 下载TensorRT包
NVIDIA TensorRT Download
选择合适版本,这里选择TensorRT 8,然后选择tar或者deb版本下载

注意!!如果cuda用了deb版本安装,那么TensorRT 也必须用deb版本安装,否则安装失败!!
由于上面cuda用的run版本安装,因此这里的tensorRT作者选择tar格式安装

- 解压
tar -xzvf TensorRT-xxxxxx
- 配置环境变量
将TensorRT-xxxx/lib添加到LD_LIBRARY_PATH中
export PATH=path_to_TensorRT/TensorRT-xxxxx/bin:$PATH
export LD_LIBRARY_PATH=path_to_TensorRT/TensorRT-xxxxx/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=path_to_TensorRTTensorRT-xxxxx/lib:$LIBRARY_PATH
source ~/.bashrc
为了避免其它软件找不到 TensorRT 的库,也可以选择把 TensorRT 的库和头文件添加到系统路径下(可选)
sudo cp -r TensorRT-xxxx/lib/* /usr/lib
sudo cp -r TensorRT-xxxx/include/* /usr/include
- 验证
cd TensorRT-xxxxx/samples/sampleOnnxMNIST/
make -j8
cd ../../data/mnist
python download_pgms.py
cd ../../bin
./sample_mnist
输出以下信息则表示配置成功

二、 推荐IDE配置
2.1 Pycharm配置(Python)
PyCharm是一款适用于数据科学和Web开发的Python集成开发环境(IDE),旨在提高开发效率并改善用户体验。
选择Pycharm的原因是因为Pycharm的功能十分强大,功能包括比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。
最重要是Pycharm的界面很好看而且调试代码起来各个变量的数据也非常清晰,并且Pycharm现在已经成为主流的python的IDE了,因此强力推荐!!
Pycharm下载
选择下面的社区版,免费的;专业版只能免费使用30天

解压压缩包
tar -xzf pycharm-xxxx.tar.gz
2.1.1 工程创建
点击 New project

在 Interpreter type里面可以选择解释器的类型,选择base coda,路径选择之前装conda的路径点击create
2.1.2 环境创建
右下角点开终端,可以看到终端前面的 :(base),这个表示当前所处的环境

在该终端下使用conda命令进入之前创建的环境
conda activate name
接下来就可以开始在这个环境中运行了
2.2 VSCode配置
Visual Studio Code(简称“VS Code” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器, 可用于Windows,macOS和Linux操作系统。
选择VS Code的原因还是因为vscode是一款轻量级的编辑器,安装包小,且启动速度快,插件相当的丰富,可以根据自己的喜好安装插件,十分的个性化
VS Code
下载deb包

- 安装
sudo dpkg -i code_xxxxx
- 配置常用扩展包

vscode的配置稍微比pycharm的复杂一些
2.2.1 Vscode 环境配置之json文件配置(C++)
拉取自己的工程文件之后,按住ctrl + shift + P, 然后在搜索框中搜索config,点击第一个 Edit Configurations

此时会在工作目录下,自动创建一个.vscode的文件夹,里面有个c_cpp_properties.json文件,该文件负责配置工程项目的相关文件

- 可以在 includePath 里面加上自己所需库的头文件的文件夹
- 可以在 compilerPath 中指定编译器的路径
- 可以在 cStandard 中指定c语言的标准
- 可以在cppStandard 中指定c++语言的标准

2.2.2 Vscode 环境配置之json文件配置(Python)
待记录…
2.2.3 SSH配置(可选)
连接远程服务器或者使用云GPU资源的时候,如果想用vscode进行编辑,则需要用到ssh插件
在扩展插件的搜索框中搜索ssh,点击ssh并安装

安装之后在vsode的左下角会出现一个图标,点击该图标

点击链接:

点击添加新的ssh host:
在下面的config选项中也可以对当前的ssh host进行编辑

然后输入连接的账号和密码即可实现远程连接
当然在pycharm里面也可以安装ssh
三、 Cmake配置
3.1 查看是否存在cmake及其版本、g++版本
若有输出cmake的版本则表示已安装了cmake
cmake --version
查看g++版本
g++ --version
3.2 cmake官网下载
cmake官网
选择download,选择更旧的版本下载,这里选择3.25.1
3.3 解压、编译安装
tar -zxvf cmake-xxxxx
编译安装,需要一段时间
cd cmake-xxxxx
./bootstrap
make -j16
sudo make install
如果运行bootstrap时候报错:

提示缺少openGL的库,手动安装一下
sudo apt install mesa-common-dev libglu1-mesa-dev
之后再继续运行bootstrap,若无报错则可以继续编译make、makeinstall
3.4 验证
cmake --version
输出以下版本号信息则表示安装成功
或者通过which cmake查看安装路径
卸载cmake
如果需要卸载cmake的话,找到之前解压的文件夹
cd cmake-xxxx
sudo make uninstall
四、 Docker配置
4.1 建立docker仓库,更新apt并安装相关工具
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
4.2 添加GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4.3 根据系统架构配置稳定版的仓库
# x86_64
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4.4 更新apt工具包,然后安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
4.5 一些配置docker时遇到的报错:
报错1:连接超时
更新apt时报错:

说明网络连接不上
报错2:连接超时,无法连接到docker网址
运行官网的添加秘钥命令
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
报错信息:

报错3:找不到有效的OpenGPG谁
运行第2步添加GPG秘钥时报错

报错4:仓库被配置了多次
运行下面命令,添加稳定版仓库时候报错
说明已经添加了仓库了,无需再次添加,接下来需要添加秘钥
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

目前的问题:
接下来 sudo apt-get update这个命令一直不行,会一直连接不上
尝试1:
添加代理
export http_proxy=xxx
尝试ping通
ping xxx
依然报错

尝试2:
添加国内阿里源
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | suod apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
报错:没有release文件

尝试3:
关闭代理
unset http_proxy
unset https_proxy
报错:依然无法下载

解决方案:直接sudo apt-get install ,而不去sudo apt-get update(成功!!)
原因应该是update需要通过docker官网update,然而国内墙的严重,因此失败
直接使用国内源下载即可解决
sudo apt-get install docker-ce docker-ce-cli containerd.io
经过多次尝试终于下载完成
4.5 添加当前用户至 docker group
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
可以看看docker状态,版本信息
sudo systemctl status docker
docker version
4.6 验证 docker 安装
docker run hello-world
大功告成!!

附:docker官网步骤
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
五、某些库的安装配置(可选)
基于的环境:
ubuntu:20.04
5.1 PCL库的安装(C++)
安装可能需要的依赖:(根据实际情况选择)
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
方法一:源码编译安装
点击tags
选择合适的版本下载,ubuntu:20.04 推荐1.10.0,ubuntu:18.04 推荐 1.8.0
解压安装,并编译
unzip pcl-xxxx
cd pcl-xxx
mkdir build
cd build
cmake ..
make -j8
sudo make install
报错:运行cmake 时, 找不到FLANN
报错信息:Could NOT find FLANN (missing: FLANN_LIBRARY FLANN_INCLUDE_DIR) (Required
is at least version “1.7.0”)
解决方案:安装flann
flann的github: FLANN
解压
unzip flann-master.zip
创建build
cd flann-master && mkdir build && cd build
编译配置并安装
cmake ..
make -j8
报错:编译flann时,系统无法找到名为 ‘liblz4’ 的软件包
报错信息:No package ‘liblz4’ found
解决方案:
先查看是否存在该lib库
locate liblz4
若存在,则创建软连接
ln -s /usr/lib64/liblz4.so.1 /usr/lib/liblz4.so
若不存在,则需要下载 ‘liblz4’ 的源代码,并按照以下步骤编译安装:
./configure
make
sudo make install
方法二:apt get 安装(推荐)
由于源码编译安装pcl比较麻烦,并且库与库之间的依赖比较复杂,因此采用apt的方式安装可以节省很多时间
ubuntu:20.04 默认安装1.10版本
卸载可能存在的旧版的pcl
sudo apt-get remove libpcl-dev
安装pcl库
sudo apt-get install libpcl-dev
报错1:依赖不会被安装
报错信息:libpcl-dev : 依赖: libboost-all-dev 但是它将不会被安装
报错2:无法定位软件包
报错信息:
“ 正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态消息… 完成
E:无法定位软件包 xx-xx-xxx ”
报错3未满足的依赖关系:
报错信息:
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
xxxxxx : 依赖:xxxxxxxxxxxxx 但是它将不会被安装
依赖: xxxxxxxxxxxx 但是它将不会被安装
依赖: xxxxxxxxxxxxxxxxxxx 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
可能的尝试:
注意!!以下命令不建议使用:
以下命令会自动升级依赖包,并处理其中的依赖关系。
但是如果显卡驱动是采用手动安装的,那么将有可能导致显卡驱动无法使用,可能导致扩展屏无法正常显示
// 不建议使用该命令
sudo apt dist-upgrade
以下命令将采用 aptitude 安装所需依赖包,使用 aptitude 安装可能在处理依赖问题上比较好。但是可能会同时删除本身所依赖的包,所以需要看清楚是否会删除掉一些其他的包
比如可能会删除一些cuda的依赖包,导致后续cuda出现问题
// 不建议使用该命令
sudo aptitude install
解决方案:加入中科大源
首先先备份一份原本的源配置文件
sudo cp /etc/apt/sources.list /etc/aptsources_bak.list
使用vim打开sources.list
sudo vim sources.list
加入以下中科大源信息(这里还是推荐中科大的源,貌似清华源会出现一些问题)
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
最后更新一下源
sudo apt-get update && sudo apt-get upgrade
五、总结
总体的环境配置流程大概是这样,配置好了就可以开始愉快的深度学习之旅了!
当然,一些细节后续应该还会慢慢补充