Let's talk more about machine learning. Machine learning is composed of an orderly set of processes. In questions about machine learning, make sure you identify the step. Some steps involve similar or related actions. On GCP, we can use logging APIs, Cloud Pub/Sub, etc, and other real time streaming to collect the data. BigQuery, Dataflow and ML pre-processing SDK to organize the data using different types of organization. Use TensorFlow to create the model and use Cloud ML to train and deploy the model. TensorFlow is an open source, high-performance library for numerical computation. It's not just for machine learning. It can work with any numeric computation. In fact, people have used TensorFlow for all kinds of GPU computing. For example, you can use TensorFlow to solve partial differential equations. These are useful in domains like fluid dynamics. TensorFlow is a numeric programming library that's appealing because you can write your computation code in a high level language like Python and have it be executed in a fast way. The way TensorFlow works is that you create a Directed Graph, a DG, to represent your computation. For example, the nodes could represent mathematical operations. Things like adding, subtracting, and multiplying, and also more complex functions. Neural network training and evaluation could be represented as Dataflow graphs. The tensor data representation is passed from node to node, where it's processed. It is analagousan to Dataflow and a pipeline, but the input and output is mathematical operations. TensorFlow is developed at Google and it's portable across GPUs, CPUs and special hardware called TPUs which are TensorFlow Processing Units. You'll want to be familiar with all the layers of TensorFlow and some of the key functions. For example, you ought to know what the TF methods here do and what they're used for. Be able to read a TensorFlow program and understand generally what it's doing. Know the major objects and methods. Do you know what NumPy is? NumPy is a numeric and mathematics library for Python. TensorFlow does lazy evaluation. You write a directed graph or DG, then you run the DG in the context of a session to get the results. TensorFlow can also run in eager mode, using the tf.eager method where the evaluation is immediate and it's not lazy. But eager mode is typically not used in production programs it's only for development. Just to be clear, TensorFlow uses lazy evaluation, the eager execution module is a frontend to TensorFlow that's used for interactive learning of TensorFlow and for experimentation and prototyping. It enables imperative commands from Python that are executed immediately. In this example, NumPy and TensorFlow are doing the same thing. The difference, however, is in execution. NumPy executes immediately, TensorFlow runs in stages. The build stage builds the directed graph, and the run stage executes the graph and produces the results. Because developing ML models are so processor intensive, it's important to get the model right before scaling up. Otherwise, the models can become expensive. This diagram illustrates some of the processes involved in distributing the work for scaling. One benefit of Google's machine learning platform is the ability to scale up to production level by distributing computation across many machines and many types of machines. There is no need to tailor specific code and functions for specific types of CPUs or GPUs, TensorFlow handles all that for you.