车海快讯

Merlin HugeCTR v3.3 & v3.3.1 发布说明

admin 119

此次和更新涉及的模块主要为:

HugeCTR分级参数服务器()

HugeCTRSparseOperationkit()

MLPerf

相关介绍:

使用HugeCTRTensorflow插件加速Embedding()

HugeCTR分级参数服务器介绍()

MLPerf最新Performance()

1.分层参数服务器改进:

a.新模型在线部署和旧模型回收:

在此版本中,HugeCTRBack将完全兼容Triton的模型控制协议

()。新模型的配置已添加到HPS配置文件中

()

HugeCTRBack现已支持Triton的LoadAPI在线部署新模型。旧模型也可以通过UnloadAPI

()进行在线回收。

b.简化的数据库后端:

现在可以使用相同的配置对象配置多节点、单节点和所有其他类型的可变数据库后端。

代码的多线程优化(比提速约2.3倍)

d.修复部分问题

解决了在线Kafka更新访问违规问题

解决了Parquet数据阅读器在多嵌入表的情况下错误解析分类特征索引的问题

解决了单次插入时未调用HPSRedis后端溢出处理的问题。

2.新的一组融合全连接层:

我们现在支持在构建模型图时添加一组融合全连接层。我们提供了简洁的Python接口供用户调整层数,以及指定每一层的输出维度,从而可以轻松利用HugeCTR中高度优化的融合全连接层。更多信息请参考HugeCTRLayerBook

().

1.分级参数服务器:

a.支持在线训练增量模型更新,详见demo

()。

b.支持EmbeddingKey驱逐机制。

c.支持增量EmbeddingKey异步刷新到EmbeddingCache,详见文档

()。

d.其他小改进:

完全可配置的数据库后端。

JSON解析器可以更好地应对不准确的参数化。

完善了整个参数服务器数据库后端API的日志级别。

提高了CPU内存数据库后端的性能。

2.SOK:

现已支持

()。

使用专用CUDA流。

现已支持使用pip安装。

d.修复了当TensorFlow版本大于2.4时,的挂起问题。

现已支持使用设置设备。

3.集成:

的索引预计算。

b.验证索引缓存:验证集的HybridEmbedding索引在使用时被缓存,因此消除了在每次验证迭代时重新计算索引。

权重/数据梯度计算重叠:MLP的权重梯度相对于数据梯度是异步计算的,从而使这两个计算之间能够重叠。

d.更好的计算-通信重叠:计算和通信之间更好的重叠已被启用,以提高训练吞吐量。

e.融合权重转换:权重的FP32到FP16转换现在已融合到SGD优化器中,从而节省了内存行程。

添加了GrapScheduler来控制cudaGraph启动的时间。使用GraphScheduler,消除了相邻cudaGraphs之间的差距。

4.HugeCTR现已支持在无RDMA集群上的多节点训练:您可以将allreduce算法指定为``,它可以支持非RDMA硬件。更多信息请参考all_reduce_algo

()。

5.模型导出现已支持自定义名称:

我们支持与培训指定型号名称API`CreateSolver`,这将倾与的JSON配置文件中API`_to_json`。该特性将方便Triton部署保存的HugeCTR模型,并有助于在Kafka将参数从训练端发送到推理端时区分模型。

6.Embedding层的细粒度控制:用户可以使用API冻结或解冻特定Embedding层的权重`_embedding`和

`_embedding`。此外,多个Embedding层的权重可以独立加载,这使得加载特定层的预训练Embedding成为可能。更多信息请参考文档

()和Notebook

()。

已知问题

1.异步插入内存数据库时会出现丢失embeddingkey的情况。

目前我们仅通过Kafka的插入逻辑来修复数据库后端中的缺失。这意味着如果模型没有更新,我们也不会更新缓存。我们需要建立一个异步过程,该过程还将查找未命中的Key并插入数据库后端。

2.Kafka的异步连接建立可能导致消息丢失。

ProducerRdkafka客户端的连接检查是在后台异步执行的,在此期间如果链接断开,程序会认为它已连接并不断产生数据,那么这些消息将永远不会到达Kafka并且会丢失。

已上是本次3.3与3.3.1版本的更新内容,更多最新HugeCTR讨论文章与详细配置信息,请参考Github

()。