* Implemented the following changes.
* Remove NUM_NODES_PER_CHUNK
* Remove NUM_EDGES_PER_CHUNK
* Remove the dependency between no. of edge files per edge type and no. of partitions
* Remove the dependency between no. of edge feature files per edge type and no. of partitions
* Remove the dependency between no. of edge feature files and no. of edge files per edge type.
* Remove the dependency between no. of node feature files and no. of partitions
* Add “node_type_counts”. This will be a list of integers. Each integer will represent total count of a node-type. The index in this list and the index in the “node_type” will be the same for a given node-type.
* Add “edge_type_counts”. This will be a list of integers. Each integer will represent total count of an edge-type. The index in this list and the index in the “edge_type” list will be the same for a given edge-type.
* Applying lintrunner patch.
* Adding missing keys to the metadata in the unit test framework.
* lintrunner patch.
* Resolving CI test failures due to merge conflicts.
* Applying lintrunner patch
* applying lintrunner patch
* Replacing tabspace with spaces - to satisfy lintrunner
* Fixing the CI Test Failure cases.
* Applying lintrunner patch
* lintrunner complaining about a blank line.
* Resolving issues with print statement for NoneType
* Removed tests for the arbitrary chunks tests. Since this functionality is not supported anymore.
* Addressing CI review comments.
* addressing CI review comments
* lintrunner patch
* lintrunner patch.
* Addressing CI review comments.
* lintrunner patch.
* [Dist] Add support for Parquet-formatted edges files, remove some assumptions on edge file number.
* [Dist] Add parquet edges option to unit tests.
Co-authored-by: xiang song(charlie.song) <classicxsong@gmail.com>
* Creating ParMETIS wrapper script to run parmetis using one script from user perspective
* Addressed all the CI comments from PR https://github.com/dmlc/dgl/pull/4529
* Addressing CI comments.
* Isort, and black changes.
* Replaced python with python3
* Replaced single quote with double quotes per suggestion.
* Removed print statement
* Addressing CI Commets.
* Addressing CI review comments.
* Addressing CI comments as per chime discussion with Rui
* CI Comments, Black and isort changes
* Align with code refactoring, black, isort and code review comments.
* Addressing CI review comments, and fixing merge issues with the master branch
* Updated with proper unit test skip decorator
* Added support for edge features.
* Added comments and removing unnecessary print statements.
* updated data_shuffle.py to remove compile error.
* Repaled python3 with python to match CI test framework.
* Removed unrelated files from the pull request.
* Isort changes.
* black changes on this file.
* Addressing CI review comments.
* Addressing CI comments.
* Removed duplicated and resolved merge conflict code.
* Addressing CI Comments from Rui.
* Addressing CI comments, and fixing merge issues.
* Addressing CI comments, code refactoring, isort and black
* [DistPart] expose timeout config for process group
* refine code
* Update tools/distpartitioning/data_proc_pipeline.py
Co-authored-by: Minjie Wang <wmjlyjemaine@gmail.com>
Co-authored-by: Minjie Wang <wmjlyjemaine@gmail.com>
* Adding launch script and wrapper script to trigger distributed graph partitioning pipeline as defined in the UX document
1. dispatch_data.py is a wrapper script which builds the command and triggers the distributed partitioning pipeline
2. distgraphlaunch.py is the main python script which triggers the pipeline and to simplify its usage dispatch_data.py is included as a wrapper script around it.
* Added code to auto-detect python version and retrieve some parameters from the input metadata json file
1. Auto detect python version
2. Read the metadata json file and extract some parameters to pass to the user defined command which is used to trigger the pipeline.
* Updated the json file name to metadata.json file per UX documentation
1. Renamed json file name per UX documentation.
* address comments
* fix
* fix doc
* use unbuffered logging to cure anxiety
* cure more anxiety
* Update tools/dispatch_data.py
Co-authored-by: Minjie Wang <minjie.wang@nyu.edu>
* oops
Co-authored-by: Quan Gan <coin2028@hotmail.com>
Co-authored-by: Minjie Wang <minjie.wang@nyu.edu>
* Code changes to address the updated file format support for massively large graphs.
1. Updated the docstring for the starting function 'gen_dist_partitions" to describe the newly proposed file format for input dataset.
2. Code which was dependent on the structure of the old-metadata json object has been updated to read from the newly proposed metadata file.
3. Fixed some errors when appropriate functions were invoked and the calling function expects return values from the invoked furnction.
4. This modified code has been tested on "mag" dataset using 4-way partitions and verified the results
* Code changes to address the CI review comments
1. Improved docstrings for some functions.
2. Added a new function in the utils.py to compute the id ranges and this is used in multiple places.
* Added TODO to indicate the redundant data structure.
Because of the new file format changes, one of the dictionaries (node_feature_tids, node_tids) will be redundant. Added TODO text so that this will be removed in the next iteration of code changes.
* Initial implementation of Distributed data processing step in the Distributed Training pipeline
Implemented the following:
1) Read the output of parmetis (node-id to partition-id mappings)
2) Read the original graph files
3) Shuffle the node/edge metadata and features
4) output the partition specific files in DGL format using convert_partition.py functionality
5) Graph meta data is serialized in json format on rank-0 machine.
* Bug Fixes identified during verification of the dataset
1. When sending out global-id lookups for non-local nodes, in the msg_alltoall.py, conditional filter was used to identify the indices in node_data which is incorrect. Replaced the conditional filter with intersect1d to find out the common node ids and appropriate indices which are later used to identify the needed information to communicate.
2. When writing the graph level json file in distributed processing, the edge_offset on non-rank-0 machines was starting from 0 instead of the appropriate offset. Now added code to start the edge(s) from correct starting offset instead of 0 always.
* Restructuring and consolidation of code
1) Fixed issue when running verify_mag_dataset.py, Now we read xxx_removed_edges.txt and add these edges to `edge_data`. This will ensure that the self-loops and duplicate edges are handling appropriately when compared to the original dataset.
2) Consolidated code into a fewer files and changed code to following the python naming convention.
* Code changes addressing code review comments
Following changes are made in this commit.
1) Naming convention is defined and code is changed accordingly. Definition of various global_ids are defined and how to read them is mentioned.
2) All the code review comments are addressed
3)Files are moved to a new directory with dgl/tools directory as per suggestion
4) README.md file is include and it contains detailed information about the Naming convention adopted by the code, high level overview of the algorithm used in data-shuffling, example command-line to use on a single machine.
* addressing github review comments
Made code changes addressing all the review comments from GitHub.
* Addressing latest code review comments
Addressed all the latest code reviewing comments. One of the major changes is treating the node and edge metadata as dictionary objects and removing all the python lists with numpy arrays.
* Update README.md
Text rendering corrections
* Addressed code review comments
Addressed code review comments for the latest code review
Co-authored-by: xiang song(charlie.song) <classicxsong@gmail.com>