在Google Cloud Platform(GCP)中使用TensorFlow
Google Cloud Platform(GCP) 是Google的云计算服务。GCP收费灵活,默认按时长计费。也就是说,你可以迅速建立一个带GPU的实例,训练一个模型,然后立即关闭(关机或删除实例)。GCP只收取在实例开启时所产生的费用,关机时只收取磁盘存储的费用,删除后即不再继续收费。
我们可以通过两种方式在GCP中使用TensorFlow:使用Compute Engine建立带GPU的实例,或使用AI Platform中的Notebook建立带GPU的在线JupyterLab环境。
在Compute Engine建立带GPU的实例并部署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 |
- +-----------------------------------------------------------------------------+
使用AI Platform中的Notebook建立带GPU的在线JupyterLab环境
如果你不希望繁杂的配置,希望迅速获得一个开箱即用的在线交互式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环境:
我们还可以点击左上角的“+”号,新建一个终端: