刚刚,Facebook和AWS宣布了PyTorch的两大更新:TorchServe和TorchElastic。不久前,谷歌刚刚公布了DynamicEmbedding。两大阵营再次开战,Facebook、亚马逊及各自董事联手对抗谷歌!Facebook和亚马逊为大规模高性能AI模型推出了新的PyTorch库刚刚,Facebook和AWS宣布了PyTorch的两个重大更新。第一个是TorchServe,这是一个用于PyTorch的生产模型服务框架,它使开发人员更容易将他们的模型投入生产。第二个是TorchElastic,它使开发人员可以更轻松地在Kubernetes集群上构建高度容错的训练作业,包括AWS的EC2spot实例和ElasticKubernetesService。然而,在发布过程中,Facebook官方博客出了一个插曲,将文章的发布日期2020年错误标记为2019年。TorchServe指向哪里?近年来,无论是Facebook还是AWS,都在机器学习工程方面积累了大量的实践经验,而PyTorch在学术界和开源社区也非常流行。TensorFlow的一个重要优势在于TensorFlowServing和MultiModelServer,可以快速部署到生产环境的模型服务器。AWS在使用SageMaker运行自己的模型服务器方面经验丰富,尽管它可以处理多个帧。PyTorch有一个非常活跃的社区和频繁的更新。开发者需要自己的模型服务器,可以根据自己的需求轻松定制,AWS也需要推广自己的服务器,于是双方一拍即合,在新版PyTorch中开源了TorchServe。集成Kubernetes,TorchElastic让训练和部署更简单TorchElastic可以与Kubernetes无缝集成,PyTorch开发者可以在多个计算节点上训练机器学习模型,可以动态扩展,使模型训练更高效。TorchElastic内置的容错支持断点续传,允许在模型训练出错后继续使用之前的结果。该组件编写了分布式PyTorch作业的接口。开发者只需简单编写接口部分,即可让模型运行在众多分布式节点上,无需自行管理TorchElastic节点和服务。为什么与Kubernetes集成如此重要传统的程序部署方式是通过操作系统在宿主机上安装程序。这样做的缺点是容易造成程序、依赖库、环境配置的混乱。容器部署是基于操作系统层面的虚拟化,而不是硬件虚拟化。容器小而快,每个容器镜像可以打包加载一个程序。Kubernetes就是管理容器的,所以PyTorch结合Kubernetes会大大提高模型的训练速度,降低部署难度,更好的管理模型的整个生命周期。谷歌推出DynamicEmbedding,将TensorFlow推向“海量”应用谷歌比Facebook早几天公布了一款名为DynamicEmbedding的产品,可以将TensorFlow扩展到具有任意数量特征(比如搜索查询)的“海量”应用,一篇论文也已经被专门为此目的发布,其中DynamicEmbedding驱动模型赢得了谷歌为数十个不同国家评估的72个重估指标中的49个。论文地址:https://arxiv.org/pdf/2004.08366.pdf在论文中,谷歌表示DynamicEmbedding可以通过模型训练技术自我进化,可以处理可能丢弃过多有价值信息的场景。DynamicEmbedding具有“不间断”增长的特性,可以在不到六个月的时间内从几GB自动增长到数百MB,无需工程师不断回调。同时,DynamicEmbedding的内存消耗也很小。例如,在训练Seq2Seq模型时,在100个TensorFlowworker和297,781个词汇的情况下,它只需要123GB到152GB的RAM,相比之下TensorFlow至少需要242GB的RAM才能达到相同的精度。事实上,DynamicEmbedding模型已经应用在谷歌的智能广告业务中,对“海量”搜索查询通知的图像进行注释(使用Inception),并将句子翻译成跨语言的广告描述(使用神经机器翻译)。在其上开发的AI模型在两年时间里取得了准确率的显着提升。截至2020年2月,GoogleSmartCampaign模型中的参数已超过1240亿。在20种语言的点击率等指标上,其性能优于非DynamicEmbedding模型构建过程也很简单,只需要在TensorFlow的PythonAPI中添加一组新的操作,这些操作以符号字符串作为输入,并在运行模型时“拦截”上下游信号。然后通过一个叫做EmbeddingStore的组件,DynamicEmbedding可以和Spanner、Bigtable等外部存储系统集成。数据可以存储在本地缓存和远程可变数据库中。DynamicEmbedding可以快速从worker故障中恢复,并且不需要等待所有之前的数据加载完毕再接受新的请求。两大阵营再次交战。Facebook和亚马逊联手对抗谷歌。TensorFlow依托于谷歌这棵大树,占了早期的红利,暂时领先基数。但随着越来越多竞争者的加入,TF的霸主地位受到严重威胁,PyTorch大有取而代之的势头。此前,PyTorch相对于TensorFlow的最大优势只是动态图机制,这使得PyTorch比TensorFlow更易于调试。开发者在编译执行时不需要生成神经网络的结构,再进行相应的操作。成代码。而且,相较于TensorFlow,PyTorch的代码风格更加纯Pythonic。PyTorch的动态图机制,加上更纯粹的Pythonic代码风格,让PyTorch迅速流行起来。当谷歌发现势头不对时,在2017年,它焦急地推出了支持动态图的TensorFlowFold,后来又发布了升级版EagerExcuation。但是TensorFlow这种长期深入骨髓的静态计算,怎么可能在短时间内彻底改变呢?TensorFlow2.0不仅开发者学习成本高昂,甚至还得为谷歌自己的员工编写操作说明。用户用脚投票。不管你是谷歌还是Facebook,不管你作恶与否,产品的可用性是第一位的。招聘网站上的需求最能直观地反映企业的态度。数据来源:https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318根据梯度的统计,PyTorch在学术界越来越受欢迎,将TensorFlow远远甩在后面。从几大AI会议的关键词数量来看,PyTorch近两年呈现爆发式增长,而TF则一直在下滑。数据来源:https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/从业务线来看,谷歌不仅有框架,还有它的自己的云服务。Facebook、亚马逊,一个框架足够犀利,但缺少云;另一个恰恰相反。AWS在云计算方面排名第一,但框架弱于两者。谷歌的意图显然是进一步扩大其在训练和部署方面的优势。Facebook的PyTorch在生产环境部署方面一直落后于TensorFlow。更新后的TorchServe和TorchElastic将弥补之前的差距。与AWS合作,也将赢得大量亚马逊云客户的青睐。毕竟自己开发的框架在自己的平台上使用还是比较方便的。当然,亚马逊也会得到PyTorch社区更多的支持。说到这里,就不得不提到另外两个比较知名的框架:Caffe和MXNet。两者的市场规模虽小,却曾是全村人的希望。如今,Caffe已经被PyTorch取代,一旦F/A融合,MXNet的命运又将如何?欢迎大胆留言猜猜!
