随着技术的进步让我们能够探索数据分析的未开发潜力,机器学习已经成为一种革命性的模型,受到全世界的欢迎。从医疗保健到汽车行业再到营销和运输——机器学习使组织能够发现有价值的见解、提高生产力和高效运营。但它是如何工作的,你应该如何为你的机器学习项目选择机器学习硬件?
什么是机器学习?
机器学习没有单一的定义。Nvidia 将其描述为“使用算法解析数据、从中学习,然后对世界上的某些事物做出判断或预测的实践”。而麦肯锡公司进一步补充说,机器学习“基于可以从数据中学习的算法,而不依赖于基于规则的编程。”
简而言之,机器学习是人工智能 (AI) 的一个分支,专注于开发可以学习和改进的应用程序和系统,而无需对其进行编程。假设我们必须找出一种饮料是咖啡还是茶。我们将不得不建立一个系统来根据收集到的数据来回答这个问题。我们使用训练来为这样的问题建立模型。目标是让系统尽可能准确地找到我们提出的问题的答案。
收集和收集数据
第一步是收集“训练”我们的“模型”所需的数据。所收集数据的质量直接影响机器学习模型的准确性,这就是为什么确保为所选模型准备和处理数据至关重要的原因。
在我们的示例中,我们可以使用茶杯和咖啡杯作为数据。我们可以使用多种成分,但出于我们的目的,我们将选择两个简单的成分——饮料的颜色和咖啡因的量。
首先,我们需要准备好各种茶和咖啡,并准备好测量设备——测量颜色的光谱仪和测量咖啡因含量的紫外范围分光光度计。然后,我们将使用收集到的数据来建立颜色、咖啡因含量以及是茶还是咖啡的表格。这将是训练数据。
算法选择
一旦我们收集了高质量的数据,下一步就是选择最合适的模型。许多工程师和数据科学家发现选择正确的算法是一项艰巨的任务。尽管有大量可用的算法模型,但您必须确保所选模型符合手头数据和项目要求。
在我们的例子中,我们只有两个数据点——颜色和咖啡因百分比。因此,我们可以使用简单的线性模型,比如逻辑回归算法。逻辑函数的公式是y = 1 / (1 + e^-(β0 + β1x1 + … + βnxn))输出介于 0 和 1 之间。我们不断调整 β 值,直到我们最大化预测精度并最小化成本函数。
特征工程
下一步涉及转换数据,使其更容易解释模型,从而提高准确性。可视化您的数据对于查看您是否遗漏了不同变量之间的任何关系或调整任何数据不平衡至关重要。特征工程可以让你突出显示关键数据,让模型专注于最重要的标准。它还使您能够将领域专业知识输入到模型中,从而进一步提高准确性。
模型训练
机器学习的核心是模型训练过程。以我们的示例为例,我们将使用我们的数据逐步增强模型准确预测饮料是咖啡还是茶的能力。
由于我们使用的是线性模型,因此我们可以影响或更改的唯一变量是斜率和 y 轴截距。在机器学习中,上述变量的集合通常形成一个矩阵,w 表示权重,b 表示偏差。现在我们初始化 w 和 b 的随机值并尝试预测输出。
这是一个重复的过程,只有通过反复试验才能完善。每次迭代都会导致权重和偏差的更新,这称为一个训练步骤。随着每个阶段的进展,我们的模型一步步接近咖啡和茶之间的理想分离线。训练完成后,我们会检查我们的模型是否符合我们的预期。我们使用测试数据集评估我们的模型性能。这是为了查看模型如何针对新数据执行。这反映了模型在实际使用中的表现。
推理
一旦我们完成了所有艰苦的工作,我们就到了机器学习的实际要点:寻找答案。推理是我们得到这些答案的地方。我们运行我们的项目,看看我们的模型如何使用给定的数据准确地预测饮料是咖啡还是茶。
这里的美妙之处在于,我们可以用我们的模型来区分咖啡和茶,以代替人类的判断。同样的过程可以适用于任何领域或领域中出现的任何问题或问题,并进行一定程度的更改。然而,机器学习系统的性能高度依赖于部署的硬件。一个模型可能非常出色,但如果机器学习硬件达不到标准,这个过程就会变得太累人。
机器学习项目可能的机器学习硬件选择
机器学习算法的计算强度各不相同。当今最流行的算法,如深度神经网络或支持向量机,计算量非常大。训练此类模型需要大量的计算资源。选择正确的机器学习硬件是一个复杂的过程。让我们看看机器学习的三个核心硬件选项:处理单元、内存和存储。
处理单元
中央处理器 (CPU)
鉴于现在大多数机器学习模型都在 GPU 上运行,CPU 主要用于信息预处理。他们的设计习惯于串行操作,所以他们支持增加高速缓存和更少的内核来快速完成复杂的指令。
CPU 的优势在于尽可能快地按顺序执行一些复杂的操作,而机器学习通常涉及大量相对简单的线性代数计算,最好并行处理。
但是,如果您正在从事不使用复杂算法且不需要太多计算资源的机器学习项目,则可能不需要 GPU。
例如,如果您的机器学习项目是轻量级的,i7-7500U CPU 是一个不错的选择,因为它每秒可以处理 100 多个示例。Threadripper 1900x 是一款来自 AMD 的八核 CPU,具有 16 个超线程,如果您愿意使用 CPU,它是另一个不错的选择。
也就是说,CPU 无法与 GPU 竞争,因为 CPU 经常性能过剩但人手不足。
Intel Phi 试图与 NVIDIA/AMD GPU 竞争,但前者仍然缺乏性能,如下图所示。
如果您的任务不适合 CPU 处理,则可以寻找出色的 GPU 选项。
图形处理单元 (GPU)
与传统的 CPU 相比,GPU 由数千个更小的内核组成,可以进行广泛的并行计算和更高的吞吐量——可以在给定的时刻完成更多的计算。
GPU 最初是为图形处理工作负载而创建的,但后来发现它对科学、产品设计和其他领域的通用计算非常有用。机器学习数据通常存储为矩阵,矩阵乘法是最常见的过程。GPU 计算非常适合此类计算,最高可将速度提高 7 倍。
谈到内存,重要的是要考虑机器学习模型的大小,以及它是否适合 GPU 的 VRAM 内存。例如,10GB 的 VRAM 内存对于进行深度学习原型设计和模型训练的企业来说应该足够了。
现代 GPU 卡,如 RTX 系列,支持 16 位 VRAM 内存,与旧的 32 位架构相比,它可以帮助您以相同数量的内存获得近两倍的性能。
NVIDIA GPU 通常是机器学习的绝佳选择。CUDNN 和 CUDA 编程接口非常适用于当前的机器学习库,例如 Keras、Tensorflow 或 PyTorch。
以下两种型号是不错的选择,因为它们具有出色的性能,我们建议您在为您的机器学习项目选择 GPU 时考虑一下。
- Nvidia RTX 3080(8704 个 CUDA 内核,10GB GDDR6 显存)
- Nvidia RTX 3070(5888 个 CUDA 内核,8GB GDDR6 显存)
RTX 3080 Ti 比 RTX 3070 快 20% 到 50%,但价格也更高。虽然这些模型可能是当今最流行的,但也有许多其他可用的机器学习 GPU 选项。
如果预算是一个问题,您可以通过购买稍微便宜一点的 GPU 并简单地运行更长时间的计算来减少开支。GTX 1080 或 GTX 1070 等型号是极具成本效益的替代品。
现场可编程门阵列 (FPGA)
FPGA 以其功效着称,可为可编程硬件资源以及 DPS 和 BRAM 块提供灵活的架构。这允许通过部分重新配置在运行时重新配置数据路径。因此,用户没有任何限制,可以进行并行计算。
此外,与 CPU 和 GPU 相比,FPGA 具有无与伦比的灵活性。它使它们能够进行任意 I/O 连接,从而使用户无需 CPU 即可连接任何设备或网络。FPGA 用于功能安全具有重要作用的领域。因此,FPGA 旨在满足各种不同应用的安全要求。Xilinx Zynq-7000 以及 Ultrascale+TM MPSoC 是支持安全关键型应用的示例。
专用集成电路 (ASIC)
顾名思义,ASIC 是为特定用途而设计的电路。这些是专门用于以更高效率完成预定义计算的设备。相比之下,CPU 可用于一般用途。甚至 GPU 也由并行处理器组成,它们可以同时执行多种不同的算法。与 FPGA 不同,ASIC 一旦制造就不可编程。虽然您可以在 FPGA 完成其目标后对其进行重新编程,但 ASIC 的逻辑是永久性的。
然而,ASIC 的主要优势在于它们的效率,因为它们旨在仅完成预定义的任务。这也导致效率提高。以 AlphaGo 为例。当主要的 AlphaGo 版本在 TPU 上执行时,它们比在 CPU 和 GPU 集群上运行时消耗更少的能量。所有科技巨头都对开发和投资 ASIC 感兴趣。目前,谷歌推出了 Tensor Processing Unit 的第三次迭代,这是一种为训练和推理而建立的 ASIC。
记忆
随着机器学习能力呈指数增长,AI 应用程序需要增强的内存功能,以处理不断增加的工作负载,同时保持效率。机器学习应用程序要考虑的三种主要内存类型是:
- 片上存储器
- HBM(高带宽内存)
- GDDR内存
片上存储器是最快的存储器类型,位于存储器层次结构的顶部。它靠近 CPU 和 GPU 的计算核心,这使得片上内存非常快,但也限制了它的容量。它用作微处理器的本地缓存存储器,用于存储最近访问的信息。
HBM 是一种基于 DRAM 架构的 3-D 堆叠内存选项。它旨在提高性能,使您能够利用增加的带宽和容量。虽然效率不如片上存储器,但它仍可通过保持低数据速率确保高效运行。
最新的 HBM 版本 HBME2 是一个值得注意的内存选项,适用于各种机器学习应用程序。最后,GDDR显存最初可追溯到游戏应用,但人们认可其在机器学习程序中的功效。当前的 GDDR6 可以支持高达每秒 16 GB 的高数据速率。
贮存
存储通常不是机器学习的关注点,通常归结为预算。拥有任何大于 3 TB 的硬盘或 SSD 数据就足够了。如果您的口袋允许,500 GB NVMe M2 SSD 是一个不错的选择。在训练期间存储并不重要,因为您的数据将驻留在 RAM 或 GPU VRAM 中,尽管拥有 SSD 仍然比 HDD 更好,因为性能物有所值。