From 2ebf289fbef90d185f73e541788d464cc52c8fe6 Mon Sep 17 00:00:00 2001 From: YunLiu <55491388+KumoLiu@users.noreply.github.com> Date: Sat, 15 Jul 2023 02:32:42 +0800 Subject: [PATCH] Add GDS tutorial (#1450) Fixes https://github.com/Project-MONAI/MONAI/issues/6231 ### Description Add GDS tutorial, contains: - How to enable GDS - GDSDataset - Simple demo show the result(may also add the end-to-end results) ### Checks - [ ] Avoid including large-size files in the PR. - [ ] Clean up long text outputs from code cells in the notebook. - [ ] For security purposes, please check the contents and remove any sensitive info such as user names and private key. - [ ] Ensure (1) hyperlinks and markdown anchors are working (2) use relative paths for tutorial repo files (3) put figure and graphs in the `./figure` folder - [ ] Notebook runs automatically `./runner.sh -t ` --------- Signed-off-by: KumoLiu Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- figures/gds_metric_time_epochs.png | Bin 0 -> 121524 bytes figures/gds_total_epoch_time_comparison.png | Bin 0 -> 73347 bytes modules/GDS_dataset.ipynb | 472 ++++++++++++++++++++ runner.sh | 2 + 4 files changed, 474 insertions(+) create mode 100644 figures/gds_metric_time_epochs.png create mode 100644 figures/gds_total_epoch_time_comparison.png create mode 100644 modules/GDS_dataset.ipynb diff --git a/figures/gds_metric_time_epochs.png b/figures/gds_metric_time_epochs.png new file mode 100644 index 0000000000000000000000000000000000000000..c70b57b71cc782660b5f7c40ffa70f6aea187ce9 GIT binary patch literal 121524 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 Bi|qga literal 0 HcmV?d00001 diff --git a/figures/gds_total_epoch_time_comparison.png b/figures/gds_total_epoch_time_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..d79a78874ee164af38aaaa1748c44c6e6a8eb0e2 GIT binary patch literal 73347 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 MUHx3vIVCg!0EIF62><{9 literal 0 HcmV?d00001 diff --git a/modules/GDS_dataset.ipynb b/modules/GDS_dataset.ipynb new file mode 100644 index 000000000..3116567eb --- /dev/null +++ b/modules/GDS_dataset.ipynb @@ -0,0 +1,472 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) MONAI Consortium \n", + "Licensed under the Apache License, Version 2.0 (the \"License\"); \n", + "you may not use this file except in compliance with the License. \n", + "You may obtain a copy of the License at \n", + "    http://www.apache.org/licenses/LICENSE-2.0 \n", + "Unless required by applicable law or agreed to in writing, software \n", + "distributed under the License is distributed on an \"AS IS\" BASIS, \n", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \n", + "See the License for the specific language governing permissions and \n", + "limitations under the License." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GDS Integration\n", + "\n", + "This notebook introduces how to integrate GDS into MONAI. It mainly includes several parts as shown below.\n", + "- What is GPUDirect Storage(GDS)?\n", + "\n", + " GDS is the newest addition to the GPUDirect family. Like GPUDirect peer to peer (https://developer.nvidia.com/gpudirect) that enables a direct memory access (DMA) path between the memory of two graphics processing units (GPUs) and GPUDirect RDMA that enables a direct DMA path to a network interface card (NIC), GDS enables a direct DMA data path between GPU memory and storage, thus avoiding a bounce buffer through the CPU. This direct path can increase system bandwidth while decreasing latency and utilization load on the CPU and GPU.\n", + "\n", + "- GDS hardware and software requirements and how to install GDS.\n", + "\n", + " 1. GDS has been tested on following NVIDIA GPUs: T10x, T4, A10, Quadro P6000, A100, and V100. For a full list of GPUs that GDS works with, refer to the [Known Limitations](https://docs.nvidia.com/gpudirect-storage/release-notes/index.html#known-limitations) section. For more requirements, you can refer to the 3 and 4 in this [link](https://docs.nvidia.com/gpudirect-storage/release-notes/index.html#mofed-fs-req).\n", + "\n", + " 2. To install GDS, follow the detailed steps provided in this [section](https://docs.nvidia.com/gpudirect-storage/troubleshooting-guide/index.html#troubleshoot-install). To verify successful GDS installation, run the following command:\n", + " \n", + " ```/usr/local/cuda-./gds/tools/gdscheck.py -p``` \n", + " \n", + " (Replace X with the major version of the CUDA toolkit, and Y with the minor version.)\n", + "\n", + "- `GDSDataset` inherited from `PersistentDataset`.\n", + "\n", + " In this tutorial, we have implemented a `GDSDataset` that inherits from `PersistentDataset`. We have re-implemented the `_cachecheck` method to create and save cache using GDS.\n", + "\n", + "- A simple demo comparing the time taken with and without GDS.\n", + "\n", + " In this tutorial, we are creating a conda environment to install `kvikio`, which provides a Python API for GDS. To install `kvikio` using other methods, refer to https://github.com/rapidsai/kvikio#install.\n", + "\n", + " ```conda create -n gds_env -c rapidsai-nightly -c conda-forge python=3.10 cuda-version=11.8 kvikio```\n", + "\n", + "- An End-to-end workflow Profiling Comparison" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python -c \"import monai\" || pip install -q \"monai-weekly[nibabel, matplotlib]\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import time\n", + "import cupy\n", + "import torch\n", + "import shutil\n", + "import tempfile\n", + "import numpy as np\n", + "from typing import Any\n", + "from pathlib import Path\n", + "from copy import deepcopy\n", + "from collections.abc import Callable, Sequence\n", + "from kvikio.numpy import fromfile, tofile\n", + "\n", + "import monai\n", + "import monai.transforms as mt\n", + "from monai.config import print_config\n", + "from monai.data.utils import pickle_hashing, SUPPORTED_PICKLE_MOD\n", + "from monai.utils import convert_to_tensor, set_determinism, look_up_option\n", + "\n", + "print_config()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup data directory\n", + "\n", + "You can specify a directory with the `MONAI_DATA_DIRECTORY` environment variable. \n", + "This allows you to save results and reuse downloads. \n", + "If not specified, a temporary directory will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/raid/yliu/test_tutorial\n" + ] + } + ], + "source": [ + "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", + "root_dir = tempfile.mkdtemp() if directory is None else directory\n", + "print(root_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GDSDataset" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class GDSDataset(monai.data.PersistentDataset):\n", + " def __init__(\n", + " self,\n", + " data: Sequence,\n", + " transform: Sequence[Callable] | Callable,\n", + " cache_dir: Path | str | None,\n", + " hash_func: Callable[..., bytes] = pickle_hashing,\n", + " hash_transform: Callable[..., bytes] | None = None,\n", + " reset_ops_id: bool = True,\n", + " device: int = None,\n", + " **kwargs: Any,\n", + " ) -> None:\n", + " super().__init__(\n", + " data=data,\n", + " transform=transform,\n", + " cache_dir=cache_dir,\n", + " hash_func=hash_func,\n", + " hash_transform=hash_transform,\n", + " reset_ops_id=reset_ops_id,\n", + " **kwargs,\n", + " )\n", + " self.device = device\n", + "\n", + " def _cachecheck(self, item_transformed):\n", + " \"\"\"given the input dictionary ``item_transformed``, return a transformed version of it\"\"\"\n", + " hashfile = None\n", + " # compute a cache id\n", + " if self.cache_dir is not None:\n", + " data_item_md5 = self.hash_func(item_transformed).decode(\"utf-8\")\n", + " data_item_md5 += self.transform_hash\n", + " hashfile = self.cache_dir / f\"{data_item_md5}.pt\"\n", + "\n", + " if hashfile is not None and hashfile.is_file(): # cache hit\n", + " with cupy.cuda.Device(self.device):\n", + " item = {}\n", + " for k in item_transformed:\n", + " meta_k = torch.load(self.cache_dir / f\"{hashfile.name}-{k}-meta\")\n", + " item[k] = fromfile(f\"{hashfile}-{k}\", dtype=np.float32, like=cupy.empty(()))\n", + " item[k] = convert_to_tensor(item[k].reshape(meta_k[\"shape\"]), device=f\"cuda:{self.device}\")\n", + " item[f\"{k}_meta_dict\"] = meta_k\n", + " return item\n", + "\n", + " # create new cache\n", + " _item_transformed = self._pre_transform(deepcopy(item_transformed)) # keep the original hashed\n", + " if hashfile is None:\n", + " return _item_transformed\n", + "\n", + " for k in _item_transformed: # {'image': ..., 'label': ...}\n", + " _item_transformed_meta = _item_transformed[k].meta\n", + " _item_transformed_data = _item_transformed[k].array\n", + " _item_transformed_meta[\"shape\"] = _item_transformed_data.shape\n", + " tofile(_item_transformed_data, f\"{hashfile}-{k}\")\n", + " try:\n", + " # NOTE: Writing to a temporary directory and then using a nearly atomic rename operation\n", + " # to make the cache more robust to manual killing of parent process\n", + " # which may leave partially written cache files in an incomplete state\n", + " with tempfile.TemporaryDirectory() as tmpdirname:\n", + " meta_hash_file_name = f\"{hashfile.name}-{k}-meta\"\n", + " meta_hash_file = self.cache_dir / meta_hash_file_name\n", + " temp_hash_file = Path(tmpdirname) / meta_hash_file_name\n", + " torch.save(\n", + " obj=_item_transformed_meta,\n", + " f=temp_hash_file,\n", + " pickle_module=look_up_option(self.pickle_module, SUPPORTED_PICKLE_MOD),\n", + " pickle_protocol=self.pickle_protocol,\n", + " )\n", + " if temp_hash_file.is_file() and not meta_hash_file.is_file():\n", + " # On Unix, if target exists and is a file, it will be replaced silently if the\n", + " # user has permission.\n", + " # for more details: https://docs.python.org/3/library/shutil.html#shutil.move.\n", + " try:\n", + " shutil.move(str(temp_hash_file), meta_hash_file)\n", + " except FileExistsError:\n", + " pass\n", + " except PermissionError: # project-monai/monai issue #3613\n", + " pass\n", + " open(hashfile, \"a\").close() # store cacheid\n", + "\n", + " return _item_transformed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A simple demo to show how to use the GDS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download dataset and set dataset path" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-07-12 09:26:17,878 - INFO - Expected md5 is None, skip md5 check for file samples.zip.\n", + "2023-07-12 09:26:17,878 - INFO - File exists: samples.zip, skipped downloading.\n", + "2023-07-12 09:26:17,879 - INFO - Writing into directory: /raid/yliu/test_tutorial.\n" + ] + } + ], + "source": [ + "sample_url = \"https://github.com/Project-MONAI/MONAI-extra-test-data/releases\"\n", + "sample_url += \"/download/0.8.1/totalSegmentator_mergedLabel_samples.zip\"\n", + "monai.apps.download_and_extract(sample_url, output_dir=root_dir, filepath=\"samples.zip\")\n", + "\n", + "base_name = os.path.join(root_dir, \"totalSegmentator_mergedLabel_samples\")\n", + "input_data = []\n", + "for filename in os.listdir(os.path.join(base_name, \"imagesTr\")):\n", + " input_data.append(\n", + " {\n", + " \"image\": os.path.join(base_name, \"imagesTr\", filename),\n", + " \"label\": os.path.join(base_name, \"labelsTr\", filename),\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set deterministic for reproducibility" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "set_determinism(seed=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup transforms" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "device = \"cuda:0\" if torch.cuda.is_available() else \"cpu\"\n", + "transform = mt.Compose(\n", + " [\n", + " mt.LoadImageD(keys=(\"image\", \"label\"), image_only=True, ensure_channel_first=True),\n", + " mt.SpacingD(keys=(\"image\", \"label\"), pixdim=1.5),\n", + " mt.EnsureTypeD(keys=(\"image\", \"label\"), device=device),\n", + " mt.RandRotateD(\n", + " keys=(\"image\", \"label\"),\n", + " prob=1.0,\n", + " range_x=0.1,\n", + " range_y=0.1,\n", + " range_z=0.3,\n", + " mode=(\"bilinear\", \"nearest\"),\n", + " ),\n", + " mt.RandZoomD(keys=(\"image\", \"label\"), prob=1.0, min_zoom=0.8, max_zoom=1.2, mode=(\"trilinear\", \"nearest\")),\n", + " mt.ResizeWithPadOrCropD(keys=(\"image\", \"label\"), spatial_size=(200, 210, 220)),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using GDSDataset" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch0 time 19.746733903884888\n", + "epoch1 time 0.9976603984832764\n", + "epoch2 time 0.982248067855835\n", + "epoch3 time 0.9838874340057373\n", + "epoch4 time 0.9793403148651123\n", + "total time 23.69102692604065\n" + ] + } + ], + "source": [ + "cache_dir = os.path.join(root_dir, \"gds_cache_dir\")\n", + "dataset = GDSDataset(data=input_data, transform=transform, cache_dir=cache_dir, device=0)\n", + "\n", + "data_loader = monai.data.ThreadDataLoader(dataset, batch_size=1)\n", + "\n", + "s = time.time()\n", + "for i in range(5):\n", + " e = time.time()\n", + " for _x in data_loader:\n", + " pass\n", + " print(f\"epoch{i} time\", time.time() - e)\n", + "print(\"total time\", time.time() - s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using PersistentDataset" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch0 time 21.206729650497437\n", + "epoch1 time 1.510526180267334\n", + "epoch2 time 1.588256597518921\n", + "epoch3 time 1.4431262016296387\n", + "epoch4 time 1.4594802856445312\n", + "total time 27.20927882194519\n" + ] + } + ], + "source": [ + "cache_dir_per = os.path.join(root_dir, \"persistent_cache_dir\")\n", + "dataset = monai.data.PersistentDataset(data=input_data, transform=transform, cache_dir=cache_dir_per)\n", + "data_loader = monai.data.ThreadDataLoader(dataset, batch_size=1)\n", + "\n", + "s = time.time()\n", + "for i in range(5):\n", + " e = time.time()\n", + " for _x in data_loader:\n", + " pass\n", + " print(f\"epoch{i} time\", time.time() - e)\n", + "print(\"total time\", time.time() - s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## An End-to-end workflow Profiling Comparison\n", + "\n", + "We also conducted a quantitative analysis of the end-to-end workflow performence using the brats dataset. To learn how to implement the full pipeline, please follow this [tutorial](/home/lab/yliu/tutorials/acceleration/distributed_training/brats_training_ddp.py). The only step that requires modification is the dataset part. The end-to-end pipeline was benchmarked on a V100 32G GPU." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Total time and every epoch time comparison\n", + "![gds_benchmark_total_epoch_time_comparison](../figures/gds_total_epoch_time_comparison.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Total time to achieve metrics comparison\n", + "![gds_benchmark_achieve_metrics_comparison](../figures/gds_metric_time_epochs.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleanup data directory\n", + "\n", + "Remove directory if a temporary was used." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "if directory is None:\n", + " shutil.rmtree(root_dir)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/runner.sh b/runner.sh index 89f313a1b..9e4eb0b0e 100755 --- a/runner.sh +++ b/runner.sh @@ -70,6 +70,7 @@ doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" lazy_resampling_com doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" TensorRT_inference_acceleration.ipynb) doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" lazy_resampling_benchmark.ipynb) doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" modular_patch_inferer.ipynb) +doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" GDS_dataset.ipynb) # Execution of the notebook in these folders / with the filename cannot be automated skip_run_papermill=() @@ -107,6 +108,7 @@ skip_run_papermill=("${skip_run_papermill[@]}" .*transform_visualization*) # ht skip_run_papermill=("${skip_run_papermill[@]}" .*TensorRT_inference_acceleration*) skip_run_papermill=("${skip_run_papermill[@]}" .*mednist_classifier_ray*) # https://github.com/Project-MONAI/tutorials/issues/1307 skip_run_papermill=("${skip_run_papermill[@]}" .*TorchIO_MONAI_PyTorch_Lightning*) # https://github.com/Project-MONAI/tutorials/issues/1324 +skip_run_papermill=("${skip_run_papermill[@]}" .*GDS_dataset*) # https://github.com/Project-MONAI/tutorials/issues/1324 # output formatting separator=""