b. HashMap 后端:并行和单线程的 hashmap 实现已被新的统一实现取代。这个新的实现使用了一种新的基于内存池的分配方法,它极大地提高了插入性能,而不会降低召回性能。与之前的实现相比,大批量插入操作的速度提高了 4 倍。
c. 压缩的日志:用户可以在 Triton 服务启动时配置多级日志输出,从而提高在线推理的吞吐量。
d. 简化配置: HugeCTR 后端将推理参数服务器相关配置(ps.json)和 Triton 配置(config.pbtxt)完全解耦,避免了 Triton 中的重复配置。
e. Embedding 更新的冻结功能: HugeCTR 后端已经支持通过 Triton 的模型控制接口只更新模型的密集部分,从而避免 Embedding 的在重复在线更新。
3. 离线推理可用性的增强:
线程池的大小现在可以配置了,这对于研究异步更新场景中的 Embedding Cache 性能十分有用。更多信息,请参阅分层参数服务器配置
https://nvidia-merlin.github.io/HugeCTR/master/hugectr_parameter_server.html#configuration。
4. 数据生成器性能提升:
现在可以指定 `num_threads` 参数以并行化 `Norm` 数据集生成。
5. 评估指标改进:
a. 多节点环境中的 AverageLoss 性能提升
b. AUC 性能优化和更安全的内存管理
c. NDCG 和 SMAPE
6. 使用 Parquet 数据集的 Embedding Training Cache(ETC) 演示:
现在我们提供了一个 keyset 提取脚本以生成 Parquet 数据集的 keyset文件。并且为用户提供了一个使用 ETC 模式训练 Parquet 数据集的端到端演示: https://github.com/NVIDIA-Merlin/HugeCTR/blob/master/notebooks/embedding_training_cache_example.ipynb 。
7. 文档更新:
HugeCTR 分层参数服务器数据库后端 https://nvidia-merlin.github.io/HugeCTR/master/hugectr_parameter_server.html 的文档详细信息已更新,以保持一致性和清晰性。
8. 修复的问题:
a. 在使用 Parquet 数据类型时,如果指定了 `slot_size_array`,则不再需要指定 `workspace_size_per_gpu_in_mb` 了。
b. 如果您从头开始构建和安装 HugeCTR,您可以指定 `CMAKE_INSTALL_PREFIX` 变量来指定 HugeCTR 的安装目录。
c. 解决了使用大量 GPU 进行 SOK 训练时 sok.init()的挂起问题:
https://github.com/NVIDIA-Merlin/HugeCTR/issues/261
https://github.com/NVIDIA-Merlin/HugeCTR/issues/302。
已知问题
以下是目前 HugeCTR 存在的已知问题,我们将在之后的版本中尽快修复。
- HugeCTR 使用 NCCL 在 rank 之间共享数据,并且 NCCL 可能需要共享系统内存用于 IPC 和固定(页面锁定)系统内存资源。在容器内使用 NCCL 时,建议您通过发出以下命令来增加这些资源 `-shm-size=1g -ulimit memlock=-1`
- 另见 NCCL 的 已知问题 https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/troubleshooting.html#sharing-data。还有 GitHub 问题 https://github.com/NVIDIA-Merlin/HugeCTR/issues/243 。
- 目前即使目标 Kafka broker 无响应, KafkaProducers 启动也会成功。为了避免与来自 Kafka 的流模型更新相关的数据丢失,您必须确保有足够数量的 Kafka brokers 启动、正常工作并且可以从运行 HugeCTR 的节点访问。
- 文件列表中的数据文件数量应不小于数据读取器的数量。否则,不同的 data reader worker 将被映射到同一个文件,导致数据加载不会按预期进行。 文章来自互联网,如有侵权请点此提交删除文章来自互联网,如有侵权请点此提交删除