Welcome to the MOOC on “Technologies and platforms for the artificial intelligence”. Information Technologies and Artificial Intelligence. Which is the relationship? How can we use the IT perspective to describe and characterize the AI-based systems? In this lecture we will address these questions by exploring the strict and fruitful relationship that exists between Information Technologies and Artificial Intelligence. But to achieve this goal we need to take a step back and understand what artificial intelligence is. In 2018, the Artificial Intelligence Observatory of the Politecnico di Milano defined the Artificial Intelligence as the area of computer science that studies the development of hardware and software systems endowed with abilities typical of human beings. Such systems are able to autonomously pursue a given purpose by making decisions that, until then, were usually made by human beings“. “Hardware and software systems endowed with abilities typical of human beings”. Hence we have hardware and software. AI-based systems comprise both levels. Being more precise, we could further distinguish software into Software-Applications and Software-Framework/Platform/Tool. From this perspective we could say that an AI-based system comprises: the Hardware, hence all the physical resources that are available; an AI Application, that is the reason why a system exists, and an intermediate layer, comprising frameworks, platforms and tools, that lies between hardware and applications. But what do these three levels remind us? These three levels remind us the typical IT architecture of a computing system, comprising the hardware, and the two layers of software: environment (hence the operating system) and the application. In more detail, thanks to this IT perspective, we can define: the Hardware, as all the physical resources that are available in the system. Examples of these resources are resources for computation, for the storage of data and applications and for the networking, the Software-application, that is the application that is running in the system, and the software-environment, that provides all the programs and libraries to control the physical resources as well as the tools to build applications. Now, keeping in mind this perspective we can go back to AI and understand how AI-based systems are organized from the technological point of view. In the lower layer we have the AI Hardware, that comprises all the hardware resources meant to support the learning and inference of AI algorithms. We will see that hardware resources range from large-scale Data centers to tiny IoT devices, hence differing, sometimes of orders-of-magnitude, in the computational ability, in the available memory and in the power consumption. We will see that these hardware families, that are characterized by very different technological constraints in terms of computation, memory and energy consumption, will require specific AI-techniques. In this layer we can also find the hardware accelerators for AI, such as the GPU, TPU and FPGA being a groundbreaking revolution in the AI world. We will see the importance of hardware accelerators and how they operate. In the upper layer we have the AI Application, that is the reason why a system exists: for example we could have an AI-based application, running in a smart speaker, to recognize a vocal command made by a user or we could have an AI-based application, running in a smart car, to detect the presence of a pedestrian. Here the limit of the possible AI applications is just the imagination of the AI developers. In the middle we can find the AI frameworks, platforms and tools: this layer comprises all the technological solutions, for example software libraries and tools, that are meant to support an effective and efficient execution of the AI applications on the AI hardware. The aim of this layer is twofold: on one hand, this layer masks the complexity of the underlying hardware by providing an abstraction of hardware resources; on the other hand it provides all the tools to help AI engineers and developers to easily design and develop AI-based solutions. We will see that in this layer we can find different ranges of technologies and solutions, for example, we can find here all the famous frameworks for machine and deep learning like Scikit, Tensoflow, Pythorch, and MXNet. But in this layer we can also find all the software infrastructures, that will support an effective and efficient development and running of AI applications like for example the cloud-computing systems and the computing frameworks (like Spark and Hadhoop). What is the relationship between AI and Cloud? The groundbreaking approach brought by machine and deep learning solutions in the Cloud revealed to be the key factor to “democratize” AI, making it available to all the researchers and developers. This is a particularly interesting point that will be addressed in the MOOC by exploring the three computing levels supporting Machine and deep learning in the cloud: infrastructure-as-a-service, platforms-as-a-service and solutions-as-a-service. Summing up, in this MOOC we will explore the hardware to support the learning and inference for machine and deep learning together with the AI frameworks, platforms and tools for an effective and efficient design and deployment of AI applications. It is also important to define what is not the goal of this MOOC. Our goal is not to set up a ranking of frameworks, platforms and tools. The reason why a ranking is out-of-scope of this MOOC is that day-by-day new solutions, new technologies are available each of which has its own features, pros and cons. In addition, advantages and disadvantages of a given solution strictly depend on the hardware and software context in which the application is meant to operate, like for example an AI application that is meant to be executed on the cloud, on a smartphone or a tiny IoT device. That’s said, I’m very happy to welcome you to this MOOC on technologies and platforms for AI. Let’s start!