时天下承平日久,自王侯以下,莫不逾侈。
——《张衡传》南宋/范晔
目录
闲话TPU #1 背景/价格/TFRC计划及羊毛闲话TPU #2 配置GCP环境/创建TPU实例
闲话TPU #3 模型编写
闲话TPU #4 Coral Edge TPU赋能移动端
闲话TPU #5 那些使用TPU训练的巨型模型(时间和算力需求)
零/为什么会出现这篇博客?
Zero/Why is there this blog?
[补充说明1: 这个并不是篇纯粹的Tech Blog, 更多的是一些经验而谈和碎碎念, 如何省钱搞大事儿, 如何更加便捷的使用工具, 有哪些可以不掉进去的坑, 期待pure tech的敬请移步版官方英文Docs]
[补充说明2: Blog将持续更新相关信息/新鲜的坑/碎碎念, 也欢迎客官老爷随时提出意见建议和批评指正, Email: cy.z.feng@gmail.com, CyFeng16@GitHub]
up是一名大学研究狗, 彼时所在实验室的GPU资源总是不够用(相信分家产的事情大家都或多或少的遇见过啦), 包括但不限于互相kill the task或遇见嫌疑人X独占整台机器的情况.
另一个很大的原因是, idea迭代的速度确确实实的限制了我们无意间天马行空的想象力的落地, 像是看到一篇新鲜出炉的paper的motivation or idea和你我曾经迸发的点子似曾相识, 这个时候的挫败感相比碌碌无为来的更为严重.
本着[打不过就加入的原则] 以更快速地工具验证自己idea的原则, 在中国好师兄李卓桓助力下, 时至今日update这篇Blog时, 使用TPU时长已经高达6 months ^ ^.
嗯, Blog就到这里了, 完结撒花**:tada:** :tada: :tada: [就会被满怀期待看Blog的人寄刀片的啊吧]
壹/简单介绍下TPU
One/Brief introduction of TPU
TPU, 全称Tensor Processing Unit, 从名字看就是专门用来加速Tensor计算的, 何谓Tensor计算? 矩阵计算是也. 最近有幸受邀去PnP中一家某清的创业孵化器公司交流TPU的使用, 了解到NVIDIA家最新的2080Ti在HPC和Deep Learning中Performance up了大约10X的样子, 我想应该是受益于20系列GPU计算卡中特有的Tensor core计算单元, 然而…然而要知道N家的卡中Tensor core只有2个96×96(16-bit)的阵列呀[以后升级了不负责任的说], TPU中的矩阵计算单元却有128X128, 这也说明了为什么TPU在合理优化的前提下, 模型运行速度会飞起来~~(内存加载的优化也至关重要, XLA编译下Fusion大大优化了内存访存.)
1 | # Python PEP20 |
节省时间即是珍惜生命, 不是么!!! [顺便防脱发(误)]
希望更多的国人researcher加入使用TPU的大家庭中, 也希望大G在硬件方面更加open, V4什么的快点呀!!! (定价更平民一些就更好了, 毕竟都是要恰饭的嘛! :-D)
Cloud TPU version | Support started | Support ends |
---|---|---|
v3-8 | October 10, 2018 | (End date not yet set) |
v2-8 | February 12, 2018 | (End date not yet set) |
v2-32 (alpha) | November 7, 2018 | (End date not yet set) |
v2-128 (alpha) | November 7, 2018 | (End date not yet set) |
v2-256 (alpha) | November 7, 2018 | (End date not yet set) |
v2-512 (alpha) | November 7, 2018 | (End date not yet set) |
当前(2019年03月31日11:41:06)面向公众开放的TPU分为两代, Cloud TPU v2 and Cloud TPU v3, 从实际运行的经验上比较, V3的速度大约是V2的1.8X左右(数据来源于each step的比较, 上下行和checkpoint存储为CPU的工作, TPU不背这个锅), 目前2代TPU拥有Pod的使用模式支持(可以想象成GPU的单机多卡并行), 最高支持256 个 TPU 芯片(16x16 切片)共512 cores, 性能美如画, 比肩**$399,000的DGX-2**, 每小时的price也是美如画 - -. 当前Google Cloud Platform上的TPU定价如下表(北美区域):
Cloud TPU v2 | 每小时每个 TPU $4.50。 |
---|---|
抢占式 TPU v2 | 每小时每个 TPU $1.35。 |
Cloud TPU v3 | 每小时每个 TPU $8.00。 |
---|---|
抢占式 TPU v3 | 每小时每个 TPU $2.40。 |
v2-32 Cloud TPU v2 Pod(Alpha 版) | 每小时每个 Pod 切片 $24.00。 |
---|---|
v2-128 Cloud TPU v2 Pod(Alpha 版) | 每小时每个 Pod 切片 $96.00。 |
v2-256 Cloud TPU v2 Pod(Alpha 版) | 每小时每个 Pod 切片 $192.00。 |
v2-512 Cloud TPU v2 Pod(Alpha 版) | 每小时每个 Pod 切片 $384.00。 |
- 抢占式 TPU 是指 Cloud TPU 在需要将资源分配给另一项任务时,可以随时终止(抢占)的 TPU。__抢占式 TPU 的费用要比普通 TPU 低廉得多__。
各个Area的价格大概是 北美 < 欧洲 < 亚太 (也就酱, 没有太多的槽点).
[划重点/划重点/划重点]可以薅的羊毛有大G家用来支持研究和教育事业的TFRC计划, 如果加入了 TFRC 计划,则可在限定时间内免费使用 Cloud TPU v2 和 v3。只要 TPU 在 us-central1-f 地区内运行,就无需为 Cloud TPU 支付费用。(调用TPU的GCE/VM的money还要自己出啦…呵)
根据身边被安利的同志们的reply而言, 通过给TFRC小组去Email, 平均回复(核可)时间是2 weeks, 一般情况下granted TPU数量为: 5XTPUv2/100X TPUv2(preemptible)/2XTPUv3酱紫, 限免使用时长为1 month. [相信聪颖智慧的各位一定会善加利用free的资源或者想到搞到更多free资源的method]
曾经算过笔账, 不是密集型生产实践任务, 很单纯的使用TPU进行一些模型的验证, 每天消耗的小钱钱up的钱包还是能承受起的啦(难免心痛).
[划重点/划重点]可以薅的羊毛还有Google Colab. Colaboratory是一个研究项目,可免费使用的 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行, 目前提供三种免费的硬件支持: CPU
/GPU|K80
/TPU|v2
. 缺点是系统可能会停止长时间运行的后台计算, 你的计算也可能会因为浏览器自动节能等等原因断开连接.
好, 在下一篇文章中, 我们会进入下一个话题, 如何开始使用TPU.