<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 许可证。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号