主要的AI、ML和DL用例和架构
主要的AI、ML和DL用例和方法可分为以下几节:
激发NLP管道和TensorFlow分布式推理
以下列表列出了数据科学界在不同开发级别下采用的最受欢迎的开源NLP库:
-
"自然语言工具包(NLTK)"。适用于所有NLP技术的完整工具包。自21世纪初以来、该系统一直保持不变。
-
"文本Blob"。基于NLTK和模式构建的简单易用的NLP工具Python API。
-
"斯坦福核心NLP"。由斯坦福NLP集团开发的Java中的NLP服务和软件包。
-
"Gensim"。人类主题建模最初是作为一组Python脚本在捷克数字数学库项目中推出的。
-
"空间"。采用Python和Cython的端到端工业NLP工作流、并为互感器提供GPU加速。
-
"快速文本"。一个免费的轻型开源NLP库、用于由Facebook的AI Research (Ffair)实验室创建的字词学习嵌入和句子分类。
SPARK NLP是一个统一的解决方案 、可满足所有NLP任务和要求、可为实际生产用例提供可扩展、高性能和高准确性的NLP驱动软件。它利用传输学习、在研究领域和跨行业实施最新的一流算法和模型。由于Spark不能全面支持上述库、因此、Spark NLP是基于构建的 "激发ML" 利用Spark的通用内存分布式数据处理引擎作为任务关键型生产工作流的企业级NLP库。其标注器利用基于规则的算法、机器学习和TensorFlow为深度学习实施提供支持。其中包括常见的NLP任务、包括但不限于令牌化、lemization、stemming、部分语音标记、命名实体识别、 拼写检查和情感分析。
Transformers (Bert)提供的双向编码器表示是一种基于转换器的机器学习技术、适用于NLP。它推广了预训练和微调的概念。Bert中的转换器架构源自机器翻译、与基于神经网络(RNN)的经常性语言模型相比、该模型更好地模拟长期依赖关系。它还引入了屏蔽语言建模(Masked Language Modeling、MLM)任务、其中随机屏蔽了所有令牌的15%、模型对其进行预测、从而实现了真正的双向性。
由于该领域的专业语言和缺少标记数据、财务情绪分析具有挑战性。FinBERT是一种基于经过预先训练的BERT的语言模型,它是 "Reuters TRC2"一种金融资料库,并使用标记数据()进行了微调, "金融租赁银行"用于进行金融情绪分类。研究人员从新闻文章中提取了4、500句话、并使用了财务术语。然后、16名具有财务背景的专家和硕士学生将这些句子标记为肯定、中立和否定。我们构建了一个端到端Spark工作流、用于使用来自Spark NLG的FinBERT和其他两个经过预先训练的渠道、分析2016年至2020年前10位纳斯达克公司收益通话记录的情绪 "说明文档DL"。
适用于Spark NLP的底层深度学习引擎是TensorFlow、它是一个端到端的开源机器学习平台、可轻松构建模型、随时随地进行强大的ML生产以及进行强大的研究试验。因此、在Spark `Yarn集群`模式下执行管道时、我们基本上是在集群上挂载的网络连接存储中运行分布式TensorFlow、并在一个主节点和多个辅助节点之间并行处理数据和模型。
Horovod分布式培训
使用TeraGen、TeraSort、TeraValidate和DFSIO (读写)执行与MapReduce相关的性能的核心Hadoop验证。有关 https://www.netapp.com/pdf.html?item=/media/16420-tr-3969pdf.pdfE系列的TeraGen和TeraSort验证结果、请参见、有关AFF的"存储分层"(xref)一节。
根据客户的要求、我们认为使用Spark进行分布式培训是各种使用情形中最重要的一个。在本文档中、我们使用了 "Hovorod on Spark" 使用NetApp全闪存FAS (AFF)存储控制器、Azure NetApp Files 和StorageGRID 验证NetApp内部部署、云原生和混合云解决方案的Spark性能。
Horovod on Spark软件包为Horovod提供了一个方便的包装、使在Spark集群中运行分布式训练工作负载变得简单、从而实现了一个紧密的模型设计环路、其中数据处理、模型训练和模型评估都在训练和推理数据所在的Spark中完成。
在Spark上运行Horovod有两种API:一种是高级估算器API、另一种是运行API。虽然这两种方法都使用相同的底层机制来启动Horovod on Spark执行程序、但Estimator API可对数据处理、模型训练循环、模型检查点、指标收集和分布式培训进行抽象化。我们使用Horovod Spark Estimators、TensorFlow和Keras基于进行端到端数据准备和分布式培训工作流 "Kagle Rossmann商店销售人员" 竞争。
可以在部分中找到脚本`keras_sock_horovod_rossmann_estimator.py` "适用于每个主要用例的Python脚本。" 它包含三个部分:
-
第一部分对Kagger提供并由社区收集的一组初始CSV文件执行各种数据预处理步骤。输入数据将分为一个训练集、其中包含`Validation`子集和一个测试数据集。
-
第二部分定义了具有对数Sigma激活功能和Adam优化器的Keras深度神经网络(DNN)模型、并使用Horovod on Spark对该模型进行分布式培训。
-
第三部分使用最佳模型对测试数据集执行预测、以最大程度地减少验证集的整体平均绝对错误。然后、它将创建一个输出CSV文件。
请参见一节 ""机器学习"" 查看各种运行时比较结果。
利用Keras进行CTR预测的多员工深度学习
随着 ML 平台和应用程序的最新发展,我们现在非常关注大规模学习。点击率( CTR )是指每 100 次在线广告曝光的平均点击次数(以百分比表示)。它已广泛用作各种行业垂直市场和用例的关键指标,包括数字营销,零售,电子商务和服务提供商。请参见我们的 "TR-4904 : Azure 中的分布式培训—点击率预测" 有关CTR应用程序以及使用Kubernetes实施的端到端Cloud AI工作流、分布式数据ETL以及使用dask和CUDA ML的模型培训的更多详细信息。
在本技术报告中、我们使用了的变体 "Trigeo Terabyte单击Logs dataset" (请参见TR-4904)、针对使用Keras的多员工分布式深度学习、使用深度和跨网(深度和跨网)模型构建Spark工作流、将其在日志丢失错误功能方面的性能与基线Spark ML物流回归模型进行比较。DCN可以 高效地捕获有界限的有效功能交互、学习高度非线性的交互、无需手动执行功能工程或全面搜索、并且计算成本较低。
网络级推荐系统的数据大多是离散的、分类的、导致功能空间庞大而稀疏、这对功能探索来说是一项挑战。这样、大多数大型系统就只能使用诸如物流回归等线性模型。但是、确定常见的预测功能并同时探索未知或罕见的交叉功能是做出良好预测的关键。线性模型简单、可解释且易于扩展、但其表达能力有限。
另一方面、交叉特征在提高模型的显示能力方面表现出了显著的意义。遗憾的是、它通常需要手动执行功能工程或全面搜索才能识别此类功能。通常很难将功能交互概括为不可见。使用像DCN这样 的交叉神经网络、可以通过自动明确应用功能交叉来避免特定于任务的功能工程。跨网络由多个层组成、其中最大程度的交互可通过层深度来确定。每个层都会根据现有层生成较高顺序的交互、并保留先前层的交互。
深度神经网络(DNN)有望捕获功能之间非常复杂的交互。但是、与DCN相比、它需要的参数数量几乎要多一个数量级、无法明确形成交叉功能、并且可能无法高效地了解某些类型的功能交互。跨网络可节省内存并易于实施。将交叉组件和DNN组件联合训练在一起、有效地捕获预测性功能交互、并在Criteo CTR数据集上提供一流的性能。
一个型号的DCN-首先是一个嵌入层和堆栈层、然后是一个跨网络和一个并行的深度网络。然后是最后一个组合层、该层将两个网络的输出相结合。您的输入数据可以是具有稀疏和密集功能的向量。在Spark中,库包含类型 SparseVector
。因此、用户必须区分这两者、并在调用各自的功能和方法时要小心谨慎。在网络级建议系统(如电话预约维修预测)中,输入主要是类特征,例如 ‘country=usa’
。此类功能通常编码为一热矢量,例如 ‘[0,1,0, …]’
。在处理具有不断变化和不断增长的词汇表的实际数据集时、使用的一热编码(OHE) `SparseVector`非常有用。我们修改了中的示例 "DeepCTR"以处理大型词表,从而在DCN的嵌入和堆叠层中创建嵌入矢量。
。 "Criteo显示广告数据集" 预测广告点击率。它具有13个整数功能和26个分类功能、其中每个类别的基数都很高。对于此数据集、由于输入大小较大、光泽度提高了0.001实际上是一项显著的改进。如果对大型用户群的预测准确性稍作提高、可能会导致公司收入大幅增加。该数据集包含7天内的11 GB用户日志、相当于大约4、100万条记录。我们使用Spark `dataFrame.Random拆 分()函数`随机拆分数据进行训练(80%)、交叉验证(10%)、其余10%用于测试。
在与Keras的TensorFlow上实施了DCN。在使用DCN-CN-CN-CN-CN-CN-CN-CN-A实施模型培训过程中、主要包含四个
-
*数据处理和嵌入。*实际价值的功能通过应用日志转换进行标准化。为了获得明确的功能、我们将这些功能嵌入到维度6×(类别基数) 1/4的密集向量中。将所有嵌入项串联后、将生成维度1026的向量。
-
*优化。*我们使用了Adam优化器进行了迷你批处理随机优化。批处理大小设置为512。对深度网络应用了批处理标准化、梯度线夹规范设置为100。
-
*规范化。*由于未发现L2规范化或降级有效、我们使用了提前停止的方法。
-
*超参数。*我们根据对隐藏层数、隐藏层大小、初始学习速率和跨层数的网格搜索来报告结果。隐藏层的数量从2到5不等、隐藏层大小从32到1024不等。对于DCN、跨层数量为1到6。初始学习速率从0.0001调整为0.001、增量为0.0001。所有实验都在训练步骤150、000时进行了早期停止、超过此步骤后、开始发生过度安装。
用于验证的架构
在此验证中、我们使用了四个辅助节点和一个具有AF-A800 HA对的主节点。所有集群成员均通过10GbE网络交换机进行连接。
在此NetApp Spark解决方案 验证中、我们使用了三种不同的存储控制器:E5760、E5724和AFF-A800。E系列存储控制器通过12 Gbps SAS连接连接到五个数据节点。AFF HA对存储控制器通过与Hadoop工作节点的10GbE连接提供导出的NFS卷。Hadoop集群成员通过E系列、AFF 和StorageGRID Hadoop解决方案中的10GbE连接进行连接。