diff --git a/conflictfree/length_model.py b/conflictfree/length_model.py index c21ed5c..905d189 100644 --- a/conflictfree/length_model.py +++ b/conflictfree/length_model.py @@ -70,6 +70,7 @@ def rescale_length( class ProjectionLength(LengthModel): """ Rescale the length of the target vector based on the projection of the gradients on the target vector: + $$ |\mathbf{g}_c|=\sum_{i=1}^m|\mathbf{g}_i|\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ @@ -160,6 +161,7 @@ class TrackMinimum(_FlexibleTrackProjectionLength): """ Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the same length as the minimum gradient before projection, i.e., the minimum gradient will be the same length as the target vector. + $$ |\mathbf{g}_c|=\sum_{i=1}^m|\mathbf{g}_{min}|\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ @@ -176,6 +178,7 @@ class TrackMaximum(_FlexibleTrackProjectionLength): """ Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the same length as the maximum gradient before projection, i.e., the maximum gradient will be the same length as the target vector. + $$ |\mathbf{g}_c|=\sum_{i=1}^m|\mathbf{g}_{max}|\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ @@ -192,14 +195,18 @@ class TrackHarmonicAverage(_FlexibleTrackProjectionLength): """ Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the harmonic average of the lengths of all gradients before projection, i.e., the minimum gradient will be the same length as the target vector. + $$ |\mathbf{g}_c|=\sum_{i=1}^m\overline{|\mathbf{g}|}_{harm}\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ + where + $$ \overline{|\mathbf{g}|}_{harm}=\frac{m}{\sum_{i=1}^m \frac{1}{|\mathbf{g}_i|}} $$ - The harmonic average is used to avoid the influence of the large gradients. + + The harmonic average can be used to avoid the influence of the large gradients. """ def __init__(self): @@ -213,10 +220,13 @@ class TrackArithmeticAverage(_FlexibleTrackProjectionLength): """ Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the arithmetic average of the lengths of all gradients before projection, i.e., the minimum gradient will be the same length as the target vector. + $$ |\mathbf{g}_c|=\sum_{i=1}^m\overline{|\mathbf{g}|}_{arith}\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ + where + $$ \overline{|\mathbf{g}|}_{arith}=\frac{1}{m}\sum_{i=1}^m |\mathbf{g}_i| $$ @@ -233,14 +243,18 @@ class TrackGeometricAverage(_FlexibleTrackProjectionLength): """ Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the geometric average of the lengths of all gradients before projection, i.e., the minimum gradient will be the same length as the target vector. + $$ |\mathbf{g}_c|=\sum_{i=1}^m\overline{|\mathbf{g}|}_{geom}\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ + where + $$ \overline{|\mathbf{g}|}_{geom}=\left(\prod_{i=1}^m |\mathbf{g}_i|\right)^{\frac{1}{m}} $$ - The geometric average is used to avoid the influence of the large gradients. + + The geometric average can be used to avoid the influence of the large gradients. """ def __init__(self): @@ -255,6 +269,7 @@ class TrackSpecific(_FlexibleTrackProjectionLength): Rescale the length of the target vector based on the projection of the gradients on the target vector. All the gradients will be rescaled to the same length as the specific gradient before projection. E.g., if the track_id is 2, then all the gradients will be rescaled to the same length as the third gradient before projection. + $$ |\mathbf{g}_c|=\sum_{i=1}^m\overline{|\mathbf{g}|}_{track_id}\mathcal{S}_c(\mathbf{g}_i,\mathbf{g}_c) $$ diff --git a/docs/api/length_model.md b/docs/api/length_model.md index e0f8ca1..755ded1 100644 --- a/docs/api/length_model.md +++ b/docs/api/length_model.md @@ -3,6 +3,12 @@ The `ProjectionLength` class is the default length model for the ConFIG algorith ## Length Model ::: conflictfree.length_model.ProjectionLength +::: conflictfree.length_model.TrackMinimum +::: conflictfree.length_model.TrackMaximum +::: conflictfree.length_model.TrackHarmonicAverage +::: conflictfree.length_model.TrackArithmeticAverage +::: conflictfree.length_model.TrackGeometricAverage +::: conflictfree.length_model.TrackSpecific ## Base Class of Length Model ::: conflictfree.length_model.LengthModel \ No newline at end of file diff --git a/docs/assets/troubleshooting/difweightmodel.png b/docs/assets/troubleshooting/difweightmodel.png new file mode 100644 index 0000000..e43090c Binary files /dev/null and b/docs/assets/troubleshooting/difweightmodel.png differ diff --git a/docs/assets/troubleshooting/difweightmodel.svg b/docs/assets/troubleshooting/difweightmodel.svg new file mode 100644 index 0000000..02e60c6 --- /dev/null +++ b/docs/assets/troubleshooting/difweightmodel.svg @@ -0,0 +1,1291 @@ + + + + diff --git a/docs/examples/mtl_toy.ipynb b/docs/examples/mtl_toy.ipynb index b1d4a97..9594f87 100644 --- a/docs/examples/mtl_toy.ipynb +++ b/docs/examples/mtl_toy.ipynb @@ -9,7 +9,6 @@ "Here, we would like to show a classic and interesting toy example of multi-task learning (MTL). \n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tum-pbs/ConFIG/blob/main/docs/examples/mtl_toy.ipynb)\n", - "[![Open Locally](../assets/download.svg)](https://github.com/tum-pbs/ConFIG/blob/main/docs/examples/mtl_toy.ipynb)\n", "\n", "In this example, there are two tasks represented by two loss functions, which are" ] @@ -446,7 +445,7 @@ ], "metadata": { "kernelspec": { - "display_name": "deeplearning", + "display_name": "config", "language": "python", "name": "python3" }, diff --git a/docs/examples/pinn_burgers.ipynb b/docs/examples/pinn_burgers.ipynb index 505e6af..064ddfe 100644 --- a/docs/examples/pinn_burgers.ipynb +++ b/docs/examples/pinn_burgers.ipynb @@ -10,7 +10,6 @@ "In this example, we would like to show you another example of how to use ConFIG method to train a physics informed neural network (PINN) for solving a PDE. \n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tum-pbs/ConFIG/blob/main/docs/examples/pinn_burgers.ipynb)\n", - "[![Open Locally](../assets/download.svg)](https://github.com/tum-pbs/ConFIG/blob/main/docs/examples/pinn_burgers.ipynb)\n", "\n", "In this example, we will solve the 1D Burgers' equation:\n", "\n", diff --git a/docs/requirements.txt b/docs/requirements.txt index f4af116..02b2734 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,4 +3,5 @@ black mkdocs-material mkdocstrings mkdocstrings-python -mknotebooks +#mknotebooks +mkdocs-jupyter diff --git a/docs/start/troubleshooting.ipynb b/docs/start/troubleshooting.ipynb new file mode 100644 index 0000000..8fc9743 --- /dev/null +++ b/docs/start/troubleshooting.ipynb @@ -0,0 +1,179 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Troubleshooting\n", + "\n", + "Since we released the ConFIG method, we have received a lot of feedback from our users. Among many interesting discussions, we have found many useful tricks that may be helpful for the community. So, if you don't get a good result using ConFIG, please have a check on the following list:\n", + "\n", + "## Are you using different weight models?\n", + "\n", + "Introducing new direction weight models may raise some issues. For example, if you set your weights to $[1,2]$ for a two-loss scenario, the following two scenarios will both satisfy your weight condition:\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "Although in both situations the $\\mathbf{g}_c$ is a conflict-free direction, as $g_c$ has a positive dot product to both $\\mathbf{g}_1$ and $\\mathbf{g}_2$. However, the situation in figure b) might not be the optimal direction. This situation will not occur when you are using the default equal weight models. Thus, we would recommend using the default weighting configuration as much as possible. \n", + "\n", + "## Are you using momentum-based optimizers?\n", + "\n", + "Momentum-based optimizers (here, we only refer to the optimizer that involves both the first and second momentum, e.g., Adam) might face some issues when you are using the default length model. In the default length model, the magnitude of the update gradient is calculated based on the sum of the projection length of each loss-specific direction, i.e.,\n", + "\n", + "$$\n", + "|\\mathbf{g}_{\\text{ConFIG}}|=\\sum_{i=1}^m \\mathbf{g}_i^\\top\\mathbf{g}_u=\\sum_{i=1}^m |\\mathbf{g}_i|\\mathcal{S}_c(\\mathbf{g}_i,\\mathbf{g}_u).\n", + "$$\n", + "\n", + "This means that the final magnitude of the update gradient relies on the \"angle\" between $\\mathbf{g}_i$s and the magnitude of each $\\mathbf{g_i}$. So, if one of your loss-specific gradients has a much larger magnitude than other gradients, then it will cover the magnitude distribution of other gradients.\n", + "\n", + "If you are using a momentum-based optimizer, the absolute value of $\\mathbf{g}_{\\text{ConFIG}}$ actually doesn't matter too much as momentum-based optimizers will adjust the learning rate (length of the update gradient) according to how the gradient changes. If the gradient changes rapidly, then the learning rate will be very small. Thus, if you have a very large loss-specific gradient, the momentum-based optimizers will just change the learning rate according to how the magnitude of this largest gradient changes and ignore the contribution from other gradients (the learning rate also depends on how the angle between loss-specific gradients, $\\mathcal{S}_c(\\mathbf{g}_i,\\mathbf{g}_u)$ changes, of course.).\n", + "\n", + "In our `conflictfree` package, we provide several following [length_model](../../api/length_model/) which can help you to decide which gradients' magnitude you want to track to adjust the learning rate in momentum-based optimizers. Here, we can use a simple example to illustrate the differences btween these length models:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "