From fb0c5d5a12db10a59c492311a6bab6a33c40dc68 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 14:46:46 -0700 Subject: [PATCH 01/10] Add blog benchmarks --- .../Spark-DL/dl_inference/benchmark/README.md | 45 +++++ .../benchmark/bench_spark_resnet.sh | 20 ++ .../benchmark/bench_spark_resnet_triton.sh | 19 ++ .../dl_inference/benchmark/gpu_monitor.py | 55 ++++++ .../dl_inference/benchmark/prepare_dataset.py | 75 ++++++++ .../dl_inference/benchmark/spark_resnet.py | 113 +++++++++++ .../benchmark/spark_resnet_triton.py | 175 ++++++++++++++++++ .../images/benchmark_comparison.png | Bin 0 -> 105288 bytes .../images/benchmark_pipeline.png | Bin 0 -> 39913 bytes .../dl_inference/images/benchmark_results.png | Bin 0 -> 82924 bytes 10 files changed, 502 insertions(+) create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md create mode 100755 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_comparison.png create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_pipeline.png create mode 100644 examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_results.png diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md new file mode 100644 index 00000000..4531bdce --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md @@ -0,0 +1,45 @@ +# Batch Inference Benchmark + +This folder contains the benchmark code to compare: +1. [`spark_resnet.py`](spark_resnet.py): Uses predict_batch_udf to perform in-process prediction on the GPU. +2. [`spark_resnet_triton.py`](spark_resnet_triton.py): Uses predict_batch_udf to send inference requests to Triton, which performs inference on the GPU. + +The key difference is Spark cannot change the task parallelism within a stage based on the resources required. Therefore, implementation (1) will limit to 1 task per GPU to enable one instance of the model on the GPU, whereas implementation (2) allows as many tasks to run in parallel as cores on the executor, while Triton occupies the GPU for inference. + +drawing + +### Setup + +The worload consist of the following 4-step pipeline: +1. Read binary JPEG image data from parquet +2. Preprocess on CPU (decompress, resize, crop, normalize) +3. Inference on GPU +4. Write results to parquet + +drawing + +We used the [ImageNet 2012](https://image-net.org/challenges/LSVRC/2012/2012-downloads.php#Images) validation dataset and a pre-trained ResNet-50 model for classification. The script we used to prepare the data into a binary parquet format to read with Spark can be found in [`prepare_dataset.py`](prepare_dataset.py). + +### Environment + +We used the `spark-dl-torch` conda environment, setup following the [README](./README.md). + +We tested on a local standalone cluster with 1 executor: 1 A6000 GPU, 16 cores, and 32GB of memory. The cluster can be started like so: +```shell +conda activate spark-dl-torch +export SPARK_HOME= +export MASTER=spark://$(hostname):7077 +export SPARK_WORKER_INSTANCES=1 +export CORES_PER_WORKER=16 +export SPARK_WORKER_OPTS="-Dspark.worker.resource.gpu.amount=1 \ + -Dspark.worker.resource.gpu.discoveryScript=$SPARK_HOME/examples/src/main/scripts/getGpusResources.sh" +${SPARK_HOME}/sbin/start-master.sh; ${SPARK_HOME}/sbin/start-worker.sh -c ${CORES_PER_WORKER} -m 32G ${MASTER} +``` + +The Spark configurations we used for the two implementations can be found under [`bench_spark_resnet.sh`](bench_spark_resnet.sh) and [`bench_spark_resnet_triton.sh`](bench_spark_resnet_triton.sh) respectively. The only differences are in the task parallelism, i.e. `spark.task.resource.gpu.amount` and `spark.task.cpus`. + +### Results + +End-to-end throughput of the two implementations (higher is better): + +drawing \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh new file mode 100755 index 00000000..cbe75338 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh @@ -0,0 +1,20 @@ +#! /bin/bash + +spark-submit \ + --master spark://$(hostname):7077 \ + --num-executors 1 \ + --executor-cores 16 \ + --executor-memory 32g \ + --conf spark.executor.resource.gpu.amount=1 \ + --conf spark.task.resource.gpu.amount=1 \ + --conf spark.task.cpus=16 \ + --conf spark.task.maxFailures=1 \ + --conf spark.sql.execution.arrow.pyspark.enabled=true \ + --conf spark.python.worker.reuse=true \ + --conf spark.pyspark.python=${CONDA_PREFIX}/bin/python \ + --conf spark.pyspark.driver.python=${CONDA_PREFIX}/bin/python \ + --conf spark.locality.wait=0s \ + --conf spark.sql.adaptive.enabled=false \ + --conf spark.sql.execution.sortBeforeRepartition=false \ + --conf spark.sql.files.minPartitionNum=16 \ + bench_spark_resnet.py \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh new file mode 100644 index 00000000..ce03f429 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh @@ -0,0 +1,19 @@ +#! /bin/bash + +spark-submit \ + --master spark://$(hostname):7077 \ + --num-executors 1 \ + --executor-cores 16 \ + --executor-memory 32g \ + --conf spark.executor.resource.gpu.amount=1 \ + --conf spark.task.resource.gpu.amount=0.0625 \ + --conf spark.task.maxFailures=1 \ + --conf spark.sql.execution.arrow.pyspark.enabled=true \ + --conf spark.python.worker.reuse=true \ + --conf spark.pyspark.python=${CONDA_PREFIX}/bin/python \ + --conf spark.pyspark.driver.python=${CONDA_PREFIX}/bin/python \ + --conf spark.locality.wait=0s \ + --conf spark.sql.adaptive.enabled=false \ + --conf spark.sql.execution.sortBeforeRepartition=false \ + --conf spark.sql.files.minPartitionNum=16 \ + bench_spark_resnet_triton.py \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py new file mode 100644 index 00000000..69b98e46 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py @@ -0,0 +1,55 @@ +import numpy as np +import subprocess +from datetime import datetime + +class GPUMonitor: + def __init__(self, gpu_ids=[0], interval=1): + self.gpu_ids = gpu_ids + self.interval = interval + self.log_file = f"results/gpu_metrics_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" + self.process = None + + def start(self): + with open(self.log_file, 'w') as f: + f.write("timestamp,gpu_id,utilization\n") + + cmd = f""" + while true; do + nvidia-smi --query-gpu=timestamp,index,utilization.gpu \ + --format=csv,noheader,nounits \ + -i {','.join(map(str, self.gpu_ids))} >> {self.log_file} + sleep {self.interval} + done + """ + + self.process = subprocess.Popen(cmd, shell=True) + print(f"Started GPU monitoring, logging to {self.log_file}") + + def stop(self): + if self.process: + self.process.terminate() + self.process.wait() + print("Stopped GPU monitoring") + + try: + with open(self.log_file, 'r') as f: + next(f) + + gpu_utils = {} + for line in f: + _, gpu_id, util = line.strip().split(',') + if gpu_id not in gpu_utils: + gpu_utils[gpu_id] = [] + gpu_utils[gpu_id].append(float(util)) + + print("\nGPU Utilization Summary:") + for gpu_id, utils in gpu_utils.items(): + avg_util = sum(utils) / len(utils) + max_util = max(utils) + median_util = np.median(utils) + print(f"GPU {gpu_id}:") + print(f" Average: {avg_util:.1f}%") + print(f" Median: {median_util:.1f}%") + print(f" Maximum: {max_util:.1f}%") + except Exception as e: + print(f"Error generating summary: {e}") \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py new file mode 100644 index 00000000..aa5322c0 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py @@ -0,0 +1,75 @@ +import os +import tarfile +import pandas as pd +from pyspark.sql import SparkSession + +def prepare_imagenet_parquet(size='50k', data_dir="spark-dl-datasets/imagenet-val"): + """Prepare ImageNet validation set as parquet file with raw bytes.""" + + size_map = { + '1k': 1000, + '5k': 5000, + '10k': 10000, + '50k': 50000 + } + num_images = size_map.get(size, 50000) + + valdata_path = os.path.join(data_dir, 'ILSVRC2012_img_val.tar') + if not os.path.exists(valdata_path): + raise RuntimeError( + "ImageNet validation data not found. Please download:\n" + "ILSVRC2012_img_val.tar\n" + f"And place it in {data_dir}" + ) + + images = [] + count = 0 + + # Write raw compressed JPEG bytes to parquet + with tarfile.open(valdata_path, 'r:') as tar: + members = tar.getmembers() + for _, member in enumerate(members): + if count >= num_images: + break + + if member.isfile() and member.name.endswith(('.JPEG', '.jpg', '.jpeg')): + f = tar.extractfile(member) + if f is not None: + raw_bytes = f.read() + images.append(raw_bytes) + count += 1 + + if count % 100 == 0: + print(f"Processed {count} images") + + pdf = pd.DataFrame({ + 'value': images + }) + return pdf + +def main(): + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument('--size', type=str, default='50k', help='Dataset size (e.g., 1k, 5k, 10k, 50k)') + args = parser.parse_args() + + pdf = prepare_imagenet_parquet(size=args.size) + if not os.path.exists("spark-dl-datasets"): + os.makedirs("spark-dl-datasets") + + pdf.to_parquet(f"spark-dl-datasets/imagenet_{args.size}.parquet") + + # Repartition and write to parquet + spark = SparkSession.builder.appName("prepare-imagenet-parquet").getOrCreate() + + spark.conf.set("spark.sql.execution.arrow.useLargeVarTypes", "true") + spark.conf.set("spark.sql.parquet.columnarReaderBatchSize", "1024") + spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "1024") + + df = spark.read.parquet(f"spark-dl-datasets/imagenet_{args.size}.parquet") + df = df.repartition(16) + df.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_{args.size}.parquet") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py new file mode 100644 index 00000000..ac89ec7c --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py @@ -0,0 +1,113 @@ +import os +import pandas as pd +import numpy as np +import time +from typing import Iterator +from pyspark.sql.types import ArrayType, FloatType +from pyspark import TaskContext +from pyspark.sql import SparkSession +from pyspark.sql.functions import pandas_udf, col +from pyspark.ml.functions import predict_batch_udf +from gpu_monitor import GPUMonitor + +def predict_batch_fn(): + """Classify batch of images""" + import torch + import torchvision.models as models + + start_load = time.perf_counter() + model = models.resnet50(pretrained=True).to("cuda") + model.eval() + end_load = time.perf_counter() + print(f"Model loaded in {end_load - start_load:.4f} seconds") + + def predict(inputs): + print(f"PARTITION {TaskContext.get().partitionId()}: Inferring batch of size {len(inputs)}") + batch_tensor = torch.from_numpy(inputs).to("cuda") + + with torch.no_grad(): + outputs = model(batch_tensor) + + _, predicted_ids = torch.max(outputs, 1) + probabilities = torch.nn.functional.softmax(outputs, dim=1) + confidences = torch.max(probabilities, dim=1)[0] + indices = predicted_ids.cpu().numpy() + scores = confidences.cpu().numpy() + results = np.stack([indices, scores], axis=1).astype(np.float32) + return results + + return predict + +@pandas_udf(ArrayType(FloatType())) +def preprocess(image_iter: Iterator[pd.Series]) -> Iterator[pd.Series]: + """Preprocess images (raw JPEG bytes) into a batch of tensors""" + import io + from PIL import Image + from torchvision import transforms + import torch + from pyspark import TaskContext + + preprocess = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), + ] + ) + + part_id = TaskContext.get().partitionId() + + for image_batch in image_iter: + batch_size = len(image_batch) + print(f"PARTITION {part_id}: number of images: {batch_size}") + + # Pre-allocate tensor for batch + batch_tensor = torch.empty(batch_size, 3, 224, 224, dtype=torch.float32) + + # Decompress and transform images + for idx, raw_bytes in enumerate(image_batch): + img = Image.open(io.BytesIO(raw_bytes)) + if img.mode != 'RGB': + img = img.convert('RGB') + batch_tensor[idx] = preprocess(img) + + numpy_batch = batch_tensor.numpy() + flattened_batch = numpy_batch.reshape(batch_size, -1) + + yield pd.Series(list(flattened_batch)) + +def main(): + spark = SparkSession.builder.appName("bench-spark-resnet").getOrCreate() + + # Avoid OOM for image loading from raw byte arrays + spark.conf.set("spark.sql.execution.arrow.useLargeVarTypes", "true") + spark.conf.set("spark.sql.parquet.columnarReaderBatchSize", "1024") + spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "1024") + + file_path = os.path.abspath("spark-dl-datasets/imagenet_10k.parquet") + classify = predict_batch_udf(predict_batch_fn, + return_type=ArrayType(FloatType()), + input_tensor_shapes=[[3, 224, 224]], + batch_size=1024) + + # Start GPU utilization monitoring + monitor = GPUMonitor() + monitor.start() + + try: + start_read = time.perf_counter() + + df = spark.read.parquet(file_path) + preprocessed_df = df.withColumn("images", preprocess(col("value"))).drop("value") + preds = preprocessed_df.withColumn("preds", classify(col("images"))) + preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_10k_preds.parquet") + + end_write = time.perf_counter() + + print(f"E2E read -> inference -> write time: {end_write - start_read:.4f} seconds") + finally: + monitor.stop() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py new file mode 100644 index 00000000..f33a5d40 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py @@ -0,0 +1,175 @@ +import os +import pandas as pd +import time +from functools import partial +from typing import Iterator +from pyspark.sql.types import ArrayType, FloatType +from pyspark.sql import SparkSession +from pyspark.sql.functions import pandas_udf, col +from pyspark.ml.functions import predict_batch_udf +from gpu_monitor import GPUMonitor +from pytriton_utils import TritonServerManager + +def triton_server(ports): + import time + import signal + import numpy as np + from pytriton.decorators import batch + from pytriton.model_config import DynamicBatcher, ModelConfig, Tensor + from pytriton.triton import Triton, TritonConfig + from pyspark import TaskContext + import torch + import torchvision.models as models + + print(f"SERVER: Initializing model on worker {TaskContext.get().partitionId()}.") + model = models.resnet50(pretrained=True) + model = model.to("cuda") + model.eval() + + @batch + def _infer_fn(**inputs): + images = inputs["images"] + print(f"SERVER {time.time()}: Received batch of size {len(images)}") + batch_tensor = torch.from_numpy(images).to("cuda") + + with torch.no_grad(): + outputs = model(batch_tensor) + + _, predicted_ids = torch.max(outputs, 1) + probabilities = torch.nn.functional.softmax(outputs, dim=1) + confidences = torch.max(probabilities, dim=1)[0] + indices = predicted_ids.cpu().numpy() + scores = confidences.cpu().numpy() + results = np.stack([indices, scores], axis=1).astype(np.float32) + return { + "preds": results, + } + + workspace_path = f"/tmp/triton_{TaskContext.get().partitionId()}_{time.strftime('%m_%d_%M_%S')}" + triton_conf = TritonConfig(http_port=ports[0], grpc_port=ports[1], metrics_port=ports[2]) + with Triton(config=triton_conf, workspace=workspace_path) as triton: + triton.bind( + model_name="resnet50", + infer_func=_infer_fn, + inputs=[ + Tensor(name="images", dtype=np.float32, shape=(3, 224, 224)), + ], + outputs=[ + Tensor(name="preds", dtype=np.float32, shape=(2,)), + ], + config=ModelConfig( + max_batch_size=1024, + batcher=DynamicBatcher(max_queue_delay_microseconds=500000), # 500ms + ), + strict=True, + ) + + def _stop_triton(signum, frame): + print("SERVER: Received SIGTERM. Stopping Triton server.") + triton.stop() + + signal.signal(signal.SIGTERM, _stop_triton) + + print("SERVER: Serving inference") + triton.serve() + +@pandas_udf(ArrayType(FloatType())) +def preprocess(image_iter: Iterator[pd.Series]) -> Iterator[pd.Series]: + """Preprocess images (raw JPEG bytes) into a batch of tensors""" + import torch + from PIL import Image + from torchvision import transforms + import io + from pyspark import TaskContext + + preprocess = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), + ] + ) + + part_id = TaskContext.get().partitionId() + + for image_batch in image_iter: + batch_size = len(image_batch) + print(f"PARTITION {part_id}: number of images: {batch_size}") + + # Pre-allocate tensor for batch + batch_tensor = torch.empty(batch_size, 3, 224, 224, dtype=torch.float32) + + # Decompress and transform images + for idx, raw_bytes in enumerate(image_batch): + img = Image.open(io.BytesIO(raw_bytes)) + if img.mode != 'RGB': + img = img.convert('RGB') + batch_tensor[idx] = preprocess(img) + + numpy_batch = batch_tensor.numpy() + flattened_batch = numpy_batch.reshape(batch_size, -1) + + yield pd.Series(list(flattened_batch)) + +def triton_fn(model_name, host_to_url): + from pytriton.client import ModelClient + import socket + from pyspark import TaskContext + + url = host_to_url.get(socket.gethostname()) + client = ModelClient(url, model_name, inference_timeout_s=500) + part_id = TaskContext.get().partitionId() + print(f"PARTITION {part_id}: Connecting to Triton model {model_name} at {url}.") + + def infer_batch(inputs): + print(f"PARTITION {part_id}: Inferring batch of size {len(inputs)}") + result_data = client.infer_batch(inputs) + result_data = result_data["preds"] + return result_data + + return infer_batch + +def main(): + spark = SparkSession.builder.appName("bench-spark-resnet-triton").getOrCreate() + spark.sparkContext.addPyFile("pytriton_utils.py") + + # Avoid OOM for image loading from raw byte arrays + spark.conf.set("spark.sql.execution.arrow.useLargeVarTypes", "true") + spark.conf.set("spark.sql.parquet.columnarReaderBatchSize", "1024") + spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "1024") + + # Start server + model_name = "resnet50" + num_nodes = 1 + server_manager = TritonServerManager(num_nodes, model_name) + server_manager.start_servers(triton_server, wait_timeout=24) + host_to_grpc_url = server_manager.host_to_grpc_url + + file_path = os.path.abspath("spark-dl-datasets/imagenet_10k.parquet") + classify = predict_batch_udf(partial(triton_fn, model_name=model_name, host_to_url=host_to_grpc_url), + return_type=ArrayType(FloatType()), + input_tensor_shapes=[[3, 224, 224]], + batch_size=256) + + # Start GPU utilization monitoring + monitor = GPUMonitor() + monitor.start() + + try: + start_read = time.perf_counter() + + df = spark.read.parquet(file_path) + preprocessed_df = df.withColumn("images", preprocess(col("value"))).drop("value") + preds = preprocessed_df.withColumn("preds", classify(col("images"))) + preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_10k_preds.parquet") + + end_write = time.perf_counter() + + print(f"E2E read -> inference -> write time: {end_write - start_read:.4f} seconds") + finally: + monitor.stop() + server_manager.stop_servers() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_comparison.png b/examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..8d039cb4fe80dc86b77acd785c9be4cf335f52f7 GIT binary patch literal 105288 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

ZV8mE~*AvCzA{kReQ{?M>CE4dnhr$2hgM7r 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 LJuG@)@%DcKqAz*K literal 0 HcmV?d00001 diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_pipeline.png b/examples/ML+DL-Examples/Spark-DL/dl_inference/images/benchmark_pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..a010c5c5a5433815f01c07fb25f740a6f757eabe GIT binary patch literal 39913 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 m!u-#F_wVX(|Gyt5==^9br_#BSJ>bPbp>j|L literal 0 HcmV?d00001 From 3cc674577aeb564e7298424df0eb96e0b6e89a65 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 14:48:35 -0700 Subject: [PATCH 02/10] Carriage returns --- .../Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh | 3 ++- .../dl_inference/benchmark/bench_spark_resnet_triton.sh | 3 ++- .../Spark-DL/dl_inference/benchmark/prepare_dataset.py | 2 +- .../Spark-DL/dl_inference/benchmark/spark_resnet.py | 3 ++- .../Spark-DL/dl_inference/benchmark/spark_resnet_triton.py | 3 ++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh index cbe75338..a12260c2 100755 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh @@ -17,4 +17,5 @@ spark-submit \ --conf spark.sql.adaptive.enabled=false \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ - bench_spark_resnet.py \ No newline at end of file + bench_spark_resnet.py + \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh index ce03f429..4d64e34c 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh @@ -16,4 +16,5 @@ spark-submit \ --conf spark.sql.adaptive.enabled=false \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ - bench_spark_resnet_triton.py \ No newline at end of file + bench_spark_resnet_triton.py + \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py index aa5322c0..2867ade9 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/prepare_dataset.py @@ -72,4 +72,4 @@ def main(): df.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_{args.size}.parquet") if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py index ac89ec7c..3fdc519b 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py @@ -110,4 +110,5 @@ def main(): monitor.stop() if __name__ == "__main__": - main() \ No newline at end of file + main() + \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py index f33a5d40..9306463e 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py @@ -172,4 +172,5 @@ def main(): server_manager.stop_servers() if __name__ == "__main__": - main() \ No newline at end of file + main() + \ No newline at end of file From 8365bce18c8382407ab3a69287ff47b3fd82ae6a Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 14:50:05 -0700 Subject: [PATCH 03/10] carriage returns p2 --- .../Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh | 1 - .../dl_inference/benchmark/bench_spark_resnet_triton.sh | 1 - .../Spark-DL/dl_inference/benchmark/gpu_monitor.py | 2 +- .../Spark-DL/dl_inference/benchmark/spark_resnet.py | 1 - .../Spark-DL/dl_inference/benchmark/spark_resnet_triton.py | 1 - 5 files changed, 1 insertion(+), 5 deletions(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh index a12260c2..3f4a9751 100755 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh @@ -18,4 +18,3 @@ spark-submit \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ bench_spark_resnet.py - \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh index 4d64e34c..b4f3a2eb 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh @@ -17,4 +17,3 @@ spark-submit \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ bench_spark_resnet_triton.py - \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py index 69b98e46..965354bd 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py @@ -52,4 +52,4 @@ def stop(self): print(f" Median: {median_util:.1f}%") print(f" Maximum: {max_util:.1f}%") except Exception as e: - print(f"Error generating summary: {e}") \ No newline at end of file + print(f"Error generating summary: {e}") diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py index 3fdc519b..4426c20e 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py @@ -111,4 +111,3 @@ def main(): if __name__ == "__main__": main() - \ No newline at end of file diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py index 9306463e..217a401b 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py @@ -173,4 +173,3 @@ def main(): if __name__ == "__main__": main() - \ No newline at end of file From 9f4bdd322c1bd9ff8101177cdee752423cb622c4 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 14:52:07 -0700 Subject: [PATCH 04/10] signoff Signed-off-by: Rishi Chandra From 4887c3dfd40a6e173cc2c2ab3c89e11dfed5df00 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 15:16:22 -0700 Subject: [PATCH 05/10] clarify readme --- .../ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md index 4531bdce..2d7e4ff2 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md @@ -4,7 +4,7 @@ This folder contains the benchmark code to compare: 1. [`spark_resnet.py`](spark_resnet.py): Uses predict_batch_udf to perform in-process prediction on the GPU. 2. [`spark_resnet_triton.py`](spark_resnet_triton.py): Uses predict_batch_udf to send inference requests to Triton, which performs inference on the GPU. -The key difference is Spark cannot change the task parallelism within a stage based on the resources required. Therefore, implementation (1) will limit to 1 task per GPU to enable one instance of the model on the GPU, whereas implementation (2) allows as many tasks to run in parallel as cores on the executor, while Triton occupies the GPU for inference. +Spark cannot change the task parallelism within a stage based on the resources required (i.e., multiple CPUs for preprocessing vs. single GPU for inference). Therefore, implementation (1) will limit to 1 task per GPU to enable one instance of the model on the GPU. In contrast, implementation (2) allows as many tasks to run in parallel as cores on the executor, since Triton handles inference on the GPU. drawing From 2614369677c82999cdcc6e954957bbeaa2b468a2 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Tue, 11 Mar 2025 15:20:03 -0700 Subject: [PATCH 06/10] typos/fixes --- .../Spark-DL/dl_inference/benchmark/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md index 2d7e4ff2..fa5203be 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/README.md @@ -10,7 +10,7 @@ Spark cannot change the task parallelism within a stage based on the resources r ### Setup -The worload consist of the following 4-step pipeline: +The workload consists of the following 4-step pipeline: 1. Read binary JPEG image data from parquet 2. Preprocess on CPU (decompress, resize, crop, normalize) 3. Inference on GPU @@ -18,12 +18,11 @@ The worload consist of the following 4-step pipeline: drawing -We used the [ImageNet 2012](https://image-net.org/challenges/LSVRC/2012/2012-downloads.php#Images) validation dataset and a pre-trained ResNet-50 model for classification. The script we used to prepare the data into a binary parquet format to read with Spark can be found in [`prepare_dataset.py`](prepare_dataset.py). +We used the [ImageNet 2012](https://image-net.org/challenges/LSVRC/2012/2012-downloads.php#Images) validation dataset containing 50,000 images, and a pre-trained [PyTorch ResNet-50](https://pytorch.org/vision/main/models/generated/torchvision.models.resnet50.html) model for classification. We used the [`prepare_dataset.py`](prepare_dataset.py) script to load and prepare the ImageNet data into a binary parquet format to be read with Spark. ### Environment -We used the `spark-dl-torch` conda environment, setup following the [README](./README.md). - +We used the `spark-dl-torch` conda environment, setup following the [README](../README.md#create-environment). We tested on a local standalone cluster with 1 executor: 1 A6000 GPU, 16 cores, and 32GB of memory. The cluster can be started like so: ```shell conda activate spark-dl-torch From 238fa6c268b510c27e81b24813de93139fbfc843 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Wed, 12 Mar 2025 10:00:07 -0700 Subject: [PATCH 07/10] Updated file names --- .../Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh | 2 +- .../dl_inference/benchmark/bench_spark_resnet_triton.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh index 3f4a9751..aa39ca4a 100755 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet.sh @@ -17,4 +17,4 @@ spark-submit \ --conf spark.sql.adaptive.enabled=false \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ - bench_spark_resnet.py + spark_resnet.py diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh index b4f3a2eb..8f3c8e10 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/bench_spark_resnet_triton.sh @@ -16,4 +16,4 @@ spark-submit \ --conf spark.sql.adaptive.enabled=false \ --conf spark.sql.execution.sortBeforeRepartition=false \ --conf spark.sql.files.minPartitionNum=16 \ - bench_spark_resnet_triton.py + spark_resnet_triton.py From 55de26f2c37b496e096c5df1934fce9c41397b5d Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Wed, 12 Mar 2025 10:00:55 -0700 Subject: [PATCH 08/10] Add symlink --- .../Spark-DL/dl_inference/benchmark/pytriton_utils.py | 1 + 1 file changed, 1 insertion(+) create mode 120000 examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/pytriton_utils.py diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/pytriton_utils.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/pytriton_utils.py new file mode 120000 index 00000000..330ea4a5 --- /dev/null +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/pytriton_utils.py @@ -0,0 +1 @@ +../pytriton_utils.py \ No newline at end of file From 1c5352de9733ca6da251ffbec88860bc3c65c63d Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Wed, 12 Mar 2025 10:05:05 -0700 Subject: [PATCH 09/10] Create results dir if not exists --- .../Spark-DL/dl_inference/benchmark/gpu_monitor.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py index 965354bd..e7d6e034 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/gpu_monitor.py @@ -1,7 +1,7 @@ import numpy as np import subprocess from datetime import datetime - +import os class GPUMonitor: def __init__(self, gpu_ids=[0], interval=1): self.gpu_ids = gpu_ids @@ -10,6 +10,8 @@ def __init__(self, gpu_ids=[0], interval=1): self.process = None def start(self): + if not os.path.exists("results"): + os.makedirs("results") with open(self.log_file, 'w') as f: f.write("timestamp,gpu_id,utilization\n") From 27bbdfe505360192aa823364a2749fef5ef3f869 Mon Sep 17 00:00:00 2001 From: Rishi Chandra Date: Wed, 12 Mar 2025 10:08:22 -0700 Subject: [PATCH 10/10] Add dataset size arg --- .../Spark-DL/dl_inference/benchmark/spark_resnet.py | 8 ++++++-- .../dl_inference/benchmark/spark_resnet_triton.py | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py index 4426c20e..da0ad037 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet.py @@ -2,6 +2,7 @@ import pandas as pd import numpy as np import time +import argparse from typing import Iterator from pyspark.sql.types import ArrayType, FloatType from pyspark import TaskContext @@ -78,6 +79,9 @@ def preprocess(image_iter: Iterator[pd.Series]) -> Iterator[pd.Series]: yield pd.Series(list(flattened_batch)) def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--size', type=str, default='50k', help='Dataset size (e.g., 1k, 5k, 10k, 50k)') + args = parser.parse_args() spark = SparkSession.builder.appName("bench-spark-resnet").getOrCreate() # Avoid OOM for image loading from raw byte arrays @@ -85,7 +89,7 @@ def main(): spark.conf.set("spark.sql.parquet.columnarReaderBatchSize", "1024") spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "1024") - file_path = os.path.abspath("spark-dl-datasets/imagenet_10k.parquet") + file_path = os.path.abspath(f"spark-dl-datasets/imagenet_{args.size}.parquet") classify = predict_batch_udf(predict_batch_fn, return_type=ArrayType(FloatType()), input_tensor_shapes=[[3, 224, 224]], @@ -101,7 +105,7 @@ def main(): df = spark.read.parquet(file_path) preprocessed_df = df.withColumn("images", preprocess(col("value"))).drop("value") preds = preprocessed_df.withColumn("preds", classify(col("images"))) - preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_10k_preds.parquet") + preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_{args.size}_preds.parquet") end_write = time.perf_counter() diff --git a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py index 217a401b..99db135b 100644 --- a/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py +++ b/examples/ML+DL-Examples/Spark-DL/dl_inference/benchmark/spark_resnet_triton.py @@ -1,6 +1,7 @@ import os import pandas as pd import time +import argparse from functools import partial from typing import Iterator from pyspark.sql.types import ArrayType, FloatType @@ -131,6 +132,10 @@ def infer_batch(inputs): return infer_batch def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--size', type=str, default='10k', help='Dataset size (e.g., 1k, 5k, 10k, 50k)') + args = parser.parse_args() + spark = SparkSession.builder.appName("bench-spark-resnet-triton").getOrCreate() spark.sparkContext.addPyFile("pytriton_utils.py") @@ -146,7 +151,7 @@ def main(): server_manager.start_servers(triton_server, wait_timeout=24) host_to_grpc_url = server_manager.host_to_grpc_url - file_path = os.path.abspath("spark-dl-datasets/imagenet_10k.parquet") + file_path = os.path.abspath(f"spark-dl-datasets/imagenet_{args.size}.parquet") classify = predict_batch_udf(partial(triton_fn, model_name=model_name, host_to_url=host_to_grpc_url), return_type=ArrayType(FloatType()), input_tensor_shapes=[[3, 224, 224]], @@ -162,7 +167,7 @@ def main(): df = spark.read.parquet(file_path) preprocessed_df = df.withColumn("images", preprocess(col("value"))).drop("value") preds = preprocessed_df.withColumn("preds", classify(col("images"))) - preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_10k_preds.parquet") + preds.write.mode("overwrite").parquet(f"spark-dl-datasets/imagenet_{args.size}_preds.parquet") end_write = time.perf_counter()