Using TensorFlow on cloud¶
Using TensorFlow in Colab¶
Google Colab 是谷歌的免费在线交互式 Python 运行环境,且提供 GPU 支持,使得机器学习开发者们无需在自己的电脑上安装环境,就能随时随地从云端访问和运行自己的机器学习代码。
进入 Colab(https://colab.research.google.com),新建一个 Python3 笔记本,界面如下:
如果需要使用 GPU,则点击菜单 “代码执行程序 - 更改运行时类型”,在 “硬件加速器” 一项中选择 “GPU”,如下图所示:
我们在主界面输入一行代码,例如 import tensorflow as tf
,然后按 ctrl + enter
执行代码(如果直接按下 enter
是换行,可以一次输入多行代码并运行)。此时 Colab 会自动连接到云端的运行环境,并将状态显示在右上角。
运行完后,点击界面左上角的 “+ 代码”,此时界面上会新增一个输入框,我们输入 tf.__version__
,再次按下 ctrl + enter
执行代码,以查看 Colab 默认的 TensorFlow 版本,执行情况如下:
可见,截至本文写作时,Colab 中的 TensorFlow 默认版本是 1.14.0。在 Colab 中,可以使用 !pip install
或者 !apt-get install
来安装 Colab 中尚未安装的 Python 库或 Linux 软件包。比如在这里,我们希望使用 TensorFlow 2.0 beta1 版本,即点击左上角的 “+ 代码”,输入:
!pip install tensorflow-gpu==2.0.0-beta1
按下 ctrl + enter
执行,结果如下:
可见,Colab 提示我们重启运行环境以使用新安装的 TensorFlow 版本。于是我们点击运行框最下方的 Restart Runtime(或者菜单 “代码执行程序 - 重新启动代码执行程序”),然后再次导入 TensorFlow 并查看版本,结果如下:
我们可以使用 tf.test.is_gpu_available
函数来查看当前环境的 GPU 是否可用:
可见,我们成功在 Colab 中配置了 TensorFlow 2.0 环境并启用了 GPU 支持。
你甚至可以通过 !nvidia-smi
查看当前的 GPU 信息:
可见 GPU 的型号为 Tesla T4。
Using TensorFlow on Google Cloud Platform (GCP)¶
Google Cloud Platform(GCP) 是 Google 的云计算服务。GCP 收费灵活,默认按时长计费。也就是说,你可以迅速建立一个带 GPU 的实例,训练一个模型,然后立即关闭(关机或删除实例)。GCP 只收取在实例开启时所产生的费用,关机时只收取磁盘存储的费用,删除后即不再继续收费。
我们可以通过两种方式在 GCP 中使用 TensorFlow:使用 Compute Engine 建立带 GPU 的实例,或使用 AI Platform 中的 Notebook 建立带 GPU 的在线 JupyterLab 环境。
Instantiating on Compute Engine with GPU and deploying TensorFlow¶
GCP 的 Compute Engine 类似于 AWS、阿里云等,允许用户快速建立自己的虚拟机实例。在 Compute Engine 中,可以很方便地建立具有 GPU 的虚拟机实例,只需要进入 Compute Engine 的 VM 实例(https://console.cloud.google.com/compute/instances),并在创建实例的时候选择 GPU 类型和数量即可。
需要注意两点:
只有特定区域的机房具有 GPU,且不同类型的 GPU 地区范围也不同,可参考 GCP 官方文档 并选择适合的地区建立实例;
默认情况下 GCP 账号的 GPU 配额非常有限(可能是怕你付不起钱?)。你很可能需要在使用前申请提升自己账号在特定地区的特定型号 GPU 的配额,可参考 GCP 官方文档:申请提升配额 ,GCP 会有工作人员手动处理申请,并给你的邮箱发送邮件通知,大约需要数小时至两个工作日不等。
当建立好具有 GPU 的 GCP 虚拟机实例后,配置工作与在本地基本相同。系统中默认并没有 NVIDIA 显卡驱动,依然需要自己安装。
以下命令示例了在 Tesla K80,Ubuntu 18.04 LTS 的 GCP 虚拟机实例中配置 NVIDIA 410 驱动、CUDA 10.0、cuDNN 7.6.0 以及 TensorFlow 2.0 beta 环境的过程:
sudo apt-get install build-essential # 安装编译环境
wget http://us.download.nvidia.com/tesla/410.104/NVIDIA-Linux-x86_64-410.104.run # 下载NVIDIA驱动
sudo bash NVIDIA-Linux-x86_64-410.104.run # 安装驱动(一路Next)
# nvidia-smi # 查看虚拟机中的GPU型号
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 下载Miniconda
bash Miniconda3-latest-Linux-x86_64.sh # 安装Miniconda(安装完需要重启终端)
conda create -n tf2.0-beta-gpu python=3.6
conda activate tf2.0-beta-gpu
conda install cudatoolkit=10.0
conda install cudnn=7.6.0
pip install tensorflow-gpu==2.0.0-beta1
输入 nvidia-smi
会显示:
~$ nvidia-smi
Fri Jul 12 10:30:37 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 63C P0 88W / 149W | 0MiB / 11441MiB | 100% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Using Notebook in AI Platform to establish online JupyterLab environment with GPU¶
如果你不希望繁杂的配置,希望迅速获得一个开箱即用的在线交互式 Python 环境,可以使用 GCP 的 AI Platform 中的 Notebook。其预安装了 JupyterLab,可以理解为 Colab 的付费升级版,具备更多功能且限制较少。
进入 https://console.cloud.google.com/mlengine/notebooks ,点击 “新建实例 - TensorFlow 2.0-With 1 NVIDIA Tesla K80”,界面如下:
也可以点击 “自定义” 来进一步配置实例,例如选择区域、GPU 类型和个数,与创建 Compute Engine 实例类似。
建立完成后,点击 “打开 JUPYTERLAB”,即可进入以下界面:
建立一个 Python 3 笔记本,测试 TensorFlow 环境:
我们还可以点击左上角的 “+” 号,新建一个终端:
Running TensorFlow on Aliyun instance with GPU¶
国内也有部分云服务商(如 阿里云 和 腾讯云 )提供了 GPU 实例,且可按量计费。至本手册撰写时,具备单个 GPU 的实例价格在数元(Tesla P4)至二十多元(Tesla V100)每小时不等。以下我们简要介绍在阿里云使用 GPU 实例。
访问 https://cn.aliyun.com/product/ecs/gpu ,点击购买,界面如下:
此处,我们选择一个带有 Tesla P4 计算卡的实例。
在系统镜像中,阿里云提供多种选择,可以根据需要选择合适的镜像。

如果选择 “公共镜像”,可以根据提示选择提前预装 GPU 驱动,可以避免后续安装驱动的麻烦。¶

在 “镜像市场” 中,官方也提供了适合深度学习的定制镜像。在本示例中我们选择预装了 NVIDIA RAPIDS 的 Ubuntu 16.04 镜像。¶
然后,通过 ssh 连接上我们选购的服务器,并使用 nvidia-smi
查看 GPU 信息:
(rapids) root@iZ8vb2567465uc1ty3f4ovZ:~# nvidia-smi
Sun Aug 11 23:53:52 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P4 On | 00000000:00:07.0 Off | 0 |
| N/A 29C P8 6W / 75W | 0MiB / 7611MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
确认了驱动无误之后,其他操作就可以照常执行了。