11月30, 2019

使用Google cloud把TPU资源用起来

由于训练GPT-2模型需要多卡训练,尝试一下使用google cloud 提供的免费300美金,试用TPU训练模型。

查找了网上的资料后,摸索出使用cloud cloud创建资源的方法。

1、创建TPU

注册google cloud帐号

google cloud 在注册时不提供中国大陆的地区选择,可以选香港,在提供信用卡信息时可填写中国大陆的手机号码和信用卡地址。

启用TPU和compute engine VM

在google cloud shell中输入,命令为:

ctpu up

这里我创建了一个名为tputest的tpu。输入y确认创建。

上面的ctpu up命令主要做了如下几件事:

  • 开启Computer Engine和Cloud TPU服务
  • 创建预装有最新稳定版本TensorFlow的Computer Engine VM。其中默认的Zone是us-central1-b。
  • 使用TensorFlow的相应版本创建Cloud TPU,并将Cloud TPU的名称作为环境变量( TPU _ NAME )传递给Computer Engine VM。
  • 通过向Cloud TPU服务帐户授予特定的IAM角色(见下图),确保您的Cloud TPU可以从GCP项目中获得所需的资源。
  • 执行其他的检查。
  • 将您登录到新的Compute Engine VM。

创建ssh证书

VM启动后,在网页端SSH,然后输入下面的命令产生SSH证书

ssh-keygen -t rsa -f ~/.ssh/id_rsa_tpu -C "TPU"
cat ~/.ssh/id_rsa_tpu.pub >> ~/.ssh/authorized_keys

Cloud TPU 授权连接到Cloud Storage存储分区

如果要授予更宽泛的权限而不是将对各个存储分区的访问权限明确列入白名单,则需要向 Cloud TPU 服务帐号授予 Identity Access Management (IAM) 存储管理员角色。

Google官方文档

方式一:为 Cloud TPU 使用细粒度 ACL 注意:请向服务帐号授予 Storage Legacy > Storage Legacy Bucket Reader 角色

方式二:对 Cloud TPU 使用 IAM 权限

  • 转到项目的 Cloud IAM 页面。

  • 转到 CLOUD IAM

  • 点击 +添加 (+Add) 按钮向项目添加成员。

  • 在成员文本框中输入 Cloud TPU 服务帐号的名称。

  • 点击角色下拉列表。

  • 启用以下角色:

    Project > Viewer

    Storage > Storage Admin

创建防火墙规则

允许从外网访问实例的8888商品。 进入菜单,VPC网络->防火墙规则,创建后的规则如下:

gc1.png

启动jupyter

使用ssh远程登陆,启动jupyter

notebook  --port 8888 --allow-root --no-browser --ip=0.0.0.0

将 VM 和 Colab 相连

用端口映射通过 SSH 连接到实例(gssh 命令来自这里):

gssh --zone $ZONE $INSTANCE_NAME -- -L 8080:localhost:8080

在本地服务器 :8080 处打开浏览器

打开 Colab,创建新的 notebook:

https://colab.research.google.com/

将其连接到本地服务器,点击“Connected”旁边的下拉菜单。

链接文本 连接本地jupyter 链接文本

从 Colab 使用你的 TPU

创建一个代码块,运行如下内容:

import tensorflow as tf

TPU_WORKER = '10.0.101.2:8470' # put your IP!
session = tf.Session('grpc://' + TPU_WORKER,
                     config=tf.ConfigProto(isolate_session_state=True))

完成了!现在我们在 Colab 上就获得了一个能工作的 TPU 会话: 链接文本

释放TPU

代码跑完后切记要释放资源,否则系统会继续计费。释放资源方法如下:

删除Computer Engine VM和Cloud TPU,在GC 控制台输入:

ctpu delete

运行 ctpu status 确保未分配任何实例,以避免产生不必要的 TPU 使用费用。删除可能需要几分钟时间。如下所示的响应表明已不再有已分配的实例:

2018/04/28 16:16:23 WARNING: Setting zone to "us-central1-b"
No instances currently exist.
        Compute Engine VM:     --
        Cloud TPU:             --

!!!特别注意:如果在创建VM的时候指定了name,name在删除的时候同业也要指定name。

参考来源

本文链接:http://57km.cc/post/how to use tpu to train models.html

-- EOF --

Comments