行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 机器学习 正文

用PyTorch做深度学习实验,Facebook新框架Ax和BoTorch双

在现代应用中,对实验到生产的流程进行简化是最难实现的任务之一。在已经市场化框架中,Facebook的PyTorch因其高度灵活性成为数据科学界的最爱,PyTorch能够实现快速建模和实验。但是,深度学习应用中的许多实验面临的挑战已经超出了特定框架的能力范围。
 
对于数据科学家来说,在对不同的模型或超参数配置进行评估时,通常会受到实验所需的昂贵计算资源和时间的障碍。近日,Facebook开源了两个新框架,旨在简化PyTorch应用程序中的自适应实验流程:
 
Ax:一个易访问的通用平台,面向自适应实验的理解、管理、部署和自动化。
 
BoTorch:基于PyTorch,是一个灵活的现代库,用于贝叶斯优化——一种高效的全局优化的概率方法。
 
这两种工具的目标是降低PyTorch开发人员进行快速实验的入门门槛,以便为特定问题找到较佳模型。 Ax和BoTorch都基于概率模型,简化了机器学习问题中给定环境下的探索流程。不过两个框架针对的是实验问题空间的不同维度。
 
BoTorch
BoTorch是一个基于PyTorch构建的贝叶斯优化库。贝叶斯优化的目标是在有限的资源内找到问题的最优解。通常,贝叶斯优化用于解决黑盒优化问题,比如机器学习的超参数优化,A / B测试以及许多其他科学和工程问题。
 
贝叶斯优化问题试图在无法获取函数形式的情况下对一些昂贵的评估黑盒函数f进行较大化。具体来说,优化技术在一系列测试点处对f进行评估,希望在少量评估之后确定接近最优值。
 
为了实现这一目标,需要一种方法来推断关于f尚未评估的点的概念。在贝叶斯优化中,这被称为替代模型。重要的是,替代模型应该能够以点x的函数值f(x)的后验分布的形式对预测的不确定性进行量化。

 

BoTorch是Facebook在贝叶斯优化基础上大量工作的成果,并将这些技术集成到PyTorch编程模型中。从概念上讲,与替代优化方法相比,BoTorch具备一系列独特优势。
 
基于PyTorch:BoTorch构建于PyTorch框架基础上,可以利用本机功能,如自动差异化,使用独立于设备的代码,支持高度并行化的现代化硬件(如GPU),有助于交互式计算图的动态开发。
 
较先进的建模:BoTorch支持GPyTorch中的尖端概率建模,包括多任务高斯过程(GP),可扩展GP,深度内核学习,深度GP和近似推理等。
 
提高开发人员效率:BoTorch提供了简单的编程模型,用于对贝叶斯优化的基本问题进行组合。具体而言,BoTorch依赖于基于蒙特卡罗模型的采集函数,使得新思路的实现变得更加简单,无需对基础模型做出限制性的假设。
 
高并行性带来的可扩展性:BoTorch编程模型可以优化并发性和并行性任务进行批量计算,提高了大型基础架构的可扩展性。
 
BoTorch的设计可以让PyTorch开发人员更改、交换或重新排列深度架构的不同组件,无需重建整个图形来重新训练整个模型。显然,构建低级贝叶斯优化组件是一项需要深度专业知识的任务。为了应对这一挑战,Facebook决定将BoTorch与另一个为深度学习实验提供简单编程模型的项目进行集成:
 
这就是Ax。
 
从概念上讲,Ax是一个优化实验平台,比如A / B测试,模拟或机器学习模型实验等。Ax提供了一个易用的高级API,可以和BoTorch进行连接,使开发人员能够快速建模和运行实验。 Ax和BoTorch之间的关系如下图所示。使用BoTorch可以实现新的优化算法,而Ax则提供了一个简单的API,用于配置调度、查询数据和评估结果。

 

 
从优化的角度来看,Ax可以使用多臂老虎机优化处理离散型配置(比如A / B测试的变体),还可以使用贝叶斯优化的处理连续配置(比如整数或浮点)。Ax提供了一个高度可扩展的框架,允许开发人员为PyTorch模型定制各种实验。从编程模型的角度来看,Ax提供了三个主要API:
 
循环API:用于同步优化循环,可以立即评估试验。使用此API可以在一次调用中执行优化,一旦优化完成,就可以使用实验内省。
 
服务API:可用作参数调整应用程序的轻量级服务,可以并行评估试验以及异步获得数据。
 
开发者API:主要供数据科学家,机器学习工程师和研究人员临时使用。提供大量定制化和内省功能,推荐打算使用Ax来优化A / B测试的开发者使用。
 
从编程模型的角度来看,循环 API提供了较大程度的流程简化,而开发者API实现了别的自定义功能。使用Loop API进行无约束合成Branin函数代码如下:
from ax import optimize
from ax.utils.measurement.synthetic_functions import branin
 
best_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,
)
 
而开发者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 = None
for 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生态系统已被广泛视作数据科学实验中最灵活的深度学习框架之一。随着数据科学界开始尝试Axe和BoTorch,可能会将更多新想法整合到两个框架中,优化PyTorch应用程序中的实验流程。
 
参考链接:
https://towardsdatascience.com/facebook-is-making-deep-learning-experimentation-easier-with-these-two-new-pytorch-based-frameworks-5e29754bb8de
 
声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!
 
 

微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
SEM推广服务

Copyright©2005-2028 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注

扫码入群
扫码关注

微信公众号

返回顶部