Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add partitioning for distributed training #7502

Merged
merged 23 commits into from
Jun 16, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f4b6a55
Merge pull request #1 from kaixuanliu/master
ZhengHongming888 Jun 2, 2023
129d6eb
add partition part support for distributed training
kaixuanliu Jun 3, 2023
ce92fc1
Merge pull request #2 from kaixuanliu/master
ZhengHongming888 Jun 3, 2023
03403bf
fix bug for put_edge_id
kaixuanliu Jun 3, 2023
50238e7
add example for graph partition; change ogb dataset to fakedataset in…
kaixuanliu Jun 3, 2023
dbc2e8f
Merge pull request #3 from kaixuanliu/master
ZhengHongming888 Jun 3, 2023
6342dcd
add CHANGELOG; fix unit test error; add train_idx and test_idx partit…
kaixuanliu Jun 7, 2023
b6484ce
Merge pull request #4 from kaixuanliu/dist_partition
ZhengHongming888 Jun 7, 2023
5402762
Merge branch 'master' into dist_partition
ZhengHongming888 Jun 14, 2023
a0ce3db
adapt to new implementation of LocalFeatureStore
kaixuanliu Jun 15, 2023
640bcd8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 15, 2023
d805992
change back to original design
kaixuanliu Jun 15, 2023
ed20b1b
small change to homo graph
kaixuanliu Jun 15, 2023
5ea24ca
Merge pull request #5 from kaixuanliu/dist_partition
ZhengHongming888 Jun 15, 2023
545de3c
Merge branch 'master' into dist_partition
ZhengHongming888 Jun 15, 2023
66ff4d1
update
rusty1s Jun 16, 2023
530df3a
update
rusty1s Jun 16, 2023
94e30b2
update
rusty1s Jun 16, 2023
db889fe
delete partition example temporarily
kaixuanliu Jun 16, 2023
8032400
Merge pull request #6 from kaixuanliu/dist_partition
ZhengHongming888 Jun 16, 2023
18edf19
update
rusty1s Jun 16, 2023
f8c98e4
update
rusty1s Jun 16, 2023
89f8eb8
update
rusty1s Jun 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add CHANGELOG; fix unit test error; add train_idx and test_idx partit…
…ion in example

Signed-off-by: Liu, Kaixuan <kaixuan.liu@intel.com>
  • Loading branch information
kaixuanliu committed Jun 7, 2023
commit 6342dcd3884817c18118ff78a5f22626909f766a
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Added support for `torch.jit.script` within `MessagePassing` layers without `torch_sparse` being installed ([#7061](https://github.com/pyg-team/pytorch_geometric/pull/7061), [#7062](https://github.com/pyg-team/pytorch_geometric/pull/7062))
- Added unbatching logic for `torch.sparse` tensors ([#7037](https://github.com/pyg-team/pytorch_geometric/pull/7037))
- Added the `RotatE` KGE model ([#7026](https://github.com/pyg-team/pytorch_geometric/pull/7026))
- Add partitioning for distributed training ([#7502](https://github.com/pyg-team/pytorch_geometric/pull/7502))

### Changed

Expand Down
28 changes: 27 additions & 1 deletion examples/distributed/partition_graph.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import argparse
import os.path as osp

import torch
from ogb.nodeproppred import PygNodePropPredDataset

from torch_geometric.distributed.partition.partitioner import Partitioner
from torch_geometric.distributed.partition.partitioner import (
Partitioner,
prepare_directory,
)


def partition_dataset(ogbn_dataset: str, root_dir: str, num_partitions: int):
Expand All @@ -14,6 +18,28 @@ def partition_dataset(ogbn_dataset: str, root_dir: str, num_partitions: int):
partitioner = Partitioner(output_dir=save_dir, num_parts=num_partitions,
data=data)
partitioner.generate_partition()
split_idx = dataset.get_idx_split()
print('-- Saving label ...')
label_dir = prepare_directory(root_dir, f'{ogbn_dataset}-label')
torch.save(data.y.squeeze(), osp.join(label_dir, 'label.pt'))

print('-- Partitioning training idx ...')
train_idx = split_idx['train']
train_idx = train_idx.split(train_idx.size(0) // num_partitions)
train_idx_partitions_dir = prepare_directory(
root_dir, f'{ogbn_dataset}-train-partitions')
for pidx in range(num_partitions):
torch.save(train_idx[pidx],
osp.join(train_idx_partitions_dir, f'partition{pidx}.pt'))

print('-- Partitioning test idx ...')
test_idx = split_idx['test']
test_idx = test_idx.split(test_idx.size(0) // num_partitions)
test_idx_partitions_dir = prepare_directory(
root_dir, f'{ogbn_dataset}-test-partitions')
for pidx in range(num_partitions):
torch.save(test_idx[pidx],
osp.join(test_idx_partitions_dir, f'partition{pidx}.pt'))


if __name__ == '__main__':
Expand Down
44 changes: 0 additions & 44 deletions examples/distributed/partition_hetero_graph.py

This file was deleted.

3 changes: 3 additions & 0 deletions test/distributed/test_partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

from torch_geometric.datasets import FakeDataset, FakeHeteroDataset
from torch_geometric.distributed.partition.partitioner import Partitioner
from torch_geometric.testing import withPackage
from torch_geometric.typing import EdgeTypeStr


@withPackage('pyg_lib')
def test_partition_homo_graph():
num_partitions = 2
save_dir = osp.join('./homo', 'partition')
Expand Down Expand Up @@ -58,6 +60,7 @@ def test_partition_homo_graph():
assert torch.allclose(data.x[node_id2], node_feat2)


@withPackage('pyg_lib')
def test_partition_hetero_graph():
num_partitions = 2
save_dir = osp.join('./hetero', 'partition')
Expand Down