机器之心报道参与:思源、一鸣Keras和PyTorch都是对初学者最友好的深度学习框架,它们用起来就像描述架构的简单语言一样,告诉框架哪一层该用什么就行。很多研究者和开发者都在考虑到底哪一个框架更好,但目前两个框架都非常流行,它们都各有优势。最近,Facebook研究员WilliamFalcon为PyTorch披上了一件Keras的外衣,他表明用这样的框架做研究简直不要太爽。看起来像Keras的PyTorchKeras本身的目的就是对深度学习框架(TensorFlow、Theano)进行了进一步的API封装。作为TensorFlow的高度封装,Keras的抽象层次非常高,很多API细节都隐藏了起来。虽然PyTorch同样使用动态计算图,也方便快捷,但总体上Keras隐藏的细节更多一些。反观PyTorch,它提供一个相对较低级别的实验环境,使用户可以更加自由地编写自定义层、查看数值优化任务等等。例如在PyTorch1.0中,编译工具torch.jit就包含一种名为TorchScript的语言,它是Python的子语言,开发者使用它能进一步对模型进行优化。用PyTorch写模型,除了数据加载和模型定义部分外,整个训练和验证的逻辑、配置都需要我们手动完成,这些步骤都较为繁琐。甚至可以说,研究者需要耗费相当多的精力处理这一部分的代码,还要祈祷不出Bug。但是对于大多数研究实验来说,训练和验证的循环体差不多都是一样的,实现的功能也相当一致,所以为什么不将这些通用的东西都打包在一起,这样训练不就简单了么?WilliamFalcon正是这样想的,他将PyTorch开发中的各种通用配置全都包装起来,我们只需要写核心逻辑就行。通过PyTorchLightning,PyTorch就类似于Keras,它能以更高级的形式快速搭建模型。项目作者是谁要完成这样的工作,工作量肯定是非常大的,因为从超参搜索、模型Debug、分布式训练、训练和验证的循环逻辑到模型日志的打印,都需要写一套通用的方案,确保各种任务都能用得上。所以Facebook的这位小哥哥WilliamFalcon还是很厉害的。他是一位NYU和Facebook的开发者。目前在NYU攻读PhD。从GitHub的活动来看,小哥是一位比较活跃的开发者。这是一位披着Keras外衣的PyTorchLightning是PyTorch非常轻量级的包装,研究者只需要写最核心的训练和验证逻辑,其它过程都会自动完成。因此这就有点类似Keras那种高级包装,它隐藏了绝大多数细节,只保留了最通俗易懂的接口。Lightning能确保自动完成部分的正确性,对于核心训练逻辑的提炼非常有优势。那么我们为什么要用Lightning?当我们开始构建新项目,最后你希望做的可能就是记录训练循环、多集群训练、float16精度、提前终止、模型加载/保存等等。这一系列过程可能需要花很多精力来解决各式各样、千奇百怪的Bug,因此很难把精力都放在研究的核心逻辑上。通过使用Lightning,这些部分都能保证是Work的,因此能抽出精力
转载请注明:
http://www.aideyishus.com/lktp/8456.html