WSL安装CentOS7及深度学习环境配置


文章目录

  • WSL安装CentOS7及深度学习环境配置
  • 前言
  • 一、安装WSL前置条件及步骤
    • 1.1 Windows 10(要求
    • 1.2.检查是否满足潜在条件
  • 二、安装WSL及CentOS7镜像
    • 2.1启动powershell分别输入以下命令
    • 2.2 如何查看存在的子系统,以及重置子系统
    • 2.3 安装环境设置普通用户
    • 2.4 ssh 连接
  • 三、Conda配置与pytorch cuda环境安装
    • 3.1 CentOS7 miniconda安装
    • 3.2配置环境
    • 3.3 CUDA、cudnn安装
    • 3.4 pytorch 安装
    • 3.5 pytorch 测试
    • 3.6 pytorch-geometric 安装及测试
      • abstract
  • 四、遇到的问题与解决方法
    • 4.1 长时间开启wsl导致window内存占用过高
    • 4.2 每次wsl2开启虚拟机IP地址变动
  • 总结

前言

写这篇文章之前自己安装过两次环境,可能每次都会产生碰到同样的问题,而每次上网查询答案总是需要多个贴共同协作,为了搭建适合自己的虚拟环境保证每一步的正确性,按顺序记录一下


一、安装WSL前置条件及步骤

写内容前先放两个帖子
链接:
WSL2的安装详细过程
基于Windwos11的WSL安装CentOS
里面包含以下要点:

1.1 Windows 10(要求

(已更新到版本 2004 的内部版本 19041 或更高版本,win11无此需求)最好是22H2版本以上,内部版本19045以上。如果未达到请按上述链接升级
.

1.2.检查是否满足潜在条件

2.1控制面板 -> 程序 -> 程序和功能 -> 启用或关闭Windows功能->适用于window的linux子系统
2.2 任务管理器->性能->CPU->虚拟化(虚拟化未开启需要进入BIOS打开虚拟化)
2.3 BIOS开启虚拟化的方法

二、安装WSL及CentOS7镜像

2.1启动powershell分别输入以下命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
#重启电脑
#更改为wsl2
wsl --set-default-version 2
安装CentOS

这里有一个地址是github上的Centwsl提供的镜像,我安装的是CentOS7,但不是这里来的,可以自己尝试一下

https://github.com/wsldl-pg/CentWSL

下载安装CentOS7参照以下的链接
基于Windwos11的WSL安装CentOS

在安装wsl中遇到各种报错可以参考这个帖子:
关于几种报错的解决办法

2.2 如何查看存在的子系统,以及重置子系统

当遇到问题需要重置系统时也很简单
powershell打开

wsl.exe --list --all   #查看存在子系统
wsl.exe --unregister CentOS7选择默认的linux版本
wslconfig /setdefault  linuxname
#切换版本
wsl --set-version linuxname
wsl --list --verbose#关闭某一个发行版
wsl -t linuxname

然后按照上述链接中重新安装一遍CentOS7即可

可能需要安装的必要的东西
更新系统中已有的软件包 yum -y update
安装gcc、gcc+、wget等 yum -y install gcc gcc-c++ make wget
安装ssh相关 yum -y install openssh-clients openssh-server
安装vim编辑器 yum -y install vim
安装压缩解压缩工具 yum -y install tar
安装网络工具 yum -y install net-tools
字符终端处理库 yum -y install ncurses

2.3 安装环境设置普通用户

CentOS7默认是root用户,设置普通用户及密码是有必要的
#这部分还没做,暂时用root用户试试
进入后输入重置密码

[root@DESKTOP-JUJ5EQK ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.

接下来设置了window下VScode配置WSL(liunx环境下)
配置CentOS7的SSH

2.4 ssh 连接

yum list installed | grep openssh-server
#修改ssh_config文件
vi /etc/ssh/sshd_config找到修改成以下样子
Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::PermitRootLogin yes

SSH启动参考这个链接启动SSH

[root@localhost ~]$ ps -e | grep sshd  #检查是否已开启ssh
[wangl@DESKTOP-JUJ5EQK:]$netstat -ta |grep ssh #检查是否已开启ssh   ubuntu系统下
[root@localhost ~]$systemctl enable sshd.service #设置ssh service自启动
[root@localhost ~]ifconfig    #查看linux系统的ip地址

VScode与wsl互联配置参照这个
vscode(windows) 如何连接虚拟机中的linux

Host SweiHostName 192.168.86.10   #linux的ip地址User swei  #linux的用户名Port 22    #端口IdentityFile "C:\Users\SweiJ\.ssh\id_rsa"   #id_rsa的路径

连接之后的情况


三、Conda配置与pytorch cuda环境安装

3.1 CentOS7 miniconda安装

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.12.1-Linux-x86_64.sh
chmod 777 Miniconda3-4.7.12.1-Linux-x86_64.sh #给执行权限
bash Miniconda3-latest-Linux-x86_64.sh

安装屏幕上的提示安装,完成!!!

(base) [root@DESKTOP-JUJ5EQK ~]#

3.2配置环境

创建新环境,添加新镜像

conda create -n mllab python=3.10.6

vi ~/.pip/pip.conf   #如果没有就创造路径创造文件#填写内容
[global]
timeout=6000
index-url = http://pypi.douban.com/simple/
trusted-host=pypi.douban.com/simple
vi ~/.condarc
#如果没有就创造文件
#填写内容
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2- defaults
show_channel_urls: true
custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

3.3 CUDA、cudnn安装

首先你要有一块英伟达显卡,其次使用 NVIDIA GeForce Experience安装最新的驱动,如果你本身已经是最新则不需要重新安装

右键->Nvidia 控制面板->系统信息->驱动程序版本

这个链接查看CUDA匹配的cuda toolkit

安装CUDA toolkit
网站提示的安装指令安装

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm
sudo yum clean all
sudo yum -y install nvidia-driver-latest-dkms
sudo yum -y install cuda

#安装遇到了报错,
https://www.nvidia.com/Download/index.aspx?lang=en-us
发现wsl中可能需要其他的nvdia的支持,此链接安装nvdia的驱动

如何在wsl安装CUDA的doc

#根据doc提供的信息,wsl暂时只有wsl-Ubuntu版本,CentOS暂时搁置,下面使用Ubuntu20.04进行部署

部署ubuntu20.04并配置

WSL GPU driver安装参考

有了前面的铺垫后面就变得轻车熟路,也没有遇到什么报错

ubuntu下的ssh配置参考2.4节
安装完成CUDA和cudnn也配置完成
接下来激动人心的时刻!!

3.4 pytorch 安装

根据环境选择安装pytorch的版本
pytorch 1.13.0 conda CUDA 11.6 linux python
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

安装依赖库
python -m pip install requirments.txt

3.5 pytorch 测试

cuda版本比非cuda版本大约加速10倍左右,具体内容后续附上

import torch
from torch import nn  # 常用网络
from torch import optim  # 优化工具包
import torchvision  # 视觉数据集
from matplotlib import pyplot as plt
import timetimestart=time.time()
if torch.cuda.is_available():device='cuda'
else:device='cpu'## 加载数据
batch_size=512
train_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('mnist_data',train=True,download=True,transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,), (0.3081,))  # 做一个标准化])),batch_size=batch_size,shuffle=True)
test_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('mnist_data/',train=False,download=True,transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,), (0.3081,))])),batch_size=batch_size,shuffle=True)
x,y=next(iter(train_loader))
x=x.to(device)
y=y.to(device)
print(x.shape,y.shape,x.min(),x.max())relu = nn.ReLU()  # 如果使用torch.sigmoid作为激活函数的话正确率只有60%
# 创建网络
class Net(nn.Module):def __init__(self):super(Net,self).__init__()# xw+b  这里的256,64使我们人根据自己的感觉指定的self.fc1 = nn.Linear(28*28,256)self.fc2 = nn.Linear(256,64)self.fc3 = nn.Linear(64,10)def forward(self,x):# 因为找不到relu函数,就换成了激活函数# x:[b,1,28,28]# h1 = relu(xw1+b1)x = relu(self.fc1(x))# h2 = relu(h1w2+b2)x = relu(self.fc2(x))# h3 = h2*w3+b3x = self.fc3(x)return x# 因为找不到自带的one_hot函数,就手写了一个
def one_hot(label, depth=10):out = torch.zeros(label.size(0), depth)idx = torch.LongTensor(label).view(-1, 1)out.scatter_(dim=1, index=idx, value=1)return out## 训练模型
net = Net().to(device)
# 返回[w1,b1,w2,b2,w3,b3]  对象,lr是学习过程
optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)train_loss = []
mes_loss = nn.MSELoss().to(device)
for epoch in range(10):for batch_idx, (x, y) in enumerate(train_loader):# x:[b,1,28,28],y:[512]# [b,1,28,28]  =>  [b,784]x = x.view(x.size(0), 28 * 28)x=x.to(device)# =>[b,10]out = net(x)# [b,10]y_onehot = one_hot(y)y_onehot=y_onehot.to(device)# loss = mse(out,y_onehot)loss = mes_loss(out, y_onehot)# 清零梯度optimizer.zero_grad()# 计算梯度loss.backward()# w' = w -lr*grad# 更新梯度,得到新的[w1,b1,w2,b2,w3,b3]optimizer.step()train_loss.append(loss.item())#  if batch_idx % 10 == 0:#      print(epoch, batch_idx, loss.item())
# plot_curve(train_loss)
# 到现在得到了[w1,b1,w2,b2,w3,b3]## 准确度测试
total_correct = 0
for x,y in test_loader:x = x.view(x.size(0),28*28)x=x.to(device)y=y.to(device)out = net(x)# out : [b,10]  =>  pred: [b]pred = out.argmax(dim = 1)correct = pred.eq(y).sum().float().item()  # .float之后还是tensor类型,要拿到数据需要使用item()total_correct += correct
total_num = len(test_loader.dataset)
acc = total_correct/total_num
print('准确率acc:',acc)
timeend=time.time()
usedtime=timeend-timestart
print('打印任务耗时%.2f s'%usedtime)
torch.Size([512, 1, 28, 28]) torch.Size([512]) tensor(-0.4242, device='cuda:0') tensor(2.8215, device='cuda:0')
准确率acc: 0.9316
#有GPU情况下的耗时
打印任务耗时68.10 s

3.6 pytorch-geometric 安装及测试

abstract

PyG (PyTorch Geometric) is a library built upon PyTorch to easily write and train Graph Neural Networks (GNNs) for a wide range of applications related to structured data

安装方法
1.安装依赖库
wheel依赖库
安装依赖库需要选择不同的版本,torch版本+cudann版本以及python版本
torch_cluster, torch_scatter, torch_sparse, torch_spline_conv

$ conda list torch
pytorch                   1.13.0          py3.10_cuda11.7_cudnn8.5.0_0    pytorch
pytorch-cuda              11.7                 h67b0de4_0    pytorch$ python
Python 3.10.6 (main, Oct 24 2022, 16:07:47) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

安装完成依赖库后直接使用 pip install pytorch-geometric !!
安装完成一个小测试:

import torch
from torch_geometric.data import Dataedge_index = torch.tensor([[0, 1, 1, 2],[1, 0, 2, 1]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)data = Data(x=x, edge_index=edge_index)
print(data)>>>Data(x=[3, 1], edge_index=[2, 4])

四、遇到的问题与解决方法

4.1 长时间开启wsl导致window内存占用过高

查看发现window进程中vmmen的内存占用过高,以下链接提供了三个解决办法:解决办法
方法1:wsl --shutdown
关闭wsl后重启
方法2:在window中写.wslconfig文本
方法3:定时释放内存的任务

4.2 每次wsl2开启虚拟机IP地址变动

windows中使用openSSH调用并不是很友善,不要使用visual studio code,建议使用git或者其他ssh进行ssh链接


总结

以上就是wsl安装及配置conda深度学习环境的内容,

【WSL】window10 安装WSL2配置conda环境及深度学习环境搭建相关推荐

  1. 在conda虚拟环境中配置cuda+cudnn+pytorch深度学习环境(新手必看!简单可行!)

    本人最近接触深度学习,想在服务器上配置深度学习的环境,看了很多资料后总结出来了对于新手比较友好的配置流程,创建了一个关于深度学习环境配置的专栏,包括从anaconda到cuda到pytorch的一系列 ...

  2. 【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Tensorflow-DirectML篇)】

    全中文网首发,可以收藏本教程纪念一下 还有个姊妹篇Pytorch版,请翻阅我的博文! 我这先晒一个结果: 首先这里推荐的系统比如Win10不要太老,尽量新一点,特别是针对WSL2 本人用的显卡是AMD ...

  3. ubuntu18 安装mysql8安装包_Ubuntu18.04深度学习环境配置

    1.安装Ubuntu18.04系统 1.1 下载Ubuntu18.04LTS的iso文件,准备一个空U盘,下载UltraISO软件: 1.2 利用UltraISO制作Ubuntu的启动盘,具体安装过程 ...

  4. Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度学习环境搭建并简单测试MPS GPU加速

    目录 开始安装 零,获取代理 一,配置代理 配置zsh走代理 配置git走代理 二,安装homebrew 三,安装miniforge 四,创建conda环境 五,安装pytorch 六,运行yolov ...

  5. 【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Pytorch-DirectML篇)】

    全中文网首发,可以收藏本教程纪念一下 这篇是之前Tensorflow-DirectML的姊妹篇,如果对TF感兴趣的可以搜索我的博文. 首先我们丢一个官网地址,但是官网那个会误导新人如果你按那个操作的话 ...

  6. 重装Ubuntu(Linux)后快速搭建工作环境(深度学习环境)

    文章目录 准备 一.安装Filezilla 二.安装显卡驱动 1. 前期准备 2. 禁用nouveau 3.安装驱动 三.安装gnome-pannel 四.安装搜狗输入法 1. 下载搜狗输入法的安装包 ...

  7. 深度学习环境配置10——Ubuntu下的torch==1.7.1环境配置

    深度学习环境配置10--Ubuntu下的torch==1.7.1环境配置 注意事项 一.2022/9/18更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一.Anaconda安装 ...

  8. linux深度学习环境配置随笔

    零.使用华为云服务器安装深度学习环境 购买云服务器后进入控制中心 远程登录服务器 这里有几种登录方法,本文使用xshell进行登录. 一.cuda.cudnn安装 参考:Linux下安装cuda和对应 ...

  9. 深度学习环境配置5——windows下的torch-cpu=1.2.0环境配置

    深度学习环境配置5--windows下的torch-cpu=1.2.0环境配置 注意事项 一.2021/10/8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一.Anacond ...

最新文章

  1. Python-Django-Ajax进阶
  2. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何设置PLC的扫描周期,运行周期
  3. Python Django 自定义Manager(重写父类方法实现自定义逻辑)
  4. lj245a引脚功能图_技术文章—教你快速读懂单片机时序图
  5. log4j2logback打印日志的效率问题【细节3】bean属性拷贝【细节4】
  6. 良心推荐:高品质音乐播放器Audirvana for Mac
  7. 24.最优布线问题(kruskal算法)
  8. 深圳试行“智能行人过街系统”,行人违规将被“拉出来示众”
  9. 搜索系统硬盘中包含指定字符串的文件的工具和方法——全文搜索、搜索文件内容(持续更新中)
  10. Terraria泰拉瑞亚服务器搭建
  11. 狸窝音频剪辑软件_5分钟学会影视剪辑:账号注册、素材寻找、剪辑使用、获取收益...
  12. Oracle账号被锁定了?the account is locked?解决最多分3步!
  13. windows账户被停用,如何启动账户?
  14. ROS 2行动-actions-
  15. ip-san 服务器 虚拟化,IP-SAN与IB-SAN网络存储的异同点分析
  16. 牛客网Chino with Equation【组合数】
  17. Kth Excluded
  18. 2022年全国大学生电子设计竞赛推荐处理器-瑞萨RZ/G2L
  19. 有限元学习笔记-非线性问题建模与张量应用
  20. 单模SIW的设计步骤

热门文章

  1. 第七回 嵌套结构逐层递进,逻辑运算先后有别
  2. AWS 中文入门开发教学 25- 高可用性设计 - 建立 ALB 负载均衡
  3. C# SQL Server笔记
  4. python写打开的excel 冲突_在Python中打开excel文件时出错
  5. Koa2——洋葱模型,简单实现
  6. C语言去除一段字符串中的空格
  7. 手机加速器连接请求点不了确定解决方法
  8. 解决video视频在ios中不能自动播放的问题
  9. 渗透测试笔记(三)——SQL注入攻击及防御(1)
  10. C#windows实验器材管理系统,耗材管理系统