{"id":6351,"date":"2017-05-15T08:05:10","date_gmt":"2017-05-15T07:05:10","guid":{"rendered":"http:\/\/www.walkingrandomly.com\/?p=6351"},"modified":"2017-05-23T12:39:44","modified_gmt":"2017-05-23T11:39:44","slug":"how-powerful-are-microsoft-azures-free-jupyter-notebooks","status":"publish","type":"post","link":"https:\/\/walkingrandomly.com\/?p=6351","title":{"rendered":"How powerful are Microsoft Azure&#8217;s free Jupyter notebooks?"},"content":{"rendered":"<p>For a while now, Microsoft have provided a <a href=\"https:\/\/notebooks.azure.com\/\">free Jupyter Notebook service <\/a>on Microsoft Azure. At the moment they provide compute kernels for Python, R and F# providing up to 4Gb of memory per session. Anyone with a Microsoft account can upload their own notebooks, share notebooks with others and start computing or doing data science for free.<\/p>\n<p>They <a href=\"https:\/\/github.com\/garth-wells\/IA-maths-Jupyter\">University of Cambridge uses them for teaching<\/a>, and they&#8217;ve also been used by the <a href=\"https:\/\/notebooks.azure.com\/library\/5OfoNSB01SQ\">LIGO people\u00a0<\/a> (gravitational waves) for dissemination purposes.<\/p>\n<p>This got me wondering. How much power does Microsoft provide for free within these notebooks?\u00a0 Computing is pretty cheap these days what with the <a href=\"https:\/\/www.raspberrypi.org\/\">Raspberry Pi <\/a>and so on but what do you get for nothing? The memory limit is 4GB but how about the computational power?<\/p>\n<p>To find out, I created a simple benchmark notebook that finds out how quickly a computer multiplies matrices together of various sizes.<\/p>\n<ul>\n<li>The benchmark notebook is here on Azure <a href=\"https:\/\/notebooks.azure.com\/walkingrandomly\/libraries\/MatrixMatrix\">https:\/\/notebooks.azure.com\/walkingrandomly\/libraries\/MatrixMatrix<\/a><\/li>\n<li>and here on GitHub <a href=\"https:\/\/github.com\/mikecroucher\/Jupyter-Matrix-Matrix\">https:\/\/github.com\/mikecroucher\/Jupyter-Matrix-Matrix<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Matrix_multiplication\">Matrix-Matrix multiplication<\/a> is often used as a benchmark because it&#8217;s a common operation in many scientific domains and it has been optimised to within an inch of it&#8217;s life.\u00a0 I have lost count of the number of times where my contribution to a researcher&#8217;s computational workflow has amounted to little more than &#8216;don&#8217;t multiply matrices together like that, do it like this&#8230;it&#8217;s much faster&#8217;<\/p>\n<p>So how do Azure notebooks perform when doing this important operation? It turns out that <strong>they max out at\u00a0263 <a href=\"https:\/\/en.wikipedia.org\/wiki\/FLOPS\">Gigaflops<\/a><\/strong>! <a href=\"https:\/\/www.walkingrandomly.com\/wp-content\/uploads\/2017\/05\/azure_free_notebook.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6358 size-full\" src=\"https:\/\/www.walkingrandomly.com\/wp-content\/uploads\/2017\/05\/azure_free_notebook.png\" alt=\"azure_free_notebook\" width=\"570\" height=\"271\" srcset=\"https:\/\/walkingrandomly.com\/wp-content\/uploads\/2017\/05\/azure_free_notebook.png 570w, https:\/\/walkingrandomly.com\/wp-content\/uploads\/2017\/05\/azure_free_notebook-300x143.png 300w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/p>\n<p>For context, <a href=\"https:\/\/github.com\/mikecroucher\/Jupyter-Matrix-Matrix\/tree\/master\/results\">here are some other results<\/a>:<\/p>\n<ul>\n<li>A 16 core\u00a0<a href=\"http:\/\/ark.intel.com\/products\/83356\/Intel-Xeon-Processor-E5-2630-v3-20M-Cache-2_40-GHz\">Intel Xeon E5-2630 v3<\/a> node running on Sheffield&#8217;s HPC system achieved around 500 Gigaflops.<\/li>\n<li>My <a href=\"https:\/\/github.com\/mikecroucher\/Jupyter-Matrix-Matrix\/tree\/master\/results\">mid-2014 Mabook Pro<\/a>, with a Haswell Intel CPU hit, hit 169 Gigaflops.<\/li>\n<li>My <a href=\"https:\/\/www.walkingrandomly.com\/?p=6307\">Dell XPS9560<\/a> laptop, with a Kaby Lake Intel CPU, manages\u00a0153 Gigaflops.<\/li>\n<\/ul>\n<p>As you can see, we are getting quite a lot of compute power for nothing from Azure Notebooks. Of course, one of the limiting factors of the free notebook service is that we are limited to 4GB of RAM but that was more than I had on my own laptops until 2011 and I got along just fine.<\/p>\n<p>Another fun fact is that according to <a href=\"https:\/\/www.top500.org\/statistics\/perfdevel\/\">https:\/\/www.top500.org\/statistics\/perfdevel\/<\/a>, 263 Gigaflops <strong>would have made it the fastest computer in the world until 1994<\/strong>. It would have stayed in the top 500 supercomputers of the world until\u00a0June 2003 [1].<\/p>\n<p>Not bad for free!<\/p>\n<p>[1] The top 500 list is compiled using a different <a href=\"https:\/\/en.wikipedia.org\/wiki\/LINPACK_benchmarks\">benchmark called LINPACK<\/a>\u00a0 so a direct comparison isn&#8217;t strictly valid&#8230;I&#8217;m using a little poetic license here.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For a while now, Microsoft have provided a free Jupyter Notebook service on Microsoft Azure. At the moment they provide compute kernels for Python, R and F# providing up to 4Gb of memory per session. Anyone with a Microsoft account can upload their own notebooks, share notebooks with others and start computing or doing data [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[86,40,68,73,56,7,31],"tags":[],"class_list":["post-6351","post","type-post","status-publish","format-standard","hentry","category-cloud-computing","category-free-software","category-hpc","category-linear-algebra","category-microsoft","category-programming","category-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3swhs-1Er","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/6351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6351"}],"version-history":[{"count":10,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/6351\/revisions"}],"predecessor-version":[{"id":6379,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/6351\/revisions\/6379"}],"wp:attachment":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}