PyTorch重大更新再战TensorFlow,AWS也来趟深度学习框架的浑水?

简介: 刚刚,Facebook联合AWS 宣布了PyTorch的两个重大更新:TorchServe和TorchElastic。而不久前Google刚公布DynamicEmbedding。两大阵营又开战端,Facebook亚马逊各取所长联手对抗Google!

微信图片_20220108194622.png


Facebook和亚马逊推出全新PyTorch库,针对大型高性能AI模型


刚刚,Facebook联合AWS 宣布了PyTorch的两个重大更新。


第一个是TorchServe,它是 PyTorch 的一个生产模型服务框架,可以使开发人员更容易地将他们的模型投入生产。


第二个是 TorchElastic,可以让开发人员更容易地在 Kubernetes 集群上构建高容错训练作业,包括 AWS 的 EC2 spot 实例和 Elastic Kubernetes Service。


但是在发布过程中,Facebook官方博客产生了一个小插曲,将文章的发布日期2020年错标称了2019年。


微信图片_20220108194624.png


TorchServe剑指何方


最近几年,Facebook 和 AWS都积攒了大量的机器学习工程实践经验,而PyTorch在学术界和开源社区大受追捧。


TensorFlow的一个重要优势在于TensorFlow Serving 和 Multi Model Server这些可快速部署到生产环境的模型服务器。


微信图片_20220108194626.png


AWS 在 SageMaker 运行自己的模型服务器方面经验丰富,SageMaker模型服务器虽然可以处理多个框架。而PyTorch则拥有十分活跃的社区,更新也频繁。


开发者需要一个自己的模型服务器,要能根据自己的需求方便地进行定制化开发,而AWS也需要推广自己的服务器,于是双方一拍即合,在新版本的PyTorch中开源了TorchServe。


微信图片_20220108194628.png


集成Kubernetes,TorchElastic让训练和部署更容易


TorchElastic可以和Kubernetes无缝集成,PyTorch 开发人员可以在多个计算节点上训练机器学习模型,这些计算节点可以动态伸缩,让模型训练更加高效。


TorchElastic 的内置容错能力支持断点续传,允许模型训练出错后继续使用前面的结果。这个组件编写好了分布式 PyTorch作业的接口,开发人员只需要简单的编写接口部分,就能让模型跑在众多分布式节点上,而不需要自己去管理 TorchElastic 节点和服务。


微信图片_20220108194630.png

为什么结合Kubernetes如此重要


传统的程序部署的方法是通过操作系统在主机上安装程序。这样做的缺点是,容易造成程序、依赖库、环境配置的混淆。而容器部署基于操作系统级别的虚拟化,而非硬件虚拟化。


容器又小又快,每一个容器镜像都可以打包装载一个程序。Kubernetes 就是来管理容器的,所以PyTorch结合Kubernetes将大大提高模型的训练速度,降低部署难度,而且更好管理模型的整个生命周期。


Google推出DynamicEmbedding,将TensorFlow推向“巨量级”应用


Google比Facebook早几天公布了一个叫做DynamicEmbedding的产品,能够将TensorFlow扩展到具有任意数量特征(如搜索查询)的 "巨量级 "应用,还专门为此发布了一篇论文,在Google为其评估的数十个不同国家的72个重估指标中,DynamicEmbedding驱动的模型赢得了49个指标。


微信图片_20220108194632.png


论文地址:

https://arxiv.org/pdf/2004.08366.pdf


论文中Google称,DynamicEmbedding能够通过模型训练技术进行自我进化,能够很好的处理可能会丢弃太多有价值信息的场景。


DynamicEmbedding拥有"不间断地"增长特性,在不到六个月的时间里,从几千兆字节自动增长到几百兆字节,而不需要工程师不断地进行回调。


同时DynamicEmbedding的内存消耗也极少。例如训练Seq2Seq的模型时,在100个TensorFlow worker和297781个词汇量的情况下,它只需要123GB到152GB的RAM,相比之下TensorFlow要达到同样精度至少需要242GB的RAM。


事实上,DynamicEmbedding模型早已经应用在Google的智能广告业务中,为 "海量 "搜索查询所告知的图片进行注释(使用Inception),并将句子翻译成跨语言的广告描述(使用神经机器翻译)。


其上开发的AI模型在两年的时间里取得了显著的准确率提升,截至2020年2月,Google Smart Campaign模型中的参数已经超过1240亿,在20种语言的点击率等指标上,其表现优于非DynamicEmbedding模型


Build过程也很简单,只需要在TensorFlow的Python API中添加一组新的操作,这些操作将符号字符串作为输入,并在运行模型时 "拦截 "上游和下游信号。


再通过一个叫做EmbeddingStore的组件,让DynamicEmbedding和Spanner和Bigtable等外部存储系统集成。数据可以存储在本地缓存和远程可变数据库中。


DynamicEmbedding可以从worker故障中快速恢复,不需要等之前所有的数据加载完毕后才能接受新请求。


两大阵营又开战端,Facebook亚马逊各取所长联手对抗Google


TensorFlow依托于Google这颗大树,占了早期红利,在基数上暂时领先。


但随着越来越多竞争者的加入,TF的老大地位受到了极其严重的威胁,PyTorch大有取而代之的势头。


此前,PyTorch相对TensorFlow最大优势只是一个动态图机制,导致PyTorch能够比TensorFlow调试起来更容易,开发者不需要在编译执行时先生成神经网络的结构,然后再执行相应操作,可以更加方便地将想法转化为代码。


而且,相比TensorFlow,PyTorch的代码风格是更加纯正的Pythonic风味。PyTorch的动态图机制,加上更纯正Pythonic的代码风格,使得PyTorch迅速流行起来。


等到谷歌发掘势头不对,在2017年着急的上了一个支持动态图的TensorFlow Fold,后来发布升级版本Eager Excuation。但TensorFlow长久以来深入骨髓的静态计算,怎么可能短期内就能彻底改变呢?


TensorFlow 2.0不仅对开发者来说学习成本高,甚至不得不为Google自己员工撰写操作指南。


微信图片_20220108194635.png


用户都是用脚投票的,不论你是Google还是Facebook,做不做恶,产品好用才是第一位的。而招聘网站上的需求,能够最直观的体现企业的态度。


微信图片_20220108194637.png


数据来源:


https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318


根据the gradient统计的数据,PyTorch在学术界越来越受到青睐,将TensorFlow远远甩在身后。


微信图片_20220108194639.png


从几大AI顶会关键词数量来看,PyTorch在过去的两年中都是呈现爆炸式增长,而TF则是不断在走下坡路。


数据来源:


https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/


从业务线来看,Google不仅有框架,也有自己的云服务。而Facebook和亚马逊,一个框架够尖利,但是云端欠缺;另一个刚好相反,AWS稳居云计算第一的位置,但框架相比二者弱一些。


Google的意图很明显是要进一步扩大自己在训练和部署方面的优势,而Facebook的PyTorch,此前一直在生产环境部署等环节落后TensorFlow,此次更新的TorchServe和TorchElastic将弥补之前的差距。


和AWS合作也将获得亚马逊大量云端客户的青睐,毕竟自己开发的框架在自己平台用着更顺手,当然亚马逊也会在PyTorch社区获得更多支持。


说到这里我们不得不提到另外两个知名框架:Caffe和MXNet。虽然两者的市场规模不大,但也曾是全村的希望。


如今,Caffe已经被PyTorch取代,而一旦F/A合体,MXNet的命运又将如何呢?欢迎大胆留言猜测!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
16天前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习 ? 带你从入门到精通!!!
🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。
PyTorch深度学习 ? 带你从入门到精通!!!
|
16天前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
194 13
|
1月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
76 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
14天前
|
机器学习/深度学习 PyTorch TensorFlow
66_框架选择:PyTorch vs TensorFlow
在2025年的大语言模型(LLM)开发领域,框架选择已成为项目成功的关键决定因素。随着模型规模的不断扩大和应用场景的日益复杂,选择一个既适合研究探索又能支持高效部署的框架变得尤为重要。PyTorch和TensorFlow作为目前市场上最主流的两大深度学习框架,各自拥有独特的优势和生态系统,也因此成为开发者面临的经典选择难题。
|
3月前
|
机器学习/深度学习 存储 监控
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
本项目基于深度学习的YOLO框架,成功实现了城市道路损伤的自动检测与评估。通过YOLOv8模型,我们能够高效地识别和分类路面裂缝、井盖移位、坑洼路面等常见的道路损伤类型。系统的核心优势在于其高效性和实时性,能够实时监控城市道路,自动标注损伤类型,并生成损伤评估报告。
201 0
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
|
3月前
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
在智慧交通和智能驾驶日益普及的今天,准确识别复杂交通场景中的关键元素已成为自动驾驶系统的核心能力之一。传统的图像处理技术难以适应高动态、复杂天气、多目标密集的交通环境,而基于深度学习的目标检测算法,尤其是YOLO(You Only Look Once)系列,因其检测速度快、精度高、可部署性强等特点,在交通场景识别中占据了重要地位。
397 0
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
|
4月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
175 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
7月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch PINN实战:用深度学习求解微分方程
物理信息神经网络(PINN)是一种将深度学习与物理定律结合的创新方法,特别适用于微分方程求解。传统神经网络依赖大规模标记数据,而PINN通过将微分方程约束嵌入损失函数,显著提高数据效率。它能在流体动力学、量子力学等领域实现高效建模,弥补了传统数值方法在高维复杂问题上的不足。尽管计算成本较高且对超参数敏感,PINN仍展现出强大的泛化能力和鲁棒性,为科学计算提供了新路径。文章详细介绍了PINN的工作原理、技术优势及局限性,并通过Python代码演示了其在微分方程求解中的应用,验证了其与解析解的高度一致性。
1241 5
PyTorch PINN实战:用深度学习求解微分方程
|
7月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
400 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
8月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。

推荐镜像

更多