@levinzhang
2021-09-13T22:16:42.000000Z
字数 5282
阅读 706
by
在InfoQ的编辑团队看来,AI、ML和数据工程领域在2021年发展如何呢?在这里,我们讨论了深度学习、机器学习算法的边缘部署、商业机器人平台、GPU与CUDA编程、自然语言处理与GPT-3、MLOps以及AutoML等话题。
InfoQ的编辑每年都会讨论AI、ML和数据工程当前的状态,从而识别出作为软件工程师、架构师或数据科学家应该关注的关键趋势。我们将自己的讨论整理成技术采用曲线并附加相关的评论,以帮助读者了解事情的演变情况。我们还探讨了作为路线图和技能发展的一部分,你应该要考虑哪些东西。
我们还首次将这些讨论录制成了InfoQ Podcast上的特别节目。Kimberly McGuire是Bitcraze的机器人工程师,每天的工作都在与自主无人机打交道,他加入了编辑部来分享他的经验和观点。
尽管深度学习在2016年才开始引起我们的兴趣,但是我们现在决定将它从创新者(Innovator)类别转移至早期采用者(Early Adopter)。我们看到深度学习方面有两个主要的框架,分别是TensorFlow和Pytorch。两者在整个行业中都有广泛应用。我们应该承认,PyTorch是学术研究领域的主导者,而TensorFlow是商业/企业领域的领导者。这两个框架在功能方面保持了相当的均衡,所以具体选择哪个框架取决于你在生产性能方面的要求。
我们注意到,越来越多的开发者和组织在收集和存储他们的数据时,都遵循这样的方式,那就是易于被深度学习算法处理,以便于“学习”与商业目标有关的东西。很多人专门为深度学习设置了他们的机器学习项目。TensorFlow和PyTorch正在为多种类型的数据建立抽象层,并将大量的公共数据集也纳入到了他们的软件中。
我们还看到,用于深度学习的数据集的规模正在大幅度增加。我们看到,下一个挑战是借助分布式数据和并行训练实现的分布式训练。这种框架的例子有 FairScale、DeepSpeed和Horovod。这就是为什么我们将“大规模分布式深度学习”引入创新者类别的主题列表中的原因。
我们现在在行业中看到的另一个挑战是与训练数据本身相关。一些公司没有大的数据集,这意味着他们能够从使用其特定领域的预训练模型中获益良多。由于创建数据集可能是一项成本高昂的工作,为模型选择合适的数据是一个新的挑战,工程团队必须学会如何解决这一点。
目前,在边缘设备上运行AI依然存在挑战,比如手机、Raspberry Pi,甚至更小的微处理器。这里的挑战在于把大型集群上训练得到的模型部署到一个小型的硬件上。要实现这一点所要依赖的技术是网络权重的量化(为网络权重使用更少的比特)、网络修剪(移除贡献不大的权重)以及网络提炼(训练一个更小的神经网络来预测相同的内容)。例如,这可以通过谷歌的TensorFlow light和NVIDIA的TensorRT来实现。当我们缩小模型的时候,有时候确实会看到性能的下降,但是性能下降多少以及这是否是一个问题,则要取决于应用。
有趣的是,我们看到有些公司正在调整他们的硬件以更好地支持神经网络。在苹果设备以及拥有张量核心(tensor core)的NVIDIA显卡中,我们都看到了这一点。谷歌新的Pixel手机也有一个张量芯片,可以在本地运行神经网络。我们认为这是一个积极的趋势,它将使机器学习能够用到比现在更多的环境中。
在家庭中,机器人吸尘器已经非常普遍。一个新的机器人平台正变得越来越流行,它就是Spot:Boston Dynamics的行走机器人。它正被警察局和军队用于日常监视这样的场景中。尽管这类机器人平台很成功,但它们仍然只能在有限的范围内使用,而且是在非常有限的场景下。然而,随着人工智能能力的提高,我们希望在未来看到更多的使用案例。
一种正在走向成功的机器人是自动驾驶汽车。Waymo和其他公司正在测试内部没有安全驾驶员的汽车,这意味着这些公司对这些车辆的能力充满信心。我们认为,大规模部署所面临的挑战在于扩大这些车辆的可行驶区域,并在上路前证明这些汽车是安全的。
GPU编程方式允许程序执行大规模的并行任务。如果程序员的目标可以通过将一个任务分割成许多互不依赖的小子任务来实现的话,那么这个程序就适合用GPU进行编程。不幸的是,用NVIDIA公司的GPU编程语言CUDA进行编程,对许多开发人员来说仍然是很困难的。有一些框架可以为我们提供帮助,如PyTorch、Numba和PyCUDA,它们应该会使这种编程方式更容易进入通用市场。现在,大多数开发人员正在使用GPU实现深度学习应用,但我们希望在未来能够看到更多的应用。
GPT-3和其他类似的语言模型在“通用自然语言API”方面的表现很突出。它们可以处理各种各样的输入,并且正在打破许多现有的基准。我们看到,以半监督(semi-supervised)的方式使用的数据越多,最终结果就越好。它们不仅在正常的基准上表现良好,而且同时对许多基准进行了归纳概括。
关于这些神经网络的架构,我们看到人们从LSTM这样的递归神经网络转向了transformer架构。训练的模型是非常巨大的,要使用大量的数据,并花费大量的钱来进行训练。针对产生这些模型所耗费的资金和能量,引发了一些相关的批评。大模型的另一个问题是推理速度。当为这些算法实现实时应用时,它们可能不够快。
我们看到,所有主要的云供应商都支持通用的容器编排框架,如Kubernetes,它们也越来越多地集成了对基于ML的使用场景的良好支持。这意味着我们可以在云平台上轻松地将数据库部署为容器,并将其进行扩展和伸缩。这样做的一个好处是,它有内置的监控。值得注意的一个工具是KubeFlow,它可以在Kubernetes上协调复杂的工作流程。
关于在边缘上部署算法,我们看到了工具上的改进。比如K3s,这是适用于边缘的Kubernetes,还有KubeEdge,它与K3s有所不同。虽然这两种产品都还处于初始阶段,但它们有望改善基于容器的人工智能在边缘的部署。
我们还看到一些支持完整的ML Ops生命周期的产品正在出现。其中一个这样的工具是AWS Sage maker,它可以帮助我们轻松地训练模型。我们相信,最终ML将被集成到完整的DevOps生命周期中。这将创造一个反馈循环,我们部署一个应用程序,监控应用程序,并根据正在发生的情况在重新部署之前回过头去做一些改变。
我们看到使用所谓的“AutoML”的人稍微有所增加:在这种技术中,机器学习生命周期的一部分会被自动化。程序员可以专注于获得正确的数据和模型的大致概念,而计算机可以找出最佳的超参数(hyperparameter)。现在,这主要用于寻找神经网络的架构,以及寻找最佳的超参数来训练模型。
我们认为这是一个很好的进步,因为它意味着,在将业务逻辑转化为机器学习可以解决的格式方面,机器学习工程师和数据科学家将发挥更大的作用。我们认为这种努力使得跟踪自己正在进行的实验变得更加重要。像MLflow这样的技术可以帮助跟踪实验。
总而言之,我们认为问题空间正在从“寻找最好的模型来捕获你的数据”转向“寻找最好的数据来训练你的模型”。你的数据必须是高质量的,你的数据集必须是平衡的,而且它必须包含应用的所有可能的边缘场景。要做到这一点目前主要是手工实现的,并且需要对问题领域有很好的理解。
我们认为,过去几年中,机器学习在教育方面也发生了变化。从经典文献入手可能不再是最好的方法了,因为过去几年有太多的进步了。我们建议挑选一个深度学习框架入门,如TensorFlow或PyTorch。
挑选一个专注的学科是个好主意。在InfoQ,我们将学科划分为以下几类:数据科学家、数据工程师、数据分析师或数据运维。根据你所选的专业,你要学习更多关于编程、统计或神经网络和其他算法的知识。
作为InfoQ的编辑,我们想分享的一点是,建议参加Kaggle比赛。你可以在你想了解的领域中挑选一个问题,比如图像识别或语义分割。通过创建一个好的算法并在Kaggle上提交结果,你会看到你的解决方案与参加同一比赛的其他Kaggle用户相比处于什么样的水准。这样你会有动力在Kaggle排行榜上获得更高的排名,通常比赛的获胜者会在比赛结束后写下他们的获胜方法都采用了哪些步骤。这样,你就会不断地学到更多的技巧,从而可以直接应用到你的问题领域。
最后但同样重要的是,InfoQ也有很多资源。我们经常发布关于机器学习的最新和最重要的新闻、文章、演讲和播客。你也可以看看我们的文章如何成功应聘为机器学习工程师。最后,请参加11月举办的QCon plus会议,并参加“ML无处不在”的主题。
Roland Meertens是一名计算机视觉工程师,在Autonomous Intelligent Driving公司从事自动驾驶车辆的智能计算机视觉算法。在此之前,曾研究过自然语言处理(NLP)问题的深度学习方法、社会机器人学以及无人机的计算机视觉、机器学习和计算机视觉问题。他所做的有趣的事情是神经机器翻译、小型无人机的避障,以及为老年人服务的社交机器人。除了在InfoQ上发布关于机器学习的新闻,他有时也会在他的博客pinchofintelligence.com和twitter(https://twitter.com/rolandmeertens)上发表文章。在业余时间,他喜欢在树林里跑步,并参加障碍跑。
Kimberly McGuire目前在Bitcraze AB公司工作,担任软件开发人员。2019年,她获得了荷兰代尔夫特理工大学航空航天工程学院的博士学位。主题是关于“用袖珍无人机进行蜂群探索”。McGuire研究了在计算能力有限的MAV上完成室内探索的生物启发方式,这些MAV可以放在手掌上。除此之外,她对具身人工智能(embodied artificial intelligence)有广泛的兴趣,并努力跟上最新的发展。
Srini Penchikala是德克萨斯州奥斯汀的一名高级IT架构师。他在软件架构、设计和开发方面有超过25年的经验,目前专注于云原生架构、微服务和服务网格、云数据管道和持续交付。Penchikala撰写了Big-Data Processing with Apache Spark,并与人合写了Manning出版的“Spring Roo in Action”。他经常在会议上发言,是一名大数据培训师,并在各种技术网站上发表了多篇文章。
Raghavan "Rags" Srinivas (@ragss) 是一名架构师/开发人员布道者,旨在帮助开发人员建立高度可扩展和可用的系统。作为Rackspace公司的OpenStack倡导者和解决方案架构师,他不断面临从低级别的基础设施到高级别的应用问题的挑战。他主要关注的领域是分布式系统,专门研究云计算和大数据。在Hadoop、HBase和NoSQL的早期阶段,他都从事过相关的工作。他曾经多次获得JavaOne rock star称号。
Anthony Alford是Genesys的开发组经理,他正在从事与客户体验有关的几个人工智能和ML项目。在设计和构建可扩展软件方面,他有超过20年的经验。Anthony拥有电子工程博士学位,专业是智能机器人软件,曾在人与人工智能交互和SaaS业务优化的预测分析领域研究过各种问题。
查看英文原文:Article: AI, ML and Data Engineering InfoQ Trends Report - August 2021