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支持代码提示,可以在输入 tf.
后按下 tab
键,即会弹出代码提示的下拉菜单。
可见,截至本文写作时,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实例类似。
提示
和Compute Engine实例一样,你很可能需要在这里选择自己适合的区域,以及申请提升自己账号在特定地区的特定型号GPU的配额。
建立完成后,点击“打开JUPYTERLAB”,即可进入以下界面:
建立一个Python 3笔记本,测试TensorFlow环境:
我们还可以点击左上角的“+”号,新建一个终端:
Running TensorFlow on Aliyun instance with GPU¶
国内也有部分云服务商(如 阿里云 和 腾讯云 )提供了 GPU 实例,且可按量计费。至本手册撰写时,具备单个GPU的实例价格在数元(Tesla P4)至二十多元(Tesla V100)每小时不等。以下我们简要介绍在阿里云使用 GPU 实例。
提示
根据不同的地区、配置和付费方式,实例的价格也是多样化的,请根据需要合理选择。如果是临时需要的计算任务,可以考虑按量付费以及使用抢占式VPS,以节约资金。
访问 https://cn.aliyun.com/product/ecs/gpu ,点击购买,界面如下:
此处,我们选择一个带有 Tesla P4 计算卡的实例。
在系统镜像中,阿里云提供多种选择,可以根据需要选择合适的镜像。
然后,通过 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 |
+-----------------------------------------------------------------------------+
确认了驱动无误之后,其他操作就可以照常执行了。
提示
阿里云这类国内的云服务提供商一般对于 VPS 的端口进行了安全策略限制,请关注所使用的端口是否在安全策略的放行列表中,以免影响Tensorflow Serving和Tensorboard的使用。