基于WSL2+Docker的TensorFlow2配置流程

基于WSL2+Docker的TensorFlow2配置流程

本流程在Windows 11下进行,也适用于最新版本的Windows 10。基于Windows操作系统,对于日常使用和同时使用多个其他的开发环境更加友好,上手难度低;而基于Linux的深度学习,生态成熟且案例也更多,因此WSL2是一个非常不错的选择。同时本文兼顾了基于Cuda的深度学习开发。

适用于 Linux 的 Windows 子系统(WSL)可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性

——WSL官方文档-什么是WSL?

对于PyTorch而言,直接使用WSL2+Linux发行版本+Conda建立环境即可,而TF2的GPU支持需要安装Nvidia的各种驱动和库,再加上本身是在WSL中进行,配置起来好像很复杂,因此本文将基于Docker配置环境。

为了实现 TensorFlow GPU 支持,需要各种驱动程序和库。为了简化安装并避免库冲突,建议您使用支持 GPU 的 TensorFlow Docker 映像(仅限 Linux)。此设置方式只需要 NVIDIA® GPU 驱动程序。——TensorFlow官方文档-GPU支持

文章引用部分及其内链接仅作辅助理解,不影响正常配置流程。

1. 设置WSL2环境

首先配置WSL2,可参考详细的WSL官方文档-最佳实践,这里简要说明步骤。

  1. 安装WSL

在Microsoft应用商店里安装Windows Subsystem for Linux。

  1. 安装Linux发行版本

在Microsoft应用商店里安装Ubuntu22.04或Ubuntu20.04或其他,不过感觉2004会好一些,深度学习的很多工具并不是越新越好,安装好后打开,设置完用户名和密码即可。以下将会使用Ubuntu举例。

  1. 安装Windows Terminal

Windows11自带,Windows10可以在应用商店下载。安装完后可在Terminal里直接打开刚刚配置好的Linux发行版本。

  1. 安装Visual Studio Code

都是微软出品,接入WSL更方便一些。接下来就可以通过VSCode进入WSL了,具体流程详见WSL官方文档-开始通过WSL使用 Visual Studio Code

  1. NVIDIA Driver

如果使用Cuda进行开发,顺便使用GeForce Experience把显卡驱动更新一下。

2. 设置Docker

开头已经说明了使用Docker的原因,在使用TensorFlow Docker 映像之前,首先安装Docker。这里要注意的是,不要从Ubuntu里安装docker,根据WSL的官方文档,直接安装Docker Desktop WSL 2 backend on Windows,在其中开启对于WSL2的支持即可。Docker的设置可参考详细的WSL官方文档-安装 Docker Desktop

Docker 容器与虚拟机类似,但不会创建整个虚拟操作系统。 相反,Docker 允许应用使用与运行它的系统相同的 Linux 内核。 这使得应用包能够仅要求主计算机上尚未安装的部件,从而降低包大小以及提高性能。——WSL官方文档-Docker 容器概述

后续的Docker命令输入可直接从Windows命令行中输入。

docker是用了wsl2内核,所以powershell里面用docker,就是调用wsl2里面的docker,没区别。——知乎-2022最新 Docker 和 WSL2 ,炼丹环境配置指南

3. 下载TF2镜像

本部分可详细参考TensorFlow官方文档-安装-Docker

  1. 更换Docker国内源

下载之前,更换Docker镜像为国内源,否则下载过慢且断连。试了几个,科大的不行了,可以使用阿里云镜像加速器。参考CSDN-Docker Hub的使用以及配置阿里云镜像加速,登录阿里云官网,获取镜像加速器地址,在Docker Desktop-Settings-Docker Engine页中,更改Json添加"registry-mirrors":[]一项,并列入国内源即可:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://****.mirror.aliyuncs.com"
  ]
}
  1. 下载镜像

我们要安装的是最新的TF2+GPU+Jupyter版本,因此在Windows命令行中直接输入并等待下载完成。

docker pull tensorflow/tensorflow:latest-gpu-jupyter

下载好后,我们可以从Docker Desktop-Images-Local中看到Name为tensorflow/tensorflow,Tag为latest-gpu-jupyter的镜像。

4. 使用镜像

  1. 创建容器

在Windows命令提示符中输入

docker run --gpus all -it tensorflow/tensorflow:latest-gpu-jupyter

我们可以从在Docker Desktop-Containers中看到随机命名的新容器。

  1. 进入容器

开启Vscode,左下角“New WSL Window”进入WSL Ubuntu系统,操作详看1.4节。为VSCode安装Docker扩展,在左侧选项卡中选中Docker,可以看到绿色三角正在运行的Docker容器,右键,选择“Attach Visual Studio Code”,选择刚刚创建的新名字。

进入新的VSCode窗口,这个时候我们就进入容器了,从扩展页搜索Jupyter,选择在Container ***中安装,安装完后,新建一个Jupyter Notebook,右上角选择内核自动选定Python3, 然后就可以开始编辑啦。

  1. GPU支持

根据知乎-2022最新 Docker 和 WSL2 ,炼丹环境配置指南的说法,只要运行参数包含以下即可开启GPU,否则无GPU运行

--gpus all

在新建的Notebook里,输入以下一句并运行查看显卡情况

!nvidia-smi

输入以下两句并运行查看TF对GPU的调用情况

import tensorflow as tf 
tf.config.list_physical_devices('GPU')

5. Docker操作

随后可通过VSCode Docker扩展或Docker Desktop进行可视化容器暂停,停止,删除等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘤熊豪杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值