From fd59a64c6065aea8e330906967cc6cc3d4fca9b1 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Mon, 17 Mar 2025 16:16:03 -0700 Subject: [PATCH 01/34] Added updated configs. --- configs/spmd/kmeans_strong.json | 32 +++++++++ configs/spmd/kmeans_wide_weak.json | 34 +++++++++ configs/spmd/kmeans_wide_weak.json.backup | 34 +++++++++ configs/spmd/large_scale.json | 85 +++++++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 configs/spmd/kmeans_strong.json create mode 100644 configs/spmd/kmeans_wide_weak.json create mode 100644 configs/spmd/kmeans_wide_weak.json.backup create mode 100644 configs/spmd/large_scale.json diff --git a/configs/spmd/kmeans_strong.json b/configs/spmd/kmeans_strong.json new file mode 100644 index 00000000..c0028de3 --- /dev/null +++ b/configs/spmd/kmeans_strong.json @@ -0,0 +1,32 @@ +{ + "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "PARAMETERS_SETS": { + "spmd kmeans parameters": { + "algorithm": { + "estimator": "KMeans", + "estimator_params": { + "algorithm": "lloyd", + "max_iter": 20, + "n_clusters": 100 + }, + "estimator_methods": { "training": "fit", "inference": "predict" }, + "sklearnex_context": { "use_raw_input": true } + } + }, + "synthetic data": { + "data": [ + { "source": "make_blobs", "generation_kwargs": { "n_samples": 25000000, "n_features": 100, "centers": 100 }} + ] + } + }, + "TEMPLATES": { + "kmeans": { + "SETS": [ + "synthetic data", + "sklearnex spmd implementation", + "large scale strong <=64 parameters", + "spmd kmeans parameters" + ] + } + } +} diff --git a/configs/spmd/kmeans_wide_weak.json b/configs/spmd/kmeans_wide_weak.json new file mode 100644 index 00000000..56874e77 --- /dev/null +++ b/configs/spmd/kmeans_wide_weak.json @@ -0,0 +1,34 @@ +{ + "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "PARAMETERS_SETS": { + "spmd kmeans parameters": { + "algorithm": { + "estimator": "KMeans", + "estimator_params": { + "algorithm": "lloyd", + "max_iter": 20, + "n_clusters": 10, + "random_state": 42 + }, + "estimator_methods": { "training": "fit", "inference": "" }, + "sklearnex_context": { "use_raw_input": true } + } + }, + "synthetic data": { + "data": [ + { "source": "make_blobs", "generation_kwargs": { "n_samples": 1000000, "n_features": 1000, "centers": 2000}} + ] + } + }, + "TEMPLATES": { + "kmeans": { + "SETS": [ + "synthetic data", + "sklearnex spmd implementation", + "large scale 2k parameters sample shift", + "spmd kmeans parameters" + ] + } + } +} + diff --git a/configs/spmd/kmeans_wide_weak.json.backup b/configs/spmd/kmeans_wide_weak.json.backup new file mode 100644 index 00000000..603ee877 --- /dev/null +++ b/configs/spmd/kmeans_wide_weak.json.backup @@ -0,0 +1,34 @@ +{ + "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "PARAMETERS_SETS": { + "spmd kmeans parameters": { + "algorithm": { + "estimator": "KMeans", + "estimator_params": { + "algorithm": "lloyd", + "max_iter": 20, + "n_clusters": 10, + "random_state": 42 + }, + "estimator_methods": { "training": "fit", "inference": "" }, + "sklearnex_context": { "use_raw_input": true } + } + }, + "synthetic data": { + "data": [ + { "source": "make_blobs", "generation_kwargs": { "n_samples": 1000000, "n_features": 1000, "centers": 2000, "cluster_std":3.0, "center_box":1000}} + ] + } + }, + "TEMPLATES": { + "kmeans": { + "SETS": [ + "synthetic data", + "sklearnex spmd implementation", + "large scale 2k parameters sample shift", + "spmd kmeans parameters" + ] + } + } +} + diff --git a/configs/spmd/large_scale.json b/configs/spmd/large_scale.json new file mode 100644 index 00000000..8b575dbf --- /dev/null +++ b/configs/spmd/large_scale.json @@ -0,0 +1,85 @@ +{ + "PARAMETERS_SETS": { + "large scale default parameters": { + "data": { + "dtype": "float64", + "distributed_split": "None" + }, + "bench": { + "mpi_params": {"n": [1,2], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale strong parameters": { + "data": { + "dtype": "float64", + "distributed_split": "rank_based" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale 2k parameters sample shift": { + "data": { + "dtype": "float64", + "distributed_split": "sample_shift" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale 2k parameters": { + "data": { + "dtype": "float64", + "distributed_split": "None" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale 32 parameters": { + "data": { + "dtype": "float64", + "distributed_split": "None" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale <=64 parameters": { + "data": { + "dtype": "float64", + "distributed_split": "None" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale strong 2k parameters": { + "data": { + "dtype": "float64", + "distributed_split": "rank_based" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale strong <=64 parameters": { + "data": { + "dtype": "float64", + "distributed_split": "rank_based" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, + "large scale impi parameters": { + "data": { + "dtype": "float64", + "distributed_split": "no" + }, + "bench": { + "mpi_params": {"n": [1,2,4,6,9,12], "ppn": 12} + } + } + } +} From 985db075e277d286dd94c542d8802239b55bad8b Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Mon, 17 Mar 2025 16:27:23 -0700 Subject: [PATCH 02/34] Added shift. --- configs/spmd/kmeans_wide_weak.json | 2 +- sklbench/datasets/transformer.py | 37 ++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/configs/spmd/kmeans_wide_weak.json b/configs/spmd/kmeans_wide_weak.json index 56874e77..d5fe545a 100644 --- a/configs/spmd/kmeans_wide_weak.json +++ b/configs/spmd/kmeans_wide_weak.json @@ -25,7 +25,7 @@ "SETS": [ "synthetic data", "sklearnex spmd implementation", - "large scale 2k parameters sample shift", + "large scale 2k parameters", "spmd kmeans parameters" ] } diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 86944ead..040ac2ee 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -23,7 +23,7 @@ from ..utils.bench_case import get_bench_case_value from ..utils.logger import logger - +from mpi4py import MPI def convert_data(data, dformat: str, order: str, dtype: str, device: str = None): if isinstance(data, csr_matrix) and dformat != "csr_matrix": @@ -113,8 +113,36 @@ def split_and_transform_data(bench_case, data, data_description): "KNeighbors" in get_bench_case_value(bench_case, "algorithm:estimator", "") and int(get_bench_case_value(bench_case, "bench:mpi_params:n", 1)) > 1 ) - if distributed_split == "rank_based" or knn_split_train: - from mpi4py import MPI + + if distributed_split == "sample_shift": + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + size = comm.Get_size() + + n_train = len(x_train) + n_test = len(x_test) + + train_start = 0 + train_end = n_train + test_start = 0 + test_end = n_test + + adjust_number = (math.sqrt(rank) * 0.003) + 1 + + if "y" in data: + x_train, y_train = ( + x_train[train_start:train_end] * adjust_number, + y_train[train_start:train_end], + ) + + x_test, y_test = x_test[test_start:test_end] * adjust_number, y_test[test_start:test_end] + else: + x_train = x_train[train_start:train_end] + + x_test = x_test[test_start:test_end] * adjust_number + + elif distributed_split == "rank_based" or knn_split_train: + comm = MPI.COMM_WORLD rank = comm.Get_rank() @@ -127,6 +155,7 @@ def split_and_transform_data(bench_case, data, data_description): train_end = (1 + rank) * n_train // size test_start = rank * n_test // size test_end = (1 + rank) * n_test // size + x_train_rank = x_train[train_start:train_end] if "y" in data: x_train, y_train = ( @@ -138,7 +167,7 @@ def split_and_transform_data(bench_case, data, data_description): else: x_train = x_train[train_start:train_end] if distributed_split == "rank_based": - x_test = x_test[test_start:test_end] + x_test = x_test[test_start:test_end] * adjust_number device = get_bench_case_value(bench_case, "algorithm:device", None) common_data_format = get_bench_case_value(bench_case, "data:format", "pandas") From 34a30c74177e480b2a55eb7cfc2c9a4c865e6bb7 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Mon, 17 Mar 2025 16:32:36 -0700 Subject: [PATCH 03/34] Added center box. --- sklbench/datasets/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sklbench/datasets/__init__.py b/sklbench/datasets/__init__.py index 093875c4..27336eb4 100644 --- a/sklbench/datasets/__init__.py +++ b/sklbench/datasets/__init__.py @@ -67,6 +67,8 @@ def load_data(bench_case: BenchCase) -> Tuple[Dict, Dict]: generation_kwargs = get_bench_case_value( bench_case, "data:generation_kwargs", dict() ) + if 'center_box' in generation_kwargs: + generation_kwargs['center_box'] = (-1 * generation_kwargs['center_box'], generation_kwargs['center_box']) return load_sklearn_synthetic_data( function_name=source, input_kwargs=generation_kwargs, From d47face749f5af71599139b2080c5d4cef189a08 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:21:01 -0700 Subject: [PATCH 04/34] Removed the inertia for Kmeans. --- sklbench/benchmarks/sklearn_estimator.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/sklbench/benchmarks/sklearn_estimator.py b/sklbench/benchmarks/sklearn_estimator.py index e57a9038..877707af 100644 --- a/sklbench/benchmarks/sklearn_estimator.py +++ b/sklbench/benchmarks/sklearn_estimator.py @@ -191,19 +191,6 @@ def get_subset_metrics_of_estimator( } ) elif task == "clustering": - if hasattr(estimator_instance, "inertia_"): - # compute inertia manually using distances to cluster centers - # provided by KMeans.transform - metrics.update( - { - "inertia": float( - np.power( - convert_to_numpy(estimator_instance.transform(x)).min(axis=1), - 2, - ).sum() - ) - } - ) if hasattr(estimator_instance, "predict"): y_pred = convert_to_numpy(estimator_instance.predict(x)) metrics.update( From e6177916bf7375ef06bf6b8dfc2d119345f7d936 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:39:00 -0700 Subject: [PATCH 05/34] fixed config locations. --- configs/spmd/kmeans_wide_weak.json.backup | 34 ------------------- .../{ => large_scale}/kmeans_wide_weak.json | 0 2 files changed, 34 deletions(-) delete mode 100644 configs/spmd/kmeans_wide_weak.json.backup rename configs/spmd/{ => large_scale}/kmeans_wide_weak.json (100%) diff --git a/configs/spmd/kmeans_wide_weak.json.backup b/configs/spmd/kmeans_wide_weak.json.backup deleted file mode 100644 index 603ee877..00000000 --- a/configs/spmd/kmeans_wide_weak.json.backup +++ /dev/null @@ -1,34 +0,0 @@ -{ - "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], - "PARAMETERS_SETS": { - "spmd kmeans parameters": { - "algorithm": { - "estimator": "KMeans", - "estimator_params": { - "algorithm": "lloyd", - "max_iter": 20, - "n_clusters": 10, - "random_state": 42 - }, - "estimator_methods": { "training": "fit", "inference": "" }, - "sklearnex_context": { "use_raw_input": true } - } - }, - "synthetic data": { - "data": [ - { "source": "make_blobs", "generation_kwargs": { "n_samples": 1000000, "n_features": 1000, "centers": 2000, "cluster_std":3.0, "center_box":1000}} - ] - } - }, - "TEMPLATES": { - "kmeans": { - "SETS": [ - "synthetic data", - "sklearnex spmd implementation", - "large scale 2k parameters sample shift", - "spmd kmeans parameters" - ] - } - } -} - diff --git a/configs/spmd/kmeans_wide_weak.json b/configs/spmd/large_scale/kmeans_wide_weak.json similarity index 100% rename from configs/spmd/kmeans_wide_weak.json rename to configs/spmd/large_scale/kmeans_wide_weak.json From 00ac46d6132a44f2124f042c31e62ae2a041cd3c Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:47:28 -0700 Subject: [PATCH 06/34] Updated configs. --- .../spmd/large_scale/kmeans_narrow_weak.json | 33 +++++++++++++++++++ configs/spmd/large_scale/kmeans_strong.json | 18 +++++----- 2 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 configs/spmd/large_scale/kmeans_narrow_weak.json diff --git a/configs/spmd/large_scale/kmeans_narrow_weak.json b/configs/spmd/large_scale/kmeans_narrow_weak.json new file mode 100644 index 00000000..4d8a34d1 --- /dev/null +++ b/configs/spmd/large_scale/kmeans_narrow_weak.json @@ -0,0 +1,33 @@ +{ + "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "PARAMETERS_SETS": { + "spmd kmeans parameters": { + "algorithm": { + "estimator": "KMeans", + "estimator_params": { + "algorithm": "lloyd", + "max_iter": 20, + "n_clusters": 10, + "random_state": 42 + }, + "estimator_methods": { "training": "fit", "inference": "" }, + "sklearnex_context": { "use_raw_input": true } + } + }, + "synthetic data": { + "data": [ + { "source": "make_blobs", "generation_kwargs": { "n_samples": 2000000, "n_features": 100, "centers": 2000, "cluster_std": 3, "center_box": 100.0}} + ] + } + }, + "TEMPLATES": { + "kmeans": { + "SETS": [ + "synthetic data", + "sklearnex spmd implementation", + "large scale 2k parameters sample shift", + "spmd kmeans parameters" + ] + } + } +} \ No newline at end of file diff --git a/configs/spmd/large_scale/kmeans_strong.json b/configs/spmd/large_scale/kmeans_strong.json index 87fb7fac..f61172c9 100644 --- a/configs/spmd/large_scale/kmeans_strong.json +++ b/configs/spmd/large_scale/kmeans_strong.json @@ -1,20 +1,21 @@ { - "INCLUDE": ["../../common/sklearn.json", "large_scale.json"], + "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], "PARAMETERS_SETS": { "spmd kmeans parameters": { "algorithm": { "estimator": "KMeans", "estimator_params": { - "algorithm": "lloyd" + "algorithm": "lloyd", + "max_iter": 20, + "n_clusters": 100 }, - "estimator_methods": { "training": "fit", "inference": "predict" } + "estimator_methods": { "training": "fit", "inference": "predict" }, + "sklearnex_context": { "use_raw_input": true } } - }, - "synthetic data": { + }, + "synthetic data": { "data": [ - { "source": "make_blobs", "generation_kwargs": { "n_samples": 5000000, "n_features": 10, "centers": 10 }, "algorithm": { "n_clusters": 10, "max_iter": 10 } }, - { "source": "make_blobs", "generation_kwargs": { "n_samples": 30000, "n_features": 1000, "centers": 10 }, "algorithm": { "n_clusters": 10, "max_iter": 10 } }, - { "source": "make_blobs", "generation_kwargs": { "n_samples": 1000000, "n_features": 100, "centers": 100 }, "algorithm": { "n_clusters": 100, "max_iter": 100 } } + { "source": "make_blobs", "generation_kwargs": { "n_samples": 25000000, "n_features": 100, "centers": 100 }} ] } }, @@ -29,3 +30,4 @@ } } } + From f37f964a729c133f6bdd46f4e623316030c16fe2 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:54:53 -0700 Subject: [PATCH 07/34] Moved large scale files. --- configs/spmd/kmeans_strong.json | 32 ------------- configs/spmd/large_scale.json | 85 --------------------------------- 2 files changed, 117 deletions(-) delete mode 100644 configs/spmd/kmeans_strong.json delete mode 100644 configs/spmd/large_scale.json diff --git a/configs/spmd/kmeans_strong.json b/configs/spmd/kmeans_strong.json deleted file mode 100644 index c0028de3..00000000 --- a/configs/spmd/kmeans_strong.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], - "PARAMETERS_SETS": { - "spmd kmeans parameters": { - "algorithm": { - "estimator": "KMeans", - "estimator_params": { - "algorithm": "lloyd", - "max_iter": 20, - "n_clusters": 100 - }, - "estimator_methods": { "training": "fit", "inference": "predict" }, - "sklearnex_context": { "use_raw_input": true } - } - }, - "synthetic data": { - "data": [ - { "source": "make_blobs", "generation_kwargs": { "n_samples": 25000000, "n_features": 100, "centers": 100 }} - ] - } - }, - "TEMPLATES": { - "kmeans": { - "SETS": [ - "synthetic data", - "sklearnex spmd implementation", - "large scale strong <=64 parameters", - "spmd kmeans parameters" - ] - } - } -} diff --git a/configs/spmd/large_scale.json b/configs/spmd/large_scale.json deleted file mode 100644 index 8b575dbf..00000000 --- a/configs/spmd/large_scale.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "PARAMETERS_SETS": { - "large scale default parameters": { - "data": { - "dtype": "float64", - "distributed_split": "None" - }, - "bench": { - "mpi_params": {"n": [1,2], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale strong parameters": { - "data": { - "dtype": "float64", - "distributed_split": "rank_based" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale 2k parameters sample shift": { - "data": { - "dtype": "float64", - "distributed_split": "sample_shift" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale 2k parameters": { - "data": { - "dtype": "float64", - "distributed_split": "None" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale 32 parameters": { - "data": { - "dtype": "float64", - "distributed_split": "None" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale <=64 parameters": { - "data": { - "dtype": "float64", - "distributed_split": "None" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale strong 2k parameters": { - "data": { - "dtype": "float64", - "distributed_split": "rank_based" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale strong <=64 parameters": { - "data": { - "dtype": "float64", - "distributed_split": "rank_based" - }, - "bench": { - "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } - } - }, - "large scale impi parameters": { - "data": { - "dtype": "float64", - "distributed_split": "no" - }, - "bench": { - "mpi_params": {"n": [1,2,4,6,9,12], "ppn": 12} - } - } - } -} From 1c5552b27893b27a6a695f2acda88527570b73a2 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:55:53 -0700 Subject: [PATCH 08/34] Added line. --- configs/spmd/large_scale/kmeans_narrow_weak.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/spmd/large_scale/kmeans_narrow_weak.json b/configs/spmd/large_scale/kmeans_narrow_weak.json index 4d8a34d1..d6b73029 100644 --- a/configs/spmd/large_scale/kmeans_narrow_weak.json +++ b/configs/spmd/large_scale/kmeans_narrow_weak.json @@ -30,4 +30,4 @@ ] } } -} \ No newline at end of file +} From dcfef94ab2bb8c1a34b7ed7eea57e2396fe8d9eb Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 10:58:29 -0700 Subject: [PATCH 09/34] Added large scale 2k parameters sample shift --- configs/spmd/large_scale/large_scale.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/configs/spmd/large_scale/large_scale.json b/configs/spmd/large_scale/large_scale.json index 4e4c9d0c..a1ae8a62 100644 --- a/configs/spmd/large_scale/large_scale.json +++ b/configs/spmd/large_scale/large_scale.json @@ -27,6 +27,15 @@ "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } } }, + "large scale 2k parameters sample shift": { + "data": { + "dtype": "float64", + "distributed_split": "sample_shift" + }, + "bench": { + "mpi_params": {"n": [1,2,6,12], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + } + }, "large scale 32 parameters": { "data": { "dtype": "float64", From 4ba3fe43e5effba47c942ea0ebce7b16aeef2f69 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 12:09:12 -0700 Subject: [PATCH 10/34] Fixed imports. --- sklbench/datasets/transformer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 040ac2ee..894d711d 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -18,12 +18,13 @@ import numpy as np import pandas as pd +from mpi4py import MPI from scipy.sparse import csr_matrix from sklearn.model_selection import train_test_split from ..utils.bench_case import get_bench_case_value from ..utils.logger import logger -from mpi4py import MPI + def convert_data(data, dformat: str, order: str, dtype: str, device: str = None): if isinstance(data, csr_matrix) and dformat != "csr_matrix": From 5c04a35f8d0156e5a4a308c5eaa2a38aee714387 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 12:29:03 -0700 Subject: [PATCH 11/34] Updated format. --- sklbench/datasets/__init__.py | 7 ++++-- sklbench/datasets/transformer.py | 38 +++++++++++++++++--------------- sklbench/utils/common.py | 2 +- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/sklbench/datasets/__init__.py b/sklbench/datasets/__init__.py index 27336eb4..d4bddca1 100644 --- a/sklbench/datasets/__init__.py +++ b/sklbench/datasets/__init__.py @@ -67,8 +67,11 @@ def load_data(bench_case: BenchCase) -> Tuple[Dict, Dict]: generation_kwargs = get_bench_case_value( bench_case, "data:generation_kwargs", dict() ) - if 'center_box' in generation_kwargs: - generation_kwargs['center_box'] = (-1 * generation_kwargs['center_box'], generation_kwargs['center_box']) + if "center_box" in generation_kwargs: + generation_kwargs["center_box"] = ( + -1 * generation_kwargs["center_box"], + generation_kwargs["center_box"], + ) return load_sklearn_synthetic_data( function_name=source, input_kwargs=generation_kwargs, diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 894d711d..b386578e 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -116,34 +116,36 @@ def split_and_transform_data(bench_case, data, data_description): ) if distributed_split == "sample_shift": - comm = MPI.COMM_WORLD - rank = comm.Get_rank() - size = comm.Get_size() + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + size = comm.Get_size() - n_train = len(x_train) - n_test = len(x_test) + n_train = len(x_train) + n_test = len(x_test) - train_start = 0 - train_end = n_train - test_start = 0 - test_end = n_test + train_start = 0 + train_end = n_train + test_start = 0 + test_end = n_test - adjust_number = (math.sqrt(rank) * 0.003) + 1 + adjust_number = (math.sqrt(rank) * 0.003) + 1 - if "y" in data: + if "y" in data: x_train, y_train = ( - x_train[train_start:train_end] * adjust_number, + x_train[train_start:train_end] * adjust_number, y_train[train_start:train_end], ) - - x_test, y_test = x_test[test_start:test_end] * adjust_number, y_test[test_start:test_end] - else: + + x_test, y_test = ( + x_test[test_start:test_end] * adjust_number, + y_test[test_start:test_end], + ) + else: x_train = x_train[train_start:train_end] - + x_test = x_test[test_start:test_end] * adjust_number elif distributed_split == "rank_based" or knn_split_train: - comm = MPI.COMM_WORLD rank = comm.Get_rank() @@ -156,7 +158,7 @@ def split_and_transform_data(bench_case, data, data_description): train_end = (1 + rank) * n_train // size test_start = rank * n_test // size test_end = (1 + rank) * n_test // size - x_train_rank = x_train[train_start:train_end] + x_train_rank = x_train[train_start:train_end] if "y" in data: x_train, y_train = ( diff --git a/sklbench/utils/common.py b/sklbench/utils/common.py index 06486428..995f4b5e 100755 --- a/sklbench/utils/common.py +++ b/sklbench/utils/common.py @@ -120,7 +120,7 @@ def flatten_list(input_list: List, ensure_type_homogeneity: bool = False) -> Lis def get_module_members( - module_names_chain: Union[List, str] + module_names_chain: Union[List, str], ) -> Tuple[ModuleContentMap, ModuleContentMap]: def get_module_name(module_names_chain: List[str]) -> str: name = module_names_chain[0] From af48e968488fbfa2c4b664e7fd0ec973ce90bd4e Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Tue, 18 Mar 2025 16:48:09 -0700 Subject: [PATCH 12/34] Added the math import. --- sklbench/datasets/transformer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index b386578e..57999775 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -16,6 +16,7 @@ import os +import math import numpy as np import pandas as pd from mpi4py import MPI From c7f38f4b5b43a6dcc8920ba2d9f7e1f89e3847eb Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 16:25:28 -0700 Subject: [PATCH 13/34] Rolled back the accidental changes to the ranked_based distributed_split. --- sklbench/datasets/transformer.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 57999775..46342b3b 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -146,8 +146,7 @@ def split_and_transform_data(bench_case, data, data_description): x_test = x_test[test_start:test_end] * adjust_number - elif distributed_split == "rank_based" or knn_split_train: - + if distributed_split == "rank_based" or knn_split_train: comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() @@ -159,7 +158,6 @@ def split_and_transform_data(bench_case, data, data_description): train_end = (1 + rank) * n_train // size test_start = rank * n_test // size test_end = (1 + rank) * n_test // size - x_train_rank = x_train[train_start:train_end] if "y" in data: x_train, y_train = ( @@ -171,7 +169,8 @@ def split_and_transform_data(bench_case, data, data_description): else: x_train = x_train[train_start:train_end] if distributed_split == "rank_based": - x_test = x_test[test_start:test_end] * adjust_number + x_test = x_test[test_start:test_end] + device = get_bench_case_value(bench_case, "algorithm:device", None) common_data_format = get_bench_case_value(bench_case, "data:format", "pandas") From 264701eae57156971a6b1a6e4c77c6e41f6dffe3 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 16:32:23 -0700 Subject: [PATCH 14/34] Updated large scale 2k parameters for the full 24576 tiles. --- configs/spmd/large_scale/large_scale.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/spmd/large_scale/large_scale.json b/configs/spmd/large_scale/large_scale.json index a1ae8a62..28626dc9 100644 --- a/configs/spmd/large_scale/large_scale.json +++ b/configs/spmd/large_scale/large_scale.json @@ -33,7 +33,7 @@ "distributed_split": "sample_shift" }, "bench": { - "mpi_params": {"n": [1,2,6,12], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } + "mpi_params": {"n": [1,2,6,12,24,48,96,192,384,768,1536,3072,6144,12288,24576], "ppn": 12, "-hostfile": "", "-cpu-bind=list:0-7,104-111:8-15,112-119:16-23,120-127:24-31,128-135:32-39,136-143:40-47,144-151:52-59,156-163:60-67,164-171:68-75,172-179:76-83,180-187:84-91,188-195:92-99,196-203": "--envall gpu_tile_compact.sh" } } }, "large scale 32 parameters": { From 20419a954e02557f791df9051e6986c4784b8df8 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 16:40:55 -0700 Subject: [PATCH 15/34] Updated config files. --- configs/spmd/large_scale/kmeans.json | 30 ------------------- .../spmd/large_scale/kmeans_narrow_weak.json | 2 +- configs/spmd/large_scale/kmeans_strong.json | 2 +- .../spmd/large_scale/kmeans_wide_weak.json | 2 +- 4 files changed, 3 insertions(+), 33 deletions(-) delete mode 100644 configs/spmd/large_scale/kmeans.json diff --git a/configs/spmd/large_scale/kmeans.json b/configs/spmd/large_scale/kmeans.json deleted file mode 100644 index 1140823d..00000000 --- a/configs/spmd/large_scale/kmeans.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "INCLUDE": ["../../common/sklearn.json", "large_scale.json"], - "PARAMETERS_SETS": { - "spmd kmeans parameters": { - "algorithm": { - "estimator": "KMeans", - "estimator_params": { - "algorithm": "lloyd" - }, - "estimator_methods": { "training": "fit", "inference": "predict" } - } - }, - "synthetic data": { - "data": [ - { "source": "make_blobs", "generation_kwargs": { "n_samples": 5000000, "n_features": 10, "centers": 10 }, "algorithm": { "n_clusters": 10, "max_iter": 10 } }, - { "source": "make_blobs", "generation_kwargs": { "n_samples": 30000, "n_features": 1000, "centers": 10 }, "algorithm": { "n_clusters": 10, "max_iter": 10 } } - ] - } - }, - "TEMPLATES": { - "kmeans": { - "SETS": [ - "synthetic data", - "sklearnex spmd implementation", - "large scale 2k parameters", - "spmd kmeans parameters" - ] - } - } -} diff --git a/configs/spmd/large_scale/kmeans_narrow_weak.json b/configs/spmd/large_scale/kmeans_narrow_weak.json index d6b73029..523aba01 100644 --- a/configs/spmd/large_scale/kmeans_narrow_weak.json +++ b/configs/spmd/large_scale/kmeans_narrow_weak.json @@ -1,5 +1,5 @@ { - "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "INCLUDE": ["../../common/sklearn.json", "large_scale.json"], "PARAMETERS_SETS": { "spmd kmeans parameters": { "algorithm": { diff --git a/configs/spmd/large_scale/kmeans_strong.json b/configs/spmd/large_scale/kmeans_strong.json index f61172c9..90a1ea3f 100644 --- a/configs/spmd/large_scale/kmeans_strong.json +++ b/configs/spmd/large_scale/kmeans_strong.json @@ -1,5 +1,5 @@ { - "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "INCLUDE": ["../../common/sklearn.json", "large_scale.json"], "PARAMETERS_SETS": { "spmd kmeans parameters": { "algorithm": { diff --git a/configs/spmd/large_scale/kmeans_wide_weak.json b/configs/spmd/large_scale/kmeans_wide_weak.json index d5fe545a..1c588d60 100644 --- a/configs/spmd/large_scale/kmeans_wide_weak.json +++ b/configs/spmd/large_scale/kmeans_wide_weak.json @@ -1,5 +1,5 @@ { - "INCLUDE": ["../../common/sklearn.json", "../large_scale/large_scale.json"], + "INCLUDE": ["../../common/sklearn.json", "large_scale.json"], "PARAMETERS_SETS": { "spmd kmeans parameters": { "algorithm": { From 4e93858b24fa1b95e80947b7d6cf82e4230e6165 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 16:46:55 -0700 Subject: [PATCH 16/34] cleaned up diff. --- sklbench/utils/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklbench/utils/common.py b/sklbench/utils/common.py index 995f4b5e..06486428 100755 --- a/sklbench/utils/common.py +++ b/sklbench/utils/common.py @@ -120,7 +120,7 @@ def flatten_list(input_list: List, ensure_type_homogeneity: bool = False) -> Lis def get_module_members( - module_names_chain: Union[List, str], + module_names_chain: Union[List, str] ) -> Tuple[ModuleContentMap, ModuleContentMap]: def get_module_name(module_names_chain: List[str]) -> str: name = module_names_chain[0] From 428f3df094feacd79eb4703e25e325fc55d232eb Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 17:23:13 -0700 Subject: [PATCH 17/34] Reformatted correctly. --- sklbench/datasets/transformer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 46342b3b..9e00d05d 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -171,7 +171,6 @@ def split_and_transform_data(bench_case, data, data_description): if distributed_split == "rank_based": x_test = x_test[test_start:test_end] - device = get_bench_case_value(bench_case, "algorithm:device", None) common_data_format = get_bench_case_value(bench_case, "data:format", "pandas") common_data_order = get_bench_case_value(bench_case, "data:order", "F") From 2f8c68b89dd397390accbaf633c4978d38559531 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Thu, 20 Mar 2025 17:28:29 -0700 Subject: [PATCH 18/34] Fixed if else. --- sklbench/datasets/transformer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 9e00d05d..fa5badd9 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -146,7 +146,7 @@ def split_and_transform_data(bench_case, data, data_description): x_test = x_test[test_start:test_end] * adjust_number - if distributed_split == "rank_based" or knn_split_train: + elif distributed_split == "rank_based" or knn_split_train: comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() From 816c6dcf5111ffe58923499c823fc39f8a2c1bca Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 09:42:19 -0700 Subject: [PATCH 19/34] Updated format. --- sklbench/datasets/transformer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index fa5badd9..63a636c3 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -14,9 +14,9 @@ # limitations under the License. # =============================================================================== +import math import os -import math import numpy as np import pandas as pd from mpi4py import MPI From 5d3bf52927709502a30712ad6020678adb3f8225 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 10:07:02 -0700 Subject: [PATCH 20/34] Added mpi4py --- envs/conda-env-rapids.yml | 1 + envs/conda-env-sklearn.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/envs/conda-env-rapids.yml b/envs/conda-env-rapids.yml index d72aa2d8..9eaa9206 100644 --- a/envs/conda-env-rapids.yml +++ b/envs/conda-env-rapids.yml @@ -19,3 +19,4 @@ dependencies: - psutil - requests - py-cpuinfo + - mpi4py \ No newline at end of file diff --git a/envs/conda-env-sklearn.yml b/envs/conda-env-sklearn.yml index bbc34463..afa7641f 100644 --- a/envs/conda-env-sklearn.yml +++ b/envs/conda-env-sklearn.yml @@ -21,3 +21,4 @@ dependencies: - psutil - requests - py-cpuinfo + - mpi4py From a937963e214bc79092cbf18b2a750959ca948e01 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 10:44:55 -0700 Subject: [PATCH 21/34] fixed mpi4py --- envs/conda-env-rapids.yml | 2 +- envs/conda-env-sklearn.yml | 2 +- sklbench/datasets/transformer.py | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/envs/conda-env-rapids.yml b/envs/conda-env-rapids.yml index 9eaa9206..b43c0958 100644 --- a/envs/conda-env-rapids.yml +++ b/envs/conda-env-rapids.yml @@ -19,4 +19,4 @@ dependencies: - psutil - requests - py-cpuinfo - - mpi4py \ No newline at end of file + \ No newline at end of file diff --git a/envs/conda-env-sklearn.yml b/envs/conda-env-sklearn.yml index afa7641f..070be2cc 100644 --- a/envs/conda-env-sklearn.yml +++ b/envs/conda-env-sklearn.yml @@ -21,4 +21,4 @@ dependencies: - psutil - requests - py-cpuinfo - - mpi4py + diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 63a636c3..cd00d724 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -19,7 +19,6 @@ import numpy as np import pandas as pd -from mpi4py import MPI from scipy.sparse import csr_matrix from sklearn.model_selection import train_test_split @@ -117,6 +116,8 @@ def split_and_transform_data(bench_case, data, data_description): ) if distributed_split == "sample_shift": + from mpi4py import MPI + comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() @@ -147,6 +148,8 @@ def split_and_transform_data(bench_case, data, data_description): x_test = x_test[test_start:test_end] * adjust_number elif distributed_split == "rank_based" or knn_split_train: + from mpi4py import MPI + comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() From 3809d1760aaa77acc43299460e38f57eea70e0bb Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 10:47:33 -0700 Subject: [PATCH 22/34] Rolled back mpi4py. --- envs/conda-env-rapids.yml | 1 - envs/conda-env-sklearn.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/envs/conda-env-rapids.yml b/envs/conda-env-rapids.yml index b43c0958..d72aa2d8 100644 --- a/envs/conda-env-rapids.yml +++ b/envs/conda-env-rapids.yml @@ -19,4 +19,3 @@ dependencies: - psutil - requests - py-cpuinfo - \ No newline at end of file diff --git a/envs/conda-env-sklearn.yml b/envs/conda-env-sklearn.yml index 070be2cc..bbc34463 100644 --- a/envs/conda-env-sklearn.yml +++ b/envs/conda-env-sklearn.yml @@ -21,4 +21,3 @@ dependencies: - psutil - requests - py-cpuinfo - From c12874832788ad3ae874ac9b9b38e6f26044abe3 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 12:53:41 -0700 Subject: [PATCH 23/34] Formatted file. --- sklbench/datasets/transformer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index cd00d724..ea5646ca 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -149,7 +149,7 @@ def split_and_transform_data(bench_case, data, data_description): elif distributed_split == "rank_based" or knn_split_train: from mpi4py import MPI - + comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() From 15db7929f76696956a4fe0529e8addef35f95f74 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 14:56:49 -0700 Subject: [PATCH 24/34] Removed environment from diff. --- sklbench/report/implementation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklbench/report/implementation.py b/sklbench/report/implementation.py index 2bc3a05e..cddb45f3 100644 --- a/sklbench/report/implementation.py +++ b/sklbench/report/implementation.py @@ -100,7 +100,8 @@ "batch_size", ] -DIFFBY_COLUMNS = ["environment_name", "library", "format", "device"] +#DIFFBY_COLUMNS = ["environment_name", "library", "format", "device"] +DIFFBY_COLUMNS = ["library", "format", "device"] def geomean_wrapper(a): From f0fccdd263725f143ba827e30597e84d78c1352c Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:02:15 -0700 Subject: [PATCH 25/34] Revert "Removed environment from diff." This reverts commit 15db7929f76696956a4fe0529e8addef35f95f74. --- sklbench/report/implementation.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sklbench/report/implementation.py b/sklbench/report/implementation.py index cddb45f3..2bc3a05e 100644 --- a/sklbench/report/implementation.py +++ b/sklbench/report/implementation.py @@ -100,8 +100,7 @@ "batch_size", ] -#DIFFBY_COLUMNS = ["environment_name", "library", "format", "device"] -DIFFBY_COLUMNS = ["library", "format", "device"] +DIFFBY_COLUMNS = ["environment_name", "library", "format", "device"] def geomean_wrapper(a): From 4d675ecdfbb117750fc79ebaeb66a7feaa2444d5 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:29:50 -0700 Subject: [PATCH 26/34] Removed extra code for sample_shift. --- sklbench/datasets/transformer.py | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 44476871..34b438af 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -117,34 +117,21 @@ def split_and_transform_data(bench_case, data, data_description): if distributed_split == "sample_shift": from mpi4py import MPI - comm = MPI.COMM_WORLD - rank = comm.Get_rank() - size = comm.Get_size() - - n_train = len(x_train) - n_test = len(x_test) - - train_start = 0 - train_end = n_train - test_start = 0 - test_end = n_test - + rank = MPI.COMM_WORLD.Get_rank() adjust_number = (math.sqrt(rank) * 0.003) + 1 if "y" in data: x_train, y_train = ( - x_train[train_start:train_end] * adjust_number, - y_train[train_start:train_end], + x_train * adjust_number, + y_train, ) x_test, y_test = ( - x_test[test_start:test_end] * adjust_number, - y_test[test_start:test_end], + x_test * adjust_number, + y_test, ) else: - x_train = x_train[train_start:train_end] - - x_test = x_test[test_start:test_end] * adjust_number + x_test = x_test * adjust_number elif distributed_split == "rank_based": from mpi4py import MPI From e8fbd0b3784b957d4c8555228063f544b381a5b5 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:39:33 -0700 Subject: [PATCH 27/34] Changes for sample_shift. --- configs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/README.md b/configs/README.md index 8d3c5ac2..b1219124 100644 --- a/configs/README.md +++ b/configs/README.md @@ -105,6 +105,7 @@ Configs have the three highest parameter keys: | `data`:`order` | `F` | `C`, `F` | Data order to use in benchmark: contiguous(C) or Fortran. | | `data`:`dtype` | `float64` | | Data type to use in benchmark. | | `data`:`distributed_split` | None | None, `rank_based` | Split type used to distribute data between machines in distributed algorithm. `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | +| `data`: `sample_shift` | None | None, `rank_based` | Determines how data points are shifted based on MPI rank. `None` type means use all data without any shift across all machines. `sample_shift`: Shift each data point in a rank by \((\sqrt{\text{rank id}} \times 0.003) + 1\). | |

Algorithm parameters

|||| | `algorithm`:`library` | None | | Python module containing measured entity (class or function). | | `algorithm`:`device` | `default` | `default`, `cpu`, `gpu` | Device selected for computation. | From a7cea17bed5f6ad721a98b7d15ae6d64bb35c75f Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:44:53 -0700 Subject: [PATCH 28/34] Updated sample shift. --- configs/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/configs/README.md b/configs/README.md index b1219124..91b45b81 100644 --- a/configs/README.md +++ b/configs/README.md @@ -104,8 +104,7 @@ Configs have the three highest parameter keys: | `data`:`format` | `pandas` | `pandas`, `numpy`, `cudf` | Data format to use in benchmark. | | `data`:`order` | `F` | `C`, `F` | Data order to use in benchmark: contiguous(C) or Fortran. | | `data`:`dtype` | `float64` | | Data type to use in benchmark. | -| `data`:`distributed_split` | None | None, `rank_based` | Split type used to distribute data between machines in distributed algorithm. `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | -| `data`: `sample_shift` | None | None, `rank_based` | Determines how data points are shifted based on MPI rank. `None` type means use all data without any shift across all machines. `sample_shift`: Shift each data point in a rank by \((\sqrt{\text{rank id}} \times 0.003) + 1\). | +| `data`:`distributed_split` | None | None, `rank_based`, `sample_shift` | `rank_based` Split type used to distribute data between machines in distributed algorithm. `sample_shift`: Shift each data point in a rank by \((\sqrt{\text{rank id}} \times 0.003) + 1\). `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | |

Algorithm parameters

|||| | `algorithm`:`library` | None | | Python module containing measured entity (class or function). | | `algorithm`:`device` | `default` | `default`, `cpu`, `gpu` | Device selected for computation. | From f3c2757e87dd10a723ff8a241b6cdd78d16a3bd7 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:47:14 -0700 Subject: [PATCH 29/34] Updated sample shift. --- configs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/README.md b/configs/README.md index 91b45b81..3d16a6ce 100644 --- a/configs/README.md +++ b/configs/README.md @@ -104,7 +104,7 @@ Configs have the three highest parameter keys: | `data`:`format` | `pandas` | `pandas`, `numpy`, `cudf` | Data format to use in benchmark. | | `data`:`order` | `F` | `C`, `F` | Data order to use in benchmark: contiguous(C) or Fortran. | | `data`:`dtype` | `float64` | | Data type to use in benchmark. | -| `data`:`distributed_split` | None | None, `rank_based`, `sample_shift` | `rank_based` Split type used to distribute data between machines in distributed algorithm. `sample_shift`: Shift each data point in a rank by \((\sqrt{\text{rank id}} \times 0.003) + 1\). `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | +| `data`:`distributed_split` | None | None, `rank_based`, `sample_shift` | `rank_based` Split type used to distribute data between machines in distributed algorithm. `sample_shift`: Shift each data point in each rank by sqrt (rank id) * 0.003) + 1. `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | |

Algorithm parameters

|||| | `algorithm`:`library` | None | | Python module containing measured entity (class or function). | | `algorithm`:`device` | `default` | `default`, `cpu`, `gpu` | Device selected for computation. | From 2ae3c394547490c0c6782af591d6eec7ee7e8838 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 15:52:40 -0700 Subject: [PATCH 30/34] Removed extra code. --- sklbench/datasets/transformer.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 34b438af..79a6d7a0 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -119,19 +119,7 @@ def split_and_transform_data(bench_case, data, data_description): rank = MPI.COMM_WORLD.Get_rank() adjust_number = (math.sqrt(rank) * 0.003) + 1 - - if "y" in data: - x_train, y_train = ( - x_train * adjust_number, - y_train, - ) - - x_test, y_test = ( - x_test * adjust_number, - y_test, - ) - else: - x_test = x_test * adjust_number + x_test = x_test * adjust_number elif distributed_split == "rank_based": from mpi4py import MPI From 39cc4f2de559d7f1b96b01f4f58931e0b3ef58a9 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 16:07:06 -0700 Subject: [PATCH 31/34] Added comment for sample_shift. --- sklbench/datasets/transformer.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 79a6d7a0..81bdf5fb 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -118,6 +118,10 @@ def split_and_transform_data(bench_case, data, data_description): from mpi4py import MPI rank = MPI.COMM_WORLD.Get_rank() + # This approach was chosen to shift the distribution of synthetic data on each rank + # for KMeans weak scaling tests. When testing with a large number of tiles, this method avoids duplication of data on each rank. + # For example, if there are 24,576 tiles being used, each data point in the 24,576th tile would be multiplied by 1.47. + # The factor 0.003 was chosen arbitrarily and can be fine-tuned for other datasets and algorithms if needed. adjust_number = (math.sqrt(rank) * 0.003) + 1 x_test = x_test * adjust_number From 3fc7c42dfc1ea52bb19bffb944bd675a8b1dd093 Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 16:14:18 -0700 Subject: [PATCH 32/34] Added back in x_train in sample_shift. --- sklbench/datasets/transformer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sklbench/datasets/transformer.py b/sklbench/datasets/transformer.py index 81bdf5fb..c63d3b20 100644 --- a/sklbench/datasets/transformer.py +++ b/sklbench/datasets/transformer.py @@ -124,6 +124,7 @@ def split_and_transform_data(bench_case, data, data_description): # The factor 0.003 was chosen arbitrarily and can be fine-tuned for other datasets and algorithms if needed. adjust_number = (math.sqrt(rank) * 0.003) + 1 x_test = x_test * adjust_number + x_train = x_train * adjust_number elif distributed_split == "rank_based": from mpi4py import MPI From 1bd5aa150735d97efeb8776355f1dccbd71fdf3c Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 16:17:59 -0700 Subject: [PATCH 33/34] Updated description of sample_shift. --- configs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/README.md b/configs/README.md index 3d16a6ce..e1cf8390 100644 --- a/configs/README.md +++ b/configs/README.md @@ -104,7 +104,7 @@ Configs have the three highest parameter keys: | `data`:`format` | `pandas` | `pandas`, `numpy`, `cudf` | Data format to use in benchmark. | | `data`:`order` | `F` | `C`, `F` | Data order to use in benchmark: contiguous(C) or Fortran. | | `data`:`dtype` | `float64` | | Data type to use in benchmark. | -| `data`:`distributed_split` | None | None, `rank_based`, `sample_shift` | `rank_based` Split type used to distribute data between machines in distributed algorithm. `sample_shift`: Shift each data point in each rank by sqrt (rank id) * 0.003) + 1. `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | +| `data`:`distributed_split` | None | None, `rank_based`, `sample_shift` | Split type used to distribute data between machines in distributed algorithm. `sample_shift`: Shift each data point in each rank by sqrt (rank id) * 0.003) + 1. `None` type means usage of all data without split on all machines. `rank_based` type splits the data equally between machines with split sequence based on rank id from MPI. | |

Algorithm parameters

|||| | `algorithm`:`library` | None | | Python module containing measured entity (class or function). | | `algorithm`:`device` | `default` | `default`, `cpu`, `gpu` | Device selected for computation. | From 06944c172997de5e5e1659cc973637bea8d8704b Mon Sep 17 00:00:00 2001 From: "Mcgrievy, Kathleen" Date: Fri, 21 Mar 2025 16:20:52 -0700 Subject: [PATCH 34/34] Added predict back in. --- configs/spmd/large_scale/kmeans_narrow_weak.json | 2 +- configs/spmd/large_scale/kmeans_wide_weak.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/spmd/large_scale/kmeans_narrow_weak.json b/configs/spmd/large_scale/kmeans_narrow_weak.json index 523aba01..69f0b6ac 100644 --- a/configs/spmd/large_scale/kmeans_narrow_weak.json +++ b/configs/spmd/large_scale/kmeans_narrow_weak.json @@ -10,7 +10,7 @@ "n_clusters": 10, "random_state": 42 }, - "estimator_methods": { "training": "fit", "inference": "" }, + "estimator_methods": { "training": "fit", "inference": "predict" }, "sklearnex_context": { "use_raw_input": true } } }, diff --git a/configs/spmd/large_scale/kmeans_wide_weak.json b/configs/spmd/large_scale/kmeans_wide_weak.json index 1c588d60..5520f10a 100644 --- a/configs/spmd/large_scale/kmeans_wide_weak.json +++ b/configs/spmd/large_scale/kmeans_wide_weak.json @@ -10,7 +10,7 @@ "n_clusters": 10, "random_state": 42 }, - "estimator_methods": { "training": "fit", "inference": "" }, + "estimator_methods": { "training": "fit", "inference": "predict" }, "sklearnex_context": { "use_raw_input": true } } },