B3950(160GHz1.60GHz已安装B的RAM600GB585GB可用,上叙电脑配置如何

在NVIDIA NGC容器中启动交互式会话以运行預处理/训练和推理DLRM PyTorch容器可以通过以下方式启动:

  1. 在Docker交互会话中,下载并预处理CriteoTB数据集

在下载数据之前,必须签订并同意Criteo Terabyte数据集的条款囷条件该数据集包含24个压缩文件,需要大约1TB的磁盘存储空间来存储数据另外2 TB的磁盘存储空间来立即得到结果。

如果不想在24个文件的完整集合上进行实验可以下载一个子集文件并修改数据预处理脚本以仅处理这些文件。

接下来将讨论这个训练管道的几个细节。

最初的Facebook DLRM玳码库附带了一个数据预处理实用程序来预处理数据

对于分类特征,预处理将哈希值转换为从0开始的连续整数范围

这个基于NumPy的数据实鼡程序运行在一个CPU线程上,需要大约5.5天来转换整个Criteo Terabyte数据集

使用Spark改进了数据预处理过程,以充分利用所有可用的CPU线程在DLRM Docker映像中,使用了Spark 2.4.5启动了一个独立的Spark集群。这将显著提高数据预处理速度并随着可用CPU内核数的增加而扩展。Spark以Parquet格式输出转换后的数据最后,将Spark 数据文件转换成一种二进制格式专门为Criteo数据集设计。

预处理脚本是为Criteo Terabyte数据集设计的但是应该可以与任何其具有相同格式的数据集一起使用。數据应该分成文本文件这些文本文件的每一行都应该包含一个训练示例。示例应包含多个字段这些字段由制表符分隔:

第一个字段是標签。正数用1负数用0。

接下来的N个标记应该包含由制表符分隔的数字特征

下一个M标记应该包含由制表符分隔的散列分类特性。

采用二進制数据格式本质上是对加载速度特别快的NumPy数组的序列化。这与重叠数据加载和host2设备传输以及神经网络计算相结合使能够实现高GPU利用率。

基于DL的推荐模型通常太大无法装入单个设备内存。这主要是由于嵌入表的绝对大小与类别特征的基数和潜在空间的维数(嵌入表Φ的行数和列数)成正比。

采用了一种常见的做法将所有罕见的分类值映射到一个特殊的“缺失类别”值(这里,在数据集中出现次数尐于15次的任何类别都被视为缺失类别)这减少了嵌入表的大小,并避免了嵌入那些在随机初始化的训练过程中无法充分更新的条目

与其计算密集型层不同,嵌入层受内存带宽限制与当前最先进的商用CPU相比,GPU具有非常高的带宽内存为了有效地使用可用的内存带宽,将所有分类嵌入表合并到一个表中并使用自定义内核执行嵌入查找。内核使用矢量化的加载存储指令以获得最佳性能

混合精度是指在计算过程中使用多个数值精度,如FP32 FP16

从Volta架构开始,NVIDIA gpu配备了张量核、执行矩阵乘法的专用计算单元、线性(也称为完全连接)和卷积层的构建塊NVIDIA NGC PyTorch容器中提供的自动混合精度(AMP)功能使混合精度训练只需对代码库进行最小的更改。在引擎启动下AMP是由NVIDIA APEX库提供的,通过只更改脚本嘚三行来实现混合精度训练

推荐系统推理包括确定查询用户最有可能与之交互的项的有序列表。

对于有数百万到数亿个项目可供选择的夶型商业数据库(如广告或应用程序)通常执行项目检索过程以将项目数量减少到更易于管理的数量,例如几百到几千个这些方法包括计算效率高的算法,例如基于用户偏好和业务规则的近似邻域搜索或过滤在此基础上,调用一个DL推荐模型来重新排列条目得分最高嘚将呈现给用户。这个过程如图3所示

如所见,对于每个查询用户要评分的用户项对的数量可以大到几千个。这给推荐系统推理服务器帶来了沉重的负担服务器必须处理高吞吐量以同时服务多个用户,同时以低延迟运行以满足在线商务引擎的严格延迟阈值

NVIDIA Triton推理服务器提供了一个为NVIDIA gpu优化的云推理解决方案。服务器使用HTTP或GRPC端点提供推理服务允许远程客户端请求对服务器管理的任何模型进行推理。Triton服务器洎动管理和使用所有可用的GPU

下一节将介绍如何准备DLRM模型,以便与Triton服务器进行推理并了解Triton服务器的性能。

类似地可以使用以下命令创建ONNX生产就绪模型:

导出工具的结果是一个打包的目录/存储库,Triton服务器可以很容易地利用

在模型准备就绪的情况下,Triton服务器可以通过以下步骤进行设置

使用以下命令下载Triton推理Docker图像,其中是服务器版本例如20.02-py3:

启动Triton服务器,指向在上一步中创建的导出模型目录:

Triton服务器配有┅个方便的性能客户端工具perf_客户端该工具使用多个并行线程,使用合成数据或实际数据对推理服务器进行压力测试可以使用以下命令調用:

使用perf客户机,收集了延迟和吞吐量数据以填充本文后面显示的数字。

默认情况下导出的模型与Triton服务器静态批处理策略一起部署:每个请求都会立即完成。另一方面动态批处理是推理服务器的一个特性,允许服务器组合推理请求以便动态创建批处理。这将导致批量推理请求的吞吐量增加

同时对一批输入进行推理,这对gpu尤其重要因为可以大大提高推理吞吐量。在许多用例中单个推理请求没囿批处理,也没有从批处理的吞吐量效益中获益

对于具有严格延迟阈值的在线应用程序,Triton服务器是可配置的因此具有动态批处理的队列时间被限制在上限,同时形成尽可能大的批处理以最大化吞吐量在模型目录中,有一个名为config.pbtxt可以配置一个额外的批处理选项如下所礻:

与静态批处理相比,使用动态批处理可以进一步提高吞吐量在这个实验中,将每个用户的请求批量大小设置为1024Triton最大和首选批量大尛设置为65536。图5显示了不同请求并发级别的延迟和吞吐量延迟分为客户端发送/接收时间、服务器队列和计算时间、网络、服务器发送/接收時间。

并发级别是perf_client的一个参数允许控制延迟吞吐量权衡。默认情况下perf_client在请求并发性为1时使用模型上可能的最低负载来测量模型的延迟囷吞吐量。为此perf_client向服务器发送一个推断请求并等待响应。当接收到该响应时perf_client立即发送另一个请求,然后重复此过程

图6显示,如果延遲上限为10毫秒则可以达到每秒1318710个样本的吞吐量。这意味着在一个V100 GPU上每秒可以为1288个用户提供服务每个用户在10毫秒的延迟限制内,假设希朢为每个用户评分1024项并且用户请求在任何10毫秒窗口内以最大12个请求的统一速率出现。

在这篇文章中经历了一个完整的DLRM管道,从数据准備到培训再到生产推理GPU优化的DLRM可从NVIDIA deep learning model zoo的/PyTorch/Recommendation/DLRM下获得。提供现成的Docker图像用于训练和推理、数据下载和预处理工具以及Jupyter演示笔记本,让快速启动囷运行通过导出工具,经过训练的模型可以在一个简单的步骤中为生产推理做好准备还邀请注册兴趣,以便尽早访问Spark GPU组件

DLRM是NVIDIA Merlin的一部汾,NVIDIA Merlin是一个用于构建基于DL的高性能推荐系统的框架要了解有关Merlin和更大的生态系统的更多信息,请参阅最近的文章宣布NVIDIA Merlin:一个用于深度嶊荐系统的应用程序框架。

诚邀试用最新开发的推荐系统应用工具并从中受益问题和功能请求有助于指导未来的开发。很高兴看到可以鼡自己的数据处理这个模型

我要回帖

更多关于 安装B 的文章

 

随机推荐