晓查 发自 凹非寺
量子位 报道 | 公众号 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 osassert 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

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

大会启幕!预见智能科技新未来

量子位MEET 2020智能未来大会启幕,将携手优秀AI企业、杰出科研人员呈现一场高质量行业盛会!详情可点击图片:

榜单征集!三大奖项,锁定AI Top玩家

2019中国人工智能年度评选启幕,将评选领航企业、商业突破人物、最具创新力产品3大奖项,并于MEET 2020大会揭榜,欢迎优秀的AI公司扫码报名!

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !

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

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

    点击我爱计算机视觉标星,更快获取CVML新技术 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI Facebook在PyTorch开发者大会上正式推出了PyTorch 1.3,并宣布了对谷歌 ...

  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. 一次性同步修改多台linux服务器的密码
  2. 敏捷开发 | 张三与需求管理
  3. java 类型 字节_Java数据类型-字节
  4. eclipse创建java web项目
  5. 不用写一行代码,这款 高颜值 可视化神器,值得try一try!
  6. jQuery.sap.storage getAccessToken的技术实现
  7. labview csv文件处理_LabVIEW 相关知识点分类汇总
  8. C# 直接选择排序(史上最清晰,最通俗)
  9. spring简易学习笔记四(jdbcTemplate和事务控制)
  10. python实现简单的聊天小程序
  11. Mysql获取流水号
  12. 小程序学习:使用有赞UI组件
  13. PS 2021插件nik collection 闪退怎么办,Nik Collection崩溃闪退解决方法
  14. PowerBI可视化实战:商品销售动态ABC分析案例
  15. C1041: 无法打开程序数据库“xxx.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS
  16. 如何给php安装上pecl,PHP安装PECL扩展的方法
  17. 三维坐标要建一个4*4的矩阵?
  18. 关于我所能改的常用软件的背景图片
  19. 深度学习方法在负荷预测中的应用综述(论文阅读)
  20. 求生之路2 服务器显示人满,求生之路2服务器怎么设置人数

热门文章

  1. 赚大钱必备 怎样成为赚钱高手(图)
  2. SpringMVC 注解 : @ModelAttribute
  3. ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
  4. 关于hexo与github使用过程中的问题与笔记
  5. Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
  6. opencv:图像的基本变换
  7. mysql5.5提示Deprecated: mysql_query(): The mysql extension is deprecated
  8. springside 4 web-init 启动
  9. 使用vsftp作为集群的yum仓库
  10. instanceof 的运用