betty

betty

简化广义元学习和多层优化的自动微分库

Betty是一个基于PyTorch的自动微分库,专注于简化广义元学习和多层优化的实现。它通过Problem类和Engine类提供模块化接口,支持元学习、超参数优化等大规模应用。Betty集成了多种梯度近似方法和分布式训练功能,为复杂GML/MLO程序的开发提供了灵活高效的解决方案。

Betty自动微分库元学习多层优化PyTorchGithub开源项目
<p align="center"> <a href="https://leopard-ai.github.io/betty/"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/3023079b-a101-49fa-acbe-5a54a085e045.svg" alt="" width="40%" align="top"> </a> </p> <p align="center"> 一个用于广义元学习和多层优化的自动微分库<br> <a href="https://leopard-ai.github.io/betty/">文档</a> | <a href="https://leopard-ai.github.io/betty/tutorial/basic/basic.html">教程</a> | <a href="https://github.com/leopard-ai/betty/tree/main/examples">示例</a> | <a href="https://openreview.net/pdf?id=LV_MeMS38Q9">论文</a> | <a href="https://github.com/leopard-ai/betty#citation">引用</a> | <a href="https://www.casl-project.ai/">CASL</a> </p> <div align="center">

<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">arXiv</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>

</div>
pip install betty-ml

更新

[2023年9月22日] "SAMA:使可扩展元学习变得实用"被NeurIPS 2023接收!

[2023年1月21日] Betty 作为*前5%杰出论文(口头报告)*被ICLR 2023接收!

[2023年1月12日] 我们发布了Betty v0.2,新增了对元学习的分布式训练支持!目前可用的功能包括:

  • 分布式数据并行(DDP)
  • 零冗余优化器(ZeRO)
  • (实验性) 完全分片数据并行(FSDP)

现在只需一行代码的更改,您就可以轻松扩展元学习(甚至元元学习)!

简介

Betty 是一个基于PyTorch的广义元学习(GML)和多层优化(MLO)库,它为多个大规模应用提供了简单模块化的编程接口,包括元学习超参数优化神经架构搜索数据重加权等等。

使用Betty,用户只需做两件事即可实现任何GML/MLO程序:

  1. 使用Problem类定义每个层级的优化问题。
  2. 使用Engine类定义层级问题结构。

快速开始

Problem

基础

每个层级问题可以通过七个组件定义:(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

基础

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>

特性

梯度近似方法

训练

  • 梯度累积
  • FP16/BF16训练
  • 分布式数据并行训练
  • 梯度裁剪

日志记录

贡献

我们欢迎社区的贡献!请查看我们的贡献指南,了解如何为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 许可证

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

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

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

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

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

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

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

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

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

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

iTerms

iTerms

企业专属的AI法律顾问

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

SimilarWeb流量提升

SimilarWeb流量提升

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

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

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多