写点什么

Facebook 开源框架如何简化 PyTorch 实验

  • 2020-11-07
  • 本文字数:2889 字

    阅读完需:约 9 分钟

Facebook开源框架如何简化 PyTorch 实验

简化从实验到生产的周期是现代机器学习应用中最难实现的事情之一。在市场上的深度学习框架中,Facebook 孵化的 PyTorch 因其快速建模和运行实验的灵活性,从而成为数据科学界的宠儿。然而,深度学习应用实验的许多挑战超出了特定框架的能力。数据科学家评估不同模型或超参数配置的能力,通常会受到运行这些实验所需的昂贵计算资源和时间的阻碍。几个月前,Facebook 开源了两个新工具,旨在简化 PyTorch 应用中的自适应实验:


  • Ax:是一个可访问的通用平台,用于理解、管理、部署和自动化自适应实验。

  • BoTorch:基于 PyTorch,是一个灵活的、现代的库,用于贝叶斯优化,这是一种数据高效全局优化的概率方法。


这两个工具的目标是降低 PyTorch 开发人员的进入壁垒,以便能够进行快速实验,从而为特定问题找到最佳模型。Ax 和 BoTorch 都是基于概率模型,简化了机器学习问题中对给定环境的探索。然而,这两个框架针对的是实验问题空间的不同维度。

BoTorch

BoTorch 是构建在 PyTorch 之上的贝叶斯优化(Bayesian Optimization)库。贝叶斯优化的目标是在资源有限的情况下找到问题的最优解。贝叶斯优化通常应用于机器学习算法的超参数优化、A/B 测试等黑盒优化问题,以及许多科学和工程问题。


贝叶斯优化问题试图在无需获得 的函数形式的情况下,使一些昂贵的、难以评估的黑盒函数 最大化。在这种情况下,优化技术在一系列测试点上对 进行评估,以期在少量评估后确定一个接近最优的值。为了优化 实现这一目标,贝叶斯优化方法需要一种外推信念的方法,即在我们尚未评估的点上, 看起来是什么样子的。在贝叶斯优化中,这被称为代理模型。重要的是,代理模型应该能够量化其预测的不确定性,其形式是函数值 在点 上的后验概率。



BoTorch 是 Facebook 在贝叶斯优化方面反复研究的结果,并将这些技术整合到 PyTorch 编程模型中。从概念上讲,与其他优化方法相比,BoTorch 带来了一系列独特的优势。


PyTorch 功能:BoTorch 构建在 PyTorch 框架之上,利用了原生功能,诸如自动微分、支持使用设备无关代码的高并行化现代硬件(如 GPU),以及便于交互式开发的动态计算图。


最先进的建模:BoTorch 支持 GPyTorch 中的最先进的概率建模,包括支持多任务高斯过程(Gaussian processes,GP)。可伸缩 GP、深度内核学习、深度 GP 和近似推理。


提高开发效率:BoTorch 为组合贝叶斯优化原语提供了一个简单的编程模型。具体来说,BoTorch 依赖于基于蒙特卡洛(Monte Carlo)的采集函数,这使得实现新想法变得很简单,而不必对底层模型施加限制性假设。


并行性:BoTorch 编程模型通过批处理计算对并发性和并行性进行了优化,提高了其在大型基础架构中的可扩展性。


BoTorch 设计允许 PyTorch 开发人员更改、交换或重新安排深度神经网络架构的不同组件,而无需重新构建整个图来重新训练整个模型。显然,构建低级贝叶斯优化原语是一项需要深厚专业知识水平的任务。为应对这一挑战,Facebook 决定将 BoTorch 与另一个项目进行整合,为深度学习实验提供一个简单的编程模型:Ax。

Ax

从概念上讲,Ax 是一个优化实验的平台,例如 A/B 测试、模拟或机器学习模型。Ax 提供了一个高级的、易于使用的 API 与 BoTorch 接口,允许开发人员快速地建模并运行实验。Ax 和 BoTorch 之间的关系如下图所示。虽然可以使用 BoTorch 原语实现新的优化算法,但 Ax 为调度配置、查询数据和评估结果提供了一个简单的 API。



从优化的角度来看,Ax 可以使用多臂老虎机(multi-armed bandit)优化处理离散配置(如 A/B 测试的变体),也可以使用贝叶斯优化处理连续(如整数或浮点数)值的配置。Ax 提供了一个非常可扩展的框架,允许开发人员为 PyTorch 模型定制各种实验。从编程模型的角度来看,Ax 提供了三个主要 API:


Loop API:此 API 用于同步优化循环,可以立即对试验进行评估。有了此 API,优化可以在单个调用中执行,并且在优化完成后就可以进行实验内省。


Service API:此 API 用作参数调整应用程序的轻量级服务。在这些应用程序中,试验可以并行评估,并且数据可以异步获得。


Developer API:此 API 供数据科学家、机器学习工程师和研究人员临时使用。Developer API 允许进行大量的定制和内省,并且建议计划使用 Ax 优化 A/B 测试的人员使用。


从编程模型的角度来看,LoopAPI 提供了最大程度的简单性,而 Developer API 支持最高级别的定制。使用 Loop API 实现无约束的合成 Branin 函数就像下面的代码一样简单:


from ax import optimizefrom ax.utils.measurement.synthetic_functions import braninbest_parameters, values, experiment, model = optimize(    parameters=[        {            "name": "x1",            "type": "range",            "bounds": [-5.0, 10.0],        },        {              "name": "x2",            "type": "range",            "bounds": [0.0, 10.0],        },    ],    evaluation_function=lambda p: branin(p["x1"], p["x2"]),    minimize=True,)
复制代码


Developer API 需要对 Ax 架构组件进行更深层次的操作:


from ax import *branin_search_space = SearchSpace(    parameters=[        RangeParameter(            name="x1", parameter_type=ParameterType.FLOAT, lower=-5, upper=10        ),        RangeParameter(            name="x2", parameter_type=ParameterType.FLOAT, lower=0, upper=15        ),    ])exp = SimpleExperiment(    name="test_branin",    search_space=branin_search_space,    evaluation_function=lambda p: branin(p["x1"], p["x2"]),    objective_name="branin",    minimize=True,)sobol = Models.SOBOL(exp.search_space)for i in range(5):    exp.new_trial(generator_run=sobol.gen(1))best_arm = Nonefor i in range(15):    gpei = Models.GPEI(experiment=exp, data=exp.eval())    generator_run = gpei.gen(1)    best_arm, _ = generator_run.best_arm_predictions    exp.new_trial(generator_run=generator_run)best_parameters = best_arm.parameters
复制代码


与其他实验框架相比,Ax 提供了一些明显的优势。首先,对于初学者来说,编程模型可以与 BoTorch 之外的不同优化框架一起使用。此外,Ax 实现了优化例程选择的自动化,这减轻了数据科学家在微调模型方面的工作量。最后,该框架还得到了可视化工具和基准测试套件的补充,这些工具和套件简化了优化技术的评估。


在不同的 Facebook 团队中,Ax 和 BoTorch 得到了广泛的使用。这些框架的开源可用性是对 PyTorch 生态系统的巨大补充。PyTorch 生态系统已被认为是数据科学实验中最为灵活的深度学习框架之一。随着数据科学界开始使用 Ax 和 BoTorch 进行实验,新的想法可能会被整合到这两个栈中,以缩短 PyTorch 应用程序中的实验周期。


作者介绍


Jesus Rodriguez,IntoTheBlock 首席执行官,Invector 实验室首席科学家、哥伦比亚大学客座讲师、天使投资人、作家、演讲家。


原文链接


https://medium.com/dataseries/facebooks-open-source-frameworks-to-streamline-pytorch-experimentation-4a33f0947d99


2020-11-07 08:002224
用户头像
李冬梅 加V:busulishang4668

发布了 940 篇内容, 共 534.0 次阅读, 收获喜欢 1105 次。

关注

评论

发布
暂无评论
发现更多内容

分析型数据库:MPP 数据库的概念、技术架构与未来发展方向

星环科技

MPP数据库

anyRTC快对讲融合通信指挥调度平台

anyRTC开发者

音视频 融合通信 快对讲 视频监控 综合调度

代码重构:面向单元测试

阿里技术

星环科技自研技术,加速大数据从持久化、统一化、资产化、业务化到生态化

星环科技

大数据

Github星标120k!这份阿里独有的高并发实战笔记太强了!

做梦都在改BUG

Java redis zookeeper Netty 高并发

不愧是阿里内部新产springboot实战派文档!干货满满,不讲一句废话

采菊东篱下

微服务

厦门等保备案平台是哪个?多久可以办好?

行云管家

等保备案 厦门

iOS MachineLearning 系列(6)—— 视频中的物体轨迹分析

珲少

Wallys/DR7915/MT7915/MT7975/industrial mini pcie card /support openwrt

Cindy-wallys

MT7975 MT7915

Spring Cloud Stream:打造强大的微服务事件驱动架构

做梦都在改BUG

Java 微服务 spring cloud stream

iSulad+Kuasar:管理面资源消耗锐减 99%的新一代统一容器运行时解决方案

openEuler

Linux 容器 云原生 操作系统 Kubernetes Serverless

python游戏开发-pgzero

AIWeker

Python python小知识 三周年连更

分布式场景下,Apache YARN、Google Kubernetes 如何解决资源管理问题?

星环科技

资源管理 Apache YARN

宝塔人机识别验证:如何确保人脸识别的安全性?

百度开发者中心

人脸识别 人工智能’

神了!阿里P8级数据库专家手写出了这份438页数据库高效优化手册

做梦都在改BUG

Java 数据库 sql 性能优化

屌的一批!阿里P8推荐的Spring Cloud实战笔记

小小怪下士

Java 微服务 SpringCloud

度量分析开源社区健康度,助力企业开源生态健康发展——华为开源管理中心王晔晖

开源雨林

开源治理 OSPO OSS Compass CHAOSS

分布式计算技术(上):经典计算框架MapReduce、Spark 解析

星环科技

分布式计算

分析型数据库:分布式分析型数据库

星环科技

分析型数据库

灵活、快捷、低运维成本的数据集成方法:数据联邦架构

星环科技

数据集成 数据联邦结构

支持多模型数据分析探索的存算分离湖仓一体架构解析(下)

星环科技

湖仓一体

AppleParty(苹果派)v3 支持 App Store 新定价机制 - 批量配置自定价格和销售范围

37手游iOS技术运营团队

In App Purchase AppleParty App Store Connect API 批量创建内购IAP app store

面试官:HashMap线程不安全体现在哪里?

做梦都在改BUG

临沂等级保护测评机构有几家?在哪里?

行云管家

等保 等级测评 临沂

超级App的构建与技术驱动

没有用户名丶

ShareSDK Google平台注册指南

MobTech袤博科技

在高校内投放共享电单车有什么优势

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电单车投放 校内共享电单车 共享电单车优势

【Python实战】Python采集大学教务系统成绩单

BROKEN

三周年连更

支持多模型数据分析探索的存算分离湖仓一体架构解析(上)

星环科技

湖仓一体

分布式计算技术(下):Impala、Apache Flink、星环Slipstream

星环科技

分布式计算 Slipstream

阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册

做梦都在改BUG

Java RocketMQ 消息队列 消息中间件

Facebook开源框架如何简化 PyTorch 实验_开源_Jesus Rodriguez_InfoQ精选文章