写点什么

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:002335
用户头像
李冬梅 加V:busulishang4668

发布了 1021 篇内容, 共 633.6 次阅读, 收获喜欢 1187 次。

关注

评论

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

程序员口头禅:一张嘴就知道是青铜还是王者

高端章鱼哥

Swagger 中 allOf 的详细解读

Liam

程序员 后端 接口文档 API swagger

C#实现多线程的几种方式

EquatorCoco

Java C# JVM

软件测试学习笔记丨JIRA-Bug管理流程定制

测试人

软件测试

设备二维码怎么生成?三分钟即可搞定

草料二维码

二维码 二维码生成 草料二维码 设备巡检二维码 设备二维码

C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理

不在线第一只蜗牛

c++ 人工智能 前端 Web框架

详解GaussDB(DWS)中的行执行引擎

EquatorCoco

Java 数据库 GaussDB

开发大型体育赛事直播平台:现成源码解决方案有哪些功能

软件开发-梦幻运营部

用户研究之全面解析Persona

养心进行时

用户研究 用户行为分析 用户分析 用户画像 用户特征分析

The Battle of High-End Wi-Fi Chips: IPQ5322 vs. IPQ8072

wallyslilly

IPQ8072 ipq5322

李彦宏称创新不容易但不会放弃

Yan-英杰

#大模型

利用大模型训练提升AI性能

百度开发者中心

人工智能 大模型

HTTP 报文详解

快乐非自愿限量之名

网络协议 网络 HTTP

如何设计与构建 FinOps 流程、团队、体系与目标

阿里巴巴云原生

阿里云 云原生 FinOps

阿里云可观测 2024 年 4 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

6个步骤解析“用户运营”

养心进行时

运营 产品运营 用户分析 用户运营

VMware SD-WAN 6.0 发布 (含下载) - 领先的 SD-WAN 解决方案

sysin

vmware SD-WAN sdn SDN网络 velocloud

利用预训练模型优化大模型训练

百度开发者中心

人工智能 深度学习 大模型

共赴科技盛会“2024南京智博会”11月在南京国际博览中心召开

AIOTE智博会

南京智博会 物联网展 大数据展 智慧城市展

算法人生(17):从“课程学习”到“逐步暴露心理疗法”

养心进行时

人工智能 机器学习 AI 算法 #算法

用户研究系列之“心流”解析

养心进行时

用户研究 心流 用户画像分析 用户特征分析 福流

IPD是什么?如何组建 IPD(集成产品开发)团队?

IPD产品研发管理

产品 项目管理 研发管理 IPD

算法人生(16):从“K均值 & C均值”看“为人处事之道”

养心进行时

人工智能 机器学习 算法 K-Means #算法

XTransfer5月产研岗位热招

XTransfer技术

海外云手机解决海外社交媒体运营难题

Ogcloud

云手机 海外云手机 云手机海外版 美国云手机 海外云手机推荐

了解AI长文本工具:Kimi Chat与ChatGPT区别对比

蓉蓉

ChatGPT Claude

IPv6监测指标有哪些?如何才算真正完成IPv6的升级改造?

国科云

TikTok海外运营:云手机的四种快速变现方法

Ogcloud

云手机 海外云手机 云手机海外版 跨境云手机 tiktok运营

软件测试学习笔记丨Spring Boot结合 Swagger 生成 API

测试人

软件测试 springboot swagger 测试开发

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