From 7885b1d03482490d1ebb75587b38106b10037dfa Mon Sep 17 00:00:00 2001 From: Skye Wanderman-Milne Date: Sat, 22 Feb 2020 23:04:34 -0800 Subject: [PATCH] Add nested pmap image to demo notebook. (#2292) --- cloud_tpu_colabs/NeurIPS_2019_JAX_demo.ipynb | 12 +++++++++++- cloud_tpu_colabs/images/nested_pmap.png | Bin 0 -> 23866 bytes 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 cloud_tpu_colabs/images/nested_pmap.png diff --git a/cloud_tpu_colabs/NeurIPS_2019_JAX_demo.ipynb b/cloud_tpu_colabs/NeurIPS_2019_JAX_demo.ipynb index 403b0bb25..31cd28eba 100644 --- a/cloud_tpu_colabs/NeurIPS_2019_JAX_demo.ipynb +++ b/cloud_tpu_colabs/NeurIPS_2019_JAX_demo.ipynb @@ -876,6 +876,16 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "metadata": { + "id": "f-FBsWeo1AXE", + "colab_type": "text" + }, + "source": [ + "![nested pmap example](https://raw.githubusercontent.com/google/jax/master/cloud_tpu_colabs/images/nested_pmap.png)" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1001,4 +1011,4 @@ "outputs": [] } ] -} \ No newline at end of file +} diff --git a/cloud_tpu_colabs/images/nested_pmap.png b/cloud_tpu_colabs/images/nested_pmap.png new file mode 100644 index 0000000000000000000000000000000000000000..8567e8d57f6aa663f83e6af47767bfea10e8c890 GIT binary patch literal 23866 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≥Qmf$V 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 literal 0 HcmV?d00001