GitHub 热门项目:schedule_free

摘要

GitHub项目:schedule_free 仓库地址:https://github。

the Schedule and https Free
2026-05-09 1 阅读 GitHub Trending
GitHub 项目:schedule_free 仓库地址:https://github.com/facebookresearch/schedule_free 星级:2276 | 作者:facebookresearch 项目描述:PyTorch 中的无调度优化 =================================================== 自述文件内容: # 无日程学习 [![下载](https://static.pepy.tech/badge/schedulefree)](https://pepy.tech/project/schedulefree) [![下载](https://static.pepy.tech/badge/schedulefree/month)](https://pepy.tech/project/schedulefree) PyTorch 中的无调度优化器。 预印本:[未安排的道路](https://arxiv.org/abs/2405.15682) 作者:Aaron Defazio、Xingyu (Alice) Yang、Harsh Mehta、Konstantin Mishchenko、Ahmed Khaled、Ashok Cutkosky **TLDR** 无需时间表即可更快地进行训练 - 无需提前指定停止时间/步骤! `` pip install Schedulefree `` 我们提供了几种无调度优化器实现: - `SGDScheduleFree` 和 `SGDScheduleFreeReference`:SGD 的无调度变体 - `AdamWScheduleFree` 和 `AdamWScheduleFreeReference`:AdamW 的无调度变体 - `RAdamScheduleFree`:RAdam 的无调度变体,消除了学习率调度和预热的需要(实现社区贡献) - 实验性“ScheduleFreeWrapper”与其他优化器相结合 “ScheduleFreeReference”版本具有简化的实现,但使用更多内存。还有“ScheduleFreeClosure”版本,可以与 PyTorch 的优化器步骤闭包一起使用。 [Jax 实现](https://optax.readthedocs.io/en/latest/api/contrib.html#schedule-free) 作为 Optax 的一部分提供。 ## 方法 无计划学习通过插值和平均的组合取代了底层优化器的动力。在梯度下降的情况下,基本的Schedule-Free更新是: $$ \开始{对齐*} y_{t} & = (1-\beta)z_{t} + \beta x_{t},\\ z_{t+1} & =z_{t}-\gamma\nabla f(y_{t}),\\ x_{t+1} & =\left(1-\frac{1}{t+1}\right)x_{t}+\frac{1}{t+1}z_{t+1}, \结束{对齐*} $$ 这里$x$是测试/验证损失评估应该发生的序列,它不同于主迭代$z$和梯度评估位置$y$。对 $z$ 的更新对应于底层优化器,在本例中是一个简单的梯度步骤。 顾名思义,无调度学习不需要递减的学习率调度,但通常优于或在最差的情况下匹配 SOTA 调度,例如余弦衰减和线性衰减。一次只需要存储两个序列(第三个序列可以根据另外两个即时计算),因此该方法具有与基本优化器相同的内存要求(参数缓冲区+动量)。 我们在此存储库中提供 AdamW 和 SGD 版本,因为我们作为实验 可与任何基本优化器一起使用的包装器版本。 ## 如何使用 由于我们的优化器使用两个不同的点进行梯度调用和测试/验证损失计算,因此有必要在训练期间在两者之间切换参数缓冲区。这是通过在调用“model.train()”的同一位置调用“optimizer.train()”和在调用“model.eval()”的同一位置调用“optimizer.eval()”来完成的。存储检查点时,优化器也应置于 eval 模式。 如果你的公司