Um estudo de técnicas de aprendizado por reforço para gerenciamento consciente de memória em ambientes de processamento de streams
Visualizar/abrir
Data
2021Orientador
Co-orientador
Nível acadêmico
Graduação
Outro título
A study on reinforcement learning techniques for conscious memory management in stream processing environments
Assunto
Resumo
A área de Machine Learning (ML) está em uma fase de grande expansão e sendo aplicada aos mais diversos contextos e ambientes, tais como visão computacional, compreensão de linguagem natural, direção de carros autônomos, entre outros. O gerenciamento dinâmico de recursos é uma das áreas que foi consideravelmente beneficiada por algoritmos de ML e ainda possui diversas possibilidades de inovação, pois permite o aprimoramento de inúmeras técnicas pré-existentes. No contexto Stream Processing, fram ...
A área de Machine Learning (ML) está em uma fase de grande expansão e sendo aplicada aos mais diversos contextos e ambientes, tais como visão computacional, compreensão de linguagem natural, direção de carros autônomos, entre outros. O gerenciamento dinâmico de recursos é uma das áreas que foi consideravelmente beneficiada por algoritmos de ML e ainda possui diversas possibilidades de inovação, pois permite o aprimoramento de inúmeras técnicas pré-existentes. No contexto Stream Processing, frameworks como Spark sofrem da falta de gerenciamento dinâmico de recursos no nível de seu gerenciador de memória. Quando o fluxo de dados é muito elevado e as regiões de armazenamento e execução do gerenciador de memória ficam cheias, podem ocorrer perdas de blocos de dados. Além disso, devido a sua prioridade, a memória de execução pode precisar de mais espaço e solicitar da região de armazenamento, automaticamente despejando dados e também causando perdas. Uma solução na forma de buffers de mensagens pode ser usada para orquestrar a pressão de dados enviados ao Spark, evitando os fluxos mais pesados. Porém, tal método precisa de um agente capaz de inferir o gerenciamento dinâmico da ingestão de dados na memória do Spark com base em estatística sobre a execução, se tornando um contexto ideal para a aplicação de um modelo de Machine Learning. Portanto, este trabalho busca aplicar o algoritmo Stacked-Autoencoder Q-Network (SAQN) que consiste em utilizar um método de Deep Reinforcemente Learning junto ao modelo de rede neural profunda Stacked-Autoencoder para gerenciar a ingestão de dados em memória durante a execução de aplicações utilizando o Spark Streaming. A solução desenvolvida tem como finalidade maximizar o throughput por um ajuste fino enquanto se minimiza o uso de memória. Tal controle é baseado em recompensas de performance e custo que levam em consideração a variação de throughput em determinado instante de tempo e o estado global de utilização da memória. Os resultados indicam que a solução proposta é capaz de aprimorar a ingestão de dados em memória para o Spark em diferentes ambientes de execução e aplicações, sem apresentar quedas no sistema e mostrando um controle mais fino entre o ganho de performance, chegando até 25%, e diminuição de custo quando comparado com uma solução heurística somada a um sistema de backpressure. ...
Abstract
The subject of Machine Learning (ML) is constantly growing and being implemented in various contexts and environments with success, such as computer vision, natural language comprehension, driving autonomous vehicles, etc. Dynamic resource management is one of the areas considerably favored by the surge of ML algorithms, while still having plenty of room to grow, due to the several opportunities to improve on existing techniques. In the context of Stream Processing, frameworks like Spark suffer ...
The subject of Machine Learning (ML) is constantly growing and being implemented in various contexts and environments with success, such as computer vision, natural language comprehension, driving autonomous vehicles, etc. Dynamic resource management is one of the areas considerably favored by the surge of ML algorithms, while still having plenty of room to grow, due to the several opportunities to improve on existing techniques. In the context of Stream Processing, frameworks like Spark suffer from the lack of dynamic resource management on the level of its memory manager. The loss of data blocks loss can happen when the data influx is too high and the memory manager’s storage and execution regions get full. Also, due to its priority, the execution memory may need more space and require it from the storage section, automatically dumping data and causing data loss. A solution in the shape of message buffers may be used to manage influx of data sent to Spark, avoiding higher pressures. However, such method requires an agent capable of infering the optimal orchestration of data ingestion in memory on Spark based on execution statistics, which is an ideal use case for applying a Machine Learning model. Thus, this work aims to apply the Stacked-Autoencoder Q-Network (SAQN) algorithm, which consists of a Deep Reinforcement Learning method coupled with a Stacked-Autoencoder deep neural network model, to manage the data ingestion in memory during Spark Streaming executions. The developped solution seeks to maximize throughput while minimizing memory usage. This kind of control is based on the usage of perfomance and cost rewards which take in consideration throughput variation in a determined time and the global state of memory utilization. The results indicates that the proposed solution is capable of successfully managing data ingestion on Spark memory for different execution environments and applications, without presenting system crashes and showing a finer control between performance gain, reaching up to 25%, and cost reduction when compared with a heuristic solution plus a backpressure system. ...
Instituição
Universidade Federal do Rio Grande do Sul. Instituto de Informática. Curso de Ciência da Computação: Ênfase em Engenharia da Computação: Bacharelado.
Coleções
-
TCC Ciência da Computação (1024)
Este item está licenciado na Creative Commons License