diff --git a/CITATION.cff b/CITATION.cff
index be38d6e9a2..c839f6bcb6 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -4,6 +4,6 @@ authors:
- affiliation: Google
given-names: "The TensorFlow Federated Authors"
title: "TensorFlow Federated"
-version: 0.48.0
+version: 0.49.0
date-released: 2018-12-12
url: "https://github.com/tensorflow/federated"
diff --git a/RELEASE.md b/RELEASE.md
index d50da25d67..d52e132848 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,3 +1,57 @@
+# Release 0.49.0
+
+## Major Features and Improvements
+
+* Created the Baselines API of the GLDv2 (landmark) dataset for simulation,
+ with a GLDv2 preprocessing function, a GLDv2 tasks function, and a Google
+ mirror of the GLDv2 baselines tasks.
+
+## Breaking Changes
+
+* Temporarily removed `tff.program.PrefetchingDataSource`, the
+ PrefetchingDataSourceIterator tests are flaky and it's not immediately clear
+ if this is due to the implementation of the PrefetchingDataSourceIterator or
+ due to a bug in the test.
+* Deprecated the following API, Python execution is deprecated instead use CPP
+ execution:
+ * `tff.backends.native.create_local_python_execution_context`
+ * `tff.backends.native.create_remote_python_execution_context`
+ * `tff.backends.native.create_remote_async_python_execution_context`
+ * `tff.backends.native.set_remote_async_python_execution_context`
+* Removed the following API, Python execution is deprecated instead use CPP
+ execution:
+ * `tff.backends.native.set_local_python_execution_context`
+ * `tff.backends.native.set_remote_python_execution_context`
+ * `tff.frameowrk.FederatingExecutor`
+ * `tff.framework.ComposingExecutorFactory`
+ * `tff.framework.ExecutorValue`
+ * `tff.framework.Executor`
+ * `tff.framework.FederatedComposingStrategy`
+ * `tff.framework.FederatedResolvingStrategy`
+ * `tff.framework.FederatingStrategy`
+ * `tff.framework.ReconstructOnChangeExecutorFactory`
+ * `tff.framework.ReferenceResolvingExecutor`
+ * `tff.framework.RemoteExecutor`
+ * `tff.framework.ResourceManagingExecutorFactory`
+ * `tff.framework.ThreadDelegatingExecutor`
+ * `tff.framework.TransformingExecutor`
+ * `tff.framework.UnplacedExecutorFactory`
+* Removed duplicate API from `tff.framework`, instead use:
+ * `tff.types.type_from_tensors`
+ * `tff.types.type_to_tf_tensor_specs`
+ * `tff.types.deserialize_type`
+ * `tff.types.serialize_type`
+* Renamed `tff.learning.Model` to `tff.learning.models.VariableModel`.
+* Renamed the
+ `cpp_execution_context.(create|set)_local_async_cpp_execution_context`
+ function to match the name of
+ `execution_context.(create|set)_(sync|async)_local_cpp_execution_context`.
+
+## Bug Fixes
+
+* Fixed bug in FLAIR download URLs.
+* Enabled and fixed python type annotations in many packages.
+
# Release 0.48.0
## Major Features and Improvements
diff --git a/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb b/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb
index 7a55e67e8d..e7e599614e 100644
--- a/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb
+++ b/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/building_your_own_federated_learning_algorithm\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/composing_learning_algorithms.ipynb b/docs/tutorials/composing_learning_algorithms.ipynb
index 4b2024a512..ce51dcc369 100644
--- a/docs/tutorials/composing_learning_algorithms.ipynb
+++ b/docs/tutorials/composing_learning_algorithms.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/composing_learning_algorithms\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/composing_learning_algorithms.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/composing_learning_algorithms.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/composing_learning_algorithms.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/composing_learning_algorithms.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/composing_learning_algorithms.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
@@ -129,7 +129,7 @@
"id": "3zQlyijofSzI"
},
"source": [
- "The [Building Your Own Federated Learning Algorithm Tutorial](https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb) used TFF's federated core to directly implement a version of the Federated Averaging (FedAvg) algorithm.\n",
+ "The [Building Your Own Federated Learning Algorithm Tutorial](https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb) used TFF's federated core to directly implement a version of the Federated Averaging (FedAvg) algorithm.\n",
"\n",
"In this tutorial, you will use federated learning components in TFF's API to build federated learning algorithms in a modular manner, without having to re-implement everything from scratch.\n",
"\n",
@@ -158,7 +158,7 @@
"id": "YwhOtjlvjboB"
},
"source": [
- "While the [Building Your Own Federated Learning Algorithm Tutorial](https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb) implemented all of these building blocks from scratch, this is often unnecessary. Instead, you can re-use building blocks from similar algorithms.\n",
+ "While the [Building Your Own Federated Learning Algorithm Tutorial](https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/building_your_own_federated_learning_algorithm.ipynb) implemented all of these building blocks from scratch, this is often unnecessary. Instead, you can re-use building blocks from similar algorithms.\n",
"\n",
"In this case, to implement FedAvg with gradient clipping, you only need to modify the **client work** building block. The remaining blocks can be identical to what is used in \"vanilla\" FedAvg."
]
diff --git a/docs/tutorials/custom_aggregators.ipynb b/docs/tutorials/custom_aggregators.ipynb
index e9746a7f08..6f44d948a9 100644
--- a/docs/tutorials/custom_aggregators.ipynb
+++ b/docs/tutorials/custom_aggregators.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/custom_aggregators\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/custom_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb b/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb
index 66480f32c6..2c82ac7e39 100644
--- a/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb
+++ b/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/custom_federated_algorithm_with_tff_optimizers\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/custom_federated_algorithm_with_tff_optimizers.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/custom_federated_algorithms_1.ipynb b/docs/tutorials/custom_federated_algorithms_1.ipynb
index 72db2925a8..ad319f7f8c 100644
--- a/docs/tutorials/custom_federated_algorithms_1.ipynb
+++ b/docs/tutorials/custom_federated_algorithms_1.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/custom_federated_algorithms_1\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithms_1.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithms_1.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithms_1.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithms_1.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/custom_federated_algorithms_1.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/custom_federated_algorithms_2.ipynb b/docs/tutorials/custom_federated_algorithms_2.ipynb
index 959e5a6782..82323cd479 100644
--- a/docs/tutorials/custom_federated_algorithms_2.ipynb
+++ b/docs/tutorials/custom_federated_algorithms_2.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/custom_federated_algorithms_2\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithms_2.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithms_2.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/custom_federated_algorithms_2.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/custom_federated_algorithms_2.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/custom_federated_algorithms_2.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/federated_learning_for_image_classification.ipynb b/docs/tutorials/federated_learning_for_image_classification.ipynb
index dd4f07a528..8fec87eb98 100644
--- a/docs/tutorials/federated_learning_for_image_classification.ipynb
+++ b/docs/tutorials/federated_learning_for_image_classification.ipynb
@@ -51,10 +51,10 @@
" View on TensorFlow.org\n",
" \n",
"
\n",
- " Run in Google Colab\n",
+ " Run in Google Colab\n",
" | \n",
" \n",
- " View source on GitHub\n",
+ " View source on GitHub\n",
" | \n",
" \n",
" Download notebook\n",
diff --git a/docs/tutorials/federated_learning_for_text_generation.ipynb b/docs/tutorials/federated_learning_for_text_generation.ipynb
index f07034c9d8..f4436b54a4 100644
--- a/docs/tutorials/federated_learning_for_text_generation.ipynb
+++ b/docs/tutorials/federated_learning_for_text_generation.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/federated_learning_for_text_generation\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_learning_for_text_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_learning_for_text_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_learning_for_text_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_learning_for_text_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/federated_learning_for_text_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/federated_learning_with_differential_privacy.ipynb b/docs/tutorials/federated_learning_with_differential_privacy.ipynb
index 3763deb797..8c915a1618 100644
--- a/docs/tutorials/federated_learning_with_differential_privacy.ipynb
+++ b/docs/tutorials/federated_learning_with_differential_privacy.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/federated_learning_with_differential_privacy\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_learning_with_differential_privacy.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_learning_with_differential_privacy.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_learning_with_differential_privacy.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_learning_with_differential_privacy.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/federated_learning_with_differential_privacy.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb b/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb
index 22c1940dd1..fe59bc8030 100644
--- a/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb
+++ b/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/federated_reconstruction_for_matrix_factorization\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/federated_reconstruction_for_matrix_factorization.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/federated_select.ipynb b/docs/tutorials/federated_select.ipynb
index 44746ab4d0..0b74d2c21e 100644
--- a/docs/tutorials/federated_select.ipynb
+++ b/docs/tutorials/federated_select.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/federated_select\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_select.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_select.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/federated_select.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/federated_select.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/federated_select.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/jax_support.ipynb b/docs/tutorials/jax_support.ipynb
index 0815e33aa8..9d8aa222d1 100644
--- a/docs/tutorials/jax_support.ipynb
+++ b/docs/tutorials/jax_support.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/jax_support\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/jax_support.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/jax_support.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/jax_support.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/jax_support.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/jax_support.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/loading_remote_data.ipynb b/docs/tutorials/loading_remote_data.ipynb
index 5b1a024363..213948af08 100644
--- a/docs/tutorials/loading_remote_data.ipynb
+++ b/docs/tutorials/loading_remote_data.ipynb
@@ -61,10 +61,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/loading_remote_data\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/loading_remote_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/loading_remote_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/loading_remote_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/loading_remote_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/loading_remote_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/private_heavy_hitters.ipynb b/docs/tutorials/private_heavy_hitters.ipynb
index bc61f052fb..a58ed54d9e 100644
--- a/docs/tutorials/private_heavy_hitters.ipynb
+++ b/docs/tutorials/private_heavy_hitters.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/private_heavy_hitters\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/private_heavy_hitters.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/private_heavy_hitters.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/private_heavy_hitters.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/private_heavy_hitters.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/private_heavy_hitters.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/random_noise_generation.ipynb b/docs/tutorials/random_noise_generation.ipynb
index da41c276bb..12b38f2a64 100644
--- a/docs/tutorials/random_noise_generation.ipynb
+++ b/docs/tutorials/random_noise_generation.ipynb
@@ -53,10 +53,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/random_noise_generation\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/random_noise_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/random_noise_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/random_noise_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/random_noise_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/random_noise_generation.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/simulations.ipynb b/docs/tutorials/simulations.ipynb
index df76f1c792..d3cdc6af86 100644
--- a/docs/tutorials/simulations.ipynb
+++ b/docs/tutorials/simulations.ipynb
@@ -60,10 +60,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/simulations\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/simulations.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/simulations.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/simulations.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/simulations.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/simulations.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/simulations_with_accelerators.ipynb b/docs/tutorials/simulations_with_accelerators.ipynb
index b28f4f3b85..ef90d8bd46 100644
--- a/docs/tutorials/simulations_with_accelerators.ipynb
+++ b/docs/tutorials/simulations_with_accelerators.ipynb
@@ -53,10 +53,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/simulations_with_accelerators\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/simulations_with_accelerators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/simulations_with_accelerators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/simulations_with_accelerators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/simulations_with_accelerators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/simulations_with_accelerators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/sparse_federated_learning.ipynb b/docs/tutorials/sparse_federated_learning.ipynb
index e184b2cd3a..3b1c1335cf 100644
--- a/docs/tutorials/sparse_federated_learning.ipynb
+++ b/docs/tutorials/sparse_federated_learning.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/sparse_federated_learning\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/sparse_federated_learning.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/sparse_federated_learning.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/sparse_federated_learning.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/sparse_federated_learning.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/sparse_federated_learning.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/tff_for_federated_learning_research_compression.ipynb b/docs/tutorials/tff_for_federated_learning_research_compression.ipynb
index 200d941d91..47c0d0c130 100644
--- a/docs/tutorials/tff_for_federated_learning_research_compression.ipynb
+++ b/docs/tutorials/tff_for_federated_learning_research_compression.ipynb
@@ -42,10 +42,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/tff_for_federated_learning_research_compression\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/tff_for_federated_learning_research_compression.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/tff_for_federated_learning_research_compression.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/tff_for_federated_learning_research_compression.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/tff_for_federated_learning_research_compression.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/tff_for_federated_learning_research_compression.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/tuning_recommended_aggregators.ipynb b/docs/tutorials/tuning_recommended_aggregators.ipynb
index a869e213a7..117e6646e7 100644
--- a/docs/tutorials/tuning_recommended_aggregators.ipynb
+++ b/docs/tutorials/tuning_recommended_aggregators.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/tuning_recommended_aggregators\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/tuning_recommended_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/tuning_recommended_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/tuning_recommended_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/tuning_recommended_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/tuning_recommended_aggregators.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/docs/tutorials/working_with_client_data.ipynb b/docs/tutorials/working_with_client_data.ipynb
index 1fdf610fd2..a5a9249b98 100644
--- a/docs/tutorials/working_with_client_data.ipynb
+++ b/docs/tutorials/working_with_client_data.ipynb
@@ -51,10 +51,10 @@
" \u003ca target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/working_with_client_data\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" /\u003eView on TensorFlow.org\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.48.0/docs/tutorials/working_with_client_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.49.0/docs/tutorials/working_with_client_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /\u003eRun in Google Colab\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
- " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.48.0/docs/tutorials/working_with_client_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
+ " \u003ca target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.49.0/docs/tutorials/working_with_client_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /\u003eView source on GitHub\u003c/a\u003e\n",
" \u003c/td\u003e\n",
" \u003ctd\u003e\n",
" \u003ca href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/working_with_client_data.ipynb\"\u003e\u003cimg src=\"https://www.tensorflow.org/images/download_logo_32px.png\" /\u003eDownload notebook\u003c/a\u003e\n",
diff --git a/tensorflow_federated/version.py b/tensorflow_federated/version.py
index 53bf462f08..ee896b997a 100644
--- a/tensorflow_federated/version.py
+++ b/tensorflow_federated/version.py
@@ -13,4 +13,4 @@
# limitations under the License.
"""TensorFlow Federated version."""
-__version__ = '0.48.0'
+__version__ = '0.49.0'
|