Created
January 31, 2025 20:46
-
-
Save TomAugspurger/69896a50c852897486b799d1023638be to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# dali + Zarr (GPU) example.\n", | |
"\n", | |
"This script adapts the GPU example from\n", | |
"https://docs.nvidia.com/deeplearning/dali/user-guide/docs/examples/general/data_loading/external_input.html\n", | |
"to use Zarr for storage.\n", | |
"\n", | |
"To run it, you'll currently need to use my fork of zarr-python:\n", | |
"\n", | |
" pip install git+https://github.com/TomAugspurger/zarr-python/@tom/fix/gpu\n", | |
"\n", | |
"That should be in zarr `main` soon. You'll also need the data.\n", | |
"\n", | |
"```\n", | |
"mkdir -p data/images\n", | |
"cd data/images\n", | |
"curl -O https://docs.nvidia.com/deeplearning/dali/user-guide/docs/_images/examples_general_data_loading_external_input_12_2.png\n", | |
"curl -O curl -O https://docs.nvidia.com/deeplearning/dali/user-guide/docs/_images/examples_general_data_loading_external_input_19_2.png\n", | |
"\n", | |
"```\n", | |
"\n", | |
"And a `file_list.txt` like\n", | |
"\n", | |
"```\n", | |
"examples_general_data_loading_external_input_12_2.png 0\n", | |
"examples_general_data_loading_external_input_19_2.png 1\n", | |
"```\n", | |
"\n", | |
"Then run `make_data()` to create the zarr store." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from random import shuffle\n", | |
"from nvidia.dali.pipeline import Pipeline\n", | |
"import nvidia.dali.fn as fn\n", | |
"import zarr\n", | |
"import zarr.storage\n", | |
"from PIL import Image\n", | |
"from nvidia.dali import types" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def make_data():\n", | |
" # TODO: figure out the shape here.\n", | |
" # goes from 4 -> 3 somewhere.\n", | |
" store = zarr.storage.LocalStore(root=\"data/example.zarr\")\n", | |
" group = zarr.create_group(store, overwrite=True)\n", | |
"\n", | |
" TOTAL_SAMPLES = 100\n", | |
"\n", | |
" # note: the images from the docs vary in size while Zarr requires\n", | |
" # uniform chunk sizes. I've truncated the images to 231 x 300\n", | |
"\n", | |
" arr = group.create_array(\n", | |
" name=\"images\",\n", | |
" shape=(TOTAL_SAMPLES, 231, 300, 3),\n", | |
" chunks=(1, 231, 300, 3),\n", | |
" dtype=\"uint8\",\n", | |
" overwrite=True,\n", | |
" )\n", | |
"\n", | |
" labels = group.create_array(\n", | |
" name=\"labels\",\n", | |
" shape=(TOTAL_SAMPLES,),\n", | |
" chunks=(1,),\n", | |
" dtype=\"uint8\",\n", | |
" overwrite=True,\n", | |
" )\n", | |
"\n", | |
" # TODO: use file list\n", | |
" # assuming you've downloaded these two\n", | |
" img = Image.open(\n", | |
" \"data/images/examples_general_data_loading_external_input_12_2.png\"\n", | |
" )\n", | |
" arr[0] = img\n", | |
" labels[0] = 0\n", | |
" img = Image.open(\n", | |
" \"data/images/examples_general_data_loading_external_input_19_2.png\"\n", | |
" )\n", | |
" arr[1] = img\n", | |
" labels[1] = 1\n", | |
"\n", | |
"make_data()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"batch_size = 16\n", | |
"\n", | |
"class ExternalInputIterator:\n", | |
" def __init__(self, batch_size: int):\n", | |
" self.root = \"data/example.zarr/\"\n", | |
" self.variable = \"images\"\n", | |
" self.batch_size = batch_size\n", | |
"\n", | |
" # Does this class get serialized? Is it safe to store\n", | |
" # references to zarr arrays here?\n", | |
" # self.images = zarr.open_array(self.root, path=self.variable)\n", | |
" # self.labels = zarr.open_array(self.root, path=\"labels\")\n", | |
"\n", | |
" self.indices = list(\n", | |
" range(zarr.open_array(self.root, path=self.variable).shape[0])\n", | |
" )\n", | |
" shuffle(self.indices)\n", | |
" self.i = 0\n", | |
" self.n = len(self.indices)\n", | |
"\n", | |
" def __iter__(self):\n", | |
" self.i = 0\n", | |
" self.n = len(self.indices)\n", | |
" return self\n", | |
"\n", | |
" def __next__(self):\n", | |
" batch = []\n", | |
" labels = []\n", | |
"\n", | |
" arr = zarr.open(self.root, path=self.variable)\n", | |
" arr_labels = zarr.open(self.root, path=\"labels\")\n", | |
"\n", | |
" for _ in range(self.batch_size):\n", | |
" batch.append(arr[self.i])\n", | |
" labels.append(arr_labels[self.i])\n", | |
" self.i = (self.i + 1) % self.n\n", | |
" return (batch, labels)\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(231, 300, 3)\n", | |
"0\n" | |
] | |
} | |
], | |
"source": [ | |
"# Need's my branch currently\n", | |
"zarr.config.enable_gpu()\n", | |
"\n", | |
"\n", | |
"eii = ExternalInputIterator(batch_size)\n", | |
"pipe = Pipeline(batch_size=batch_size, num_threads=2, device_id=0)\n", | |
"# note: using the `device=\"gpu\"` variant from https://docs.nvidia.com/deeplearning/dali/user-guide/docs/examples/general/data_loading/external_input.html\n", | |
"with pipe:\n", | |
" images, labels = fn.external_source(source=eii, num_outputs=2, dtype=types.UINT8, device=\"gpu\")\n", | |
" enhance = fn.brightness_contrast(images, contrast=2)\n", | |
" pipe.set_outputs(enhance, labels)\n", | |
"\n", | |
"pipe.build()\n", | |
"pipe_out = pipe.run()\n", | |
"\n", | |
"batch_gpu = pipe_out[0].as_cpu()\n", | |
"labels_gpu = pipe_out[1].as_cpu()\n", | |
"\n", | |
"print(batch_gpu.at(0).shape)\n", | |
"print(labels_gpu.at(0))\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.imshow(batch_gpu.at(1));" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "python-3.12", | |
"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.12.8" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment