Skip to content

Instantly share code, notes, and snippets.

@cicdw
Created March 24, 2017 21:43
Show Gist options
  • Save cicdw/7a924df888404dbb860fd36a2fa53456 to your computer and use it in GitHub Desktop.
Save cicdw/7a924df888404dbb860fd36a2fa53456 to your computer and use it in GitHub Desktop.
async plots
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Imports and initial setup"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import dask.array as da\n",
"import numpy as np\n",
"import time\n",
"\n",
"from dask import delayed, persist\n",
"from dask.distributed import Client, as_completed\n",
"from dask_glm.algorithms import local_update\n",
"from toolz import partition_all"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<Client: scheduler='tcp://127.0.0.1:8786' processes=8 cores=8>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"client = Client()\n",
"client"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data Setup"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## create inputs with a bunch of independent normals\n",
"beta = np.random.random(100) # random beta coefficients, no intercept\n",
"X = da.random.normal(0, 1, size=(2000000, 100), chunks=(40000, 100))\n",
"y = X.dot(beta) + da.random.normal(0, 1, size=2000000, chunks=(40000,))\n",
"\n",
"## make sure all chunks are ~equally sized\n",
"X, y = persist(X, y)\n",
"client.rebalance([X, y])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting Setup"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"metrics_v1 = pd.DataFrame(columns=['primal_res', 'dual_res', 'time', 'eps_primal', 'eps_dual',\n",
" 'num_zeros'])\n",
"metrics_v2 = metrics_v1.copy()\n",
"metrics_base = metrics_v1.copy()\n",
"\n",
"def update_metrics(df):\n",
" '''Will look in current namespace for all the variables it needs;\n",
" written purely for convenience and DRY'''\n",
" \n",
" ## update metrics\n",
" df = df.append({\n",
" 'time_elapsed': time.time() - START, ## this isn't quite appropriate; time passed is what we want\n",
" 'primal_res': np.linalg.norm(betas - z),\n",
" 'dual_res': np.linalg.norm(rho * (zold - z)),\n",
" 'eps_primal': np.sqrt(p * nchunks) * abstol \\\n",
" + nchunks * reltol * np.maximum(np.linalg.norm(betas), np.linalg.norm(z)),\n",
" 'eps_dual': np.sqrt(p * nchunks) * abstol \\\n",
" + nchunks * reltol * np.linalg.norm(rho * u),\n",
" 'num_zeros': (z == 0).sum()}, ignore_index=True)\n",
" return df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Algorithmic Setup"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def local_f(beta, X, y, z, u, rho):\n",
" return ((y - X.dot(beta)) **2).sum() + (rho / 2) * np.dot(beta - z + u, \n",
" beta - z + u)\n",
"\n",
"def local_grad(beta, X, y, z, u, rho):\n",
" return 2 * X.T.dot(X.dot(beta) - y) + rho * (beta - z + u)\n",
"\n",
"\n",
"def shrinkage(beta, t):\n",
" return np.maximum(0, beta - t) - np.maximum(0, -beta - t)\n",
"\n",
"## set some algorithm parameters\n",
"MAX_TIME = 120 # in seconds\n",
"lamduh = 7.2\n",
"rho = 1.0\n",
"\n",
"abstol = 1e-4\n",
"reltol = 1e-2\n",
"\n",
"(n, p) = X.shape\n",
"nchunks = X.npartitions\n",
"ncores = sum(client.ncores().values())\n",
"XD = X.to_delayed().flatten().tolist() # imagine a list of numpy arrays, one for each chunk\n",
"yD = y.to_delayed().flatten().tolist()\n",
"XD = client.compute(XD)\n",
"yD = client.compute(yD)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Standard ADMM"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# the initial consensus estimate\n",
"z = np.zeros(p)\n",
"\n",
"# an array of the individual \"dual variables\" and parameter estimates,\n",
"# one for each chunk of data\n",
"u = np.array([np.zeros(p) for i in range(nchunks)])\n",
"betas = np.array([np.zeros(p) for i in range(nchunks)])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"START = time.time()\n",
"time_elapsed = 0\n",
"\n",
"while time_elapsed < MAX_TIME:\n",
" \n",
" # process each chunk in parallel, using the black-box 'local_update' magic\n",
" betas = [delayed(local_update)(xx, yy, bb, z, uu, \n",
" rho, f=local_f, fprime=local_grad) for\n",
" xx, yy, bb, uu in zip(XD, yD, betas, u)]\n",
" betas = np.array(da.compute(*betas))\n",
" \n",
" # everything else is NumPy code occuring at \"master\"\n",
" # beta_hat = 0.9 * new_betas + 0.1 * z\n",
"\n",
" # create \"consensus\" estimate\n",
" zold = z.copy()\n",
" ztilde = np.mean(betas + np.array(u), axis=0)\n",
" z = shrinkage(ztilde, lamduh / (rho * nchunks))\n",
" \n",
" # update dual variables\n",
" u += betas - z\n",
" \n",
" metrics_base = update_metrics(metrics_base)\n",
" time_elapsed = time.time() - START"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Async version 1: single updates"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# the initial consensus estimate\n",
"z = np.zeros(p)\n",
"\n",
"# an array of the individual \"dual variables\" and parameter estimates,\n",
"# one for each chunk of data\n",
"\n",
"count = 0\n",
"u = np.array([np.zeros(p) for i in range(nchunks)])\n",
"betas = np.array([np.zeros(p) for i in range(nchunks)])\n",
"\n",
"starting_idx = np.random.choice(nchunks, size=ncores*4, replace=True)\n",
"new_betas = [client.submit(local_update, XD[i], yD[i], betas[i], z, u[i], \n",
" rho, f=local_f, fprime=local_grad) for\n",
" i in starting_idx]\n",
"index = dict(zip(new_betas, starting_idx))\n",
"pool = as_completed(new_betas)\n",
"\n",
"START = time.time()\n",
"time_elapsed = 0\n",
"\n",
"for future in pool:\n",
" \n",
" local_beta = future.result()\n",
" i = index.pop(future)\n",
" betas[i] = local_beta\n",
" \n",
" zold = z.copy()\n",
" ztilde = np.mean(betas + np.array(u), axis=0)\n",
" z = shrinkage(ztilde, lamduh / (rho * nchunks))\n",
"\n",
" u[i] += local_beta - z\n",
" \n",
" metrics_v1 = update_metrics(metrics_v1)\n",
" \n",
" time_elapsed = time.time() - START\n",
" if time_elapsed > MAX_TIME:\n",
" break\n",
" \n",
" i = np.random.choice(nchunks, size=1, replace=False)[0]\n",
" new_fut = client.submit(local_update, XD[i], yD[i], betas[i], z, u[i], \n",
" rho, f=local_f, fprime=local_grad)\n",
" index[new_fut] = i\n",
" pool.add(new_fut)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# the initial consensus estimate\n",
"z = np.zeros(p)\n",
"\n",
"# an array of the individual \"dual variables\" and parameter estimates,\n",
"# one for each chunk of data\n",
"\n",
"count = 0\n",
"u = np.array([np.zeros(p) for i in range(nchunks)])\n",
"betas = np.array([np.zeros(p) for i in range(nchunks)])\n",
"\n",
"starting_idx = np.random.choice(nchunks, size=ncores*4, replace=True)\n",
"new_betas = [client.submit(local_update, XD[i], yD[i], betas[i], z, u[i], \n",
" rho, f=local_f, fprime=local_grad) for\n",
" i in starting_idx]\n",
"index = dict(zip(new_betas, starting_idx))\n",
"pool = as_completed(new_betas)\n",
"\n",
"START = time.time()\n",
"for batch in partition_all(10, pool):\n",
" \n",
" local_betas = client.gather(batch)\n",
" idx = [index.pop(future) for future in batch]\n",
" betas[idx] = local_betas\n",
" \n",
" zold = z.copy()\n",
" ztilde = np.mean(betas + np.array(u), axis=0)\n",
" z = shrinkage(ztilde, lamduh / (rho * nchunks))\n",
"\n",
" u[idx] += local_beta - z\n",
" \n",
" metrics_v2 = update_metrics(metrics_v2)\n",
" \n",
" time_elapsed = time.time() - START\n",
" if time_elapsed > MAX_TIME:\n",
" break\n",
" \n",
" new_idx = np.random.choice(nchunks, size=10, replace=False)\n",
" new_fut = [client.submit(local_update, XD[i], yD[i], betas[i], z, u[i], \n",
" rho, f=local_f, fprime=local_grad) for i in new_idx]\n",
" index.update(dict(zip(new_fut, new_idx)))\n",
" [pool.add(nf) for nf in new_fut]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plots"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x119545d68>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n8kceeaRM/WjSpAkAP/30U6HnfvzxR6/HS5YsITo6mnfffdcz1ALw73//26/2PvzwQ9LT072yE5t9\nHKdKTk4mIiKC5OTkQtmQTz/9lGeeeYZdu3aVuJBVnuPHj7Ns2TIaN27MOcVEi1FRUQwcOJCUlBT6\n9u1LzZo1feonuLMaL7zwAk6nk+HDh/t8nsjpLqTv5vjsl89oW7ctDuPuZrgznHBHOMcyj3kdFxOj\nW0MleFwul9ctgwC1atWiQYMGXsMGsbGxHD58uND5RWUaVq9ezRdfFL7N2Rf16tWjXbt2zJ8/32ve\nwMqVK9m4cWOhto0xXgs5bd++nddff93n9vr27UtWVhZz5871lLlcLp555hmf7uZITU2la9euDBky\nhMGDB3v93HPPPVhri8ySFJSRkcHIkSM5ePAgDz74YInH3n333fzjH//goYceKv0F5tOjRw8mT57M\ns88+S506dfw6V+R0FrKZCZd18c6Wd7ij8x1e5bViarH1oHdqWJkJCaajR49y5plnMmTIEM4//3zi\n4uJYuXIl33zzjdcSyx06dODVV1/lrrvuolOnTsTFxdG/f3/69+/PkiVLGDhwIP369WPr1q3MmzeP\n8847zzP+76+pU6fSv39/unTpwrhx49i/fz/PPvssrVu39qqzX79+zJw5k969e5OUlMTevXt57rnn\nOPvss4u8LbUoAwYMoEuXLtx3331s27aNVq1asWTJkiInQBa0evVqtmzZwm233Vbk8w0aNKB9+/ak\npKRwzz33eMp3797tWdTq2LFjbNy4kUWLFrF3717uvvvuUodF2rZtS9u2bX16ffkZY3jggQf8Pk/k\ndBeywcSBEwc4fPIwbet6/0JoWK1hkZkJBRMSLDExMdx888289957LF26FJfLRYsWLZg7d67XXhA3\n3XQT69ev56WXXmLWrFk0adKE/v37M2bMGPbu3cu8efN47733aNWqFSkpKbz66qt88sknXm0Vt7dG\nwfLevXuzaNEiHnroIR544AGaN2/OSy+9xLJly7zq7NGjBy+88ALTpk3jjjvuoFmzZkyfPp1t27YV\nCiZKavuNN97g9ttvJyUlBWMMV155JTNnzix1DYbU1FSMMSWuIjlgwAAmTZrE999/T+vWrQFYt24d\no0aNwhhDfHw8jRo14sorr+Taa6+lY8eOpb4//vDlvFDf80SkspmyTOoKaAeMSQJSkpOTGTFihKf8\nh30/0Hpuaz4b9xkXN7rYU971xa40S2jGy4P+2Klw1ix46CEo45c8CYC1a9fSoUMH1qxZQ/uqNhlC\nRCRElfa7NSUlhZEjRwKMsNamFjqggoTsnIm9x/cCUDe2rld5VFgUr/7wKr8e/dVTlrectla8FRER\nqXghG0z8duw3AOrGeQcTN3e6mZM5J/ly15eespgYdyCRkVGhXRQRERFCOJjYe2wvMeExxEXEeZX3\nbNYTgJM5+WfRu//UvAkREZGKF7LBxKGMQ9SIqlGoPDLMvTTwyew/gom8W98VTIiIiFS8kA0mjmUe\nIz6y8HK54Y5wDIaM7D/GNPIyE1prQkREpOKFdDBRcIgD3Ldo1Yqpxb7j+zxlGuYQERGpPKEbTGQV\nHUwANElowo7Df2y+kzfMocyEiIhIxQvdYKKYzARAk+pN2H5ou+exMhMiIiKVJ6SDidjw2CKfa1K9\n6MyEggkREZGKF7LBxPHM48VmJtrVa8eWA1v4Yd8PgCZgioiIVKaQDSZKGua4uvXVxEfE858f/gNA\nRASEhSkzISIiUhmqZDAR4YxgRJsRPL/2eTJzMgFtQy6Vb8yYMTRr1izo7TgcDh599NGgtxMMVbnv\nErqstbRp04apU6f6dPzEiRNxOMp2+cs798CBA2U6H2DevHk0adKErKysMtcRaqpkMAFw60W38tux\n31i8cTGgbcil8hljyvwLSkq2adMmJk2axM6dOyu7K1XO4cOHiYqKwul08uOPPxZ5zNixY3E4HJ6f\n+Ph4mjdvztChQ1myZAlFbQjZvXt3HA4HLVu2LLLO999/31PfkiVLPOXz58/3lH/++edFntuoUSMc\nDgdXXHGFT68xNTWVXbt2ceutt/p0fHn+r/qzg+zUqVN5/fXXC5WPGTOGzMxM5s2bV6Y+hKKQ/c1X\nWjDRqnYrWp7RktW7VwPahlwq37/+9S82b95c2d04JW3cuJFJkyaxffv2yu5KlbNo0SIcDgf16tUj\nJSWl2OOioqJISUkhOTmZWbNmMWLECLZs2cKQIUPo2bMnxwpsy2yMITo6mi1btvDNN98Uqi8lJYXo\n6OhiL7zR0dGkphbe5PLjjz9m9+7dREVF+fwaZ8yYQWJiInFxxV8z8nv44YdJr4BU9uOPP15kMBEZ\nGcno0aOZOXNm0PtQUUIymMh2ZXMy52SJwQRAjegaHD15FPhj51CRyuJ0OgkPD6/sbpySrLU+fxsU\nb8nJyfTr14/ExMQiL955wsLCSExMJCkpiWuvvZZHH32Ub7/9lmnTprFq1Squv/76Quc0b96cli1b\nsnDhQq/ykydPsnTpUvr161dse3379mXRokW4XC6v8tTUVDp27Ei9evV8en3ffvst69evZ9iwYaUe\nmxdAOBwOIiIifKo/WIYNG8b27dtZtWpVpfYjUEIymDie6U4xFHdraJ74iHiOZv4RTCgzIcFy7Ngx\nbr/9dpo1a0ZUVBR169alV69erFu3znNMwTkTO3bswOFwMHPmTJ5//nlatGhBVFQUF154YZHf5BYt\nWsR5551HdHQ0bdu2ZdmyZT7Pw9izZw/jxo2jXr16REVF0bp1a1588cVSz8vr48svv1zouYLzG/LG\nin/88UeGDRtG9erVqVWrFrfffjsnT570OjczM5M77riDOnXqUK1aNQYOHMju3bsLtbFz505uuukm\nzjnnHGJiYqhVqxbDhg1jx44/bv2eP3++50KRl1p3Op188sknnmPefvttunXrRlxcHNWqVaN///5s\n3Lix1Nd/8OBB7r77btq2bUt8fDzVq1enb9++fPfdd4WOfeaZZ2jdujWxsbHUrFmTTp068corrwCw\natUqHA5Hkd9CU1NTcTgcrF7tzqKOGTOG+Ph49uzZw8CBA4mPj6dOnTrcc889hYYTrLU8/fTTtG3b\nlujoaOrUqcPll1/O2rVrS31tAL/88guffvopiYmJXH311WzdupUvv/yy9BPzuffee+nVqxeLFi1i\ny5YthZ5PTEzkP//5j1fZ8uXLOXHiBMOGDStyiMQYQ2JiIvv372flypWe8qysLF577TWSkpKKPK8o\ny5YtIzIykq5du3qV531eN23aRFJSEjVr1vQcU9SciYyMDG677TZq167t+czu2bOn2Hk+Bw8eZMyY\nMdSoUYOEhATGjRtHRr6tqx0OB+np6bz00kueYZ1x48Z5nm/fvj01a9Ys8jNTFYVkMHEs051OKy0z\nUS2yGkdOHgE0AVOCa/z48cybN4+hQ4cyd+5c7rnnHmJiYti0aZPnmOLGUlNSUpgxYwYTJkxgypQp\nbN++nauuuoqcnBzPMStWrGD48OFERkYybdo0Bg8ezLXXXsvatWtL/Ua+b98+LrroIj788ENuu+02\nZs+ezdlnn821117L7NmzA/Ye5PVj2LBhZGZmMm3aNPr168fs2bMZP36817F5bffp04cnnniC8PBw\n+vXrV+i1fP3113z55ZckJibyzDPPcOONN/LBBx/Qo0cPzy/mSy65hNtuuw2Ahx56iOTkZBYsWMC5\n554LwIIFC+jfvz/x8fFMnz6dRx55hE2bNtG1a9dS51hs3bqV5cuXM2DAAJ566inuvfdevv/+e7p3\n785vv/3mOe7555/nb3/7G61bt+bpp5/m0Ucf5YILLvAECN27d6dRo0ZFDiOkpKTQokULLrroIs/7\n6HK56N27N7Vr1+bJJ5+ke/fuzJw5k3/+859e544bN4477riDJk2aMH36dO6//36io6N9DghSU1OJ\ni4ujX79+dOrUiebNm5c41FGca665BpfL5XXhz5OUlMSePXu8vmEvXLiQnj17Urt27WLrbNq0KZ07\nd/bKarz11lscOXKE4cOH+9y3L774gtatW+N0Or3K8z5rQ4cOJSMjg6lTp3qyK0X9Xx09ejRz5syh\nf//+TJ8+nejo6CI/s+AO8oYNG8bx48eZNm0aV199NfPnz2fSpEmeY5KTk4mIiKBbt24kJyeTnJxc\n6P9J+/bt+eyzz3x+rSHNWlupP0ASYJOTk22ezb9vtkzEfrL9E1uSMcvG2M7/6myttfaKK6zt37/E\nwyWI1qxZYwG7Zs2ayu5KUCQkJNhbb721xGPGjBljmzVr5nm8fft2a4yxtWvXtocPH/aUL1++3Doc\nDrtixQpPWZs2bWzjxo1tenq6p+yTTz6xxhivOq211hhjJ02a5Hl87bXX2oYNG9qDBw96HZeYmGhr\n1KhhMzIyiu1zXh/nz59f6LmC7UycONEaY+ygQYO8jrv55putw+GwGzZssNZau379emuMKfR+jRgx\nwjocDq86i+rb6tWrrTHG63fCa6+9Zh0Oh/3444+9jj127JitUaOGnTBhglf5vn37bEJCgh0/fnyx\nr91aazMzMwuV7dixw0ZFRdnJkyd7ygYOHGjbtGlTYl0PPPCAjY6OtkeOHPGU/f777zY8PNw++uij\nnrIxY8ZYh8Nhp0yZ4nV++/btbadOnTyPP/zwQ2uMsXfccUeJ7Zakbdu29pprrvE8fvDBB22dOnVs\nTk6O13Fjxoyx8fHxxdazbt06a4yxd911l6ese/funvekU6dO9vrrr7fWWnvo0CEbGRlpk5OT7apV\nq6wxxi5evNhz3ksvvWQdDodds2aNnTNnjq1evbrnczBs2DDbs2dPa621TZs2tQMGDCj1NTZq1MgO\nHTq0UHne53XkyJFFPudwODyP165dW+j1WWvt2LFjC31m8+rNe715Bg8ebGvXru1VFhcXZ8eOHVts\n38ePH28CDrUmAAAgAElEQVRjY2NLfH2l/W5NTk62gAWSbCVey6t0ZqJZQjP+t/9/gCZgVjXpWems\n/XVtUH/SswKXqkpISGD16tX8+uuvfp87fPhwqlWr5nnctWtXrLVs3boVgF9//ZXvv/+e0aNHEx0d\n7XVcmzZtSq1/yZIlDBgwgJycHPbv3+/56dWrF4cPH/Y5Je4LYww333yzV9mtt96KtZa33noLcGdZ\njDGFZtbffvvthVLXkZGRnr9nZ2dz4MABzjrrLBISEnzq98qVKzl8+DDDhw/3eu3GGC666CI++uij\nEs/PP8fF5XJx4MABYmJiaNmypVf7CQkJ7Nq1q8jhqTyjRo0iIyOD1157zVP2yiuvkJOTw4gRIwod\nX/BbateuXT2fCYDFixfjcDh45JFHSnwNxfnuu+/YsGEDSUlJnrLExETS0tJ49913/aorb2Lj0aNH\ni3w+KSmJJUuWkJ2dzaJFiwgLC2PgwIGl1jts2DDS09N58803OXbsGG+++WaR71VJ9u/fT40aNYp8\nzhhT6H0uyjvvvIMxhhtvvNGrPO+z7Uu9Xbt2Zf/+/YUmqpakRo0anDhxwmt4pKoKq+wOFCVvHkRR\nW5DnVyOqhueCoQmYVcvmtM10+GeHoLax5oY1tK/fPiB1TZ8+nTFjxtCoUSM6dOhA3759GTVqlE/z\nGRo1auT1OCEhAXCPuQKe+QHNmzcvdG6LFi349ttvi637999/59ChQ/zzn/8s8jYzYwz79u0r4syy\na9Gihdfj5s2b43A4PHda7Ny5E4fDUej1FHULYUZGBo8//jgvvfQSu3fv9vziNsZw+PDhUvvy008/\nYa2lR48ehZ4zxlC9evUSz7fWMmvWLObOncu2bds8Q0/GGGrVquU57u9//zsffPABF154IS1atKBX\nr14kJSVx8cUXe72+Tp06kZKSwtixYwH3MEPnzp0566yzvNqNiorijDPO8CqrUaOG5zMB7iGYBg0a\neD4vRTl48CCZmZmex9HR0Z7ANTk5mbi4OJo2bcrPP/8MuIO3Jk2akJKSwuWXX17ie5Nf3gUyPr7o\n38nDhw/nnnvu4a233iI1NZX+/fsTG1vynDeAWrVqcdlll5Gamsrx48dxuVwMGTLE537lKeqCn8eX\n/6N5c4cKHlvws55f48aNvR7nBTQHDx70+a6S/J/3qi40g4ncOzRKy0xEOCM8i1ZpAmbVck6tc1hz\nw5qgtxEoQ4cOpVu3bixdupT33nuPGTNm8MQTT7B06VJ69+5d4rkFx3LzlPQL0Fd5M+FHjhzJ6NGj\nizymbdu2xZ5f3C+xgjPsS1KeX4S33HIL8+fP54477qBz585Ur14dYwxXX321T31wuVwYY0hOTqZu\n3bqFng8LK/lX3JQpU3jkkUe47rrrmDx5MjVr1sThcPC3v/3Nq/1zzjmHH3/8kTfffJN33nmHJUuW\n8Nxzz/GPf/yDf/zjH57jRo0axe23386ePXs4ceIEX375Jc8991yhdov7TPhr8ODBfPzxx4D732H0\n6NG88MILgDsrcvz4cVq1auV1jjGG33//nfT0dGLyNjYqxffffw8Uf3GtV68el1xyCU8++SSff/65\n17oSpUlKSuL666/n119/5fLLLy82YCnOGWec4RWEFZQ/2xdIgfh/ffDgQWJiYrwydFVVSAYTecMc\n8RElf6ginBG4rItsVzYxMWHKTFQhMeExAcsaVJS6desyYcIEJkyYQFpaGhdccAFTpkwpNZgoTZMm\nTQCKnClfVFl+tWvXJj4+npycHC699FK/2877NnXo0CGv8vx3UxT0008/efqc10eXy+X5VtekSRNc\nLhc///wzZ599tue4otbgWLx4MWPGjGH69OmespMnTxbqT3EBS/PmzbHWUrt27TK9/sWLF3PppZcW\nmvh46NChQpMHo6OjGTp0KEOHDiU7O5tBgwYxZcoU7r//fs9thsOHD+fOO+9k4cKFpKenExER4dMt\ni8W9tvfee49Dhw4Vm52YOXOm14W0QYMGgPvukl27djF58mTOOcc7qD548CA33HADy5Yt8xoCKcnL\nL7+Mw+Hgr3/9a7HHJCUlcd1111GzZk2/sh6DBg1i/PjxrF69utBdIb4455xz2LZtm9/n5Zf3md22\nbZtXRu2nn34qV72lBdrbtm3zTCSu6kJyzsTRzKMYDDHhJUfNkWHuaC4zJ1OZCQkal8vFkSNHvMpq\n1apFgwYNCt0SWRb169endevWvPzyy14L6Xz88cds2LChxHMdDgdXXXUVixcv5ocffij0fFpaWonn\nx8fHU6tWLa/bLAHmzJlT7Cz2OXPmeJXNnj0bYwx9+vQB4PLLL8daW+hOklmzZhWq0+l0FspAzJ49\n2+tOF4DY2FistYWCjN69e1OtWjUef/xxsrOzC/W3tNfvdDoLfZNctGhRodtYCy6dHBYWxrnnnou1\n1mtJ5DPOOIPLL7+cBQsWkJKSQp8+fahZs2aJfSjOVVddhcvl8rpDoKALLriASy+91POTFzjkDXHc\nfffdDB482Ovn2muvpUWLFj7f1TFt2jRWrlzJ8OHDixyKyzNkyBAmTpzInDlzSs0I5RcbG8v/+3//\nj4kTJzJgwACfz8vz5z//me+//75cS1P37t0ba22hLNIzzzxTrsxbbGxsoc9sfmvXrvUaKqvKQjIz\ncfTkUeIi4kr9R4xwur8NZGRnEBMTo2BCguLo0aOceeaZDBkyhPPPP5+4uDhWrlzJN998E7AV7B5/\n/HEGDhzIxRdfzNixYzlw4ABz5syhTZs2pU7oyltU6KKLLuL666+nVatWHDhwgDVr1vDhhx+WekG9\n7rrrmDZtGtdffz0dO3bkk08+8cxFKMq2bdu48sor6dOnD59//jkpKSmMHDnSM1n0/PPPJzExkeee\ne45Dhw5x8cUX88EHH/Dzzz8XqrN///4sWLCAatWq0apVK7744gs++OADr/kKAO3atcPpdPLEE09w\n6NAhIiMj6dmzJ7Vq1WLu3LmMGjWK9u3bM3z4cGrXrs3OnTtZsWIFf/nLX0q8PbZ///489thjjBs3\njosvvpgNGzaQkpJS6KLZq1cv6tWrR5cuXahbty4bN2703EZYcG7AqFGjGDJkCMYYJk+eXOJ7X5Lu\n3btzzTXXMHv2bP73v//Rp08fXC4Xn376KZdeeik33XRTkedlZmayZMkS/vrXvxa7MNMVV1zB7Nmz\nSUtL87zX2dnZngAjIyODHTt2sHz5cjZs2EDPnj1LXfq5WrVqPk8WLfg5uOaaa3w6ryhXXnklkydP\n5uOPP+ayyy4rUx3t27fnqquuYtasWaSlpdG5c2c+/vhjT2airAFFhw4deP/993nqqado0KABzZo1\n48ILLwRgzZo1HDhwwKeJqlVBaAYTmUdLnXwJ0KKme/zu+33fExvbjfR0sBZOgbksEkJiYmK4+eab\nee+991i6dCkul4sWLVowd+5cbrjhBq9jC/7SKW7tiYLl/fv3Z+HChUycOJH77ruPFi1a8MILL7Bg\nwYJCiy8VPLdOnTp89dVXPProoyxdupS5c+dyxhlncN5553kNHxTnkUceIS0tjddee41FixbRt29f\n3n77berUqVPk6/nPf/7Dww8/zP33309YWBi33XZboXZefPFF6tSpQ0pKCq+//jo9e/ZkxYoVNGrU\nyKvO2bNnExYWRmpqKhkZGfzlL3/h/fffp3fv3l7H1a1bl3nz5jF16lSuu+46cnJy+Oijj+jWrRuJ\niYk0bNiQadOmMWPGDE6ePEnDhg3p2rWrZyJkcR544AHS09NJTU3l1VdfpUOHDrz11lvcd999Xu1P\nmDCBlJQUnnrqKY4dO8aZZ57J7bffzoMPPliozgEDBlCjRg2stcXuLVHcxalg+UsvvcT555/Pv//9\nb+69916qV69Ox44dS/w2u2LFCg4fPlzivhYDBgxg5syZvPLKK9xyyy2Ae3hp1KhRgPszX6dOHTp0\n6MDEiROLveD5cpEt7vPvy3m+HNe+fXvatGnDq6++6lcwUbDuBQsWUL9+fRYuXMjSpUvp2bMnr7zy\nCi1btvRrae/8Zs6cyfjx43n44Yc5ceIEo0eP9gQTixYtokmTJnTv3r1MdYecyrwv1RazzsRd795l\nWz7Tssh7avP77ehvlonY5ZuX2wULrAVrT5wo9TQJglN9nYnK0q5dO9urV6/K7oa19o978/fv31/Z\nXQlp2dnZtk6dOoXWIZDgWbBgga1evbrXei6B8O2331pjjE1NTQ1ovSdPnrT169e3zzzzTKnHnrbr\nTBhjHMaYx4wxW40x6caYLcaYh/yp4+hJ3zITeXMq0rPSyZuUrEmYUhVlZ2cXmiewatUq1q9fX+Rt\njxK6li5dSlpamudbvgTfiBEjaNy4caH5PP4oaq2HWbNm4XQ66datW3m6V8iLL75IRESET2tglJcx\n5n5jzFfGmCPGmL3GmKXGmD8Vcdyjxpg9udftlcaY4u+LLUIwhjnuA8YDo4CNQEfgJWPMIWvts75U\ncDTzaKm3hQJEh7tv+UnPSqdB7rDl8eNQxvlOIpVm9+7dXHbZZYwcOZIGDRqwadMm5s2bR4MGDSrk\nF46U31dffcX69euZPHky7du35y9/+Utld+m0YYwpcj8Vf0yfPp01a9bQo0cPwsLCeOutt3j33XcZ\nP348DRs2DFBP3caPH1+R/6+7As8A3+C+5k8F3jPGnGutPQFgjPk7cAvu6/Z2YDLwbu4xmUXWWkAw\ngok/A69ba9/JfbzTGJMEXOhrBccyj5V6WyhAmCOMCGeEV2ZCkzClKqpRowYdO3bk3//+N7///jux\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11a8d1be0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"x, y = 'time_elapsed', 'primal_res'\n",
"\n",
"ax = metrics_base.plot(x=x, y=y, label='standard ADMM', title=y)\n",
"metrics_v1.plot(x=x, y=y, ax=ax, secondary_y=True, label='single update async-ADMM')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x11b3cadd8>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nC35+fhhaaLBVq1bodDqqVq1qsM7du3fr6/Pz89OXL1u2TF9+6NAhg8eWK1cOnU5Ht27dMnSNvr6+\nBAUFMWLEiAzt/yq/q5lZQXbatGls2LAhVbmnpyfR0dEsXLgwSzEoEBwMbdvC/v3awl3u7tlXd7yM\n5/Dtw4zbOY4qc6vQYFED/vj3D5qWbcqqPqt4OPYhq/qsokWFFnluNWH1CZUH/Prrr1y8eNHYYeRL\n58+fZ+LEiQQGBho7lDxn9erV6HQ67O3t8fHxSXM/MzMzfHx88Pb2Zvbs2fTr14+rV6/Sp08f2rZt\nS3h48jnthBCYm5tz9epVjh07lqo+Hx8fzM3N0/xja25ujq9v6sUT/f39uXPnDmZmZhm+xpkzZ+Lm\n5kaRIkUytP///d//ERERkeH6s2rq1KkGkwlTU1MGDhyIl5dXjseQHwUGwjvvwPXrsHcvvPfeq9cZ\nGx/L3ht7GbF1BOV/Kk/TJU1ZfmY5bR3asq3fNm6Pvs3ibotxrelKMbNir35CI1HJRB5gYmJCwYJq\nmo6cIKXMc98Acgtvb286d+6Mm5ubwQ/vRAUKFMDNzQ13d3eGDBnCpEmTOHnyJNOnT2ffvn0MHTo0\n1TGVK1ematWqrFy5Mll5VFQU69ato3Pnzmmer1OnTqxevZr4+OTj8H19fWnYsCH29vYZur6TJ09y\n+vRpXDMwV3JiAqHT6ShUqFCG6s8prq6uBAYGsm/fPqPGkdecOQNNm2p9JQ4dgoYNs15XdFw0265s\nY+jGoZSaVYo2y9uw4dIG+tTow37P/dz9/C4Luy6kg2MHCujyR9dFlUwYWXh4OKNGjcLBwQEzMzNK\nlixJu3btOHXqlH6flH0mbt68iU6nw8vLi8WLF+Po6IiZmRmNGzc2+E1u9erV1KxZE3Nzc5ycnFi/\nfn2G+2HcvXuXwYMHY29vj5mZGbVq1eL3339/6XGJMS5fvjzVtpT9GxKfFV+6dAlXV1eKFSuGjY0N\no0aNIioqKtmx0dHRjB49Gjs7O4oWLUqPHj24c+dOqnPcunWLjz/+mGrVqlG4cGFsbGxwdXXl5s2b\n+n2WLVum/6BIbFo3MTFh//7/TYeybds2WrRoQZEiRShatChdunTh/PnzL73+kJAQxo4di5OTE5aW\nlhQrVoxOnTpx5syZVPvOnTuXWrVqYWFhQfHixWnUqBF//PEHAPv27UOn0xn8Furr64tOpyMgIADQ\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b3cac50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x, y = 'time_elapsed', 'eps_dual'\n",
"\n",
"ax = metrics_base.plot(x=x, y=y, label='standard ADMM', title=y)\n",
"metrics_v1.plot(x=x, y=y, ax=ax, secondary_y=True, label='single update async-ADMM')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment