Prodigy:快速自适应无参数学习器技术文档
prodigy 项目地址: https://gitcode.com/gh_mirrors/pr/prodigy
安装指南
要安装Prodigy库以用于您的PyTorch项目,您只需在命令行执行以下命令:
pip install prodigyopt
这将下载并安装最新的Prodigy优化器版本。对于JAX环境下的使用,您可以查看Optax中的Prodigy实现,位于其文档的Contrib部分。
项目使用说明
Prodigy旨在简化深度学习训练过程中的优化器选择与调整。以下是基础步骤来使用Prodigy优化器训练神经网络:
-
导入Prodigy:
from prodigyopt import Prodigy
-
实例化优化器: 假设有一个名为
net
的神经网络模型,您可以这样初始化Prodigy优化器,这里lr
代表学习率,可选地设置weight_decay
进行正则化。opt = Prodigy(net.parameters(), lr=1.0, weight_decay=您的权衡值)
- 对于默认的标准使用,保持
weight_decay
为默认值(通常为0)。 - 若要模拟Adam的行为而非AdamW,使用
decouple=False
选项。
- 对于默认的标准使用,保持
-
训练循环示例: 在训练循环中,您需要更新权重并调用优化器的
step
方法。for inputs, targets in your_dataloader: optimizer.zero_grad() outputs = net(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step()
项目API使用文档
关键参数解释
lr
(学习率,默认1.0):初始学习率,建议通常保留为1.0。weight_decay
:权重衰减值,默认为0,类似于AdamW的权重衰减机制。decouple
:控制是否使用类似Adam的$\ell_2$正则化,默认为True(即AdamW风格的衰减)。d_coef
:调节学习率估计大小的系数,默认为1.0。增加此值会放大估计的学习率,减少则反之。
学习率调度器推荐
- 使用
torch.optim.lr_scheduler.CosineAnnealingLR
进行学习率调度,确保T_max
等于整个训练周期的迭代次数。 - 若使用线性预热(Warm-up),务必加上
safeguard_warmup=True
以防止初期进展缓慢导致的问题。
示例代码片段
对于复杂模型如ResNet-18在CIFAR-10上的应用,详细操作可见于这个Colab Notebook。
注意事项与额外建议
- 当涉及到扩散模型时,考虑设置
safeguard_warmup=True
、use_bias_correction=True
以及特定的weight_decay
值。 - 讨论区中有更多实践分享和调优技巧,比如可能需要调整β值至
(0.9, 0.99)
。
引用作品
如果您在研究或应用中使用了Prodigy,记得在相关文献中引用原作者的工作:
@article{mishchenko2023prodigy,
title={Prodigy: An Expeditiously Adaptive Parameter-Free Learner},
author={Konstantin Mishchenko and Aaron Defazio},
journal={arXiv preprint arXiv:2306.06101},
year={2023},
url={https://arxiv.org/pdf/2306.06101.pdf}
}
以上便是Prodigy优化器的简明技术文档,希望它能够帮助您高效地整合并利用这一强大的学习工具。