oneflow
oneflow copied to clipboard
Add LBFGS optimizer
增添oneflow.optim.LBFGS优化算法,在0.8.0版本编译成功,可直接调用。调用方法为 from oneflow.optim import LBFGS,具体有哪些参数可以看一下源代码,简单使用的话只需要传入网络的parameters就可以了。 简单的测试代码、说明文档这周内会完成添加。 目前只有torch正式实现过该优化算子,测试了几个CV分类任务性能基本对齐torch。由于这个优化算法本身比较特殊,不知道大概需要提交哪些东西,有问题的话还麻烦指点一下。
参数里有个line_search_fn选项,建议选择“strong_wolfe”。该选项主要作用是确定步长的选择方案,若是none的话则固定为1,“strong wolfe”情况下会动态选取步长。 torch版本若是该参数选择"none"的话,很难实现正常优化,oneflow版本上也有类似问题。推测大概率是该优化方案太过复杂,固定参数的话对优化限制太大。
顺便cpp版本和cuda版本可能有点难实现?torch目前只有cpp和python版本。cpp版本基本上单纯是为了torch c里面能调用,所以单独写了个版本,也是各种在调torch c的包。估计这也是为什么不在python版本里写接口调用c的原因。。。 然后_generate_conf_for_graph,clip操作,多机多卡等还待测试。不过由于基本上所有运算都是从python层面调用其他算子,问题应该不大。