diff --git a/figures/d-cliques-cifar10-1000-vs-1-node-test-accuracy.png b/figures/d-cliques-cifar10-1000-vs-1-node-test-accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..f022706391c79fa857de417027a35fbfbb52b8a0 Binary files /dev/null and b/figures/d-cliques-cifar10-1000-vs-1-node-test-accuracy.png differ diff --git a/figures/d-cliques-cifar10-1000-vs-1-node-training-loss.png b/figures/d-cliques-cifar10-1000-vs-1-node-training-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..111ecf77c48c0b3c03bb20df468adf00edb13b46 Binary files /dev/null and b/figures/d-cliques-cifar10-1000-vs-1-node-training-loss.png differ diff --git a/figures/d-cliques-mnist-1000-nodes-comparison.png b/figures/d-cliques-mnist-1000-nodes-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..0e23710239c95ec6d4197493a1f688f611d3bd67 Binary files /dev/null and b/figures/d-cliques-mnist-1000-nodes-comparison.png differ diff --git a/main.tex b/main.tex index 2b4011484f5cb1c19e6d62273141c75f740fa8b8..4bb44f5b5f0e543b692767759d3af198be213baa 100644 --- a/main.tex +++ b/main.tex @@ -367,8 +367,16 @@ We solve this problem by decoupling the gradient averaging from the weight avera % python ../../../learn-topology/tools/plot_convergence.py 1-node-iid/all/2021-03-10-09:20:03-CET fully-connected/all/2021-03-10-09:25:19-CET clique-ring/all/2021-03-10-18:14:35-CET fully-connected-cliques/all/2021-03-10-10:19:44-CET --add-min-max --yaxis test-accuracy --labels '1-node IID bsz=12800' '100-nodes non-IID fully-connected bsz=128' '100-nodes non-IID D-Cliques (Ring) bsz=128' '100-nodes non-IID D-Cliques (Fully-Connected) bsz=128' --legend 'lower right' --ymin 85 --ymax 92.5 --save-figure ../../figures/d-cliques-mnist-vs-1-node-test-accuracy.png \centering \includegraphics[width=0.7\textwidth]{figures/d-cliques-mnist-vs-1-node-test-accuracy} - \caption{\label{fig:d-cliques-mnist-linear-w-clique-averaging-w-initial-averaging} MNIST: D-Cliques Convergence Speed} + \caption{\label{fig:d-cliques-mnist-linear-w-clique-averaging-w-initial-averaging} MNIST: D-Cliques Convergence Speed (100 nodes)} \end{figure} + + % To regenerate the figure, from directory results/mnist + % python ../../../learn-topology/tools/plot_convergence.py 1-node-iid/all/2021-03-10-09:20:03-CET ../scaling/1000/mnist/fully-connected-cliques/all/2021-03-14-17:56:26-CET ../scaling/1000/mnist/smallworld-logn-cliques/all/2021-03-23-21:45:39-CET ../scaling/1000/mnist/fractal-cliques/all/2021-03-14-17:41:59-CET ../scaling/1000/mnist/clique-ring/all/2021-03-13-18:22:36-CET --add-min-max --yaxis test-accuracy --legend 'lower right' --ymin 84 --ymax 92.5 --labels '1 node IID' 'd-cliques (fully-connected cliques)' 'd-cliques (smallworld)' 'd-cliques (fractal)' 'd-cliques (ring)' --save-figure ../../figures/d-cliques-mnist-1000-nodes-comparison.png + \begin{figure}[htbp] + \centering + \includegraphics[width=0.7\textwidth]{figures/d-cliques-mnist-1000-nodes-comparison} + \caption{\label{fig:d-cliques-mnist-1000-nodes-comparison} MNIST: D-Clique Convergence Speed (1000 nodes)} + \end{figure} \begin{figure}[htbp] \centering @@ -527,7 +535,28 @@ In addition, it is important that all nodes are initialized with the same model \includegraphics[width=\textwidth]{figures/d-cliques-cifar10-vs-1-node-test-accuracy} \caption{\label{fig:d-cliques-cifar10-test-accuracy} Test Accuracy} \end{subfigure} -\caption{\label{fig:d-cliques-cifar10-convolutional} D-Cliques with Convolutional Network on CIFAR10.} +\caption{\label{fig:d-cliques-cifar10-convolutional} D-Cliques Convergence Speed with Convolutional Network on CIFAR10 (100 nodes).} +\end{figure} + + +\begin{figure}[htbp] + \centering + % To regenerate the figure, from directory results/cifar10 +% python ../../../learn-topology/tools/plot_convergence.py 1-node-iid/all/2021-03-10-13:52:58-CET ../scaling/1000/cifar10/fully-connected-cliques/all/2021-03-14-17:41:20-CET ../scaling/1000/cifar10/fractal-cliques/all/2021-03-14-17:42:46-CET ../scaling/1000/cifar10/clique-ring/all/2021-03-14-09:55:24-CET --add-min-max --yaxis training-loss --labels '1-node IID' 'd-cliques (fully-connected cliques)' 'd-cliques (fractal)' 'd-cliques (ring)' --legend 'upper right' --ymax 3 --save-figure ../../figures/d-cliques-cifar10-1000-vs-1-node-training-loss.png + \begin{subfigure}[b]{0.48\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/d-cliques-cifar10-1000-vs-1-node-training-loss} +\caption{\label{fig:d-cliques-cifar10-1000-vs-1-node-training-loss} Training Loss} + \end{subfigure} + \hfill + % To regenerate the figure, from directory results/cifar10 +% python ../../../learn-topology/tools/plot_convergence.py 1-node-iid/all/2021-03-10-13:52:58-CET ../scaling/1000/cifar10/fully-connected-cliques/all/2021-03-14-17:41:20-CET ../scaling/1000/cifar10/fractal-cliques/all/2021-03-14-17:42:46-CET ../scaling/1000/cifar10/clique-ring/all/2021-03-14-09:55:24-CET --add-min-max --yaxis test-accuracy --labels '1-node IID' 'd-cliques (fully-connected cliques)' 'd-cliques (fractal)' 'd-cliques (ring)' --legend 'lower right' --save-figure ../../figures/d-cliques-cifar10-1000-vs-1-node-test-accuracy.png + \begin{subfigure}[b]{0.48\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/d-cliques-cifar10-1000-vs-1-node-test-accuracy} +\caption{\label{fig:d-cliques-cifar10-1000-vs-1-node-test-accuracy} Test Accuracy} + \end{subfigure} +\caption{\label{fig:d-cliques-cifar10-convolutional} D-Cliques Convergence Speed with Convolutional Network on CIFAR10 (1000 nodes).} \end{figure}