跳转到主要内容
Chinese, Simplified

关键要点

 

  • 我们看到越来越多的公司使用深度学习算法。因此,我们将深度学习从创新者转移到了早期采用者类别。与此相关的是,深度学习存在新的挑战,例如在边缘设备上部署算法和训练非常大的模型。
  • 尽管采用率正在缓慢增长,但现在有更多的商业机器人平台可用。我们在学术界之外看到了一些用途,但相信未来会有更多未被发现的用例。
  • GPU 编程仍然是一项很有前途的技术,但目前尚未得到充分利用。除了深度学习,我们相信还有更多有趣的应用。
  • 借助 Kubernetes 等技术,在典型的计算堆栈中部署机器学习变得越来越容易。我们看到越来越多的工具可以自动化越来越多的部分,例如数据收集和再培训步骤。
  • AutoML 是一项很有前途的技术,可以帮助数据科学家重新关注实际问题领域,而不是优化超参数。

每年,InfoQ 编辑都会讨论 AI、ML 和数据工程的当前状态,以确定您作为软件工程师、架构师或数据科学家应该关注的关键趋势。 我们将讨论整理成技术采用曲线,并附有支持性评论,以帮助您了解事物的发展方式。 我们还探讨了我们认为您应该在路线图和技能发展中考虑的内容。

我们第一次将这些讨论记录为 InfoQ 播客的特别节目。 Bitcraze 的机器人工程师 Kimberly McGuire 每天都在使用自主无人机,她与编辑一起分享了她的经验和观点。

深度学习转向早期采用者

尽管深度学习在 2016 年才开始引起我们的注意,但我们现在正将其从创新者类别转移到早期采用者类别。我们看到有两个主要的深度学习框架:TensorFlow 和 Pytorch。两者都在整个行业中广泛使用。我们承认 PyTorch 是学术研究领域的主导者,而 TensorFlow 是商业/企业领域的领导者。即使在功能方面,这两个框架都倾向于保持公平,因此选择哪个框架取决于您对生产性能的要求。

我们注意到,越来越多的开发人员和组织正在收集和存储他们的数据,以便通过深度学习算法轻松处理这些数据,以便“学习”与业务目标相关的内容。许多人专门为深度学习建立了他们的机器学习项目。 TensorFlow 和 PyTorch 正在为多种类型的数据构建抽象层,并且也在他们的软件中包含了大量的公共数据集。

我们还看到用于深度学习的数据集的大小正在增加很多。我们看到下一个挑战是分布式训练,分布式数据和并行训练。此类框架的示例是 FairScale、DeepSpeed 和 Horovod。这就是我们在创新者类别的主题列表中引入“大规模分布式深度学习”的原因。

我们目前在行业中看到的另一个挑战与训练数据本身有关。一些公司没有大型数据集,这意味着他们从针对特定领域使用预训练模型中受益匪浅。由于创建数据集可能是一项昂贵的工作,因此为您的模型选择正确的数据是工程团队必须学习如何克服的新挑战。

深度学习应用程序的边缘部署是一个挑战


目前,在移动/手机、Raspberry Pi 甚至更小的微处理器等边缘设备上运行 AI 仍然存在挑战。挑战在于让您的模型在大型集群上进行训练,并将其部署在一小块硬件上。实现这一点的技术是网络权重的量化(使用更少的比特来表示网络权重)、网络修剪(去除贡献不大的权重)和网络蒸馏(训练一个较小的神经网络来预测相同的结果)。这可以通过例如 Google 的 TensorFlow light 和 NVIDIA 的 TensorRT 来实现。当我们缩小模型时,我们有时确实会看到性能下降,但性能下降多少,以及这是否是一个问题,取决于应用程序。

有趣的是,我们看到公司正在调整他们的硬件以更好地支持神经网络。我们在 Apple 设备以及具有张量核心的 NVIDIA 显卡中看到了这一点。谷歌的新 Pixel 手机也有一个 Tensor 芯片,可以在本地运行神经网络。我们认为这是一个积极的趋势,这将使机器学习在比目前更多的情况下可行。

有限应用的商用机器人平台越来越受欢迎


在家庭中,扫地机器人已经是家常便饭。一个越来越受欢迎的新机器人平台是 Spot:波士顿动力公司的步行机器人。它被警察局和军队用于监视目的。尽管这种机器人平台取得了成功,但它们的用途仍然有限,而且用例非常有限。然而,随着人工智能功能的不断增强,我们希望在未来看到更多的用例。

一种正在取得成功的机器人是自动驾驶汽车。 Waymo 和其他公司正在测试内部没有安全驾驶员的汽车,这意味着这些公司对这些车辆的能力充满信心。我们认为,大规模部署面临的挑战是扩大这些车辆的行驶区域,并证明这些车辆在上路之前是安全的。

GPU 和 CUDA 编程允许并行化您的问题


GPU 编程允许程序执行大规模并行任务。如果程序员有一个目标可以通过将一个任务拆分成许多相互不依赖的小子任务来实现,那么这个程序就适合 GPU 编程。不幸的是,对于许多开发人员来说,使用 NVIDIA 的 GPU 编程语言 CUDA 进行编程仍然很困难。有一些框架可以帮助您,例如 PyTorch、Numba 和 PyCUDA,它们应该使它更容易进入通用市场。目前大多数开发人员都在将 GPU 用于深度学习应用程序,但我们希望未来能看到更多应用程序。

半监督自然语言处理在基准测试中表现良好


GPT-3 和其他类似的语言模型在“通用自然语言 API”方面表现出色。他们可以处理各种各样的输入,并且打破了许多现有的基准。我们看到,以半监督方式使用的数据越多,最终结果就越好。它们不仅擅长正常的基准测试,而且可以同时推广到许多基准测试。

关于这些神经网络的架构,我们看到人们正在远离像 LSTM 这样的循环神经网络,转而支持 Transformer 架构。训练出来的模型非常庞大,使用大量数据,而且训练成本很高。这导致对用于生产这些模型的金钱和能源数量的一些批评。大型模型的另一个问题是推理速度。当您为这些算法开发实时应用程序时,它们可能不够快。

MLOps 和数据操作允许轻松训练和重新训练算法


我们看到所有主要的云供应商都在支持通用容器编排框架,例如 Kubernetes,它也越来越多地集成了对基于 ML 的用例的一流支持。这意味着人们可以轻松地将数据库作为容器部署在云平台上,并对其进行扩展和缩减。一个好处是它带有内置的监控。 KubeFlow 是一个值得关注的工具,它可以在 Kubernetes 上编排复杂的工作流程。

对于在边缘部署算法,我们看到了工具的改进。有 K3s,它是用于边缘的 Kubernetes。有 KubeEdge,它不同于 K3s。尽管这两种产品仍处于初始阶段,但它们有望改善基于容器的 AI 在边缘的部署。

我们还看到了一些支持完整 ML Ops 生命周期的产品。 AWS Sage maker 就是这样一种工具,它可以帮助您轻松地训练模型。我们相信,最终 ML 将被集成到完整的 DevOps 生命周期中。这将创建一个反馈循环,您可以在其中部署应用程序、监控应用程序,并根据发生的情况:在重新部署之前返回并进行更改。

AutoML 允许自动化部分 ML 生命周期


我们看到使用所谓的“AutoML”的人略有增加:一种使机器学习生命周期的一部分自动化的技术。程序员可以专注于获取正确的数据和模型的粗略概念,而计算机可以找出最好的超参数是什么。目前,这主要用于寻找神经网络的架构,以及寻找训练模型的最佳超参数。

我们认为这是向前迈出的一大步,因为这意味着机器学习工程师和数据科学家将在将业务逻辑转化为机器学习可以解决的格式方面发挥更大的作用。我们确实相信这一努力使得跟踪正在进行的实验变得更加重要。 MLflow 等技术可以帮助跟踪实验。

总体而言,我们认为问题空间正在从“寻找最佳模型来捕获数据”转变为“寻找最佳数据来训练模型”。你的数据必须是高质量的,你的数据集是平衡的,并且它必须包含你的应用程序的所有可能的边缘情况。目前,这样做主要是手工工作,需要对问题域有很好的理解。

成为机器学习工程师需要学习什么


我们相信机器学习的教育在过去几年也发生了变化。从古典文学开始可能不再是最好的方法,因为在过去几年中取得了如此多的进步。我们建议选择深度学习框架,例如 TensorFlow 或 PyTorch。

选择你想专攻的学科是个好主意。在 InfoQ,我们区分了以下几类学科:数据科学家、数据工程师、数据分析师或数据操作。根据您选择的专业,您想了解更多关于编程、统计学或神经网络和其他算法的信息。

作为 InfoQ 编辑,我们想要分享的一个建议是,我们建议参加 Kaggle 比赛。您可以在想要了解更多信息的领域中选择一个问题,例如图像识别或语义分割。通过构建一个好的算法并在 Kaggle 上提交结果,您将看到与参加同一比赛的其他 Kaggle 用户相比,您的解决方案的表现如何。您将有动力在 Kaggle 排行榜上获得更高的排名,并且通常比赛的获胜者会在比赛结束时写下他们用于获胜方法的步骤。通过这种方式,您可以不断学习更多可以直接应用于您的问题领域的技巧。

最后但同样重要的是,InfoQ 也有很多资源。我们经常发布有关机器学习最新和最伟大的新闻、文章、演示文稿和播客。您还可以查看我们的文章“如何被聘为机器学习工程师”。最后但同样重要的是,请确保您参加了 11 月举办的 QCon plus 会议并参加了“ML Everywhere”这一赛道。

原文:https://www.infoq.com/articles/ai-ml-data-engineering-trends-2021/

本文:https://jiagoushi.pro/node/1841

Article
知识星球
 
微信公众号
 
视频号