首页 > 热门搜索 > Facebook发布PyTorch1.1,开源AI模型优化简化工具BoTorchAx

Facebook发布PyTorch1.1,开源AI模型优化简化工具BoTorchAx

2019/05/0515:42

Facebook发布PyTorch1.1,开源AI模型优化简化工具BoTorchAx

美国时间4月30日,FacebookF8开发者大会在美国加利福尼亚州的圣何塞举办。在此次开发者大会期间,Facebook开源了简化模型优化的工具——BoTorch和Ax,还发布了Pytorch1.1。

FacebookF8大会主要面向围绕该网站开发产品和服务的开发人员及企业家,大会通常包括主题演讲以及Facebook新产品、新工具的发布。其名称源自Facebook的8小时黑客马拉松竞赛。

在今年的FacebookF8大会上,扎克伯格谈到了过去一年最敏感的隐私问题,称「过去我们常常是先发布,然后发现问题后再解决」,「未来我们会更加谨慎,咨询专家做出评估,并采取更为主动积极的应对策略」。

除此之外,Facebook还发布了PyTorch的最新迭代版本——Pytorch1.1以及用于简化模型优化流程的新工具BoTorch和Ax。

开源Ax和BoTorch简化AI模型优化

在F8开发者大会上,Facebook开源了两款全新的AI工具:Ax和BoTorch,让开发者无需大量数据就能在研究与产品中解决AI难题。

据Facebook博客介绍:

  • BoTorch是一个基于PyTorch的灵活、新式的
  • 贝叶斯
  • 优化库;
  • Ax是一个理解、管理、部署、自适应实验的易获取、通用AI平台;
贝叶斯优化库BoTorch

项目地址:https://botorch.org(https://botorch.org/)

其实,BoTorch并非首个贝叶斯优化工具,但Facebook发现已有的工具难以扩展或者自定义,无法满足他们日益增长的需求。所以,Facebook开发了全新的方法,让它能够支持多噪声目标函数优化,可扩展到高度并行的测试环境,利用低保真度逼近、优化高维参数空间。

Facebook利用PyTorch的计算能力,重新思考了实现模型和优化程序的路径,开发出了BoTorch。整体来说,BoTorch提供了一个模块化以及用于组合贝叶斯优化原语的易扩展接口,包括概率代理模型,采集函数(acquisitionfunctions)和优化器。它还提供以下支持:

当前硬件(包括GPU)上的自动差分、高度并行化计算,以及通过PyTorch与深度学习模块的无缝集成。

GPyTorch中最顶级的概率建模,包括支持多任务高斯过程(GP)、可扩展GP、深度核学习、深度GP和近似推理。

通过再参数化技巧的基于蒙特卡罗的采集函数,使得实现新思想变得简单,不需要对基础模型施加限制性假设。

Facebook表示,BoTorch大大提高了贝叶斯优化研究的开发效率。它为无法分析解决方案的新方法打开了大门,包括批量采集函数和正确处理具有多个相关结果的丰富多任务模型。BoTorch的模块化设计使研究人员能够更换或重新排列单个组件,自定义算法的各个方面,从而使他们能够对现代贝叶斯优化方法进行最前沿的研究。

自适应实验可扩展平台Ax

为了配合BoTorch,Ax提供了易于使用的API,以及面向产品和研究复现所需的管理。在开发层面,这使得开发人员能够专注于应用的问题,例如探索配置等;在研究层面,它让研究人员能够花更多时间专注于贝叶斯优化的构建块。

下图展示了Ax和BoTorch在优化生态系统中的应用。以Facebook为例,Ax与其主要A/B测试、机器学习平台,以及模拟器、其他后端系统相接,需要最少的用户参与来部署配置以及收集结果。

Ax让开发人员能够创建自定义优化应用程序,或者从Jupyter笔记本中临时优化。新算法可以使用BoTorch库或其他应用程序实现。

通过以下核心功能,Ax降低了开发人员和研究人员进行自适应实验的障碍:

  • 跨框架接口:实现新的自适应实验算法。虽然Ax大量使用BoTorch作为其优化算法,但提供了通用的NumPy和PyTorch接口,以便研究人员和开发人员可以插入任何框架中可实现的方法。
  • 可定制的自动化优化程序。根据实验的特征,Ax从贝叶斯优化、bandit优化以及其他技术中选择适当的优化策略。用户可以轻松定制这些默认例程,以满足其特定应用程序的需求。
  • 系统理解工具。交互式的可视化让用户可以查看代理模型、执行诊断,以及了解不同结果之间的权衡。
  • 人可参与的优化。除了支持多个objective和系统理解之外,Ax的底层数据模型还使实验者能够在收集新数据时安全地介入其搜索空间和目标。
  • 创建自定义优化服务的能力。多个API使得Ax既可用作部署控制、收集数据的框架,也可用作可通过远程服务调用的轻量级库。
  • 用于评估新的自适应实验算法的基准测试套件。轻松比较不同算法在测试问题上的优化性能,并保存结果,以便进行可重复的研究。

为了展示Ax是如何工作的,以下是一个使用人工Booth函数作为评估函数的简单优化循环示例:

fromaximportoptimize

best_parameters,_,_,_=optimize(

parameters=[{"name":"x1","type":"range","bounds":[-10.0,10.0],},{"name":"x2","type":"range","bounds":[-10.0,10.0],},],

evaluation_function=lambdap:(p["x1"]+2*p["x2"]-7)**2+(2*p["x1"]+p["x2"]-5)**2,

minimize=True,)

best_parameters#returns{'x1':1.02,'x2':2.97};trueminis(1,3)

发布PyTorch1.1

自2017年开源以来,PyTorch已经成为全世界最受欢迎的深度学习框架之一。去年秋季发布的《2018年GitHubOctoverse报告》称PyTorch是GitHub平台上最受欢迎的开源项目之一,全世界有3100万开发者使用PyTorch。去年12月,在NeurIPS2018大会上,Facebook发布了PyTorch1.0正式版。时隔半年,今天,Facebook发布了PyTorch1.1。

项目地址:https://github.com/pytorch/pytorch/releases/tag/v1.1.0

官方博客:https://pytorch.org/blog/optimizing-cuda-rnn-with-torchscript/

与之前的版本相比,PyTorch1.1具备以下特性:

  • 提供TensorBoard的官方支持;
  • 升级了即时编译(JIT)编译器;
  • 提供新的API;
  • 不再支持CUDA8.0。

提供TensorBoard的官方支持

TensorBoard是Tensorflow中的一个在浏览器内直接可视化机器学习模型的工具。作为一个用于检查和理解训练脚本、张量和图的web应用程序套件,用户可利用TensorBoard进行第一级和原生可视化支持以及模型调试。PyTorch中没有这样的工具,之前有一些方法可以让开发者们在PyTorch中使用TensorBoard,但PyTorch一直没有提供官方支持。

现在,PyTorch1.1开始官方支持TensorBoard,只要写入一个简单的「fromtorch.utils.tensorboardimportSummaryWriter」命令即可。直方图、嵌入、图像、文本、图等可在训练中实现可视化。不过,PyTorch对TensorBoard的官方支持目前还处于试验阶段。文档浏览地址:https://pytorch.org/docs/stable/tensorboard.html。

升级了即时编译(JIT)编译器

PyTorch发明者SoumithChintala认为,JIT编译器促成了深度学习框架的里程碑式性能改进。PyTorch1.1升级了用于优化计算图的JIT编译器。

Chintala说道:「一直以来,我们都与英伟达紧密合作,基本上将所有优化都添加到JIT编译器中……新版JIT编译器实际上接近cuDNN的速度,这意味着用户的工作效率会提高很多。」

Chintala称:「JIT编译器初版在PyTorch1.0中即可使用,但其工作速度并没有比PyTorch的基本模式快多少。新的JIT编译器是研究者和自动驾驶模型构建者非常需要的一种工具。」JIT编译器还将为PyTorch带来更多的Python编程语言概念。

现在,JIT编译器能够在运行时确定如何生成最有效率的代码。Chintala希望JIT编译器可以为自定义RNN模型提供更佳的性能。

提供新的API

PyTorch1.1具有新的API,支持布尔张量以及自定义循环神经网络。

不再支持CUDA8.0。

CUDA8.0与PyTorch1.0搭配使用效果较好,但PyTorch1.1将不再支持CUDA8.0。

主要性能提升

  • nn.BatchNormCPU推理速度增加19倍
  • nn.AdaptiveAvgPool:将常见情况下size为1的输出加速30倍
  • nn.EmbeddingBag:CPU性能提高了4倍
  • Tensor.copy_:将更大的张量复制加速2-3倍。
  • torch.nonzero:比CPU上的numpy快2倍
  • 改进用于Pascal和新GPU的缓存分配器;Mask-RCNN上的内存使用率提升了10-20%
  • reducationfunctions:将一些大张量加速50-80%
  • [JIT]图融合器:在广播的情况下更好地融合反向图
  • [JIT]图融合器:用于推理的batch_norm融合
  • [JIT]图融合器:用于推理的layer_norm融合

参考链接:

  • https://github.com/pytorch/pytorch/releases/tag/v1.1.0
  • https://venturebeat.com/2019/05/01/facebook-launches-pytorch-1-1-with-tensorboard-support/

标签: 模型 贝叶斯 quot 应用程序 工具 算法 函数 框架 开发人员 研究人员 张量 用户 ai 自定义 套件 pytorch 科技 数码


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持