本文主要完成搭建自己的Ubuntu18.04深度学习环境搭建(Anconda和ROS共存)的搬运工作。
目录- 1. 安装Anconda
- 2. 解决 Anaconda 与 ROS 冲突
- 2.1 Python 版本冲突
- 2.2 opencv版本冲突
- 3. 安装CUDA
- 4. 安装CuDNN
- 5. 安装torch
- 6. 安装Jupyter notebook
-
下载Anconda:清华大学开源软件镜像站
-
安装
bash Anaconda3-2021.05-Linux-x86_64.sh
-
更换源
# conda 镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --set show_channel_urls yes # 配置清华PyPI镜像(如无法运行,将pip版本升级到>=10.0.0) pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
-
创建虚拟环境
conda create -n torch python=3.6
快速启动torch,不需要conda activate torch
sudo gedit ~/.bashrc alias torch=conda activate torch'
解决 Anaconda 与 ROS 冲突(python 版本与 opencv)
Anconda和ROS结合使用
-
修改 Anaconda 配置,取消每次进入终端都进入 base 虚拟环境,需要用 anaconda 的时候,再执行 conda activate base进入虚拟环境,参考之前的帖子:https://zhuanlan.zhihu.com/p/88445978
conda deactivate conda activate base conda config --set auto_activate_base false conda config --set auto_activate_base true
ROS所需要的功能包
# 查看使用的虚拟环境下的 pip,不是的话重开终端 which pip pip install catkin-tools rospkg pyyaml empy numpy
-
或者每次编译 ros 的时候,退出 anaconda base,保证默认 python 环境为 python2.7
【保姆级教程】个人深度学习工作站配置指南
验证NVIDIA驱动安装:nvidia-smi
-
下载并安装
下载cuda-toolkit-archive
wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run sudo sh cuda_10.1.243_418.87.00_linux.run
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run sudo sh cuda_10.2.89_440.33.01_linux.run
vim ~/.bashrcexport CUDA_HOME=/usr/local/cuda-10.1 export LD_LIBRARY_PATH=${CUDA_HOME}/lib64 export PATH=${CUDA_HOME}/bin:${PATH}source ~/.bashrc
-
下载
cuDNN Download
tar -xzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
sudo cp cuda/lib64/* /usr/local/cuda-10.2/lib64/ sudo cp cuda/include/* /usr/local/cuda-10.2/include/
Start Locally | PyTorch
#CUDA=10.2 pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2
简单测试,创建py文件:
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torchvision import datasets, transforms
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(-1, 320)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return F.log_softmax(x, dim=1)
def train(model, device, train_loader, optimizer, epoch):
model.train()
for batch_idx, (data, target) in enumerate(train_loader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad()
output = model(data)
loss = F.nll_loss(output, target)
loss.backward()
optimizer.step()
if batch_idx % 10 == 0:
print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format(
epoch, batch_idx * len(data), len(train_loader.dataset),
100. * batch_idx / len(train_loader), loss.item()))
def main():
cudnn.benchmark = True
torch.manual_seed(1)
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
print("Using device: {}".format(device))
kwargs = {'num_workers': 1, 'pin_memory': True}
train_loader = torch.utils.data.DataLoader(
datasets.MNIST('./data', train=True, download=True,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])),
batch_size=64, shuffle=True, **kwargs)
model = Net().to(device)
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
for epoch in range(1, 11):
train(model, device, train_loader, optimizer, epoch)
if __name__ == '__main__':
main()
6. 安装Jupyter notebook
source activate py3 # 激活py3环境 conda install ipykernel # 安装ipykernel模块 python -m ipykernel install --user --name py3 --display-name "py3" # 进行配置 jupyter notebook # 启动jupyter notebook,然后在"新建"中就会有py3这个kernel了
安装Nbextensions
conda install -c conda-forge jupyter_contrib_nbextensions pip install nbconvert==5.6.1 -i https://pypi.mirrors.ustc.edu.cn/simple
快捷键:
alias jupyter='conda activate base && jupyter notebook'



