点击我爱计算机视觉标星,更快获取CVML新技术


晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI

Facebook在PyTorch开发者大会上正式推出了PyTorch 1.3,并宣布了对谷歌云TPU的全面支持,而且还可以在Colab中调用云TPU。

之前机器学习开发者虽然也能在Colab中使用PyTorch,但是支持云TPU还是第一次,这也意味着你不需要购买昂贵的GPU,可以在云端训练自己的模型。

而且如果你是谷歌云平台(Google Cloud Platform)的新注册用户,还能获得300美元的免费额度。

现在PyTorch官方已经在Github上给出示例代码,教你如何免费使用谷歌云TPU训练模型,然后在Colab中进行推理。

训练ResNet-50

PyTorch先介绍了在云TPU设备上训练ResNet-50模型的案例。如果你要用云TPU训练其他的图像分类模型,操作方式也是类似的。

在训练之前,我们先要转到控制台创建一个新的虚拟机实例,指定虚拟机的名称和区域。

如果要对Resnet50在真实数据上进行训练,需要选择具有最多CPU数量的机器类型。为了获得最佳效果,请选择n1-highmem-96机器类型。

然后选择Debian GNU/Linux 9 Stretch + PyTorch/XLA启动盘。如果打算用ImageNet真实数据训练,需要至少300GB的磁盘大小。如果使用假数据训练,默认磁盘大小只要20GB。

创建TPU

  1. 转到控制台中创建TPU。

  2. 在“Name”中指定TPU Pod的名称。

  3. 在“Zone”中指定云TPU的区域,确保它与之前创建的虚拟机在同一区域中。

  4. 在“ TPU Type”下,选择TPU类型,为了获得最佳效果,请选择v3-8TPU(8个v3)。

  5. 在“ TPU software version”下,选择最新的稳定版本。

  6. 使用默认网络。

  7. 设置IP地址范围,例如10.240.0.0。

官方建议初次运行时使用假数据进行训练,因为fake_data会自动安装在虚拟机中,并且只需更少的时间和资源。你可以使用conda或Docker进行训练。

在fake_data上测试成功后,可以开始尝试用在ImageNet的这样实际数据上进行训练。

用conda训练:

# Fill in your the name of your VM and the zone.
$ gcloud beta compute  ssh "your-VM-name" --zone "your-zone".
(vm)$ export TPU_IP_ADDRESS=your-ip-address
(vm)$ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
(vm)$ ulimit -n 10240
(vm)$ conda activate torch-xla-0.5
(torch-xla-0.5)$ python /usr/share/torch-xla-0.5/pytorch/xla/test/test_train_imagenet.py --datadir=~/imagenet --model=resnet50 --num_epochs=90 --num_workers=64 --batch_size=128 --log_steps=200

用Docker训练:

# Fill in your the name of your VM and the zone.
$ gcloud beta compute ssh "your-VM-name" --zone "your-zone".
(vm)$ export TPU_IP_ADDRESS=your-ip-address
(vm)$ docker run --shm-size 128G -v ~/imagenet:/tmp/imagenet -e XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470" gcr.io/tpu-pytorch/xla:r0.5 python3 pytorch/xla/test/test_train_imagenet.py --model=resnet50 --num_epochs=90 --num_workers=64 --log_steps=200 --datadir=/tmp/imagenet

在n1-highmem-96的虚拟机上选用完整v3-8 TPU进行训练,第一个epoch通常需要约20分钟,而随后的epoch通常需要约11分钟。该模型在90个epoch后达到约76%的top-1准确率。

为了避免谷歌云后续进行计费,在训练完成后请记得删除虚拟机和TPU。

性能比GPU提升4倍

训练完成后,我们就可以在Colab中导入自己的模型了。

打开notebook文件,在菜单栏的Runtime中选择Change runtime type,将硬件加速器的类型改成TPU。

先运行下面的代码单元格,确保可以访问Colab上的TPU:

import os
assert os.environ[‘COLAB_TPU_ADDR’], ‘Make sure to select TPU from Edit > Notebook settings > Hardware accelerator’

然后在Colab中安装兼容PyTorch/TPU组件:

DIST_BUCKET="gs://tpu-pytorch/wheels"
TORCH_WHEEL="torch-1.15-cp36-cp36m-linux_x86_64.whl"
TORCH_XLA_WHEEL="torch_xla-1.15-cp36-cp36m-linux_x86_64.whl"
TORCHVISION_WHEEL="torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl"# Install Colab TPU compat PyTorch/TPU wheels and dependencies
!pip uninstall -y torch torchvision
!gsutil cp "$DIST_BUCKET/$TORCH_WHEEL" .
!gsutil cp "$DIST_BUCKET/$TORCH_XLA_WHEEL" .
!gsutil cp "$DIST_BUCKET/$TORCHVISION_WHEEL" .
!pip install "$TORCH_WHEEL"
!pip install "$TORCH_XLA_WHEEL"
!pip install "$TORCHVISION_WHEEL"
!sudo apt-get install libomp5

接下来就可以导入你要训练好的模型和需要进行推理的图片了。

在PyTorch上使用TPU对性能的提升到底有多明显呢?官方选用了v2-8的一个核心,即1/8 TPU的情形,与使用英伟达Tesla K80 GPU进行对比,实测显示推理时间大大缩短,性能约有4倍左右的提升。

GitHub地址:
https://github.com/pytorch/xla/tree/master/contrib/colab

作者系网易新闻·网易号“各有态度”签约作者


TF & PyTorch学习群

学习交流TensorFlow、PyTorch深度学习框架的使用,欢迎加入52CV-TF & PyTorch群,扫码添加CV君拉你入群,如已为CV君其他账号好友请直接私信,

(请务必注明:框架):

喜欢在QQ交流的童鞋可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过还请见谅)


长按关注我爱计算机视觉

PyTorch终于能用上谷歌云TPU,推理性能提升4倍,我们该如何薅羊毛?相关推荐

  1. pytorch resnet50_PyTorch终于能用上谷歌云TPU,推理性能提升4倍,我们该如何薅羊毛?...

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI Facebook在PyTorch开发者大会上正式推出了PyTorch 1.3,并宣布了对谷歌云TPU的全面支持,而且还可以在Colab中调用 ...

  2. 谷歌云TPU上可以用Julia啦!0.23秒跑100张图片,Jeff Dean点赞推荐

    伊瓢 发自 凹非寺  量子位 报道 | 公众号 QbitAI 不久前,Julia Computing官方放出了一篇论文,展示将Julia代码和机器学习模型编译到谷歌云TPU的方法,可以实现在0.23秒 ...

  3. 谷歌云TPU服务正式全面开放:「AlphaGo背后的芯片」进入商用化

    来源:机器之心 概要:作为科技巨头的谷歌早已把这种高度定制化产品应用在了自己的服务器中,而本周一,谷歌宣布其他公司马上也将可以享受新型芯片带来的计算服务了. 2016 年 5 月,谷歌向世人发布了一款 ...

  4. 1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛

    大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...

  5. bert 中文 代码 谷歌_1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛...

    大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...

  6. 腾讯云数据库开源再突破:TDSQL PG版查询性能提升百倍

    日前,腾讯云数据库开源产品TDSQL PG版(开源代号TBase)宣布推出重磅升级--经过一年半的打磨,上万张表访问场景下,内存占用节省60%:查询性能提升百倍:SQL语句兼容性增强.同时,大力提升原 ...

  7. 华为云数据库内核专家为您揭秘MySQL Volcano模型迭代器性能提升千倍的秘密

    林舒,20年以上数据库内核研发经验.原IBMDB2数据库内核专家,专长数据库内核性能优化.SQL查询优化.MPP分布式数据仓库技术等.现就职于华为加拿大研究所,全程参与了RDS for MySQL以及 ...

  8. 李飞飞公布谷歌云TPU、AutoML、行业方案等多项进展,AI云计算成谷歌全新增长点...

    来源:全球人工智能 摘要:7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国旧金山举行. 7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国 ...

  9. 比GPU性能提升5倍阿里云含光800云服务器正式商用

    含光800云服务器,配备阿里平头哥自研神经网络加速芯片含光800,提供全球最高单芯片AI推理性能,有着同类处理器的数十倍性能:并针对业务场景做了深度优化,广泛适用于图像搜索.场景识别.视频内容识别.自 ...

最新文章

  1. java 线程 thread.join_java线程Thread的join方法。
  2. 7.某计算机的控制器采用微程序控制方式,微指令中的操作控制字段的16位采用混合表示法,其中用11位采用直接表示法,另外5位分为3位和2位的编码表示法,则此格式的微指令最多可表示多少个微指令?
  3. pyinstaller打包教程及错误RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat
  4. Win7 安装资料及教程
  5. aws s3仅允许cloudfront访问_初创公司如何用AWS搭建高扩展性架构
  6. setitimer()函数
  7. pdfbox 第一页加内容_Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
  8. log4j中将SocketAppender将日志内容发送到远程服务器
  9. cannot help doing用法
  10. 采用文件白名单方式构建主机安全环境
  11. AppCode开发,一个智能开发环境
  12. 普通文件与迅雷、旋风、快车、RayFile的下载地址转换算法
  13. 基于PHP的汉服文化交流平台 毕业设计-附源码240903
  14. mysql 报ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUT
  15. 计算机专业如何发表论文,如何发表一篇计算机研究生论文
  16. 计算机word设置信纸,word怎么设置信纸格式
  17. 使用股指期货与ETF基金进行期现套利
  18. 2021年的放假安排正式官宣!五一连休5天哦!
  19. 取消百度SiteApp转码
  20. Oracle Forensics t00ls

热门文章

  1. A. Second Order Statistics(sort 水题)
  2. 建筑设计 - 概念设计 - 笔记:- 第一章
  3. QT Basic 014 Model/View programming (模型、视图编程)
  4. php 判断苹果还是安卓,PHP简单判断iPhone、iPad、Android及PC设备的方法
  5. linux cat时间段,linux – cat / dev / urandom的输出是多么临时
  6. html标题前圆圈样式,漂亮的css3圆形鼠标悬停效果实例
  7. matlab表达一次函数,[转载]MATLAB数据拟合例子(一次函数、指数函数、双曲线)...
  8. mysql索引别名_Mysql索引知识详谈
  9. c语言长整数除法,大整数除法
  10. matlab中怎么表示概率,[转载]matlab中的概率函数