Skip to content

Instantly share code, notes, and snippets.

@charmoniumQ
Created June 16, 2020 21:15
Show Gist options
  • Save charmoniumQ/a98d3bfbdbe7fbb3bfdd28790c5e3c03 to your computer and use it in GitHub Desktop.
Save charmoniumQ/a98d3bfbdbe7fbb3bfdd28790c5e3c03 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"import numpy as np\n",
"from sympy import init_session; init_session(quiet=True)\n",
"from sympy.stats import *\n",
"p1, p2, n = symbols('p_1 p_2 n', integer=True, positive=True)\n",
"t = symbols('t', real=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data parallelism\n",
"\n",
"In data parallelism, the set of inferences is parallelized $p_1$ ways, and each inference is paralellized $p_2$ ways. The total number cores is $p = p_1 p_2$.\n",
"\n",
"| $p_1$ | $p_2$ | John's experiment name |\n",
"| ----- | ----- | ---------------------- |\n",
"| 12 | 1 | dataparallel-1 |\n",
"| 2 | 6 | dataparallel-1.5 |\n",
"| 1 | 12 | dataparallel-2 |\n",
"\n",
"I propose referring to John's data parallel experiments as \"dataparallel-($p_1$, $p_2$)\".\n",
"\n",
"Assume each inference can be divided into $p$ parts whose runtime is normally distributed with a mean of $\\mu$ and a standard deviation of $\\sigma$ (denoted $N(\\mu, \\sigma^2)$).\n",
"\n",
"**Per-inference latency** (what John calls \"end-to-end\"): There are $p$ pieces to each inference, handled by $p_2$ processing units. Each processor gets $\\frac{p}{p_2} = p_1$ units which each take $N(\\mu, \\sigma)$. Using the formula for the sum of normally distributed variables (see [[1][1]]), we find that each processing unit spends time $N \\left(p_1\\mu, p_1\\sigma^2 \\right)$.\n",
"\n",
"[1]: https://en.wikipedia.org/wiki/Sum_of_normally_distributed_random_variables"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"115 ms ± 3.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
"197 µs ± 45.8 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"mu, sigma = symbols('\\mu \\sigma', real=True, positive=True)\n",
"inference = Normal(\"X\", p1 * mu, p2 * sigma**2)\n",
"\n",
"# some sample parameters\n",
"# The difference depends a lot on n\n",
"params = {p1: 4, p2: 3, n: 96, mu: 1, sigma: 1}\n",
"\n",
"# It is much faster (1000x) to define the expected value by hand.\n",
"%timeit E(inference).subs(params)\n",
"%timeit (p1 * mu).subs(params)\n",
"\n",
"E_inference = p1 * mu\n",
"std_inference = sqrt(p2) * sigma"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Total latency:** There are $n$ samples to run inference on. The next sample cannot be processed until the slowest processing unit is done. The expected value of this time is the maximum of $n$ random variables each drawn from $N \\left(p_1\\mu, p_1\\sigma^2 \\right)$ (denoted $\\mathbb E \\left[ \\max_n \\left( N \\left(p_1\\mu, p_1\\sigma^2 \\right) \\right) \\right]$). There are a couple of ways of calculating this:\n",
"\n",
"- Numerically evaluating the following integral (slowest but most accurate), where $\\Phi(t; N(\\mu, \\sigma))$ is the CDF of $t$, given the distribution $N(\\mu, \\sigma)$. See [[2][2]] for a derivation.\n",
"\n",
" $$ \\mathbb E \\left[ \\max_n \\left( N \\left(p_1\\mu, p_1\\sigma^2 \\right) \\right) \\right] = \\int_{-\\infty}^{\\infty} t \\frac{d}{dt}\\Phi(t; N(p_1 \\mu, p_1 \\sigma^2))^n dt$$\n",
"\n",
"- Randomly sampling the distribution (10x faster but some accuracy loss).\n",
"\n",
"- Using an analytic approximation given in [[3][3]] (50000x faster, but accuracy loss and only works for normal distributions (which we might change later)):\n",
"\n",
" $$ \\mathbb E \\left[ \\max_n \\left( N \\left(p_1\\mu, p_1\\sigma^2 \\right) \\right) \\right] = \\int_{-\\infty}^{\\infty} t \\frac{d}{dt}\\Phi(t; N(p_1 \\mu, p_1 \\sigma^2))^n dt \\approx p_1 \\mu + p_1 \\sigma^2 \\sqrt(2 \\log n)$$\n",
"\n",
"\n",
"[2]: https://math.stackexchange.com/a/473237/24891\n",
"[3]: https://math.stackexchange.com/a/510580/24891"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"21.1 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n"
]
}
],
"source": [
"def E_max_rv_exact(n, RV):\n",
" \"\"\"Returns the expected value of the max of a sample of each RV in RVs\"\"\"\n",
" t = symbols('t', real=True)\n",
" pdf = diff(cdf(RV)(t)**n, t)\n",
" return Integral(t * pdf, (t, -oo, oo))\n",
"\n",
"%timeit -n 1 -r 1 E_max_rv_exact(n, inference).subs(params).evalf(2)\n",
"true = float(E_max_rv_exact(n, inference).subs(params).evalf(2))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.32 s ± 150 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"0.03 % error\n"
]
}
],
"source": [
"def E_max_rv_estimate(n, RV):\n",
" m = 20\n",
" return sum(max(float(sample(RV)) for _ in range(n)) for _ in range(m)) / m\n",
"\n",
"results = []\n",
"%timeit results.append(E_max_rv_estimate(n.subs(params), inference.subs(params)))\n",
"print('{:.2f} % error'.format(np.sqrt(np.mean((np.array(results) - true)**2)) / true))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"456 µs ± 43.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n",
"0.20 % error\n"
]
}
],
"source": [
"def E_max_rv_norm_approx():\n",
" return E_inference + std_inference * sqrt(2 * log(n))\n",
"\n",
"results = []\n",
"%timeit results.append(E_max_rv_norm_approx().subs(params).evalf(2))\n",
"print('{:.2f} % error'.format(np.sqrt(np.mean((np.array(results, dtype=float) - true)**2)) / true))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# The winner was E_max_rv_norm_approx\n",
"E_total = E_max_rv_norm_approx()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tuning the model\n",
"\n",
"We have empirical data for (1, 12) and (12, 1). I will show what my model produces for these values and tweak the parameters to match the empirical data."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ \\left( \\mu, \\ \\mu + 2 \\sqrt{6} \\sigma \\sqrt{\\log{\\left(96 \\right)}}\\right), \\ \\left( 12 \\mu, \\ 12 \\mu + \\sqrt{2} \\sigma \\sqrt{\\log{\\left(96 \\right)}}\\right)\\right]$"
],
"text/plain": [
"⎡⎛ _________⎞ ⎛ _________\n",
"⎣⎝\\mu, \\mu + 2⋅√6⋅\\sigma⋅╲╱ log(96) ⎠, ⎝12⋅\\mu, 12⋅\\mu + √2⋅\\sigma⋅╲╱ log(96) \n",
"\n",
"⎞⎤\n",
"⎠⎦"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[\n",
" (\n",
" E_inference.subs({p1: 1, p2: 12, n: 96}),\n",
" E_total .subs({p1: 1, p2: 12, n: 96}),\n",
" ),\n",
" (\n",
" E_inference.subs({p1: 12, p2: 1, n: 96}),\n",
" E_total .subs({p1: 12, p2: 1, n: 96}),\n",
" ),\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let $\\mu$ be the average of dataparallel(12, 1) / 12 and dataparallel(1, 12)\n",
"\n",
"Then, we can similarly compute $\\sigma$."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"dp2 = (15e3, 15e6)\n",
"dp1 = (16e4, 4e6)\n",
"mu_v = np.mean([dp2[0], dp1[0] / 12])\n",
"sigma_v = np.mean(np.array([\n",
" (dp2[1]-mu_v) / np.sqrt(24), (dp1[1]-12*mu_v) / np.sqrt(2)],\n",
" dtype=float) / np.sqrt(np.log(96)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Produce a graph\n",
"\n",
"For the parameter sweep, I will go through all possible factors of 12."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Total latency')"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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jasTe1lJGZetvmwKazX7FWsw8lB4PyNheir94RzLawqvOPOAC3MsR0RERESKUEN1Ay9f+XKu23JdznkuXXUpDdUNU1ir2a9Yb9O6EzgIrDSz02Kmvyq8/3y0QpxzLc45i3sBF4XZbomkiYiIiMgs9ZFzPsJZjbndrnVW41l85JyPTHGNZr+iDEbCiFdfD/9+IwzNC4CZvR//fJHbnHMPRNLfbWYbzezT01tbERERESkGVWVVfOvib/GqNa+irCT+BqKykjJeteZVfPv536aytHKaazj7FOttWuCH470YuADYYma344fnPRfYA7wla/4GYC2wZDorKSIiIiLFo6qsik+c/wneddq7+MmWn3Bf6310D3ZTW1bL2U1nc9nqy3RrVh4VbTDinOs1s4uAjwKvBy4F9gHrgY8755IeiCgiIiIiMqqG6gbefsrbefspby90VWa1og1GAJxzPcA/h9dY814JXDmOsjcA6iciIiIiIjJFirLPiIiIiIiIFD8FIyIiIiIiUhAKRkREREREpCAUjIiIiIiISEEoGBERERERkYJQMCIiIiIiIgWhYERERERERApCwYiIiIiIiBSEghERERERESkIBSMiIiIiIlIQ5pwrdB2OCGbWUVlZWb9y5cpCV0VEREREJG+2bdtGX19fp3NuznjzKhiZJmbWCtQATxW6LlMkFWVtK2gtipvacPLUhvmhdpw8tWF+qB0nT204eWrDsS0DDjnnmsabUcGI5IWZPQbgnDux0HUpVmrDyVMb5ofacfLUhvmhdpw8teHkqQ2nlvqMiIiIiIhIQSgYERERERGRglAwIiIiIiIiBaFgRERERERECkLBiIiIiIiIFIRG0xIRERERkYLQlRERERERESkIBSMiIiIiIlIQCkZERERERKQgFIyIiIiIiEhBKBgREREREZGCUDAiIiIiIiIFoWBEREREREQKQsHILGJmNWZ2qZn9t5ltMrNeM+s2s4fM7J/NrG6UvFeY2b1m1mVm+8zsRjO7YIzlPSvMty/ku9fM3jRGnqPN7GozeybUb7OZ/YuZVY2Sp9rMPhnm7Q15/8fMlo7dKpNnZgvNbLeZOTPbOsa8asfDl7vIzL4QvpM9YT3/aGafT5j/pWZ2m5l1hNcGM3vxGMs40cyuNbM9YRmPmNl7zSxxH2dm883sq2a2w8z6wvtXzGzeKHlKzex9ofye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\n",
"text/plain": [
"<Figure size 900x600 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"factors = [1, 2, 3, 4, 6, 12]\n",
"n_v = 96\n",
"params_v = {n: n_v, mu: mu_v, sigma: sigma_v}\n",
"\n",
"xs = []\n",
"ys = []\n",
"for p1_v, p2_v in zip(factors, factors[::-1]):\n",
" xs.append(float(E_inference.subs({**params_v, p1: p1_v, p2: p2_v})))\n",
" ys.append(float(E_total.subs({**params_v, p1: p1_v, p2: p2_v})))\n",
"\n",
"%matplotlib inline\n",
"import matplotlib\n",
"matplotlib.rcParams['figure.dpi'] = 150\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca()\n",
"ax.set_title(\"Analytical model of NNs (128 threads/core)\")\n",
"ax.plot(xs, ys, label=\"Data parallel (analytical)\", marker=\"\")\n",
"ax.plot([75000], [6e6], label=\"Pipelined (empirical)\", marker=\"o\", linestyle=\"\")\n",
"ax.plot([dp1[0], dp2[0]], [dp1[1], dp2[1]], label=\"Data parallel (empirical)\", marker=\"o\", linestyle=\"\")\n",
"ax.legend()\n",
"ax.set_xlabel(\"Per-inference latency (AKA end-to-end latency)\")\n",
"ax.set_ylabel(\"Total latency\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment