5 月 21 日,美光公司举行了年度分析师和投资者会议。
尽管很多人都希望获得更多关于 3D XPoint 技术的信息,美光的管理层依然对此秘而不宣。
我们将在本文讨论机器学习,它意味着什么,以及哪种硬件类型最适合机器学习应用。
最后,我们将推测美光正在从事的工作,以及他们可以在 2019 年向 AI 领域推出什么样的增值解决方案。我们认为美光肯定在准备一颗大炸弹。


近日,美光举行了年度分析师和投资者会议,会议上公开了许多令人兴奋的爆炸性信息,包括一个 100 亿美元的股票回购计划,以及关于美光在 DRAM 和 NAND 市场地位和角色定位的大量讨论,随后,许多文章深度报道了此次会议的诸多信息。在这次投资者大会上,一个显而易见的事情是,美光并没有透漏大家所关心的 3D XPoint 技术的任何细节。美光公司首席执行官 Sanjay Mehrotra 在其演讲中提到了 3D XPoint,并暗示称公司计划在 2019 年开始发售 3D XPoint 器件。

3D XPoint 是一项可带来 10 倍性能提升的激动人心的技术。与 DRAM 相比,3D XPoint 芯片的密度更高,耐久能力比 NAND 提高了上千倍,速度也比 NAND 快上千倍。这种技术特性给 3D XPoint 提供了一个重要的价值主张和市场定位,它可以充当层次结构的内存和存储之间的解决方案。我们正在与客户在产品开发方面进行合作,正如我们前面所说,我们将于 2019 年推出 3D XPoint 产品,并在 2019 年下半年开始出货这些产品。
- 首席执行官 Sanjay Mehrotra

公司首席业务官 SumitSadana 也重申,因为他们现在正在和合作伙伴们一起开发 3D XPoint 产品,因此还没有做好讨论 3D XPoint 技术细节的准备。

我今天不会就我们的 3D XPoint 产品提供更多细节,因为我们明年将推出这些产品,而且,出于竞争的原因,我也不希望泄露我们和客户正在进行的一些工作。

- 首席业务官 SumitSadana

在本文中,我们将简要解释人工智能特别是机器学习如何在现实生活中发挥相关作用,并基于我们对机器学习的深入了解和美光团队的公开声明,推测 3D XPoint 的未来。


AI 和机器学习是什么?
首先,我们来看看人工智能和机器学习的含义。AI 是一个通用的术语,适用于任何一种允许计算机执行通常由人类执行的任务的技术。这方面的例子林林总总,从下棋到分拣邮件,从识别猫狗图片到车辆驾驶等。

机器学习(简称 ML)是 AI 的一个分支。这种技术通过向计算机显示一组输入和预期的输出,让计算机从这些输入输出的集合中“学习”如何执行特定任务来创建 AI。

比如,假设你想训练一台计算机识别猫的照片。处理这项任务的一种方法是描述非常详细的启发式规则,以确定某张照片是否是猫的图片。

在规则中,你可能会指定猫有毛茸茸的皮、尖尖的耳朵。但是,不一定每只猫的耳朵都尖尖的,甚至有的猫皮秃毛稀。这就使得基于规则的 AI 方法很难处理,尤其是遇到特征不明显的案例时。

相比之下,ML 方法依赖于向计算机显示成千上万张不同猫的图片,并让计算机自己制定猫的规则。对于图像识别而言,当今最常用的模型基于神经网络技术。本文并不打算详细讨论神经网络是如何工作的,不过下面提供了一个这样的神经网络的简化图,它可以帮助你思考一下,为什么 ML 和内存和存储大有关系。

 


上面这张图被简化用来显示一张 9x9 像素的图片。实际案例会涉及到更大的输入集,使用数十万甚至数百万个特征。

现在我们至少在概念上对神经网络的外观有了一些了解,下面让我们回到那个猫的例子上。

用于训练的猫的图片被归一化为特定大小,然后分解成像素,将这些像素的值输入 ML 模型中。该模型执行前向传播(模型考虑给予它的输入是否是猫的照片),并输出图片是猫的可能性的概率。

在训练阶段,模型会被告知它的回答是否正确。所以,如果给模型的图片确实是一只猫,并且模型回答正确,那么这个模型就会得到加强。反之,如果模型回答错误,那么通过反向传播算法对模型进行惩罚(正确答案和模型给出的答案之间的差异),调整一些个体的权重,以期下一次回答时会更好。


硬件要求

计算神经网络中给定预测的成本的数学公式,Zynath Capital 提供。

 


前向传播和后向传播的数学计算相当复杂,也超出了本文的范围,读者只需要注意一点,即这些计算需要数以千计的线性代数运算。 如果你记得高中或大学阶段的线性代数课程,就会了解到,在这种数学运算中,大数据集会被组织成矩阵和向量。这也就解释了为什么 GPU 在机器学习应用中如此受欢迎。线性代数可以很容易地并行化,而且 GPU 在并行数学计算方面非常出色。

这个过程涉及的内存大小有点不直观。 举例来说,假设猫的照片是一张 1,000 x 1,000 像素的图片,按照今天的标准,这是一幅非常小的图片,但是,这样一幅图片也有超过一百万个单独的特征(像素),并且每个像素都必须由 CPU 进行处理,以便评估图片的“猫腻”。

现在,您应该已经了解了所述计算模型在一张图片上需要做多少计算和处理,想象一下,现实世界中需要在成百上千万张图片的数据集上进行相同操作,数据集规模达到 2TB 或 3TB 以上的情况并不少见,特别是在我们谈论诸如遗传学和天体物理等领域的时候。

为了快速训练模型,您需要将尽可能多的数据集加载到内存(RAM)中,以便功能强大的 GPU 和 CPU 可以执行并行化的计算任务。现在的 CPU 性能如此强大,以至于向 CPU 提供数据这个步骤成了瓶颈。一直以来,我们都是通过增加系统的 DRAM 容量,并将正在使用的数据集预先加载到 DRAM 中来解决这个问题。

SumitSadana 在他的发言中谈到了这个确切的问题:

“在云公司内部,一个众所周知的事情是,处理器需要花费大量的时间等待数据。随着这些新兴处理器内核数量在过去几年内的大幅增加,相对来讲这些处理器的附属内存容量并没有增加太多,这就意味着每个内核可以使用的内存带宽容量是实际下降的。”

DRAM 还要一个显著的缺点 - 易失性。想象一下,你花费了数天时间,投入了大量的 CPU 和电力资源来为你的新的和革命性的识别猫 ML 模型计算新权重,结果大楼电源断电,后者由于某些硬件或软件相关原因需要重启计算机,显然,你会丢掉 DRAM 中的一切数据,你的模型会回归到最原始的认为桌子也是一只猫的阶段(因为桌子也有四条腿)。这正是 3D XPoint 的用武之地。

 


3D XPoint 之美
3D XPoint 连接了 NAND 存储器(SSD 存储器)和 DRAM 存储器(RAM)之间的鸿沟。正如 SumitSadana 所言:“3D XPoint 是一种持久性存储器,速度不如 DRAM 快,但明显快于 NAND,它与 DRAM 不同,没有电也能保存状态。”

在原始读写速度上,3D XPoint 与常规 NAND 内存更接近,几乎相同。在广受欢迎的 YouTube 硬件评论频道 Linus Tech Tips 执行的测试中,使用了 3D XPoint 技术的英特尔 Optane 硬盘的读写速度大致为 2GB/s,与三星最新的 NAND SSD 相同。 相比之下,RAMdisk(从 DRAM 模块创建的虚拟磁盘)的读取或写入速度可以超过 8GB/s。然而,3D XPoint 的表现更像 DRAM,尤其是在延迟上。

 


延迟是衡量给定存储介质响应请求的速度的一个指标。同样是 CPU 请求一张猫的照片,NAND 和 3D XPoint 都能够以大约 2GB/s 的速度向 CPU 提供该图片,但 3D XPoint 模块的延迟(在 CPU 时间尺度上)更低,即它会比 NAND 模块更早开始传输信息。3D XPoint 的响应时间接近 DRAM 的响应时间。

 


我们可以从另外一个角度思考这之间的差异。假如您想要从存储器中读取 60 GB 的连续数据,那么,NAND 和 3D XPoint 在原始速度方面的性能大致相当。 但是,如果您想从存储器中随机执行 120,000 个单独的读取请求,比如 120,000 张大小为 500 KB 的猫图片,那么,3D XPoint 模块完成处理这 120,000 个请求的速度远快于 NAND 模块。

3D XPoint 的另一个显着优势是其耐用性。现代 NAND 在失效之前可以写入数十万次至数百万次,但 3D XPoint 的耐久性与 DRAM 的耐久性相当,它的性能不会因为重复写入而降低。

3D XPoint 实现
现在我们已经知道了机器学习是如何工作的,也了解了 3D XPoint 的性能特征。现在,让我们看看 3D XPoint 怎么被非常有效地使用,以加速甚至是革命性地改变机器学习。不过,首先让我们看看 Sumit Sadana 的一段讲话,他暗示了美光在 3D XPoint 上可能正在做的工作:

“在云公司内部,一个众所周知的事情是,处理器需要花费大量的时间等待数据。随着这些新兴处理器内核数量在过去几年内的大幅增加,相对来讲这些处理器的附属内存容量并没有增加太多,这就意味着每个内核可以使用的内存带宽容量是实际下降的。

这就是为什么使用 3D XPoint 扩展这些进程的可寻址内存空间如此重要的原因,因为它实际上可以给你带来更大的回报和更高的性能,而不再是只能升级处理器到下一代版本上或者使用更快速的处理器。未来的处理器将允许更多的内存连接到处理器上,这也将成为提高服务器平均能力的另一个驱动因素。”


上面这段话中的一个关键词汇是“可寻址内存”,它到底意味着什么?你看,CPU 并不能直接寻址计算机中的所有内存。你可以直接寻址 DRAM,但是不能直接寻址硬盘或者 SSD 硬盘。

 


请注意,上图中的 CPU 可以直接访问 DRAM 模块中存储的任何数据,但无法对 SSD 硬盘执行相同的操作。为了访问 SSD 上的数据,CPU 必须与存储控制器通信,要求存储控制器从硬盘驱动器获取一堆数据并将其放入 RAM 中。然后,CPU 从 RAM 获取所请求的数据,这样就实现了对 SSD 硬盘数据的访问。写入 SSD 的过程与读取过程相反,CPU 必须首先将一些数据写入 RAM,然后要求存储控制器从 RAM 中获取该数据并将其写回到 SSD 中。正如你所看到的那样,这里面涉及到很大的性能开销。

相比之下,您可以在图的右侧看到访问 DRAM 内存和 3D XPoint 内存的方式。在该模型中,CPU 可以直接访问 DRAM 和 3D XPoint 存储器中的内存页面。

Linus Tech Tips 就这个概念做了一个视频测试,他们使用了英特尔的 Optane 硬盘取代了测试机器上的存储器。结果显示,即使是在当前的计算机架构中,没有使用特殊的操作系统级的配置,通过 M2 接口连接,使用 3D XPoint 内存的 Optane 硬盘也足够快,可以充分降低 CPU 访问数据的延迟。

为了让该系统实现最高性能,美光必须和操作系统(Linux 和 Windows)开发人员共同开发一种基本全新的内存结构和访问机制。在一个计算机系统中,你可能有 1 级缓存、2 级缓存,有时甚至需要 3 级缓存,然后是我们都知道的 RAM 或 DRAM 内存。美光需要开发可以实施另外一层基于 3D XPoint 技术的内存介质的驱动程序,可能比 DRAM 稍慢一些,但是比 DRAM 更耐用,也更便宜。

相对于系统其余部分,这种设计调整可以相对透明地实现。系统会看到全部随机存取存储器,但是内核会做出区分,将经常运行的应用在 DRAM 中分配内存页面,同时为不太经常使用但当前仍然在运行的应用分配 3D XPoint 页面。

这种方式对机器学习模型特别有用,它允许服务器将整个数据集加载到可寻址内存中,然后 CPU 在可寻址的内存空间上,在训练集上开始前向传播和后向传播算法的训练。

更具体地说,如果您参考上文 AI 部分中的神经网络图,理想的实现会将以 X1,X2 ... 等表示的数据集加载到 3D XPoint 存储器中,同时将模型的主要部分,即我们在图中隐藏的第 2 层和第 3 层加载到主 DRAM 中。模型的权重通常由 theta,θ表示,它们将被存储在 DRAM 中,并镜像到 3D XPoint 进行备份,以应对硬件或软件崩溃的情形。

CPU 可以直接访问大量快速和低延迟的内存,将使得 CPU 大部分时间处于满载状态。这意味着更好的投资回报,更短的模型培训过程,以及机器学习任务的总体重大改进。


结论
美光在最近这次年度会议上展示了公司良好的执行力,他们火力全开,而且如果他们能够以上文所讨论的那样进行 3D XPoint 技术的部署,他们的股票可以获得更高的市盈率。而且,它也会摆脱商品级芯片供应商“周期上升,周期下降”的老讨套路。如果他们能够提供非易失性的可寻址内存,并与 Linux 和 Windows 等操作系统完美集成,他们就能够创建一种全新的存储器类型,并满足机器学习日益增长的需求。