测试了一下在Win10上基于WSL2来运行Tensorflow。以下是安装步骤:
1. 安装Win10的开发版(预览体验版)
NVIDIA要求Win10的版本号是高于20145。我安装了win10专业版之后,在更新里面的预览体验计划没看到有任何显示,只能在Windows网站上手动下载预览版ISO文件,下载之后安装,我选择的是最新的20231版本
2. 安装NVIDIA驱动
下载NVIDIA的支持WSL的驱动,在https://developer.nvidia.com/cuda/wsl这个网页中下载,并安装
3. 安装WSL2
这里有两种方式,既可以先装WSL1,然后升级到WSL2,也可以直接安装WSL2。我这里是新系统,选择直接安装。
开启WSL支持功能,在Powershell中运行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart, 启用虚拟机平台功能,运行dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart, 下载最新的WSL2内核更新包 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi, 安装完成后,运行wsl --set-default-version 2,设置WSL为版本2.
之后就可以在Windows Store里面安装Linux了,我选择的是Ubuntu 18
4. 安装CUDA
设置CUDA Repo,并安装CUDA-toolkit
$ apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
$ apt-get update
$ apt-get install -y cuda-toolkit-11-0
5. 安装设置Docker
安装Docker-CE
curl https://get.docker.com | sh
安装NVIDIA Container Toolkit
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
如果以上的第2步显示No valid open pgp key,那么表示网络无法访问nvidia.github.io,需要手动添加这个网址的IP,例如编辑/etc/hosts,添加以下的IP映射
185.199.108.153 nvidia.github.io
185.199.109.153 nvidia.github.io
185.199.110.153 nvidia.github.io
185.199.111.153 nvidia.github.io
然后安装Nvidia container
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
开启一个新的WSL窗口,开启Dockers服务
$ sudo service docker stop
$ sudo service docker start
6. 运行CUDA Container
如果以上步骤都执行完毕,我们就可以运行一个样例Container来测试一下了
$ docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
运行后应该能识别出你的显卡,例如我的运行结果如下
> 1 Devices used for simulation
MapSMtoCores for SM 7.5 is undefined. Default to use 64 Cores/SM
GPU Device 0: "GeForce RTX 2080 Ti" with compute capability 7.5
> Compute 7.5 CUDA device: [GeForce RTX 2080 Ti]
这样我们就可以在WSL2下面来跑Tensorflow等深度学习框架了。