本文要点
我们看到越来越多的公司正在使用深度学习算法。因此,我们将深度学习从创新者转移到了早期采用者的类别中。与此相关的是,深度学习也面临着新的挑战,比如在边缘设备上部署算法以及非常大的模型的训练。
尽管采用的速度比较缓慢,但是现在有了更多的商用机器人平台。我们看到了在学术界之外的一些应用,但是相信未来会有更多未被发现的使用场景。
GPU 编程依然是一个很有前途的技术,但现在还没有得到充分的利用。除了深度学习之外,我们相信还有更多有趣的应用。
通过使用像 Kubernetes 这样的技术,在典型的计算机堆栈上部署机器学习正变得越来越容易。我们看到不断出现的工具正在将越来多的组成部分实现了自动化,比如数据收集和重训练步骤。
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 和 CUDA 编程允许将问题进行并行化处理
GPU 编程方式允许程序执行大规模的并行任务。如果程序员的目标可以通过将一个任务分割成许多互不依赖的小子任务来实现的话,那么这个程序就适合用 GPU 进行编程。不幸的是,用 NVIDIA 公司的 GPU 编程语言CUDA进行编程,对许多开发人员来说仍然是很困难的。有一些框架可以为我们提供帮助,如PyTorch、Numba和PyCUDA,它们应该会使这种编程方式更容易进入通用市场。现在,大多数开发人员正在使用 GPU 实现深度学习应用,但我们希望在未来能够看到更多的应用。
半监督自然语言处理在基准测试中表现良好
GPT-3 和其他类似的语言模型在“通用自然语言 API”方面的表现很突出。它们可以处理各种各样的输入,并且正在打破许多现有的基准。我们看到,以半监督(semi-supervised)的方式使用的数据越多,最终结果就越好。它们不仅在正常的基准上表现良好,而且同时对许多基准进行了归纳概括。
关于这些神经网络的架构,我们看到人们从 LSTM 这样的递归神经网络转向了 transformer 架构。训练的模型是非常巨大的,要使用大量的数据,并花费大量的钱来进行训练。针对产生这些模型所耗费的资金和能量,引发了一些相关的批评。大模型的另一个问题是推理速度。当为这些算法实现实时应用时,它们可能不够快。
MLOps 和 Data ops 能够更容易地实现训练和重新训练算法
我们看到,所有主要的云供应商都支持通用的容器编排框架,如Kubernetes,它们也越来越多地集成了对基于 ML 的使用场景的良好支持。这意味着我们可以在云平台上轻松地将数据库部署为容器,并将其进行扩展和伸缩。这样做的一个好处是,它有内置的监控。值得注意的一个工具是KubeFlow,它可以在 Kubernetes 上协调复杂的工作流程。
关于在边缘上部署算法,我们看到了工具上的改进。比如K3s,这是适用于边缘的 Kubernetes,还有KubeEdge,它与 K3s 有所不同。虽然这两种产品都还处于初始阶段,但它们有望改善基于容器的人工智能在边缘的部署。
我们还看到一些支持完整的 ML Ops 生命周期的产品正在出现。其中一个这样的工具是AWS Sage maker,它可以帮助我们轻松地训练模型。我们相信,最终 ML 将被集成到完整的 DevOps 生命周期中。这将创造一个反馈循环,我们部署一个应用程序,监控应用程序,并根据正在发生的情况在重新部署之前回过头去做一些改变。
AutoML 允许将 ML 生命周期的一部分自动化
我们看到使用所谓的“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
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论