人工智能、机器学习和数据工程 InfoQ 趋势报告 - 2021 年 8 月
每年,InfoQ 的编辑们都会讨论 AI、ML 和数据工程的最新状态,以确定作为软件工程师、架构师或数据科学家应该关注的趋势。我们将其整理成科技采用曲线(Technology adoption curve),并附有具有支持性的评论,以帮助您了解这些事物的发展方式。我们还探讨了我们认为您应该考虑作为路线图和技能发展的一部分的内容。
我们第一次将这些讨论记录的。每天都在使用拥有自主功能的无人机的 Bitcraze 机器人工程师与编辑们一起分享她的经验和观点。
深度学习转向早期采用者 (Early adopter)
尽管深度学习在 2016 年才开始引起我们的注意,但我们现在正在将其从创新者类别(Innovators category )转移到早期采用者类别(Early Adopters)。我们知道深度学习有两个主要的框架: 和。两者都在整个行业中得到广泛的使用。我们认为 PyTorch 是学术研究领域的主导者,而 TensorFlow 是商业/企业领域的领导者。这两个框架在功能方面往往差别不是很大,因此选择哪个框架取决于您在生产性能方面的要求。
我们注意到,越来越多的开发人员和组织正在以这样一种方式收集和存储他们的数据,以便深度学习算法可以轻松处理这些数据和“学习”与业务目标相关的东西。许多人专门为深度学习(deep learning)建立了他们的机器学习(machine learning )项目。TensorFlow 和 PyTorch 正在为多种类型的数据构建抽象层(abstraction layers),并且也在他们的软件中包含了大量公共数据集。
我们还看到深度学习的数据集的数量增加了很多。我们看到下一个挑战是分布式训练(distributed training),分布式数据(distributed data)和并行训练(parallel training)。这些框架的一些扩展库包括、和。这就是我们在创新者类别的主题列表中引入“大规模分布式深度学习”(large-scale distributed deep-learning)的原因。
我们现在在行业中看到的另一个挑战与训练数据本身有关。一些公司没有大型数据集,这意味着他们从针对特定领域使用预训练模型中获益良多。由于创建数据集可能是一项昂贵的工作,因此为模型选择正确的数据是工程团队必须克服的新挑战。
深度学习应用的边缘部署是一个挑战
目前,在移动/手机、Raspberry Pi 甚至更小的微处理器等边缘设备(edge devices)上运行 AI 时仍然存在挑战。挑战在于让您的模型在大型集群上训练,并将其部署在一小块硬件上。实现这一目标的技术是网络权重的量化(使用更少的网络权重位)、网络修剪(删除没有太大贡献的权重)和网络蒸馏(训练一个较小的神经网络来预测相同的事物)。这可以通过例如 Google 的 TensorFlow light 和 NVIDIA 的 TensorRT 来实现。当我们缩小模型时,我们有时确实会看到性能下降,但性能下降多少,以及这是否是一个影响很大的问题,取决于应用程序。
有趣的是,我们看到公司正在调整他们的硬件以更好地支持神经网络。我们在 Apple 设备以及具有tensor核心的 NVIDIA 显卡中看到了这一点。谷歌的新款 Pixel 手机也有一个 Tensor 芯片,可以在本地运行神经网络。我们认为这是一个积极的趋势,它将使机器学习在比目前更多的情况下可行。
用于用途受限制的应用(limited applications)的商用机器人平台越来越受欢迎
在家庭中,扫地机器人已经司空见惯。一个越来越受欢迎的新机器人平台是:波士顿动力公司的步行机器人。它被警察局和军队拿来用于监视。尽管此类机器人平台取得了成功,但它们的用途仍然有限,并且用例非常有限。然而,随着人工智能能力的增强,我们希望在未来看到更多的用例。
一种正在取得成功的机器人是自动驾驶汽车。Waymo 和其他公司正在测试内部没有安全驾驶员的汽车,这意味着这些公司对这些汽车的能力充满信心。我们认为大规模部署面临的挑战是扩大这些车辆行驶的区域。并且在它们上路之前证明它们是安全的也是一个挑战。
GPU 和 CUDA 编程允许您的问题并行化(parallelisation of your problem)
GPU 编程允许程序执行大规模并行任务。如果程序员有一个目标:通过将一个任务拆分成许多相互不依赖的小子任务来实现,那么这个程序就适合 GPU 编程。不幸的是,在(NVIDIA 的 GPU 编程语言)中进行编程对于许多开发人员来说仍然很困难。有一些框架可以帮助您,例如、和,这些框架应该使它更容易进入通用市场。目前,大多数开发人员都将 GPU 用于深度学习应用程序,但我们希望在未来看到更多应用程序。
半监督自然语言处理(Semi-supervised Natural Language Processing)在基准测试(benchmarks)中表现良好
GPT-3 和其他类似的语言模型在“通用自然语言 API”方面表现出色。它们可以处理各种各样的输入,并且打破了许多现有的基准。我们看到以半监督方式使用的数据越多,最终结果就越好。他们不仅擅长正常的基准测试,而且可以同时推广到许多基准测试。
关于这些神经网络的架构,我们看到人们从像 LSTM 这样的循环神经网络转向了 Transformer 架构。训练出来的模型非常庞大,使用了大量数据,而且训练成本很高。这导致了对用于生产这些模型的资金和能源的消耗巨大的一些批评。大型模型的另一个问题是推理速度。当您为这些算法处理实时应用程序时,它们可能不够快。
MLOps 和 Data ops 允许轻松训练和重新训练算法
我们看到所有主要的云供应商都支持通用容器编排框架,例如,它也越来越多地集成了对基于 ML 的用例的很好的支持。这意味着人们可以轻松地将数据库部署为云平台上的容器并对其进行扩展和缩减。其中的一个好处是它带有内置的监控。需要注意一种工具:,它可以在 Kubernetes 上编排复杂的工作流。
对于在边缘部署算法,我们看到了工具的改进。有,它是用于边缘的 Kubernetes。有,它不同于 K3s。尽管这两款产品仍处于初始阶段,但它们有望改善基于容器的 AI 在边缘的部署。
我们还看到了一些支持完整 ML Ops 生命周期的产品。其中一种工具是,它可以帮助您轻松训练模型。我们相信最终 ML 将集成到完整的 DevOps 生命周期中。这将创建一个反馈循环,您可以在其中部署应用程序、监控应用程序,并根据发生的情况重新部署。
AutoML允许对ML生命周期的一部分进行自动化
我们看到使用所谓“AutoML”的人数略有增加:AutoML是一种使机器学习生命周期的部分自动化的技术。程序员可以专注于获取正确的数据和模型的粗略概念,而计算机可以找出最佳超参数是什么。目前,AutoML主要用于寻找神经网络的架构,以及寻找训练模型的最佳超参数。
我们相信这是向前迈出的一大步,因为这意味着机器学习工程师和数据科学家将在将业务逻辑转换为机器学习可以解决的格式方面发挥更大的作用。我们确实相信这一努力使得跟踪正在进行的实验变得更加重要。等技术也可以帮助跟踪实验。
总体而言,我们认为主要问题正在从“寻找最佳模型来捕获您的数据”转变为“寻找最佳数据来训练您的模型”。你的数据必须是高质量的,你的数据集是平衡的,它必须包含你的应用程序的所有可能的边缘情况。做这些目前主要是手动工作,需要对问题域有很好的理解。
成为机器学习工程师需要学习什么
我们相信机器学习的教育在过去几年也发生了很大的变化。从古典文学(classical literature)开始可能不再是最好的方法,因为在过去几年中我们取得了许多的进步。我们建议直接选择深度学习框架,例如 TensorFlow 或 PyTorch。
选择一个你想专攻一个学科是个好主意。在 InfoQ,我们区分了以下几类学科:数据科学家、数据工程师、数据分析师或数据运营。根据您选择的专业,您可以去了解更多关于编程、统计或神经网络和其他算法的知识。
我们作为 InfoQ 编辑想要分享的一个建议是参加
最后但同样重要的是,InfoQ 也有很多资源。我们经常发布有关的最新最好的新闻、文章、演示和播客。您还可以查看我们的文章。最后也是很重要的一点,请确保您参加 11 月举办的
- 点赞
- 收藏
- 关注作者
评论(0)