O KubeAI é um sistema de código aberto da Microsoft que utiliza Kubernetes para facilitar a criação e execução de aplicativos de aprendizado de máquina em dispositivos de borda com pouca intervenção.

A capacidade de visão computacional é cada vez mais essencial na indústria, não apenas para a gestão de produtos e estoques, mas também para a segurança. Essa tecnologia é eficaz na rápida classificação de objetos e detecção de irregularidades. Contudo, a utilização dessa tecnologia na periferia da rede enfrenta um desafio: a latência. Quando se trata da segurança das pessoas, não se deseja depender de uma combinação de redes com e sem fio, ou de recursos na nuvem que podem demandar um tempo de ativação antes de serem utilizados.
Uma das razões fundamentais mencionadas pelo CEO da Microsoft, Satya Nadella, é a importância da “borda inteligente”, que consiste em disponibilizar ferramentas e serviços de nuvem em dispositivos conectados à rede. É essencial ter acesso, pelo menos em parte, a serviços de nuvem na borda, o que inclui visão computacional.
A Microsoft disponibilizou anteriormente recursos para encapsular recursos do Azure Cognitive Services em contêineres, como as ferramentas de visão personalizada, e integrá-los à sua plataforma Azure IoT Edge. No entanto, o que fazer se você estiver implementando sua própria solução de borda?
Recipientes de aprendizado de máquina implantados em dispositivos periféricos.
Os recipientes são uma ótima forma de implementar software na periferia da rede, com Kubernetes e malhas de serviço proporcionando uma plataforma neutra para o seu código. Utilizando ferramentas como Helm, é possível acessar recipientes e outros recursos de repositórios em nuvens públicas e privadas. É viável desenvolver e testar o código remotamente, por exemplo, utilizando o Azure Kubernetes Service para hospedar redes de desenvolvimento, e então distribuir recipientes compatíveis com x86 e Arm para os repositórios na periferia.
Ao optar por utilizar o Kubernetes na borda, você tem a possibilidade de escolher entre diferentes tipos de hardware e software. As versões otimizadas do Kubernetes para borda oferecidas pela Microsoft e por outros fornecedores incluem tanto o Kubernetes padrão quanto distribuições específicas para dispositivos menores, como o MicroK8s e o K3s. O ponto importante a ser destacado é que todas essas opções compartilham as mesmas APIs, o que significa que, embora possam restringir o número de nós operacionais, não é necessário ter compilações separadas, exceto aquelas destinadas a diferentes arquiteturas de processador.
Introduzindo KAN: a Plataforma de Aplicativos KubeAI.
O que se precisa é uma forma confiável de criar e controlar aplicativos de aprendizado de máquina de borda em Kubernetes, para agilizar o processo de desenvolvimento e entrega. Isso é feito pelo KAN, o aplicativo KubeAI Nexus. Conforme mencionado no início do post do blog, o nome vem de um verbo em mandarim que significa “observar” ou “ver”. O KAN é um projeto de código aberto disponível no GitHub.
O propósito é criar um ambiente específico para disponibilizar soluções de aprendizado de máquina em larga escala. Isso é essencial para lidar com a indústria da internet das coisas, onde os locais podem possuir muitos dispositivos que podem se beneficiar de serviços de inteligência artificial, como transformar câmeras de segurança em um sistema de monitoramento de situações de risco em fábricas ou depósitos.
KAN foi desenvolvido para rodar o código em hardware de borda, coletando dados de dispositivos locais conectados e utilizando modelos de aprendizado de máquina pré- treinados para obter informações úteis. Além disso, oferece um portal para monitoramento e gerenciamento, juntamente com um ambiente de desenvolvimento de baixo código que funciona em sistemas Kubernetes, tanto localmente quanto na nuvem.
É fundamental ressaltar que o portal de administração KAN não atua como destino final para seus dados, os quais serão utilizados em seus próprios aplicativos ou serviços, operando onde forem necessários. Vale mencionar que embora não seja obrigatório hospedar o KAN no Azure, essa decisão possibilitará uma integração mais aprofundada com os serviços Azure Edge e AI, como o Azure IoT Hub e Azure Cognitive Services.
Iniciar com a metodologia KAN.
Para começar, é necessário ter um cluster de Kubernetes compatível com Helm. No caso de utilização do Azure, a KAN é compatível com o AKS gerenciado, facilitando a configuração sem a necessidade de recursos extras de engenharia do Kubernetes. A instalação requer um shell bash, pois utiliza o wget para baixar e executar um script de instalação do repositório KAN no GitHub. Durante o processo, será perguntado se você está usando o Azure ou não.
O script de instalação guia você pelos passos necessários para configurar o KAN, desde a escolha de uma configuração Kubernetes até a adição de suporte de armazenamento. Se estiver usando o Azure, você também pode conectar-se a uma assinatura de Serviços Cognitivos, seja trabalhando com uma existente ou criando uma nova. Optar por trabalhar fora do Azure reduzirá a quantidade de etapas necessárias, mas ambos os caminhos levam ao mesmo resultado: uma URL que direciona para o portal KAN. O instalador, que é um script Helm, permite desinstalar tanto o portal quanto o KAN usando o Helm.
Depois de instalar o KAN, você pode começar a usar o portal KAN para criar sua primeira aplicação. Para isso, é necessário conectar um dispositivo de computação, que pode ser escolhido entre diversas opções, como hardware de borda NVIDIA ou o próprio Azure Stack Edge da Microsoft. Esses dispositivos podem ser utilizados em clusters Kubernetes ou como dispositivos Azure Edge. O KAN é compatível com o ambiente básico de Kubernetes do Azure Edge Essentials, da Microsoft, que facilita a hospedagem de modelos de contêiner únicos.
Você pode utilizar as Máquinas Virtuais do Azure como dispositivos de teste, permitindo a criação de gêmeos digitais personalizados para garantir o funcionamento adequado de seus sistemas de borda. As câmeras devem ser compatíveis com o protocolo RTSP, o que engloba a maioria das câmeras IP industriais disponíveis no mercado. A KAN suporta um modelo de processamento multiuso, permitindo que os feeds de uma câmera sejam processados por várias aplicações ou que uma aplicação trabalhe com feeds de múltiplas câmeras. Além disso, o portal é capaz de exibir visualizações dos feeds para facilitar a depuração visual dos aplicativos.
Desenvolver um sistema de machine learning usando a KAN.
Ao utilizar o Azure IoT Hub, é possível economizar tempo ao gerenciar os dispositivos por meio dessa plataforma. Para começar, é recomendável escolher a arquitetura do dispositivo e aproveitar as tecnologias de aceleração disponíveis. A Microsoft sugere o uso do KAN com dispositivos acelerados, como GPUs da NVIDIA e Intel NPUs, para lidar com modelos mais robustos e precisos. Essa aceleração é crucial para aplicativos de segurança crítica na borda, permitindo a execução desses modelos em hardware com recursos limitados.
Enquanto KAN foi criado para desenvolver modelos personalizados treinados com dados próprios, existe a disponibilidade de opções pré-existentes para algumas situações comuns, e suporte planejado para o Modelo Zoo do OpenVino. KAN permite que você leve seus modelos e oferece uma ferramenta de design gráfico baseada em nós para criar o que ele se refere como “habilidades de IA”. Neste ambiente, é possível conectar câmeras IP aos modelos, adicionar nós para transformar e filtrar as saídas, e exportar dados brutos e saídas transformadas para outras aplicações e serviços.
Essa abordagem permite a utilização de um modelo de visão para identificar se alguém está se aproximando muito de uma máquina, filtrando a saída para exportar somente dados específicos rotulados (como a identificação de uma pessoa). Também é possível combinar diferentes modelos de reconhecimento, refinando assim os resultados obtidos. Por exemplo, uma câmera em uma linha de produção pode empregar um modelo para classificar produtos como defeituosos e outro para determinar se essas falhas podem ser corrigidas. Ao fornecer apenas dados classificados ao segundo modelo, mais complexo, é possível garantir o uso da quantidade mínima de recursos computacionais necessária.
Após a construção e teste do seu aplicativo, você pode empacotá-lo e instalá-lo em dispositivos de destino através do portal KAN. Embora atualmente seja possível implantar em apenas um dispositivo por vez, é necessário oferecer suporte para múltiplos dispositivos se o KAN for escalado para gerenciar propriedades inteiras. A plataforma facilita a entrega de aplicativos de aprendizado de máquina para sistemas Kubernetes ou Azure IoT Edge da Microsoft, fornecendo um local centralizado para visualizar todas as implantações, mesmo que seja necessário implantar em dispositivos de borda individualmente. Isso ainda é mais simples do que realizar implantações manuais.
Aprender a partir do Azure Precept
Muitos elementos do Azure Percept, tanto em termos de hardware quanto de software, são semelhantes ao KAN. Ambos foram criados para simplificar a implementação de soluções de inteligência artificial em dispositivos de borda, com ênfase na praticidade, e oferecem ferramentas de baixo código para construir e implantar aplicativos de machine learning. Enquanto o Percept ainda não foi lançado, o KAN parece estar aprendendo com a experiência do desenvolvimento do Percept. A abordagem de baixo código do Percept para desenvolver aplicativos de visão computacional foi considerada cuidadosa, combinando conceitos de ferramentas de IoT, como o Node-RED, com elementos familiares da Power Platform. Portanto, é positivo ver essas ideias sendo reintroduzidas através do KAN.
Será interessante observar o desenvolvimento do KAN. Lidar com software de borda ainda é uma tarefa complexa, e soluções como essa podem simplificar o processo, permitindo a rápida criação, teste e implementação de código. O aprendizado de máquina na borda tem potencial para resolver diversos problemas, e o KAN pode ser a ferramenta que facilita a experimentação e o trabalho em larga escala nessa área.