Merlin: HugeCTR V4.1 (Merlin 22.10)
What's New in Version 4.1
-
Simplified Interface for 3G Embedding Table Placement Strategy:
3G embedding now provides an easier way for you to configure an embedding table placement strategy.
Instead of using JSON, you can configure the embedding table placement strategy by using function arguments.
You only need to provide theshard_matrix,table_group_strategy, andtable_placement_strategyarguments.
With these arguments, 3G embedding can group different tables together and place them according to theshard_matrixargument.
For an example, refer to dlrm_train.py file in thetest/embedding_collection_testdirectory of the repository on GitHub.
For comparison, refer to the same file from the v4.0 branch of the repository. -
New MMoE and Shared-Bottom Samples:
This release includes a new shared-bottom model, an example program, preprocessing scripts, and updates to documentation.
For more information, refer to theREADME.md,mmoe_parquet.py, and other files in thesamples/mmoedirectory of the repository on GitHub.
This release also includes a fix to the calculation and reporting of AUC for multi-task models, such as MMoE. -
Support for AWS S3 File System:
The Parquet DataReader can now read datasets from the Amazon Web Services S3 file system.
You can also load and dump models from and to S3 during training.
The documentation for theDataSourceParamsclass is updated.
To view sample code, refer to the HugeCTR Training with Remote File System Example class is updated. -
Simplication for File System Usage:
You no longer ’t need to passDataSourceParamsfor model loading and dumping.
TheFileSystemclass automatically infers the correct file system type, local, HDFS, or S3, based on the path URI that you specified when you built the model.
For example, the pathhdfs://localhost:9000/is inferred as an HDFS file system and the pathhttps://mybucket.s3.us-east-1.amazonaws.com/is inferred as an S3 file system. -
Support for Loading Models from Remote File Systems to HPS:
This release enables you to load models from HDFS and S3 remote file systems to HPS during inference.
To use the new feature, specify an HDFS for S3 path URI inInferenceParams. -
Support for Exporting Intermediate Tensor Values into a Numpy Array:
This release adds functioncheck_out_tensortoModelandInferenceModel.
You can use this function to check out the intermediate tensor values using the Python interface.
This function is especially helpful for debugging.
For more information, refer toModel.check_out_tensorandInferenceModel.check_out_tensor. -
On-Device Input Keys for HPS Lookup:
The HPS lookup supports input embedding keys that are on GPU memory during inference.
This enhancement removes a host-to-device copy by using the DLPacklookup_fromdlpack()interface.
By using the interface, the input DLPack capsule of embedding key can be a GPU tensor. -
Documentation Enhancements:
- The graphic for the Hierarchical Parameter Server library that shows relationship to other software packages is enhanced.
- The sample notebook for Deploy SavedModel using HPS with Triton TensorFlow Backend is added to the documentation.
- Style updates to the Hierarchical Parameter Server API documentation.
-
Issues Fixed:
- The
InteractionLayerclass is fixed so that it works correctly withnum_feas > 30. - The cuBLASLt configuration is corrected by increasing the workspace size and adding the epilogue mask.
- The NVTabular based preprocessing script for our samples that demonstrate feature crossing is fixed.
- The async data reader is fixed. Previously, it would hang and cause a corruption issue due to an improper I/O block size and I/O alignment problem.
TheAsyncParamclass is changed to implement the fix.
Theio_block_sizeargument is replaced by themax_nr_requestargument and the actual I/O block size that the async reader uses is computed accordingly.
For more information, refer to theAsyncParamclass documentation.
- The
-
Known Issues:
-
HugeCTR uses NCCL to share data between ranks and NCCL can require shared system memory for IPC and pinned (page-locked) system memory resources.
If you use NCCL inside a container, increase these resources by specifying the following arguments when you start the container:-shm-size=1g -ulimit memlock=-1
See also the NCCL known issue and the GitHub issue.
-
KafkaProducersstartup succeeds even if the target Kafka broker is unresponsive.
To avoid data loss in conjunction with streaming-model updates from Kafka, you have to make sure that a sufficient number of Kafka brokers are running, operating properly, and are reachable from the node where you run HugeCTR. -
The number of data files in the file list should be greater than or equal to the number of data reader workers.
Otherwise, different workers are mapped to the same file and data loading does not progress as expected. -
Joint loss training with a regularizer is not supported.
-
Dumping Adam optimizer states to AWS S3 is not supported.
-