From f948bd11fa588295c9f10e24e8ab004202c37f47 Mon Sep 17 00:00:00 2001 From: Tirthajyoti Sarkar Date: Sat, 8 Jan 2022 22:54:11 -0800 Subject: [PATCH 1/6] Create Readme.md --- Time-profiling/Readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Time-profiling/Readme.md diff --git a/Time-profiling/Readme.md b/Time-profiling/Readme.md new file mode 100644 index 0000000..6d6d34d --- /dev/null +++ b/Time-profiling/Readme.md @@ -0,0 +1 @@ +## Time-profiling ML code From 9e3364ba741e1f930a9892acd21cababdae5d5c5 Mon Sep 17 00:00:00 2001 From: Tirthajyoti Sarkar Date: Sat, 8 Jan 2022 22:56:53 -0800 Subject: [PATCH 2/6] Add files via upload --- Time-profiling/8.14 - profile-DS-workflow.png | Bin 0 -> 128088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Time-profiling/8.14 - profile-DS-workflow.png diff --git a/Time-profiling/8.14 - profile-DS-workflow.png b/Time-profiling/8.14 - profile-DS-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..e17e393679411ebc5694b797f7288bf00e73308b GIT binary patch literal 128088 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%0DA^r22fYLWrMK((uH~2BpBy6=g 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 F|2HCiv#$UE literal 0 HcmV?d00001 From 34edffcb3c3772ef34811a5d1c92e3e975cb0af5 Mon Sep 17 00:00:00 2001 From: Tirthajyoti Sarkar Date: Sat, 8 Jan 2022 22:59:21 -0800 Subject: [PATCH 3/6] Add files via upload --- Time-profiling/cProfile.ipynb | 513 ++++++++++++++++++++++++++++++++++ 1 file changed, 513 insertions(+) create mode 100644 Time-profiling/cProfile.ipynb diff --git a/Time-profiling/cProfile.ipynb b/Time-profiling/cProfile.ipynb new file mode 100644 index 0000000..a65359a --- /dev/null +++ b/Time-profiling/cProfile.ipynb @@ -0,0 +1,513 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fc118b68-6776-4504-ace0-0e076616fde6", + "metadata": {}, + "source": [ + "# Time-profiling Data Science code using `cProfile`\n", + "\n", + "## Dr. Tirthajyoti Sarkar\n", + "\n", + "---" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "98192c2c-f90d-4a7b-b3b2-ae23870d6f4e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 3 function calls in 0.064 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.064 0.064 0.064 0.064 :1()\n", + " 1 0.000 0.000 0.064 0.064 {built-in method builtins.exec}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import cProfile\n", + "\n", + "SIZE = 10_000_000\n", + "a = np.arange(SIZE)\n", + "b = np.random.normal(size=SIZE)\n", + "\n", + "cProfile.run('a+b')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9500a64c-9d19-4e05-97cf-231ab5f1842e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SIZE = 10_000_000\n", + "a = np.arange(SIZE)\n", + "b = np.random.normal(size=SIZE)\n", + "a+b\n" + ] + } + ], + "source": [ + "code = \"\"\"SIZE = 10_000_000\n", + "a = np.arange(SIZE)\n", + "b = np.random.normal(size=SIZE)\n", + "a+b\"\"\"\n", + "\n", + "print(code)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6d810ec6-245d-4082-8f64-d5c16b162936", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 5 function calls in 0.488 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.078 0.078 0.488 0.488 :1()\n", + " 1 0.000 0.000 0.488 0.488 {built-in method builtins.exec}\n", + " 1 0.028 0.028 0.028 0.028 {built-in method numpy.arange}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + " 1 0.381 0.381 0.381 0.381 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "cProfile.run(code)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8a5bf74f-fa5b-4997-a864-82a6d9503216", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 6 function calls in 0.531 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.055 0.055 0.510 0.510 1735574101.py:1(add)\n", + " 1 0.021 0.021 0.531 0.531 :1()\n", + " 1 0.000 0.000 0.531 0.531 {built-in method builtins.exec}\n", + " 1 0.057 0.057 0.057 0.057 {built-in method numpy.arange}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + " 1 0.397 0.397 0.397 0.397 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "def add():\n", + " SIZE = 10_000_000\n", + " a = np.arange(SIZE)\n", + " b = np.random.normal(size=SIZE)\n", + " c=a+b\n", + "\n", + "cProfile.run('add()')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f899c334-2d1f-41ef-aceb-71348e5a6818", + "metadata": {}, + "outputs": [], + "source": [ + "def add(size):\n", + " a = np.arange(size)\n", + " b = np.random.normal(size=size)\n", + " c=a+b" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "cdf8d43a-f240-4de6-9a92-6dee6c1cd98b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 6 function calls in 0.500 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.054 0.054 0.478 0.478 1565836920.py:1(add)\n", + " 1 0.021 0.021 0.500 0.500 :1()\n", + " 1 0.000 0.000 0.500 0.500 {built-in method builtins.exec}\n", + " 1 0.030 0.030 0.030 0.030 {built-in method numpy.arange}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + " 1 0.394 0.394 0.394 0.394 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "SIZE = 10_000_000\n", + "cProfile.run('add(SIZE)')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8d038a76-4394-472b-9949-be9ef936dca5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 6 function calls in 1.034 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.114 0.114 0.987 0.987 1565836920.py:1(add)\n", + " 1 0.047 0.047 1.034 1.034 :1()\n", + " 1 0.000 0.000 1.034 1.034 {built-in method builtins.exec}\n", + " 1 0.082 0.082 0.082 0.082 {built-in method numpy.arange}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + " 1 0.791 0.791 0.791 0.791 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "SIZE = 20_000_000\n", + "cProfile.run('add(SIZE)')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f14c476d-cc19-4ce5-b74e-abf211eabc7a", + "metadata": {}, + "outputs": [], + "source": [ + "def ops(a,b):\n", + " x1 = a+b\n", + " x2 = a-b\n", + " x3 = a*b\n", + " x4 = a/b" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "771a1452-2d4a-476e-8775-3479beac3700", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 4 function calls in 0.287 seconds\n", + "\n", + " Ordered by: standard name\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.251 0.251 0.251 0.251 3200973052.py:1(ops)\n", + " 1 0.036 0.036 0.286 0.286 :1()\n", + " 1 0.000 0.000 0.287 0.287 {built-in method builtins.exec}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + "\n", + "\n" + ] + } + ], + "source": [ + "cProfile.run('ops(a,b)')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5af6602e-a66f-4bf0-9d22-bc5b71e8c4d0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total function calls: 48\n", + "Total time (seconds): 1.1839559\n" + ] + } + ], + "source": [ + "import cProfile, pstats\n", + "\n", + "profiler = cProfile.Profile()\n", + "# Enable profiler\n", + "profiler.enable()\n", + "# Function execution\n", + "add(SIZE)\n", + "# Disable profiler\n", + "profiler.disable()\n", + "# pstats\n", + "stats = pstats.Stats(profiler)\n", + "# Print the total time and function calls\n", + "print(\"Total function calls:\", stats.total_calls)\n", + "print(\"Total time (seconds):\", stats.total_tt)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "91f2d625-37bf-41f6-9c92-ae52bf608d02", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 48 function calls in 1.184 seconds\n", + "\n", + " Random listing order was used\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\contextlib.py:86(__init__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\contextlib.py:112(__enter__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\contextlib.py:121(__exit__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\contextlib.py:242(helper)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\traitlets\\traitlets.py:535(get)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\traitlets\\traitlets.py:566(__get__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\utils\\ipstruct.py:125(__getattr__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\codeop.py:142(__call__)\n", + " 4 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\compilerop.py:166(extra_flags)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\interactiveshell.py:1286(user_global_ns)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3354(compare)\n", + " 2 0.000 0.000 1.184 0.592 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3416(run_code)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\hooks.py:103(__call__)\n", + " 2 0.000 0.000 0.000 0.000 c:\\users\\tirtha\\appdata\\local\\programs\\python\\python39\\lib\\site-packages\\IPython\\core\\hooks.py:168(pre_run_code_hook)\n", + " 1 0.000 0.000 0.000 0.000 C:\\Users\\Tirtha\\AppData\\Local\\Temp/ipykernel_12356/3775033682.py:9()\n", + " 1 0.044 0.044 1.184 1.184 C:\\Users\\Tirtha\\AppData\\Local\\Temp/ipykernel_12356/3775033682.py:7()\n", + " 1 0.114 0.114 1.140 1.140 C:\\Users\\Tirtha\\AppData\\Local\\Temp/ipykernel_12356/1565836920.py:1(add)\n", + " 1 0.081 0.081 0.081 0.081 {built-in method numpy.arange}\n", + " 1 0.945 0.945 0.945 0.945 {method 'normal' of 'numpy.random.mtrand.RandomState' objects}\n", + " 2 0.000 0.000 0.000 0.000 {built-in method builtins.compile}\n", + " 2 0.000 0.000 1.184 0.592 {built-in method builtins.exec}\n", + " 4 0.000 0.000 0.000 0.000 {built-in method builtins.getattr}\n", + " 4 0.000 0.000 0.000 0.000 {built-in method builtins.next}\n", + " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stats = pstats.Stats(profiler)\n", + "stats.print_stats()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "06fa3a62-5fef-4d9e-8c6a-d9e309d80e16", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pstats.Stats" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(stats)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "cefecaa0-9933-49ae-b0dc-3f869e83fa89", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.1839559" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stats.total_tt" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fe15e37e-d329-4168-a479-60c219126e16", + "metadata": {}, + "outputs": [], + "source": [ + "stats.fcn_list" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "15c966eb-e094-4e5f-8e54-1a2c3923f6c7", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "560a8a4d-84fc-43c2-a1c8-79113dcc73ac", + "metadata": {}, + "outputs": [], + "source": [ + "size = [int(i*1e6) for i in range(5,26,5)]\n", + "total_tt = []\n", + "for s in size:\n", + " profiler = cProfile.Profile()\n", + " profiler.enable()\n", + " add(s)\n", + " profiler.disable()\n", + " stats = pstats.Stats(profiler)\n", + " total_tt.append(round(stats.total_tt,3)) " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "264f4589-e40b-4c2d-bb08-9116dc4eb2e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.274, 0.464, 0.706, 0.94, 1.187]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_tt" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "695c9306-bcc6-45ea-8939-28e8e127eec3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(6,3),dpi=120)\n", + "plt.bar(x=[str(i)+'-million' for i in range(5,26,5)],\n", + " height=total_tt, \n", + " edgecolor='k',\n", + " color=\"#2c75b0\")\n", + "plt.xlabel(\"Array size\", fontsize=16)\n", + "plt.ylabel(\"Time taken (seconds)\",fontsize=16)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9b1e4af3-385a-420a-be85-449119210f93", + "metadata": {}, + "source": [ + "## Data science workflow profiling\n", + "\n", + "While measuring the execution time of these small standalone functions serve as basic demonstration of the usage of these profilers, the real utility is realized when they are used in a large-scale data science workflow. Such a workflow has a variety of modules and functions and we can set up profiling for all of them if necessary. The output may be logged into a database or even be fed into a monitoring system that will track the performance of the modules over time and take action if needed (e.g., a function has poorly performed and took too much time in a certain run or for a certain input data).\n", + "\n", + "![ds-workflow](https://raw.githubusercontent.com/tirthajyoti/Machine-Learning-with-Python/master/Time-profiling/8.14%20-%20profile-DS-workflow.png)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 6363d068f3e265ded35c2639a6fbd020fa5df335 Mon Sep 17 00:00:00 2001 From: Tirthajyoti Sarkar Date: Sun, 9 Jan 2022 00:52:45 -0800 Subject: [PATCH 4/6] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index bc4c537..077c9d7 100644 --- a/README.md +++ b/README.md @@ -148,4 +148,11 @@ See my articles on Medium on this topic. ### Unit testing ML code with Pytest Check the files and detailed instructions in the [Pytest](https://github.com/tirthajyoti/Machine-Learning-with-Python/tree/master/Pytest) directory to understand how one should write unit testing code/module for machine learning models +--- + +### Memory and timing profiling + +Profiling data science code and ML models for memory footprint and computing time is a critical but often overlooed area. Here are a couple of Notebooks showing the ideas, +* [Memory profling using Scalene](https://github.com/tirthajyoti/Machine-Learning-with-Python/tree/master/Memory-profiling/Scalene) +* [Time-profiling data science code](https://github.com/tirthajyoti/Machine-Learning-with-Python/blob/master/Time-profiling/cProfile.ipynb) From f701e7466475b1c958b36065c05d2a179eea5d98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 00:40:47 -0700 Subject: [PATCH 5/6] Bump numpy from 1.16.3 to 1.22.0 in /Deployment/Linear_regression (#22) Bumps [numpy](https://github.com/numpy/numpy) from 1.16.3 to 1.22.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.16.3...v1.22.0) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Deployment/Linear_regression/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Deployment/Linear_regression/requirements.txt b/Deployment/Linear_regression/requirements.txt index 042b208..8cfc955 100644 --- a/Deployment/Linear_regression/requirements.txt +++ b/Deployment/Linear_regression/requirements.txt @@ -1,4 +1,4 @@ -numpy==1.16.3 +numpy==1.22.0 pandas==0.24.2 requests==2.22.0 scikit-learn==0.21.2 From ad23604344b55c759d0ffd24ac4c5695e9f79822 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 00:41:00 -0700 Subject: [PATCH 6/6] Bump numpy from 1.16.3 to 1.22.0 in /Deployment/rnn_app (#21) Bumps [numpy](https://github.com/numpy/numpy) from 1.16.3 to 1.22.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.16.3...v1.22.0) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Deployment/rnn_app/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Deployment/rnn_app/requirements.txt b/Deployment/rnn_app/requirements.txt index 4fb6913..cee79e4 100644 --- a/Deployment/rnn_app/requirements.txt +++ b/Deployment/rnn_app/requirements.txt @@ -1,4 +1,4 @@ -numpy==1.16.3 +numpy==1.22.0 pandas==0.24.2 requests==2.22.0