Show simple item record

dc.contributor.advisorGeyer, Claudio Fernando Resinpt_BR
dc.contributor.authorGrabher, Gabriel Job Antunespt_BR
dc.date.accessioned2022-06-24T04:43:19Zpt_BR
dc.date.issued2021pt_BR
dc.identifier.urihttp://hdl.handle.net/10183/240919pt_BR
dc.description.abstractA á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.pt_BR
dc.description.abstractThe 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.en
dc.format.mimetypeapplication/pdfpt_BR
dc.language.isoporpt_BR
dc.rightsOpen Accessen
dc.subjectAprendizado por reforçopt_BR
dc.subjectDeep-Q-Networken
dc.subjectStacked autoencoderen
dc.subjectLinguagem naturalpt_BR
dc.subjectAprendizado : máquinapt_BR
dc.subjectResource managementen
dc.subjectStream processingen
dc.subjectBigdataen
dc.titleUm estudo de técnicas de aprendizado por reforço para gerenciamento consciente de memória em ambientes de processamento de streamspt_BR
dc.title.alternativeA study on reinforcement learning techniques for conscious memory management in stream processing environments pt
dc.typeTrabalho de conclusão de graduaçãopt_BR
dc.contributor.advisor-coMatteussi, Kassiano Josépt_BR
dc.identifier.nrb001128584pt_BR
dc.degree.grantorUniversidade Federal do Rio Grande do Sulpt_BR
dc.degree.departmentInstituto de Informáticapt_BR
dc.degree.localPorto Alegre, BR-RSpt_BR
dc.degree.date2021pt_BR
dc.degree.graduationCiência da Computação: Ênfase em Engenharia da Computação: Bachareladopt_BR
dc.degree.levelgraduaçãopt_BR


Files in this item

Thumbnail
   

This item is licensed under a Creative Commons License

Show simple item record