Cloud computing has experienced a massive evolution in the past few years. The unstoppable growth of cloud services is requiring more and more optimizations in order to satisfy the end users. For this purpose, autonomous systems – capable of self-adapting to the users’ requests and the environment – represent one of the growing interests in this research field.
By Giorgia Fiscaletti, Master Student in Computer Science and Engineering, Politecnico di Milano
The past few years have seen a crucial development of the cloud computing paradigm, alongside its various execution models. This came with the growing need to extend the offer to new platforms and implement new optimizations for the services offered to the users. Optimizations that go from simple concepts – such as speed and resource usage – to the more complex and popular problem of cloud’s elasticity. The term elasticity indicates the capability of the cloud system to adapt itself autonomously to the variations of users’ requests. Solving this problem means being able to maintain an optimal service without wasting resources, avoiding situations of over-provisioning (i.e. having more resources available than the amount actually needed) or under-provisioning (i.e. not having enough resources to satisfy the request).
In particular, one of the latest innovations in this field is the serverless model – also known as Function as a Service (FaaS) – which allows the cloud provider to manage the applications at function level. This model was born in response to the growing use of cloud services, whose offer is already made up of highly complex applications. It is from these issues that the need to divide the old monolithic application up to its single functions has arisen. The purpose of this solution is to optimize the distribution of the resources according to the actual requests to the single functions.
The serverless model suits well the use of hardware accelerators in the cloud (such as FPGAs, Field Programmable Gate Arrays): it is indeed possible to implement a single accelerator for each function individually, regardless of the context to which they belong. In other words, each function can be deployed and accelerated independently from the others, making it possible to dedicate more or less resources to the single functions depending on the users’ demand. This feature allows to avoid a great portion of the waste of resources that might occur otherwise, trying to maintain an optimal service for the end users.
Our research at NECSTLab is currently focusing on the development and the optimization of a serverless architecture that offers FPGAs acceleration potential as Function as a Service. In order to further optimize both the service offered by the infrastructure and the resource management, we are studying and exploring various approaches that leverage Artificial Intelligence. In particular, we are developing an autonomous agent that exploits a Partially Observable Markov Decision Process (POMDP): a generalization of a Markov Decision Process, in which the agent takes decisions and acts on an environment that cannot be fully observed. In our work, this model is used to choose the best kernel configuration to
download on the FPGAs, in order to make the most of the resources available and serve as many users as possible.
Cloud computing is an ever-growing field that has experienced a widespread success in the past few years. The challenge of developing autonomous AI systems to respond to the users’ demand is extremely interesting and thrilling. It is in line with the growth of the services offered by cloud providers, their variety and the subsequent increase of user requests. A challenge whose results will certainly have a positive impact on the optimization of platforms and services.