<a href="https://pypi.org/project/betty-ml/"></a>
<a href="https://github.com/leopard-ai/betty/tree/main/test">
</a>
<a href="https://arxiv.org/abs/2207.02849">
</a>
<a href="https://github.com/psf/black"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/170633fc-a2b5-428b-a224-1e599c36a180.svg" alt="代码风格:black"></a>
<a href="https://join.slack.com/t/betty-n2l2441/shared_invite/zt-1ojhxizmt-NTmj2aVi3BuQQ6hjhNBTFQ" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-加入Slack-blueviolet?logo=slack" />
</a>
pip install betty-ml
[2023年9月22日] "SAMA:使可扩展元学习变得实用"被NeurIPS 2023接收!
[2023年1月21日] Betty 作为*前5%杰出论文(口头报告)*被ICLR 2023接收!
[2023年1月12日] 我们发布了Betty v0.2,新增了对元学习的分布式训练支持!目前可用的功能包括:
现在只需一行代码的更改,您就可以轻松扩展元学习(甚至元元学习)!
Betty 是一个基于PyTorch的广义元学习(GML)和多层优化(MLO)库,它为多个大规模应用提供了简单且模块化的编程接口,包括元学习、超参数优化、神经架构搜索、数据重加权等等。
使用Betty,用户只需做两件事即可实现任何GML/MLO程序:
每个层级问题可以通过七个组件定义:(1)模块、(2)优化器、(3)数据加载器、(4)损失函数、(5)问题配置、(6)名称,以及(7)其他可选组件(例如学习率调度器)。损失函数(4)可以通过training_step方法定义,而其他所有组件可以通过类构造函数提供。例如,图像分类问题可以定义如下:
from betty.problems import ImplicitProblem from betty.configs import Config # 设置模块、优化器、数据加载器(即(1)-(3)) cls_module, cls_optimizer, cls_data_loader = setup_classification() class Classifier(ImplicitProblem): # 设置损失函数 def training_step(self, batch): inputs, labels = batch outputs = self.module(inputs) loss = F.cross_entropy(outputs, labels) return loss # 设置问题配置 cls_config = Config(type='darts', unroll_steps=1, log_step=100) # Classifier问题类实例化 cls_prob = Classifier(name='classifier', module=cls_module, optimizer=cls_optimizer, train_data_loader=cls_data_loader, config=cls_config)
在GML/MLO中,每个问题通常需要访问其他问题的模块来定义其损失函数。这可以通过使用name属性来实现,如下所示:
class HPO(ImplicitProblem): def training_step(self, batch): # 设置超参数优化损失 ... # HPO问题类实例化 hpo_prob = HPO(name='hpo', module=...) class Classifier(ImplicitProblem): def training_step(self, batch): inputs, labels = batch outputs = self.module(inputs) loss = F.cross_entropy(outputs, labels) """ 通过名称'hpo'访问来自另一个问题HPO的权重衰减超参数 """ weight_decay = self.hpo() reg_loss = weight_decay * sum( [p.norm().pow(2) for p in self.module.parameters()] ) return loss + reg_loss cls_prob = Classifier(name='classifier', module=...)
Engine类处理问题之间的层级依赖关系。在GML/MLO中,有两种类型的依赖关系:上到下(u2l)和下到上(l2u)。这两种类型的依赖关系都可以用Python字典定义,其中键是起始节点,值是目标节点列表。
from betty import Engine from betty.configs import EngineConfig # 设置所有涉及的问题 problems = [cls_prob, hpo_prob] # 设置上到下和下到上的依赖关系 u2l = {hpo_prob: [cls_prob]} l2u = {cls_prob: [hpo_prob]} dependencies = {'u2l': u2l, 'l2u': l2u} # 设置Engine配置 engine_config = EngineConfig(train_iters=10000, valid_step=100) # 实例化Engine类 engine = Engine(problems=problems, dependencies=dependencies, config=engine_config) # 执行多层优化 engine.run()
由于Engine管理整个GML/MLO程序,您还可以在其中执行全局验证阶段。构成GML/MLO程序的所有问题都可以通过它们的名称再次访问。
class HPOEngine(Engine): # 设置全局验证 @torch.no_grad() def validation(self): loss = 0 for inputs, labels in test_loader: outputs = self.classifer(inputs) loss += F.cross_entropy(outputs, targets) # 返回的字典将在每次验证后自动记录 return {'loss': loss} ... engine = HPOEngine(problems=problems, dependencies=dependencies, config=engine_config) engine.run()
一旦我们分别使用Problem类和Engine类定义了所有优化问题及其之间的层次依赖关系,Betty将处理GML/MLO的所有复杂内部机制,如梯度计算和优化执行顺序。有关更多详细信息和高级功能,用户可以查看我们的文档和教程。
祝您多层次优化编程愉快!
我们提供了几个GML/MLO应用的参考实现,包括:
虽然上述每个示例传统上都有不同的实现风格,但请注意,由于Betty的存在,我们的实现共享相同的代码结构。更多示例正在开发中!
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b9d1adf4-69fc-4026-b7fd-c7a1cc227b35.png" alt="" width="100%" align="top"> </p>我们欢迎社区的贡献!请查看我们的贡献指南,了解如何为Betty做出贡献的详细信息。
如果您在研究中使用Betty,请引用我们的论文,使用以下Bibtex条目。
@inproceedings{
choe2023betty,
title={Betty: An Automatic Differentiation Library for Multilevel Optimization},
author={Sang Keun Choe and Willie Neiswanger and Pengtao Xie and Eric Xing},
booktitle={The Eleventh International Conference on Learning Representations },
year={2023},
url={https://openreview.net/forum?id=LV_MeMS38Q9}
}
Betty 使用 Apache 2.0 许可证。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号