Let's start by explaining what Notebooks are and some of their benefits. Standard software development tools are not very efficient for writing code for data analysis and machine learning. Data analysis and machine learning coding often involve looking at plots, repeatedly executing small chunks of code with minor changes, and frequently having to print output. Iteratively running whole scripts for this task is burdensome. These were some of the issues that motivated the development of notebooks. Notebook environments seamlessly integrate commentary, plots and code. Rather than having a script that performs a piece of analysis, Notebooks organize individually executable pieces of code into cells. Have you used Google Docs? How is it different from documents edited in a desktop editor? Have you filed taxes online? How is the experience different from doing your taxes in a desktop program? There are lots of benefits, but one key aspect is collaboration. You don't have to email documents back and forth. When I first started doing scientific research, collaborating on a single result was painful. I'd write some code and create a graph. Then I would snapshot, create an image file, put into a doc, create a PDF, and send it to my collaborator. A few hours later, my colleague would say, looks great, but could you add one more years data? It looks sparse. I'd go through the process all over again. Why? Because the PDF I'd sent was not editable. Roundtrips took a lot of time. Enter Python Notebooks. I'd write the code, create the graph, write some commentary, and send the Notebook link to my colleague. This way, when my colleague wanted to add one more year of data, they could simply edit the cell, look at the new graph and say, see, it looks a lot better and that was great. We now had a better Notebook for the next step. One problem with traditional Notebooks, who runs the server that hosts these pages? Who owns the machine? If it's mine and my machine goes to sleep, then my colleague can't work. When your Notebooks are hosted in the Cloud, you can develop together quite easily. Just as Google Docs are available even when your computer isn't on so too are Notebooks, when you run them in the Cloud. To share a Notebook within a project, other users can simply connect to the VM and work using the URL. Another way to share a Notebooks is through revision control systems such as Git. Spinning up a Notebook can be done in one-click. You may have heard of Jupyter Notebooks. Jupyter Notebooks are basically synonymous to notebooks on Google Cloud, Vertex AI and AI Platform. The provided Python environment has a standard machine learning library pre-installed. Notebooks use the latest open source version of the industry standard Jupyter lab. When you initially set your notebooks hardware, you can use any compute engine instance type. You can also easily adjust the underlying hardware, including machine types. Compute Engine provides graphics processing units or GPUs that you can add to your virtual machine instances. You can use these GPUs to accelerate specific workloads on your VMs, such as machine learning and data processing. If you did not attach GPUs during VM creation, you can add GPUs to your existing VMs to suit your application needs as they arise. If you attach GPUs during or after VM creation, you can detach these GPUs from these VMs when you no longer need them. Note that Notebook instances are traded in the same way as standard Compute Engine instances living in your projects. If you start a Notebook, login to the Cloud Console and navigate to VM instances. You will see your Notebook instances under Compute Engine. As mentioned before, Notebooks run the latest version of Jupyter Lab, which in this case is hosted on Compute Engine. That accounts for the hardware and libraries. For collaboration, the Notebooks are integrated with Git by default, so you can version your Notebooks. Notebooks also provide connectors to and from BigQuery so that you can easily pull data into your notebook.