在Build 2020大会上,Microsoft宣布Windows子系统wsl2上支持GPU计算。本篇就来实际操作下究竟如何使用NVIDA显卡的CUDA,来加速计算人工智能研究。
0. 原理图
如上图所展示,大意就是在Windows和Linux之间,通过wsl2的专用CUDA驱动来实现的。
1. 准备条件
- Windows预览版:内核为2004
- WSL2的ubantu子系统
- Windows Terminal
- WSL上的CUDA驱动程序
上述条件,预览版可以在Windows设置里修改,选择windwos预览版即可。wsl2
和windows terminal
都可以在微软商店搜索安装。wsl的专用CUDA驱动程序,可以在NVIDA官方下载安装。
2. Docker环境和NIVIDA环境设置
docker环境安装,可以用我们常用的一键脚本,也可以手动。不过在执行脚本前,先更新一下本地宝包管理器。
注意:下面代码运行前,请先开全局梯子,否则有些过程网速很慢。
apt update -y
然后在wsl中安装Docker
echo y | bash <(curl -L -s https://raw.githubusercontent.com/Baiyuetribe/codes/master/docker.sh)
接着安装NVida容器工具包
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
上述命令可以整块粘贴过去。
刷新Ubuntu apt存储库,然后安装Nvidia依赖包:
sudo apt update && sudo apt install -y nvidia-docker2
然后在CMD或POWERSHELL里关闭Ubantu
wsl.exe --shutdown Ubuntu
至此,环境准备已完毕。
3. 测试CGP计算
在Windows Terminal打开Ubantu,然后启动Docker:
service docker start
下面开始具体测试,运行下面的脚本:
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
如果一切正常,会输出如下结果:
恭喜,你已经搭建好了一套CUDA加速的开发系统。
4. 实际应用
下面为GPU计算的jupyter在线开发环境,文件比较大,本站就不做演示了,可以在谷歌Colab现成体验或者按下面步骤自己安装测试。
docker run -u $(id -u):$(id -g) -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
有点奇怪的是,使用谷歌colab实验室,转本地jupter接口时,提示无法连接,有点异常。
5. 更多资料
- Announcing CUDA on Windows Subsystem for Linux 2
- GPU Compute, WSL Install and WSL Update arrive in the latest Insider build for the Windows Subsystem for Linux