Win11 + WSL2 + cuda + TensorFlow的深度学习开发环境的搭建 并连接mac

前言

前段时间升级了windows台式机,由于双系统实在过于麻烦,而且现在wsl2已经很成熟了, 可以带来比较好的windows上的开发体验, 但是在环境准备过程中还是有不少坑的, 更具网上的资料和官方文档整理一下, 该文档仅代表win11的环境,win10是否适用不清楚

系统环境

  • 硬件
    • 12th Gen Intel(R) Core(TM) i7-12700KF
    • 32G 3600
    • RTX3070ti
  • 系统
    • Windows11 21H2
    • WSL2
    • Ubuntu2004

WSL2 Install

  1. 开启Windows功能: 系统设置 -> 应用 -> 可选功能 -> 最下边的 「更多 Windows 功能」 -> 找到并勾选 「Hyper-V」和「适用于 Linux 的 Windows 子系统」-> 点击确定
# 命令行开启虚拟化(如果下面安装过程中报错的话)
bcdedit /set hypervisorlaunchtype auto

WRAN: 重启电脑

image.png
  1. 配置和安装wsl2和ubuntu
# Wran: 以管理员身份运行terminal
# 1. 设置版本为wsl2
wsl --set-default-version 2
# 更新wsl
wsl --update
# 查看可安装的Linux版本
wsl --list online
# 安装Ubuntu20.04
wsl --install -d Ubuntu-20.04
  1. 安装完成后会自动启动Ubuntu, 然后按照提示配置基本信息

Cuda Install

首先在windows上去官网下载并安装(更新)显卡驱动

windows上显卡驱动安装成功以后wsl2下的ubuntu可以使用nvidia-smi查看gpu的运行状态(以管理员启动terminal)

image.png

安装Cuda

我测试的时候官方文档推荐的方式是使用cuda-toolkit安装11.4版本, 但是我发现和tensorflow还存在兼容性问题, 所以我选择使用官方安装包安装11.2版本的cuda(后面会接受toolkit的方式)

方法1. 官方cuda包安装

# 下载官方cuda安装程序
wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

# 执行安装程序安装cuda(根据提示操作)
sudo sh cuda_11.2.0_460.27.04_linux.run

方法2. cuda-toolkit安装

sudo dpkg -i cuda*ubuntu*_amd64.deb
sudo dpkg -i cuda*-cross-aarch64*_all.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-x-x -y
sudo apt-get install cuda-cross-aarch64* -y

添加环境变量

vim ~/.bashrc

# cuda
export CUDA_HOME="/usr/local/cuda-11.2"
export PATH="${CUDA_HOME}/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH"

source ~/.bashrc

安装CUDnn

首先去官网下载对应版本的包https://developer.nvidia.com/rdp/cudnn-archive(如果没有nv账号的需要先注册账号)

# 扔到ubuntu上(我选择的是 cudnn-11.2-linux-x64-v8.1.1.33.tgz)
# 解压
tar tar zxvf ./cudnn-11.2-linux-x64-v8.1.1.33.tgz 

# 移动
sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.2/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64
sudo chmod a+r /usr/local/cuda-11.2/include/cudnn*.h 
sudo chmod a+r /usr/local/cuda-11.2/lib64/libcudnn*

安装TensorFlow

注意: tensoflow的版本对于cuda和cudnn的版本, 可以去官网查询https://www.tensorflow.org/install/source#gpu
(tensorflow1.0的版本是分gpu和cpu两种的, 而2.0以后就不分了)

# TensorFlow 2
pip3 install tensorflow==2.6.0

# TensorFlow 1需要单独制定gpu的版本, 不过官网显示1.0的版本不兼容python3.8和当前版本的cuda所以我没有做测试

测试GPU的连接

import tensorflow as tf

print(tf.test.is_built_with_gpu_support())
print(tf.config.list_physical_devices())


# terminal output
root@iMac:~/susur/PythonProject# python3 -u "/root/susur/PythonProject/tf_test.py"
True
2022-04-18 13:46:52.440924: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2022-04-18 13:46:52.464878: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2022-04-18 13:46:52.465102: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:923] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

这个ould not open file to read NUMA node:...的警告是wsl的通病, 官方的解释是无害警告, 可以正常运行;

VSCode on WSL

  1. 安装插件: Remote - WSL
image.png
  1. 登入wsl (就可以使用vscode on wsl 开发代码了)


    image.png

Mac ssh登入Wsl2

windows上开发和调试还是不习惯所以我尝试了一下Mac远程连接wsl的方式, 感觉下来还是挺好用的

除了完成传统linux环境下ssh的配置以外, 还需要注意几点

  1. wsl2可以和windows本机共享一个ip, 而wsl2默认的ssh 端口为23, 也就是说其ssh-host为${you-windows-ip}:23, (这里要注意的是, wsl2上的端口要避免和windows上产生冲突);
  2. 虽然是共享ip,但是外界并不能直接访问wsl2, 需要配置端口映射才能访问;
  3. 需要在防火墙开发端口的访问权限;

防火墙开发端口

Windows安全中心 -> 防火墙和网络保护 -> 高级设置


image.png
image.png

配置开放端口


image.png
image.png
image.png

设置端口映射

# option prot proxy
netsh interface portproxy add v4tov4 listenport=23 listenaddress=0.0.0.0 connectport=23 connectaddress=localhost
# show port proxy
netsh interface portproxy show all


侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         23          localhost       23

然后设置完其他常规的ssh配置以后mac上就可以正常使用ssh连接wsl2了

image.png

VSCode on Wsl for Mac

在mac端的vscode上安装插件: Remote-ssh

然后在~/.ssh/config文件中配置ssh连接信息就可以了

# my windows wsl2
Host Wsl2
  HostName 192.168.31.100
  User root
  Port 23
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容