Inteligência na Borda
A linha temática Inteligência na Borda visa responder questões tais como usar equipamentos na borda da rede para a facilitação da execução de algoritmos de IA, considerando os recursos computacionais disponı́veis. Abaixo são descritas as tarefas envolvidas nessa linha temática.
Tarefa 4: Swarm Intelligence para Gerenciamento e Armazenamento de Dados Descentralizados
Com a hierarquia do continuo entre borda e nuvem e a descentralização da computação e do armazenamento, são necessários algoritmos para orquestrar e gerenciar tanto os nós intermediários quanto os dispositivos de borda. Para o alcance destes objetivos, existe uma classe de algoritmos de inteligência artificial chamada Swarm Intelligence, na qual agentes descentralizados se comunicam entre si e com o ambiente, formando uma camada coletiva para auto gerenciar sistemas.
Esta tarefa estudará a utilização de Swarm Intelligence (SI) para tratar o problema de gerenciamento e armazenamento de dados descentralizados em um ambiente de Fog Computing. Para atingir esse objetivo, realizaremos um estudo sobre os métodos e o estado da arte dos algoritmos de SI aplicados à computação distribuı́da. Ela é uma classe com vários algoritmos que podem ser aplicados para resolver diversos problemas. Um exemplo mais antigo é o Particle Swarm Optimization (PSO), um método de otimização para busca global baseado no comportamento de um grupo de pássaros ou cardume de peixes, utilizando para resolver o problema de escalonamento de recursos em nuvem. Mais recentemente, foi realizada uma pesquisa foi feita compilando os resultados de vários algoritmos de SI em diversos problemas de Cloud Computing, Fog Computing e Edge Computing. Métodos diversificados, como Firefly Algorithm, Artificial Bee Colony e Social Spider Algorithm, são utilizados para resolver problemas como consumo de energia em dispositivos de borda, melhora no tempo de resposta de aplicações, ou escalonamento de tarefas. Aliado ao estudo de SI, realizaremos, também, um estudo sobre os métodos e o estado da arte de gerenciamento e armazenamento de dados descentralizados. A implementação de swarm intelligence em um ambiente de contı́nuo de computação congregando borda e nuvem traz desafios na introdução de alta heterogeneidade de recursos nos modelos de alocação de recursos e também a alta heterogeneidade de requisitos das aplicações, cujas demandas de qualidade de serviço e experiência são variáveis ao longo do tempo. A heterogeneidade do sistema e aplicações traz problemas multicritério complexos e que demandam um entendimento mais aprofundado das implicações das tomadas de decisão na alocação de recursos, que serão tratados neste tópico de pesquisa.
No presente projeto, pretende-se integrar duas frentes de investigação, combinando os algoritmos de Swarm Intelligence para resolver problemas de gerenciamento e armazenamento de dados em Fog/Edge Computing. Para esta etapa, é importante, também, a escolha de simuladores do ambiente de computação que se ajustem melhor à implementação desejada. A avaliação dos algoritmos desenvolvidos será realizada através de simulações utilizando simuladores de mobilidade reconhecidos na literatura, como o Veins 1 e traces de mobilidade realı́sticos da literatura com mapas e tráfegos reais. Desta forma, para que esta tarefa seja desenvolvida e seus objetivos sejam alcançados, as seguintes etapas serão realizadas: i) estudo dos métodos e estado da arte de algoritmos de Swarm Intelligence com foco em problemas de Fog Computing e Edge Computing; ii) estudo dos métodos e estado da arte de gerenciamento e armazenamento de dados descentralizados, com foco, também, em Fog Computing e Edge Computing; iii) estudo de um simulador para que as implementações e os testes sejam realizados; iv) implementação e testes dos algoritmos estudados para problemas de dados descentralizados; v) oposição de métodos com Swarm Intelligence para resolver problemas de dados descentralizados; e vi) avaliação e comparação do método proposto com os algoritmos existentes.
Tarefa 5: Mecanismos para Análise e Fusão de Dados em Planos de Dados Programáveis na Borda
Nos cenários de IoT considerados no contexto dessa proposta, um número considerável de dispositivos pode estar produzindo continuamente dados e trocando informações para dar suporte a diferentes aplicações crı́ticas, como por exemplo cidades inteligentes. No entanto, como o volume de dados é tipicamente grande, existem duas preocupações principais: primeiro, a geração excessiva de dados pode criar congestionamento na rede e sobrecarregar os servidores que processam esses dados na nuvem. Em segundo, a análise de dados com atraso pode levar a respostas tardias para usuários de IoT e afetar o desempenho das aplicações. Dessa forma, o pre-processamento de dados gerados deveria ser preferencialmente realizado de forma antecipada, na borda da rede.
Descarregar para o plano de dados as funções de pré-processamento de dados gerados por sensores, incluindo a fusão e análise de dados, é um paradigma promissor para promover o uso mais eficiente de recursos e tornar a análise de dados mais rápida. Isso ainda teria como efeito secundário aliviar a carga de processamento e análise que seria feita na nuvem. Nesse sentido, essa tarefa propõe utilizar os recursos de processamento de planos de dados programáveis (PDP) para realizar parte da computação na borda da rede. Um dos principais desafios é definir uma taxonomia de funções de pre-processamento, incluindo agregação, concatenação, filtragem, priorização, etc, e permitir que a partir de um programa controlador, o operador de rede possa especificar como compor blocos de pre-processamento no código P4, em uma ordem especı́fica para cada tipo de aplicação/dispositivo. Esse mecanismo precisa operar sujeito às limitações encontradas em switches programáveis, que incluem quantidade limitada de memória disponı́vel e número restrito de acessos à memória.
Internet of Things Protocol (IoTP) é um protocolo de comunicação L2 criado para plano de dados programáveis em IoT que suporta a implementação de algoritmos de agregação em switches. Através desse suporte, IoTP permite implementar diferentes e adaptáveis esquemas de agregação que funcionam com diferentes tecnologias utilizadas pelos dispositivos IoT. A solução é implementada utilizando a linguagem P4. A atividade descrita nessa tarefa é complementar a esse esforço, porém considera uma biblioteca expansı́vel de funções de pre-processamentos. Wang et al. apresentam o projeto e implementação de funções agregadoras e desagregadoras no processamento de pacotes em pipelines de switches P4 para ambientes IoT. A proposta permite que pacotes com payloads de tamanhos variáveis sejam agregados e desagregados puramente no plano de dados do switch P4. O mecanismo agregador apresentado é complementar à atividade apresentada nessa tarefa, e baseado em um tipo especı́fico de função de pré-processamento (concatenação de payloads).
Esta tarefa tem por objetivo propor um sistema para endereçar aspectos de escalabilidade na coleta de dados gerados por dispositivos IoT. Em particular, argumentamos a favor de uma coleta, análise e fusão de dados usando planos de dados programáveis, de modo a pre-processar dados gerados por dispositivos de IoT. O objetivo é fornecer uma biblioteca de funções de pré-processamento a fim de reduzir, filtrar e priorizar a quantidade de dados gerados em um ambiente IoT, antes de encaminhá-los à nuvem. A programabilidade do plano de dados será explorada para combinar um conjunto especı́fico de funções de pre-processamento, que possa ser customizado para diferentes aplicações e cenários de uso. Para a avaliação, prevê-se a utilização inicial de switches em software, como o BMv2, e em um segundo momento a avaliação de um protótipo construı́do sobre um testbed usando SmartNICs programáveis e switches programáveis Edgecore Wedge 100BF-32X.
Tarefa 6: Aprendizado de Máquina com Participação Estendida dos dispositivos de Borda
A participação dos dispositivos IoT no processamento de dados requer a correta compreensão das diferenças de função e recursos destes em relação à estrutura em borda e nuvem. Nesse sentido, uma alternativa para reduzir o tempo de resposta para procedimentos de classificação é iniciá-los já nos dispositivos IoT. As redes neurais profundas (Deep Neural Networks – DNNs) com saı́das antecipadas surgem como uma solução para reduzir o tempo de execução da inferência. Tal modelo é composto por um backbone e diversas ramificações laterais usadas para inferência antecipada. As DNNs de saı́da antecipada aproveitam o fato de que diferentes entradas podem ter dificuldades de classificação distintas. Por conseguinte, amostras mais simples podem ser inferidas com bom desempenho nos ramos laterais, utilizados como saı́das iniciais. A cada saı́da antecipada, a confiança da predição é usada para determinar se a inferência pode parar na saı́da antecipada ou se deve permanecer até o final do backbone. Como consequência, amostras mais complexas são inferidas no backbone, pela a saı́da convencional da DNN. Como um número significativo de amostras pode ser classificado anteriormente, já nas ramificações laterais, o tempo de execução da inferência global é reduzido. As saı́das antecipadas podem também ser empregadas em estratégias de offloading adaptativo. Nesse cenário, parte do modelo possui saı́das antecipadas e é instalada no dispositivo. Caso o resultado das saı́das antecipadas não tenham a confiança necessária, envia-se a amostra para a nuvem, que executa o backbone da DNN até a sua saı́da convencional. Assim, o offloading adaptativo lida com o compromisso entre usar um modelo mais simples no dispositivo e aumentar o tempo de inferência e tráfego de rede ao enviar amostras para a nuvem. Esta tarefa investiga o emprego de modelos de aprendizado de máquina com saı́das antecipadas e avalia o seu desempenho para diferentes tipos de dados de entrada.
Apesar de a participação estendida dos dispositivos da borda ser importante para o desenvolvimento de aplicações inovadoras em IoT, ainda há lacunas que serão exploradas neste projeto. O uso de saı́das antecipadas, por exemplo, pode gerar overhead, visto que é necessário realizar processamento para verificar a confiança em cada saı́da. Além disso, é necessário realizar melhores estimativas sobre a confiança, já que um valor de confiança irrealisticamente alto pode reduzir a acurácia das saı́das antecipadas. Por outro lado, um valor baixo pode aumentar o offloading e, consequentemente, o tempo de resposta. Outra contribuição desta tarefa é a avaliação de desempenho do uso de saı́das antecipadas em diferentes arquiteturas de redes, como é o caso de redes neurais que usam segmentação semântica, e aquelas que antecipam o envio da amostra à nuvem, caso esta apresente um nı́vel baixo de confiança já nos primeiros ramos da rede. Os desafios do uso de segmentação semântica estão relacionados com a identificação de múltiplos objetos em uma única figura, sabendo que os modelos com saı́das antecipadas tipicamente tratam da identificação de apenas um objeto. Já o desafio da antecipação do envio da amostra para a nuvem está em propor um novo parâmetro que possa ser usado como saı́da da rede para a nuvem. A ideia é lidar com o compromisso entre overhead na borda computacional e tempo de resposta. Esses dois desafios, uso de segmentação semântica e saı́das antecipadas para a nuvem, representam direções de pesquisa atuais a serem adicionalmente tratadas nesta tarefa.