From 05158eb23996c4d0c543e51f70795b460f48f1ef Mon Sep 17 00:00:00 2001 From: Nathaniel Hudson Date: Thu, 29 Feb 2024 09:59:21 -0600 Subject: [PATCH] Fixed strategy local param issue --- examples/notebooks/Quickstart.ipynb | 40 ++++++++++++++--------------- flox/nn/model.py | 3 ++- flox/nn/trainer.py | 16 ++++-------- flox/runtime/jobs/train.py | 7 ++--- flox/strategies/base.py | 30 ++++++++++++---------- flox/strategies/registry/fedsgd.py | 15 ++++++----- 6 files changed, 53 insertions(+), 58 deletions(-) diff --git a/examples/notebooks/Quickstart.ipynb b/examples/notebooks/Quickstart.ipynb index ace7dc3..80f6cc0 100644 --- a/examples/notebooks/Quickstart.ipynb +++ b/examples/notebooks/Quickstart.ipynb @@ -63,8 +63,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:37.110462Z", - "start_time": "2024-02-29T03:13:35.960443Z" + "end_time": "2024-02-29T15:53:15.728461Z", + "start_time": "2024-02-29T15:53:14.496871Z" } }, "id": "62dd0b4558672493" @@ -119,8 +119,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:37.644744Z", - "start_time": "2024-02-29T03:13:37.113422Z" + "end_time": "2024-02-29T15:53:16.293839Z", + "start_time": "2024-02-29T15:53:15.720563Z" } }, "id": "d512bbbaa26f61d3" @@ -145,7 +145,7 @@ { "data": { "text/plain": "
", - "image/png": "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" + "image/png": "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oDpjIGQ1M+bRP6w8j3a73egIdWKl58bKr0d/CqR59CWjYQXohwYOHKiSkhKlpKTohhtu0Jw5cxQZGVnjPi1atNDhw4clSaWlpecdP3nypCorK2uMBwcHKzw83Lt+XRUUFPzELbr0AimrmTGP/mG1eXQ4HIqJiTE6Rp3s3bvXcnvDrfZ6rC8NbR5NUYAWL16ssrIyzZgxQ3PnzlV5eblCQkJq3CckJEROp1OSLjheUVHhvX2+9esqLi7O9H/VuVwuFRQUBERWM2Me/YN5NL+uXbsaHeGS4fXoH4E0j9VZ68IUBSguLk6SVFlZqUmTJmn48OHn/IXidDrVqFEjSVJoaOg5ZcbpdKpp06YKDQ313v7vcYfD4VMuu91u+ie7WiBlNTPm0T+YR/Oy4vPC69E/Gto8GnoS9MaNG2ss69Spk86ePauIiAiVlZWdc//qw1pRUVG1jkdERCg8PFyhoaE1xquqqnT8+HFFRETU09YAAIBAYlgB+uabb5SWlqYjR454l+3atUvNmzdXYmKivvjiC+/hLEnKzc1VfHy8JCk+Pl65ubnesfLycu3evVvx8fEKCgpSXFxcjfG8vDwFBwerW7dul2DLAACA2RlWgOLi4hQbG6spU6aosLBQmzdvVlZWlh566CElJyerVatWysjI0L59+7R8+XLt3LlTt912myRp+PDh2r59u5YvX659+/YpIyNDbdq0Ue/evSVJI0eO1MqVK7Vx40bt3LlTM2bM0B133OHzITAAANAwGVaA7Ha7lixZIofDoTvvvFNTp07VqFGjdM8993jHSktLNWzYML377rvKyclRdHS0JKlNmzZ6/vnntW7dOt122206fvy4cnJyZLPZJEk333yzHnzwQU2fPl1jxozR1VdfrcmTJxu1qQAAwGQMPQk6KipK2dnZtY61a9dOq1evPu+6/fv3V//+/c87PnbsWI0dO/aiMwIAgIaHi6ECAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQABAADLoQAB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CVgRERFasWKFt/xUO3XqlEGJAlNkZKQWLlyosLAweTwe5ebmatu2bUpOTjY6WkB65pln9Otf/1qdOnUyOkrAKioqUvv27Y2OUS/YAxSgSktLdcUVV9S4ZlnLli1VWVmp48ePq3nz5gamCywjR440OkLAa9q0qfr16+e97Xa7tXr1avXp08fAVIFt4MCBKikpUUpKim644Qaj4wScTz/9VP/85z/13nvvacaMGUbHCUgej0dfffWVtmzZomXLlsnlcunGG29Uenp6g7heJnuAAlR5efk5L8Dq206n04hIgFdWVpZ2796tRx55xOgoAWvx4sV64YUX9OWXX2ru3LlGxwkolZWVevLJJzV9+nQ1atTI6DgBq6SkxPu7ZuHChXr88cf13nvvad68eUZH8wv2AAWo0NDQc4pO9W1+4GGkrKwsvfrqq3ruuefUpUsXo+MErOrzViorKzVp0iQ99thjDeKv7kshOztbPXr0qLFXEr5r3bq1tm7dqmbNmslms6l79+5yu92aPHmyMjIyZLfbjY54UShAASoqKkr/+c9/VFVVpeDg75/G0tJSNWrUSE2bNjU4HawqMzNTb7zxhrKysjhs8xOUlZUpLy9PgwYN8i7r1KmTzp49q1OnTnFou47+9Kc/qayszHuOZPUfhx988IF27NhhZLSAEx4eXuN2x44dVVlZqRMnTgT865FDYAGqe/fuCg4OVl5enndZbm6u4uLiFBTE04pLLzs7W2vWrNGzzz6rm2++2eg4Aembb75RWlqajhw54l22a9cuNW/ePOB/2VxKr732mt577z2tX79e69ev18CBAzVw4ECtX7/e6GgB5W9/+5t69+6t8vJy77Ivv/xS4eHhDeL1yG/KAOVwODR06FDNmDFDO3fu1MaNG/XSSy/pnnvuMToaLKioqEhLlizRAw88oMTERJWWlnq/UHdxcXGKjY3VlClTVFhYqM2bNysrK0sPPfSQ0dECSuvWrdWuXTvvV5MmTdSkSRO1a9fO6GgBJSEhQaGhoXriiSe0f/9+bd68WfPmzdP9999vdDS/4BBYAMvIyNCMGTN07733KiwsTBMmTND1119vdCxY0KZNm+RyubR06VItXbq0xtjevXsNShV47Ha7lixZoszMTN15551yOBwaNWoUf9jAEGFhYVq5cqXmzJmj4cOHq0mTJrrrrrsaTAGyefj0NwAAYDEcAgMAAJZDAQIAAJZDAQIAAJZDAQIAAJZDAQIAAJZDAQIAAJZDAQIAAJZDAQIAAJZDAQJgKmPHjlVGRkaNZRs2bFDXrl31/PPP11i+ZMkS/frXv/b5ewwcOFBvv/32ReUEENgoQABMJSkpSQUFBTWWbd26VZGRkdq6dWuN5Xl5eUpOTr6U8QA0EBQgAKaSmJiooqIinT592rts69atSk1NVV5enioqKrzL8/PzKUAAfhIKEABTiYuL02WXXaYvvvhCknT48GGVlJTo9ttv1+WXX67t27dLkr766iudOHFCSUlJKioqUmpqqq655hr169dP2dnZcrvdkqTnn39e48aN029+8xslJyfr888/r/H98vPzlZCQoLVr10qSTp48qcmTJ+uaa67Rddddp8zMTG/p2rp1qwYOHKgnn3xSiYmJWr58uUpKSjRmzBglJCTo2muvVWZmps6ePXuppgvAT0QBAmAqISEhio+P186dOyVJn332mXr06KEmTZqoV69e3sNgeXl56ty5szwej0aOHKnIyEi99dZbevLJJ7V69WqtWrXK+5ibNm3SLbfcoldffVVXX321d/lXX32lBx98UBMmTNBtt90mSZo6daq+++47vfHGG1qyZIkKCgo0a9Ys7zoHDx6U0+nU22+/rVtuuUWZmZlq3Lix1q9fr5ycHH3wwQf6wx/+cCmmCsBFCDY6AAD8t6SkJG8B2rp1q3r37i1JSk5O1oYNGyT9//N/NmzYIIfDoczMTAUHB6tjx44qLS1VTk6ORo8eLUlq2bKlRowYUeN7lJWV6f7779cdd9yhMWPGSJK+/vprbdy4UZ9//rkuv/xySVJmZqaGDh1a48Ts+++/X+3atZP0fSGKjY1VdHS02rVrp+XLl6tp06b1NzkA/II9QABM54cnQm/dutV7nk9ycrJ27dolp9OpvLw89erVS0VFRYqNjVVw8P//ey4hIUGlpaU6efKkJKl169bnfI/Fixfr4MGDuvLKK73LioqK5Ha79Ytf/EIJCQlKSEjQXXfdJbfbrQMHDnjv16ZNG++/77//fr333nu69tpr9eijj6qkpKTGOABzYg8QANNJSEjQ0aNHVVBQoKNHj+qaa66RJHXu3FmXX365tm3bpsLCQiUnJ3vPCfqh6vN/XC6XJCk0NPSc+wwYMEDJyclauHChbrzxRjVv3lwul0uXX3651q1bd879o6KilJ+ff87j/Z//83907bXXauPGjfrkk0+Unp6uBx54QI888sjFTwSAesMeIACm07hxY3Xv3l1vvvmm4uLi5HA4JEk2m029evXS22+/rfbt26t58+a66qqr9MUXX9Q48XjHjh1q3ry5wsPDz/s9Bg4cqN/85jeKiopSVlaWJOmqq67Sd999J5vNpnbt2qldu3aqqKjQvHnz5HQ6a32c5557Tt9++61GjBihZcuW6X/+53/04Ycf+m8yANQLChAAU+rVq5f+9Kc/nfM29+TkZG3atEm9evWSJP3qV7+S0+nU9OnTVVRUpI0bN+r555/XiBEjZLPZLvg97Ha7nnjiCb3zzjvasWOHOnbsqH79+mnSpEnauXOnvvjiC2VkZOjMmTPnPa9n//79mjVrlvbs2aN9+/Zp8+bNiomJ8c8kAKg3FCAAppSYmKgzZ854T4CulpycrPLycm8xCgsL04oVK/T1119r6NChyszM1L333qu0tLQ6fZ/evXvr+uuv16xZs+RyuTRv3jy1adNGo0eP1n333aerrrpKzz777HnXnzFjhlq2bKlRo0bpjjvuUGRkpKZOnfrTNxzAJWHzeDweo0MAAABcSuwBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlkMBAgAAlvN/AYMucYyzwpP4AAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" @@ -173,8 +173,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:38.835281Z", - "start_time": "2024-02-29T03:13:37.644055Z" + "end_time": "2024-02-29T15:53:17.582233Z", + "start_time": "2024-02-29T15:53:16.289105Z" } }, "id": "a96bec045b80edb7" @@ -235,8 +235,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:38.840225Z", - "start_time": "2024-02-29T03:13:38.834546Z" + "end_time": "2024-02-29T15:53:17.582697Z", + "start_time": "2024-02-29T15:53:17.577139Z" } }, "id": "6eaed50f2be71c98" @@ -262,13 +262,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "federated_fit::sync: 100%|██████████| 10/10 [00:14<00:00, 1.46s/it]\n" + "federated_fit::sync: 100%|██████████| 10/10 [00:16<00:00, 1.63s/it]\n" ] }, { "data": { - "text/plain": " train/loss train/epoch train/batch_idx train/time \\\n0 2.288911 0 0 2024-02-28 21:13:38.882966 \n1 2.239726 0 1 2024-02-28 21:13:38.890448 \n2 2.223471 0 2 2024-02-28 21:13:38.898720 \n3 2.169384 0 3 2024-02-28 21:13:38.907211 \n4 2.146080 0 4 2024-02-28 21:13:38.914027 \n\n node/idx node/kind parent/idx parent/kind round train/rel_time strategy \n0 8 worker 3 aggregator 0 0.042320 fedsgd \n1 8 worker 3 aggregator 0 0.049802 fedsgd \n2 8 worker 3 aggregator 0 0.058074 fedsgd \n3 8 worker 3 aggregator 0 0.066565 fedsgd \n4 8 worker 3 aggregator 0 0.073381 fedsgd ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
train/losstrain/epochtrain/batch_idxtrain/timenode/idxnode/kindparent/idxparent/kindroundtrain/rel_timestrategy
02.288911002024-02-28 21:13:38.8829668worker3aggregator00.042320fedsgd
12.239726012024-02-28 21:13:38.8904488worker3aggregator00.049802fedsgd
22.223471022024-02-28 21:13:38.8987208worker3aggregator00.058074fedsgd
32.169384032024-02-28 21:13:38.9072118worker3aggregator00.066565fedsgd
42.146080042024-02-28 21:13:38.9140278worker3aggregator00.073381fedsgd
\n
" + "text/plain": " train/loss train/epoch train/batch_idx train/time \\\n0 2.320378 0 0 2024-02-29 09:53:17.626685 \n1 2.311175 0 1 2024-02-29 09:53:17.636885 \n2 2.310607 0 2 2024-02-29 09:53:17.645890 \n3 2.293574 0 3 2024-02-29 09:53:17.657000 \n4 2.287353 0 4 2024-02-29 09:53:17.667130 \n\n node/idx node/kind parent/idx parent/kind round train/rel_time strategy \n0 8 worker 3 aggregator 0 0.043573 fedsgd \n1 8 worker 3 aggregator 0 0.053773 fedsgd \n2 8 worker 3 aggregator 0 0.062778 fedsgd \n3 8 worker 3 aggregator 0 0.073888 fedsgd \n4 8 worker 3 aggregator 0 0.084018 fedsgd ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
train/losstrain/epochtrain/batch_idxtrain/timenode/idxnode/kindparent/idxparent/kindroundtrain/rel_timestrategy
02.320378002024-02-29 09:53:17.6266858worker3aggregator00.043573fedsgd
12.311175012024-02-29 09:53:17.6368858worker3aggregator00.053773fedsgd
22.310607022024-02-29 09:53:17.6458908worker3aggregator00.062778fedsgd
32.293574032024-02-29 09:53:17.6570008worker3aggregator00.073888fedsgd
42.287353042024-02-29 09:53:17.6671308worker3aggregator00.084018fedsgd
\n
" }, "execution_count": 5, "metadata": {}, @@ -286,7 +286,7 @@ " federated_data,\n", " num_global_rounds=10,\n", " launcher_kind=\"thread\",\n", - " strategy=\"fedsgd\",\n", + " strategy=\"fedavg\",\n", " # where=\"local\"\n", ")\n", "# _, fedprox_results = federated_fit(\n", @@ -307,8 +307,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:53.435955Z", - "start_time": "2024-02-29T03:13:38.838639Z" + "end_time": "2024-02-29T15:53:33.872901Z", + "start_time": "2024-02-29T15:53:17.581004Z" } }, "id": "456bca0960a44c58" @@ -320,7 +320,7 @@ { "data": { "text/plain": "
", - "image/png": "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zZswcXGQ2w8rJR1LJ6+TCGzbtg2wr6rev39/ZsyYwamnnkp6ejoAaWlpJCYmAvZ5la644orwSftOOOEEpkyZwrBhwwCYMmUKL7/8Mjt37iQvLw+Px0NiYiJpaWm89957bN++naVLl+JyuRg8eDA//OEPufvuu7nyyit5+eWXOfbYY5k2bRoAM2bM4L333gvX86yzzuKFF17g2muvBeCNN97grLPOOjJ/pEOk0CMish8mFAJfE6a+Hup3QXMThAy4XeCNw+rk7LCW2w1JSXZAqijFWOWYzGyszBwsrzcKr0J6m/HjxzN8+HBmzJjBUUcdxSmnnMLFF18cHnJqKyMjo91ZiidNmsS//vUv/vSnP1FaWsrnn38OQCgU6rDul19+ye7du7ngggvCy4wxNDc3s2vXLkpKSjjmmGParTNq1Cjq6uoAmDhxIg888ACbNm0iKyuLjz76iDlz5nTL36CnKPSIiLQwwSA0N2HqdsGeevA1AQbcHjvkJCR2eVuWZUFikr3dXTWY6kpMcjJWXj5WQlIPvQLpCxISEli6dCkffPABb7/9Nq+88gp//OMfefjhhzuUjYuLa3d//vz5fPLJJ5xzzjl861vfIjs7m+uvv77T5wkGgwwaNIh58+Z1eCwlJQW3233Aic/p6emcdNJJvPnmm2RnZzNq1Kgunxk5WhR6RMSxTMCPaWqE3bugoR4CfjCA14PljQuHlsNlxcVDHJhAALN5oz30ldMPKzVDQ1/SwSeffML69eu54oorGDt2LNdeey2TJ0/mo48+OuB6e/bs4e9//ztLly5l5MiRALzzzjvA3qO2LMsKlx80aBA7duwgPT2dlJQUANatW8err77Kz372M4YOHdrhOT///HPy8/PD988++2yef/55cnNzOfPMMw//xfcwvdtExDGM30doVw2hsi2ENn6C2VQMZVugaQ+W14uVmISVlGQHnh5gud1YScl2z9G2MszGTwhtL8c4/JpK0l58fDxPPvkkL7/8Mtu2beMf//gHjY2NFBYWkpCQwObNm6mvr++wXlxcHAkJCbz55pts27aNtWvXsnjxYoDwdbsSEhIoKytj586djBs3jn79+vHLX/6SkpISPvzwQxYsWEBCQgJut5tvfvObfPrppzzzzDOUlpayYsUKPvzww3bB6dRTT6WsrIz333+fiRMnHpG/z+FQT4+I9En2pONm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6cltS+TUHrFF7RFb1B6xR23SuUj+LpYxxvRgXURERERigoa3RERExBEUekRERMQRFHpERETEERR6RERExBEUekRERMQRFHpERETEERR6RERExBEUekRERMQRFHpERETEEXRO6x7m8/l47LHHePfdd4mLi+PCCy/kwgsvjHa1HKumpobly5fz8ccfExcXx9e//nWmTp1KXFxctKvmePPnzyctLY3rr78+2lVxLL/fz5NPPsmaNWvweDyceeaZTJ06Fcuyol01R6qqquLRRx/l008/JSUlhfPPP58LLrgg2tXq1RR6etiKFSsoKSnh1ltvpaqqiiVLlpCbm8vXvva1aFfNcYwxLFiwgJSUFO644w7q6+t56KGHcLlcTJs2LdrVc7Q1a9awfv16zjjjjGhXxdGWL1/OJ598wty5c2lsbGThwoXk5uZyzjnnRLtqjnT//feTm5vLr371K8rKyli8eDG5ubmcfPLJ0a5ar6XhrR7U1NTE3//+d6666iqGDx/OySefzLe+9S1effXVaFfNkSoqKti4cSPXXXcdgwYN4thjj2XKlCn861//inbVHK2+vp4VK1ZQWFgY7ao4Wn19Pf/85z/5wQ9+wIgRIxg9ejQXXnghGzdujHbVHKm+vp6NGzdy6aWXkp+fz/jx4znhhBP46KOPol21Xk2hpwdt3bqVYDDIMcccE142cuRINm7cSCgUimLNnCkjI4M5c+aQkZHRbnlDQ0N0KiQAPPXUU5x22mkUFBREuyqOtmHDBpKSkhg1alR42cUXX8ysWbOiWCvniouLIz4+njfeeINAIEBFRQWfffYZw4YNi3bVejUNb/WgnTt3kpqa2u6y9+np6fj9furr60lLS4ti7ZwnOTmZMWPGhO+HQiFee+01Ro8eHb1KOdzHH3/Mp59+yoIFC1i2bFm0q+No27dvJzc3l9WrV/OHP/yBQCDAxIkTufTSS3G5tH98pMXFxXH11Vfz2GOP8Ze//IVQKMTEiRM566yzol21Xk2hpwf5fD68Xm+7Za33/X5/NKokbbTOt5o/f360q+JIPp+PRx55hKuvvloTyWNAU1MTX331Fa+//jqzZs1i586dPPLII8THx+vgiygpKyvjpJNO4sILL6S0tJTHH3+c0aNHc9ppp0W7ar2WQk8P8nq9HcJN6/34+PhoVElarFixgr/85S/cdNNNDB48ONrVcaQXX3yR4cOHt+t9k+hxu900Njbyox/9iNzcXMA+euivf/2rQk8UfPTRR/zjH//g4YcfJi4ujsLCQmpqali5cqVCz2FQ6OlBWVlZ1NXVEQwGcbvdANTW1hIXF0dSUlKUa+dcjz/+OH/961+58cYbdRRdFK1Zs4ba2trwkXOBQACAd955h6effjqaVXOkjIwMvF5vOPAADBgwgKqqqijWyrlKSkrIz89v1ws6dOhQVq5cGcVa9X4KPT1o6NChuN1uNm7cyMiRIwF7smBhYaHGyKPkhRde4G9/+xs33XSTAk+U3X777QSDwfD9FStWAHDFFVdEq0qOdvTRR+P3+6moqGDAgAEAlJeXk5eXF+WaOVNmZibbtm0jEAiE54VWVFSoPQ6Tvnl7UHx8PGeccQbLli1j06ZNrF27lj/96U+cf/750a6aI5WVlfH73/+eiy66iJEjR1JbWxu+yZGXm5tL//79w7fExEQSExPp379/tKvmSAMGDODEE09k6dKlbNmyhffff59Vq1bpHD1RMm7cONxuNw8//DAVFRWsW7eOP/zhD5x33nnRrlqvZhljTLQr0Zc1NzezbNky3n33XZKSkvjWt76lM2pGyapVq/jd737X6WPPP//8Ea6N7GvJkiUAOiNzFDU0NPD444+zdu1a4uPj+a//+i8mT56sMzJHSVlZGcuXL2fTpk2kpaVx7rnncv7556s9DoNCj4iIiDiChrdERETEERR6RERExBEUekRERMQRFHpERETEERR6RERExBEUekRERMQRFHpERETEERR6RERExBEUekREIjBlyhSdwVukl1LoEREREUdQ6BERERFH8ES7AiIinbn++usZP348X375JZ999hmnnXYa3/nOd3jmmWf46KOP2L17N4MHD2by5MmMGzcOgB07dnDDDTcwa9YsJk6cGN7WkiVLKC4uDl/U9Pbbbw9f3f21115j9+7dDB8+nO9///uMGDEivF5xcTG//e1v2bp1K9nZ2Vx99dVH9G8gIt1LoUdEYtZrr73GN7/5TS666CK8Xi8/+9nP8Hq9TJ06lZSUFN544w3uvfdebrjhBk477bSItv3OO+8wcOBAZsyYgTGGp59+mgULFrBkyRJcLhclJSXcddddHHfccfz3f/83lZWVLFq0qIdeqYgcCQo9IhKzcnJyuPzyywFYsWIFu3fvZtGiReTm5gJw4okncuedd/L0009zyimnRLTtYDDI3LlzSUpKAqCxsZElS5awZcsWhg8fzqpVq0hPT+fmm2/G47E/KlNTU1m4cGH3vUAROaI0p0dEYtbQoUPDvxcXF3PMMceEA0+r0047jdraWioqKiLadkFBQTjwAGRnZwPQ1NQEwKeffsoJJ5wQDjwAEyZMwOXSx6ZIb6V3r4jErISEhPDv9fX1pKendyiTkZEBwJ49eyLadnx8fLv7lmUBYIwJP19aWlq7Mm63m9TU1IieR0Rih0KPiPQKKSkp7Nq1q8PynTt3AvbQU2twCYVC7cq09t5EIi0tjdra2nbLjDERhysRiR0KPSLSK4waNYrPPvuMysrKdsvfeustMjIy6N+/P4mJiQBUV1eHHw8EAmzatCni5zvuuONYv349zc3N4WUffPABgUDgEF+BiESbJjKLSK/wzW9+kzfffJM77riDb3/726SmprJ69Wo+/vhjrrvuOlwuFykpKRxzzDG8+uqr5Ofnk5KSwl/+8hd8Pl+7obKuuOyyy/j3v//NvHnz+Na3vsXu3bt57rnncLvdPfQKRaSnqadHRHqFjIwM7rrrLoYPH87y5cv59a9/TVVVFTfffDNnnnlmuNysWbMYPnw4Dz/8MEuWLGHYsGFccMEFET9ffn4+t99+O263m4ULF/L73/+eadOmkZKS0p0vS0SOIMu0ztoTERER6cPU0yMiIiKOoNAjIiIijqDQIyIiIo6g0CMiIiKOoNAjIiIijqDQIyIiIo6g0CMiIiKOoNAjIiIijqDQIyIiIo6g0CMiIiKOoNAjIiIijvD/AzBUme4gVtiyAAAAAElFTkSuQmCC" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGxCAYAAACa3EfLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqs0lEQVR4nO3deXxcdb3/8dd39ux7mzTdd9qyFQoIQgEBWQQBEUVWBbla1Ku/er0K94KoCF7oRfDCVQtWtKIIAl4UKlrZsUWge+m+ps2+75OZ+f7+OJNJ0rQ0+0yS9/PxyKOZM2fOfCYntG++q7HWWkRERESGOVe8CxAREREZCAo1IiIiMiIo1IiIiMiIoFAjIiIiI4JCjYiIiIwICjUiIiIyIijUiIiIyIigUCMiIiIjgkKNiIiIjAieeBcQD9XV1YRCoQG9Zl5eHuXl5QN6Tek73Y/Eo3uSWHQ/Eovux4fzeDxkZWUd/bwhqCXhhEIh2traBux6xpjYdbXrRPzpfiQe3ZPEovuRWHQ/Bo66n0RERGREUKgRERGREUGhRkREREYEhRoREREZEUblQGEREZGeCoVCNDU1Dep7NDc3EwwGB/U9El1ycjIeT/9iiUKNiIjIEYRCIRobG0lLS8PlGrzODa/XO6CzcoebSCRCfX09KSkp/Qo26n4SERE5gqampkEPNAIul4u0tLR+t4jpLomIiHwIBZqhMRA/Z90pERERGREUakRERGRESJhQ09bWxuLFi9m0adMRz9m3bx//+Z//ybXXXsvixYvZuHHjEFYoIiIy+N5//3327t3b59cfPHiQ1atXD2BFw0dChJpgMMhDDz3E/v37j3hOU1MT3//+9xk/fjxLlizh1FNP5YEHHqC2tnYIKxURERlcixcvprq6us+vv//++/nggw8GsKLhI+6hpqioiDvuuIPS0tIPPe/VV18lEAjwxS9+kfz8fK6++moKCgrYuXPnEFUqIiKS+EbzpphxX6dm8+bNzJ07l2uuuYbrr7/+Q89bsGBBl9HR9957b5/ft31X1IHQfq2BvKb0ne5H4tE9SSy6H4nhD3/4A08//TRVVVVMnTqV2267jXvuuQeAb3zjG9x4443k5+fzpz/9iaysLNasWcO//uu/cvrpp/M///M/rFq1ioaGBgoKCrj11lv56Ec/yn333ce6detYt24da9eu5cc//jFlZWU89NBDvPfee2RmZnLRRRdx3XXX4Xa7AfjnP//J//7v/3LgwAFOOOEECgsLaWpq4gtf+AKf/exn+elPf8rMmTMBqK6u5qqrruJXv/oVhYWFg/Jz6c/vZdxDzQUXXNCj80pLS5k+fTo/+9nPePfddxkzZgzXX389s2fP7vV75uXl9fo1RxMqK2Fsbi6mn6shysDJz8+PdwlyCN2TxKL7cXTNzc14vd4Bv+62bdv42c9+xj333MOUKVN4+umnufvuu1m2bBmXXXYZ99xzDwsWLODVV19l06ZN3HDDDXzpS18iMzOTRx99lAMHDvDggw8SCAR48skneeCBB/joRz/KN77xDQ4cOMC8efO44YYb8Hg83HXXXUyfPp1ly5ZRUVHB/fffj8fj4aabbuLAgQP8x3/8BzfccAPnnnsuL7/8Mk888QQXXnghhYWFHHfccbz55pvMnTsXgLfeeouZM2cyefLkAf+ZAPh8PgoKCvr8+mHzL3BLSwvPP/88F198MbfffjtvvfUW99xzDw8++CC5ubm9ulZ5eTmhUGjAajPGkN1cT1llJSYze8CuK31jjCE/P5+SkpJR3QybSHRPEovuR88Fg8FBWem3qKgIgNzcXHJzc/niF7/IKaecQnJyMuBsGeD1egmHwxhj+NznPoff7wfg2GOP5aqrrooFi6uuuooXXniBsrIyxowZg9vtxu/3k5SUxOrVqykpKeGRRx7B5XJRUFDAl770JX70ox9x7bXX8sc//pHZs2dz7bXXAnDjjTfyzjvvEIlEaGtr45xzzuHpp5/mC1/4AgArV67knHPOGbTVj4PBIMXFxd2OezyeHjVIDJtQ43a7mTJlCldffTUAU6ZMYf369bz++utceeWVvb7eYPyHbCvLICNrwK8rfWOt1V/YCUb3JLHofsTPggULmDp1Kl/4wheYMWMGZ555JhdddFGsS6izzMzMWKABp4fjzTff5IUXXmD//v1s27YNcLYaONS+ffuoq6vjkksuiR2z1tLa2kptbS27du1i1qxZXV4zZ84c6uvrATj77LP5yU9+wo4dO8jOzmbDhg3cfvvtA/IzOJL+/E4Om1CTlZXFuHHjuhwrKCigsrIyThUdRmsztq0NMwhNlSIiMnIEAgEeffRR1q1bx9tvv82LL77Ic889x89+9rNu5/p8vi6P7733XjZt2sT555/PZZddRk5ODrfddtth3yccDjNhwoTYWJ3OUlNTcbvdHxoiMjIyOOmkk3j99dfJyclhzpw5gzKEY6DEffZTT82YMaPbvP2DBw8m1g/X5cHW1cS7ChERSXCbNm3iySef5MQTT+S2227jySefJBgMsmHDhg99XWNjIytXruTOO+/k85//PGeeeSZ1dXVARwtH54G2EyZMoKysjIyMDAoLCyksLKS4uJhly5YBMHny5FhLT7tDH3/sYx/j7bffZtWqVZxzzjn9/uyDKaFDTU1NTWwr9vPPP5+9e/fy+9//npKSEp566ilKS0s566yz4lxlJz4/1CRQy5GIiCQkv9/PE088wZ///GdKSkpYuXIlzc3NTJs2jUAgwO7du2loaOj2Op/PRyAQ4PXXX6ekpIR33nmHhx9+GCA2ziUQCFBUVER1dTUnn3wyY8eO5Yc//CG7du1i/fr1LFmyhEAggNvt5hOf+AQffPABv/3tb9m/fz/Lly9n/fr1XYLRRz/6UYqKili7di1nn332kPx8+iqhQ82tt97K22+/DTgzlu644w7ee+89Fi9ezHvvvce3v/1tsrMTaGCuAYJBbFsw3pWIiEgCmz59Ot/61rd46qmnuOGGG/jVr37FHXfcwaRJk7jyyiv56U9/yhNPPNHtdV6vl9tvv53XXnuNm266iUcffZTrrruOnJwctm/fDsAll1zCO++8w7//+7/jdru55557iEQiLFq0iLvuuotTTz2Vr371q4AzA+673/0uL774IjfffDObNm3ijDPOwNNpJm9ycjKnnHIKc+fOJSsrsceNGjsKR4mVl5cP6MhtYww5LQ2UFx90Ak12Hq6cMQN2fekdYwwFBQUUFxdrEGSC0D1JLLofPVdXV0d6evqgv4/X6x20GUUfZvfu3YRCIWbMmBE79u1vf5vZs2dz0003xY595Stf4ZJLLuGiiy4a1HqO9PP2er09Gm6S0C01w4VtbCBU6kxBMz4/VKsLSkREEt+BAwf45je/ybvvvktJSQl//vOfef/99znzzDMBWLNmDb/+9a/Zu3dvwnc9wTCa/ZTIIo8toXLT+5jPfx1TMB7agthgqxNwREREEtRHP/pR9uzZw/333091dTUTJkzgzjvvZNq0aQC8/PLLvPXWWyxevJikpKQ4V3t0CjUDITkFIhHshnedUOPxYGurMHl9XxVRRERkKFx33XVcd911h33u3//9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6YfJkyfjdrvZvn07s2fPBpzBeNOmTVMfdZw8/fTT/PWvf+XrX/+6Ak2cffe73yUcDsceL1++HIDrrrsuXiWNajNnzqStrY2DBw8ybtw4AA4cOMCYMWPiXNnolZWVRUlJCaFQKDY28+DBg7on/aB/efvB7/ezcOFCli5dyo4dO3jnnXd44YUXuPjii+Nd2qhUVFTEH/7wBz75yU8ye/ZsampqYl8y9PLy8sjPz499JSUlkZSURH5+frxLG5XGjRvH/PnzefTRR9mzZw9r167l+eef1xo1cXTyySfjdrv56U9/ysGDB3n33Xd57rnnuOiii+Jd2rBlrLU23kUMZ62trSxdupTVq1eTnJzMZZddptUg4+T555/nySefPOxzv//974e4GjnUI488AqAVheOoqamJX/ziF7zzzjv4/X4+/vGP86lPfUorCsdRUVERy5YtY8eOHaSnp3PhhRdy8cUX6570kUKNiIiIjAjqfhIREZERQaFGRERERgSFGhERERkRFGpERERkRFCoERERkRFBoUZERERGBIUaERERGREUakRERGREUKgREenk6quv1grUIsOUQo2IiIiMCAo1IiIiMiJ44l2AiIxOt912GwsWLGDfvn1s3bqVM888k8985jP89re/ZcOGDdTV1TFx4kQ+9alPcfLJJwNQVlbGV77yFRYtWsTZZ58du9YjjzzC5s2bY5tmfve7343tDv6Xv/yFuro6pk6dyo033sj06dNjr9u8eTO/+c1v2Lt3Lzk5Odx8881D+jMQkYGlUCMicfOXv/yFT3ziE3zyk5/E6/Xyne98B6/XyzXXXENqaiqvvvoq999/P1/5ylc488wze3XtVatWUVhYyBe+8AWstfz6179myZIlPPLII7hcLnbt2sUPfvAD5s2bx//7f/+P8vJyHnrooUH6pCIyFBRqRCRucnNzufbaawFYvnw5dXV1PPTQQ+Tl5QEwf/58vv/97/PrX/+aM844o1fXDofD3HHHHSQnJwPQ3NzMI488wp49e5g6dSrPP/88GRkZfOtb38Ljcf4qTEtL48c//vHAfUARGVIaUyMicTN58uTY95s3b2bWrFmxQNPuzDPPpKamhoMHD/bq2uPHj48FGoCcnBwAWlpaAPjggw84/vjjY4EG4NRTT8Xl0l+LIsOV/usVkbgJBAKx7xsaGsjIyOh2TmZmJgCNjY29urbf7+/y2BgDgLU29n7p6eldznG73aSlpfXqfUQkcSjUiEhCSE1Npba2ttvx6upqwOkaag8mkUikyzntrS+9kZ6eTk1NTZdj1tpehycRSRwKNSKSEObMmcPWrVspLy/vcvyNN94gMzOT/Px8kpKSAKisrIw9HwqF2LFjR6/fb968eaxZs4bW1tbYsXXr1hEKhfr4CUQk3jRQWEQSwic+8Qlef/11vve97/HpT3+atLQ0XnvtNTZu3MiXv/xlXC4XqampzJo1ixUrVlBQUEBqaiovvvgiwWCwS1dWT1x11VX885//5J577uGyyy6jrq6Op556CrfbPUifUEQGm1pqRCQhZGZm8oMf/ICpU6eybNky/vu//5uKigq+9a1vcc4558TOW7RoEVOnTuWnP/0pjzzyCFOmTOGSSy7p9fsVFBTw3e9+F7fbzY9//GP+8Ic/cP3115OamjqQH0tEhpCx7aPmRERERIYxtdSIiIjIiKBQIyIiIiOCQo2IiIiMCAo1IiIiMiIo1IiIiMiIoFAjIiIiI4JCjYiIiIwICjUiIiIyIijUiIiIyIigUCMiIiIjgkKNiIiIjAj/H0nGWNkruo+5AAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" @@ -336,8 +336,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:53.667494Z", - "start_time": "2024-02-29T03:13:53.434366Z" + "end_time": "2024-02-29T15:53:34.141252Z", + "start_time": "2024-02-29T15:53:33.868552Z" } }, "id": "66e7d6a62daeb74a" @@ -350,8 +350,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-02-29T03:13:53.667862Z", - "start_time": "2024-02-29T03:13:53.662689Z" + "end_time": "2024-02-29T15:53:34.141523Z", + "start_time": "2024-02-29T15:53:34.079394Z" } }, "id": "d4ed821f17ca3935" diff --git a/flox/nn/model.py b/flox/nn/model.py index 7da9fdb..18e5d61 100644 --- a/flox/nn/model.py +++ b/flox/nn/model.py @@ -6,7 +6,8 @@ class FloxModule(torch.nn.Module, ABC): """ The ``FloxModule`` is a wrapper for the standard ``torch.nn.Module`` class from PyTorch, with - a lot of inspiration from the ``lightning.LightningModule`` class from PyTorch Lightning. + a lot of inspiration from the ``LightningModule`` class from + [PyTorch Lightning](https://lightning.ai/docs/pytorch/stable/common/lightning_module.html). """ def __init__(self, *args, **kwargs): diff --git a/flox/nn/trainer.py b/flox/nn/trainer.py index e39ef21..42a9835 100644 --- a/flox/nn/trainer.py +++ b/flox/nn/trainer.py @@ -47,17 +47,11 @@ def fit( optimizer.zero_grad() loss.backward() - try: - assert strategy is not None - assert node_state is not None - strategy.wrk_after_train_step(node_state, loss) - # TODO: Check if this (^^^) makes sense... - except (AttributeError, AssertionError, NotImplementedError): - """ - ``node_state`` is None, ``strategy`` is None, or ``strategy`` doesn't - implement ``wrk_after_train_step()``. - """ - pass + # try: + # strategy.wrk_after_train_step(node_state, loss) + # # TODO: Check if this (^^^) makes sense... + # except NotImplementedError: + # pass optimizer.step() diff --git a/flox/runtime/jobs/train.py b/flox/runtime/jobs/train.py index d162ad4..dd37663 100644 --- a/flox/runtime/jobs/train.py +++ b/flox/runtime/jobs/train.py @@ -97,17 +97,14 @@ def local_training_job( strategy=strategy, ) - try: - local_params = strategy.wrk_before_submit_params(node_state) - except NotImplementedError: - pass + local_params = strategy.wrk_before_submit_params(node_state) history["node/idx"] = node.idx history["node/kind"] = node.kind.to_str() history["parent/idx"] = parent.idx history["parent/kind"] = parent.kind.to_str() - result = JobResult(node_state, node.idx, node.kind, module.state_dict(), history) + result = JobResult(node_state, node.idx, node.kind, local_params, history) return transfer.report(result) diff --git a/flox/strategies/base.py b/flox/strategies/base.py index 352aab2..f847dfe 100644 --- a/flox/strategies/base.py +++ b/flox/strategies/base.py @@ -17,13 +17,15 @@ class Strategy: """Base class for the logical blocks of a FL process. - A ``Strategy`` in FLoX is used to implement the logic of an FL process. A ``Strategy`` provides - a number of callbacks which can be overridden to inject pieces of logic throughout the FL process. - Some of these callbacks are run on the aggregator nodes while others are run on the worker nodes. - - It is _**highly**_ encouraged that you read [What Do Strategies Do](/getting_started/strategies/what/) - to better understand how the callbacks included in a Strategy interact with one another and when - they are run in an FL process. + A ``Strategy`` in FLoX is used to implement the logic of an FL process. A ``Strategy`` + provides a number of callbacks which can be overridden to inject pieces of logic + throughout the FL process. Some of these callbacks are run on the aggregator nodes + while others are run on the worker nodes. + + It is _**highly**_ encouraged that you read + [What Do Strategies Do](/getting_started/strategies/what/) to better understand how + the callbacks included in a Strategy interact with one another and when they are run + in an FL process. """ __metaclass__ = abc.ABCMeta @@ -32,9 +34,9 @@ class Strategy: """...""" def __new__(cls, *args, **kwargs): - if cls.__class__ == (Strategy,): + if cls is Strategy: raise TypeError(f"Abstract class {cls.__name__} cannot be instantiated.") - return super(Strategy, cls).__new__(cls, *args, **kwargs) + return super().__new__(cls, *args, **kwargs) def __init_subclass__(cls, **kwargs): super().__init_subclass__(**kwargs) @@ -91,13 +93,13 @@ def cli_before_share_params( ) -> StateDict: """Callback before sharing parameters to child nodes. - This is mostly done is modify the global model's StateDict. This can be done to encrypt the - model parameters, apply noise, personalize, etc. + This is mostly done is modify the global model's StateDict. This can be done + to encrypt the model parameters, apply noise, personalize, etc. Args: state (AggrState): The current state of the aggregator. - state_dict (StateDict): The global model's current StateDict (i.e., parameters) before - sharing with workers. + state_dict (StateDict): The global model's current StateDict + (i.e., parameters) before sharing with workers. Returns: The global global_module StateDict. @@ -195,4 +197,4 @@ def wrk_before_submit_params(self, state: WorkerState, **kwargs) -> StateDict: Returns: """ - raise NotImplementedError() + return state.post_local_train_model.state_dict() diff --git a/flox/strategies/registry/fedsgd.py b/flox/strategies/registry/fedsgd.py index 952349d..eac15ba 100644 --- a/flox/strategies/registry/fedsgd.py +++ b/flox/strategies/registry/fedsgd.py @@ -37,13 +37,14 @@ def __init__( Args: participation (float): Fraction of the child nodes to be selected. - probabilistic (bool): If `True`, nodes are selected entirely probabilistically rather than - based on a fraction (`False`). As an example, consider you have 10 children nodes to select from and - `participation=0.5`. If `probabilistic=True`, then exactly 5 children nodes *will* be selected; - otherwise, then each child node will be selected with probability 0.5. - always_include_child_aggregators (bool): If `True`, child aggregator nodes will always be included; - if `False`, then they will only be included if they are naturally selected (similar to worker - child nodes). + probabilistic (bool): If `True`, nodes are selected entirely probabilistically + rather than based on a fraction (`False`). As an example, consider you have + 10 children nodes to select from and `participation=0.5`. If `probabilistic=True`, + then exactly 5 children nodes *will* be selected; otherwise, then each child node + will be selected with probability 0.5. + always_include_child_aggregators (bool): If `True`, child aggregator nodes will always + be included; if `False`, then they will only be included if they are naturally + selected (similar to worker child nodes). seed (int): Random seed. # TODO: Change this to standardized seeding format. """ super().__init__()