linux下装anaconda装pytorch环境且在windows下用vscode远程调试
非科班,刚开始接触机器学习,师兄说,那你先跑跑别人的开源项目吧。那就跑吧,从GitHub上下了代码下了数据集,一开始想在自己笔记本win10上跑,配了几天配好了环境,模型跑起来的一瞬间我听到电脑在咆哮,好吧,我怂了,又搞了台式机来,既然要重新配环境那就干脆换Linux吧。谨此记录,我相信我还会有再配环境的一天。
一、Linux端
要带显卡的电脑,一个8G或以上U盘
1.装系统
(1)首先还是需要在一台带windows系统的电脑上操作的
-
Ubuntu下载: https://ubuntu.com/download/desktop
-
本文使用Ubuntu 20.04.1 LTS
(2)做系统盘
- 格式化U盘
- 在win10上,只需要双击刚刚下载的ISO文件,然后选中打开的窗口中所有文件,将其复制到U盘
- 不是win10系统就下载一个软件来引导,例如rufus: https://rufus.ie/
(3)BIOS设置:关闭快速启动
- 重启电脑,一直狂戳F12(不同牌子电脑按键不同,请自行查询)
- 直到进入BIOS,点击方向箭头→ 移动到Security
- 再按↓移动到Secure Boot上,点击回车键,选择Disable
- 最好去Boot里面看看USB Boot是否为Enabled
我的理解是,要是一开始就是开启快速启动的(省去了能进入BIOS的界面),重启个百八十次戳坏F2也没法进入BIOS,所以win10应该这样操作:
- 单击开始菜单选择“设置”,进入到设置后选择“系统”
- 打开系统后选择“电源和睡眠”,并在右侧选择“其他电源选项”
- 打开“电源选项”中找到“选择电源按钮的功能”
- 进入后,点击上方“更改当前不可用的设置”
- 接着在窗口下方“关机设置”中取消勾选第一项“启用快速启动(推荐)”,点击“保存修改”即可
(3)安装Ubuntu
- 插入U盘
- 重启电脑
- 一直狂戳F12
- 在出现的界面选择你的U盘
- 选Install Ubuntu,想试试也可以选Try ubuntu whthout install
- 具体安装选项见 https://ubuntu.com/download/desktop页面下方的安装说明,也就是下Ubuntu的地方
参考链接: https://www.jianshu.com/p/54d9a3a695cc
2.换源
我先直接从师兄的路由器上戳了根网线过来就能上网了,之后要改成自己拨号上网
- 换源,先查看版本名,ubuntu20.04对应的是“focal”,用以下命令查看版本名:
lsb_release -c
- 首先备份原来的软件源并另存:
sudo cp -v /etc/apt/sources.list /etc/apt/sources.list.backup
- 执行chmod命令更改文件权限使软件源文件可编辑:
sudo chmod 777 /etc/apt/sources.list
- 之后通过gedit命令编辑软件源:
sudo gedit /etc/apt/sources.list
- 打开源文件后,进入编辑模式将所有的代码删干净,然后复制粘贴你需要的镜像源(把ubuntu版本名替换为你在自己系统上查看到的版本名)
#阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
- 修改完软件源后,更新软件列表和软件:
sudo apt update
sudo apt upgrade
参考链接:https://www.cnblogs.com/lynn-z/p/12874504.html
3.拨号上网
- 桌面系统推荐使用NetworkManager,自己戳根网线,打开终端,输入
ifconfig
- 要是提示缺东西,使用如下命令先下载要的东西再看看ifconfig
sudo apt-get install (提示缺的东西)
- 会看到你的有线网卡的名字,大概叫enp啥的,然后再输入
nm-connection-editor
- 出现图形化界面,点左下角+号—>选择DSL/PPPoE–>进入下图,Connnection name随意设置、修改Parent interface为有线网卡名字、设置Username和Password、保存、重启
参考链接:https://www.cnblogs.com/FaithALL/p/13268058.html
4.装NVDLA驱动
- 查看当前电脑的显卡型号
lshw -numeric -C display
- 到NVIDIA的官网下载对应驱动:https://www.nvidia.cn/geforce/drivers/,下载好之后放到用户目录下
- 删除原有的NVIDIA驱动程序,如果你没有安装过,或者已经卸载,可以忽略:
sudo apt-get remove –purge nvidia*
- bios禁用禁用secure boot,也就是设置为disable。如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。操作方式见上文。
- 禁用nouveau
#打开编辑配置文件:
sudo gedit /etc/modprobe.d/blacklist.conf
#在最后一行添加:
blacklist nouveau
#这一条的含义是禁用nouveau第三方驱动,之后也不需要改回来。
#由于nouveau是构建在内核中的,所以要执行下面命令生效:
sudo update-initramfs -u
- 重启
reboot
- 重启之后,可以查看nouveau有没有运行:
lsmod | grep nouveau # 没输出代表禁用生效
- 输入以下命令停止可视化桌面,之后会进入一个新的命令行会话,使用当前的用户名密码登录。想恢复可视化界面就 sudo telinit 1
sudo telinit 3
- 安装驱动
#给驱动文件增加可执行权限:
sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run
#执行安装:
sudo sh ./NVIDIA-Linux-x86_64-390.48.run --no-opengl-files
- 检测NVIDIA驱动是否成功安装
nvidia-settings
- 会出现NVIDIA的驱动管理程序,可以看到NVIDIA Driver Version是多少
参考链接:https://blog.csdn.net/wf19930209/article/details/81877822
5.装CUDA
- 输入以下命令验证是否安装了gcc,若没有就sudo apt install gcc
gcc --version
- 禁用nouveau,可以使用下面命令查看,如果没有输出代表成功,如果正确安装了NVIDIA的驱动就会禁止掉了
lsmod | grep nouveau
- 在这里看NVIDIA Driver Version对应的CUDA版本:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
- 在这里下载对应的cuda:https://developer.nvidia.com/cuda-toolkit-archive
- 选择好版本就能看到对应的安装方式,照要求输入安装命令
- 安装过程的选项选择
(1). 会先有个阅读声明,一直按D即可,然后accept。
(2). 选项install nvidia accelerated> Graphics Driver,输入n,因为我们已经安装了nvidia的驱动。
(3). 选项install the OpenGL> libraries,如果双显卡(集显+独显)选择n,如果只有独显可以选择y,如果双显卡选择y的话,会出现黑屏或者循环登录的问题,如果加了上面的参数就不会出现这个选项了。
(4). 后面的可以都选择yes,最后一个选项我们可以选择n,也就是不复制Samples,因为安装目录下有samples
- 安装过程结束后会有以下信息,记住你的路径
Driver :Installed
Toolkit :Installed in /usr/local/cuda-9.2
Samples :Installed in /home/vincent
- 将cuda的bin和lib写入系统环境。打开~.bashrc文件在末尾追加两句,更换路径和版本为你的路径和版本,然后退出重新打开终端即可。.bashrc的路径可以在文件管理器查看,用sudo gedit 打开它进行编辑。
export CUDA_HOME=/usr/local/cuda-9.2
export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.2/bin:$PATH
- 验证cuda是否成功安装,终端输入,如果有CUDA的版本信息代表正常。
nvcc -V
- 编译samples例子,如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功啦
#编译并测试设备 deviceQuery:
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest
参考链接:https://blog.csdn.net/wf19930209/article/details/81879514
6.装Anaconda
- 官网下载:https://www.anaconda.com/products/individual
- 拷到Linux里,接着进入终端到安装目录下,打开终端输入以下命令进行安装,安装文件名为你的安装文件名
bash Anaconda3-2018.12-Linux-x86_64.sh
- 然后开启安装,在安装过程中,基本上不断按回车或者yes默认就行了。
不过注意最后一步有一个询问你是否安装vscode,如果你没有需要就输入no - 环境变量配置
#修改profile文件
sudo gedit /etc/profile
#在文件的末尾加上下述代码,然后保存关闭
#Anaconda
export PATH=$PATH:/home/software/anaconda3/bin
#重新载入配置文件,输入
source /etc/profile
- 测试。在终端输入python3,出现Anaconda字样表示安装成功。输入exit()可退出python环境
Anaconda换源
因为使用anaconda会出现CondaHTTPError问题。
- 快速创建channels配置文件的备份(保险起见)
cp ~/.condarc{,.bak}
- 查看配置文件的内容
gedit ~/.condarc
- 主要是删除defaults和默认源,加入清华源,如下,清华源是http不是https,不然还是会error。(但是后来发现清华源里头的版本都很低,有条件还是用国外的默认源下东西吧,或者用离线包放anaconda3/pkgs/路径下,conda装的时候会优先检测这里的包没有才联网下载)
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
show_channel_urls: true
- pip换源
# 升级 pip 到最新的版本 (>=10.0.0) 后进行配置
pip install pip -U
#使用清华源提升下载速度
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
Pip安装Python软件包,而conda安装软件包,其中可能包含以任何语言编写的软件。conda能够创建隔离的环境,该环境可以包含不同版本的Python和/或其中安装的软件包。
参考https://www.anaconda.com/blog/understanding-conda-and-pip
参考链接:
https://blog.csdn.net/qq_34288630/article/details/88352101
https://blog.csdn.net/qq_45239614/article/details/104686320
https://blog.csdn.net/qq_29861217/article/details/94051055
7.装pytorch
- 输入以下命令创建环境,选择y
conda create -n pytorch python=3.6
- 创建完输入以下命令可以查看已有环境
conda info --envs
- 进入环境
conda activate pytorch
- 进入官网查看对应的版本的下载命令:https://pytorch.org/get-started/locally/,输入下载命令选择y等待下载
- 验证
python #进入代码编辑
import torch #没报错就是成功
torch.cuda.is_available() #返回True就是能用GPU
exit() #退出python代码
conda deactivate #退出conda
- 插播一条顺便记录的注意事项: 在PyTorch 1.1.0之前的版本,学习率的调整应该被放在optimizer更新之前的。如果我们在 1.1.0 及之后的版本仍然将学习率的调整(即 scheduler.step())放在 optimizer’s update(即 optimizer.step())之前,那么 learning rate schedule 的第一个值将会被跳过。所以如果某个代码是在 1.1.0 之前的版本下开发,但现在移植到 1.1.0及之后的版本运行,发现效果变差,需要检查一下是否将scheduler.step()放在了optimizer.step()之前。
参考链接:https://blog.csdn.net/qyhaill/article/details/103043637
二、Windows端
1.装vscode
就下载安装嘛
2.使用SSH
- 远程主机安装SSH服务器,SSH扩展只能连接64位的Linux操作系统
sudo apt-get install openssh-server
- 查看远程主机IP
ifconfig
- 如果使用的系统是Windows10,系统中已经自带了SSH
- 在VS Code扩展市场搜索remote,选择Remote-SSH,点击安装:
- 设置SSH扩展显示登录终端。打开命令面板(Ctrl+Shift+P),输入ssh,选择设置:
- 启动SSH连接远程主机
- 输入远程主机的IP和用户名,保存
- 选择连接,选择系统为Linux,按提示输入密码就能连成功,若连接不成功查看IP地址对不对。
- 打开远程目录作为工作区
- 安装扩展,注意,在远程开发的时候扩展分为本地扩展和远程扩展,安装远程扩展才能对远程代码进行跳转定义和跳转引用(选择代码右键有了这个跳转选项)
参考链接:
https://www.jb51.net/article/186113.htm
https://blog.csdn.net/qq_27727147/article/details/101203360
3.TMUX
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。
- 安装,安装完成后,键入tmux命令,就进入了 Tmux 窗口。按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口
sudo apt-get install tmux
- 新建会话。第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。
tmux new -s <session-name>
- 分离会话。在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离
tmux detach
- 查看当前所有的 Tmux 会话
$ tmux ls
# or
$ tmux list-session
- 接入会话
# 使用会话编号
$ tmux attach -t 0
# 使用会话名称
$ tmux attach -t <session-name>
- 杀死会话
# 使用会话编号
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t <session-name>
- 最简操作流程。
新建会话 tmux new -s my_session。
在 Tmux 窗口运行所需的程序。
按下快捷键Ctrl+b d将会话分离。
下次使用时,重新连接到会话 tmux attach-session -t my_session。