尝尝PyTorch

尝尝PyTorch。

简洁

如果用汽车型号来类比各个机器学习框架的话,那么我会有如下的观点。这个世界上,观点并不重要,重要的是事实,当笑话看看即可。

  • TensorFlow是保时捷

稳定,有面子,有底蕴,开很远开很久都可以。打开引擎盖,里面相对比较复杂但又有序可靠。一年得去保养一两次。

  • PyTorch是特斯拉

设计简洁。试驾和市区开开不错,跑西藏可能有点困难。保养就是个形式。

  • MxNet是啥

客观讲,没看到多少人正儿八经开。试驾的不少。开的也有一些。和小众电动车或混动车类似。要么为了车牌,要么家里是厂里的。

  • PaddlePaddle是国产混动车

还可以,便宜实惠。但是最好服务商做成解决方案。比如我以滴滴乘客的身份去使用,而不是自己去开。

买哪种车呢?各有各的好处。如果是冬令营这种突击短期比赛,就好比赛车场搞个业余爱好者竞赛,简洁高效的自然受欢迎。

公司文化

如《定位》等营销书籍所叙,人们的心智在一个品类中只能容纳2-3个品牌。大部分人的眼里只有TensorFlow和PyTorch。我不由地想到了React和Angular等产品。两者的文化决定了产品风格。具体不多说,细品。

好的2D产品有什么特质

什么是好的面向开发者(2D)的产品?

  • 简洁
  • 文档齐全
  • 示例丰富
  • 社区资源多
  • 功能强大,性能强大
  • 稳定

简洁应该是所有因素的核心。

  • 因为简洁,API即文档。
  • 因为简洁,初级参与者才会多,才会有下一步。
  • 因为简洁,才能稳定和性能强大。

唯一和简洁冲突的,大概就是“功能强大”。这也是PyTorch的少有的劣势:production serving。不知TouchScript后续走向如何。至于分布式训练,设备端部署等,我觉得这都不是民用车辆的功能,多台车(可以是一个品牌)才是合理的选择。

XnorNet和CycleNet

回归主题,PyTorch到底哪里好?

我不知道。

不过,我很快找到了XnorNet和CycleNet的开源实现,借助别人的工作,我快速改了改,就跑起来了。GPU和CPU占用基本满格,毫无浪费。加深了对论文的理解并能有些小粒度创新。代码角度,简洁,清晰。看API能感受到这是真的懂这个领域的人设计的。看外围功能,比如dataset,dataloader,transform等,嗯,这是民用车该有的样子。

知耻而后勇,期待G的各个勇士们在后续车型研发上能够有所改进。

Contents