A Databricks introduziu no ano passado Databricks Apps, completando sua suíte de ferramentas que permite aos usuários criar e implantar aplicações diretamente na Plataforma Databricks. Com Databricks Apps, os desenvolvedores podem construir e lançar aplicações de dados e IA mais rapidamente, de forma mais segura e com integração perfeita na Plataforma de Inteligência de Dados Databricks. Suportando frameworks populares, implantação sem servidor e governança integrada, Databricks Apps é projetado para simplificar e acelerar o desenvolvimento de soluções de IA impactantes.
Neste guia, mostraremos como aproveitar o poder do GenAI e do Unity Catalog para construir e implantar aplicações de IA personalizadas que podem transformar seu negócio. Usando modelos Hugging Face, Unity Catalog, Model Serving e Databricks Apps, vamos passar pela criação e implantação de um aplicativo GenAI pronto para produção - sem necessidade de experiência avançada em desenvolvimento de aplicativos web. Ao final deste tutorial, você aprenderá como desbloquear o potencial dos seus dados no Catálogo Unity e transformar modelos complexos de IA em aplicações práticas e prontas para o negócio, que impulsionam a produtividade e a inovação.
Como exemplo, criamos um aplicativo GenAI que combina duas entradas: uma imagem e um texto de prompt. Com o poder da IA gerativa, o aplicativo transformou a imagem original com base no prompt, produzindo uma saída visual única e personalizada.
Nas seções abaixo, vamos guiá-lo passo a passo pelo processo:
Nota: Databricks Apps está atualmente em Visualização Pública e pode ainda não estar disponível em sua região. Para disponibilidade, verifique aqui.
No Databricks, volume é um objeto do Catálogo Unity que fornece armazenamento governado para dados não tabulares (como arquivos, imagens ou documentos). Isso permite que as organizações armazenem, acessem e compartilhem vários tipos de dados de forma segura, mantendo a governança e o controle centralizados.
Para o nosso exemplo, vamos baixar uma imagem do Hugging Face e, como estamos manipulando imagens, vamos salvá-la em um volume do Databricks:
A imagem de exemplo pode ser vista abaixo:
Primeiro, precisamos selecionar um modelo do HuggingFace que possa gerar imagens com base em um prompt e uma imagem de entrada. Vamos escolher o modelo decodificador Kandinsky 2-2 (https://huggingface.co/docs/diffusers/pt/using-diffusers/img2img#image-to-image).
Em seguida, podemos registrar nosso modelo no Catálogo Unity usando MLflow. Usaremos o sabor MLflow pyfunc para criar uma classe personalizada, que servirá como nosso invólucro de modelo:
Adicionamos duas funções (image_to_base64 e base64_to_image) à classe para codificar e decodificar imagens. Elas são necessárias porque não podemos analisar imagens PIL em JSON para enviar nossa entrada para nosso modelo implantado.
Depois de preparar nossa classe, faremos o log e registraremos o modelo no Catálogo Unity. O modelo esperará um DataFrame contendo parâmetros, o prompt e a imagem como entrada. Criamos um exemplo de entrada usando nossa imagem previamente carregada em nosso Volume.
Tendo registrado nosso modelo no Unity Catalog, agora estamos prontos para enfrentar a crucial etapa de implantação através do Model Serving. A próxima seção irá guiá-lo na transformação do seu modelo em um serviço pronto para produção, capaz de lidar com solicitações de previsão em tempo real em grande escala.
Model Serving no Databricks é um serviço totalmente gerenciado que permite implantar modelos de aprendizado de máquina como APIs REST. Isso os torna facilmente acessíveis para previsões em tempo real sem se preocupar com a infraestrutura subjacente ou escalabilidade. Para saber mais, consulte o recurso disponível neste link.
Implantamos um modelo registrado no Catálogo Unity com Model Serving:
O processo de construção do ponto de extremidade de serviço do modelo começará. Uma vez em funcionamento, podemos navegar até a seção "Model Serving" e clicar no ponto de extremidade para obter os detalhes da conexão.
Em seguida, podemos começar a criar nossos Apps Databricks.
Databricks Apps é um novo recurso (confira a documentação aqui) projetado para simplificar a criação e implantação de aplicativos web dentro da Plataforma Databricks. Com Databricks Apps, os profissionais podem construir aplicativos aproveitando dados, modelos e governança já existentes no Databricks sem a necessidade de gerenciar uma infraestrutura separada. Databricks Apps oferece flexibilidade, permitindo que você construa sua Interface de Aplicativo com o framework de sua escolha: Dash, Shiny, Gradio, Streamlit ou Flask.
Para começar a criar o App na sua Plataforma Databricks com base nesta página:
Em seguida, configure o ambiente do seu aplicativo:
Agora que concluímos a configuração, vamos prosseguir com a construção do código para nosso WebApp.
Vamos mergulhar nos componentes críticos do nosso aplicativo:
O código a seguir define uma função, query_image_from_volume(), que recupera um arquivo de imagem de um volume Databricks. Ele usa o SDK Databricks para autenticar e baixar o arquivo de imagem, depois o abre usando a PIL (Python Imaging Library) e o converte para o formato RGB. A função configura as variáveis de ambiente necessárias, incluindo um token secreto para autenticação, antes de buscar e processar a imagem.
Abaixo, definimos uma função query_model_endpoint que prepara e envia uma solicitação ao nosso endpoint de modelo (implantado anteriormente com Model Serving) para geração de imagem. Ela pega uma imagem de entrada, a converte para base64 (porque uma imagem PIL não pode ser diretamente serializada em JSON), constrói um DataFrame com vários parâmetros, incluindo a imagem e os prompts, e envia esses dados como um payload JSON para a URL do endpoint do modelo. Finalmente, ela processa a resposta convertendo os dados da imagem base64 retornados em um objeto de imagem RGB para que possamos visualizar o resultado em nosso App.
A URL do seu modelo pode ser encontrada na interface do usuário do Model Serving clicando no seu modelo implantado.
Nesta seção, criamos uma interface Gradio para nosso aplicativo GenAI que transforma imagens com base na entrada do usuário. Ela configura um layout com um logotipo, título, caixa de texto de entrada para descrição de personagem e duas exibições de imagem (antes e depois da transformação), juntamente com botões para executar a transformação e limpar as entradas. A interface conecta a entrada do usuário à nossa função query_model_endpoint definida anteriormente, que processa a entrada e gera os resultados, que serão então exibidos no componente de imagem "Depois".
Se você quiser adicionar imagens ou logs ao seu WebApp, pode criar outra pasta (chamada "static" em nosso código acima) dentro do mesmo diretório para armazenar as imagens (como fizemos aqui com static/DatabricksLogo_full3.png).
Este trecho de código é normalmente usado no final de um script de aplicativo Gradio. Ele verifica se o script está sendo executado diretamente (não importado como um módulo) usando a condição if __name__ == "__main__":. Se verdadeiro, ele lança a interface Gradio definida no objeto demo. O aplicativo é inicialmente implantado no host local. Se você quiser torná-lo acessível através de uma URL pública, terá que adicionar share=True em launch().
Com nosso App Databricks desenvolvido e pronto para implantação, criamos com sucesso uma interface interativa e poderosa para nosso modelo GenAI. No entanto, antes de podermos liberar seu potencial, devemos abordar um aspecto crucial da gestão de aplicativos: as permissões.
Na próxima seção, exploraremos como conceder as permissões necessárias ao Service Principal por trás do nosso App Databricks, garantindo que ele tenha o nível certo de acesso para desempenhar suas funções de forma segura e eficaz.
Você pode encontrar o nome do service principal no UI do seu App, na seção Recursos do App. Uma vez identificado, conceda as seguintes permissões ao Service Principal:
Para implantar nosso WebApp, navegue até a interface do usuário do seu WebApp e clique em Implantar. Em seguida, selecione a pasta onde seu main.py está localizado. Isso implantará seu código em um contêiner isolado. A implantação inicial do aplicativo pode levar vários minutos para ser concluída. Uma vez que o processo conclui e o indicador de status exibe "Running", seu aplicativo está totalmente implantado e operacional.
Após a implementação bem-sucedida, você terá acesso a uma interface de usuário totalmente funcional e interativa dentro de um aplicativo web que utiliza o modelo Kandinsky. Para lançar seu aplicativo:
Aqui estão os resultados do nosso exemplo no nosso Databricks App:
Como demonstrado, os passos são claros e diretos. A maior parte do trabalho é feita dentro da Plataforma de Inteligência Databricks, reduzindo significativamente a complexidade e o tempo de desenvolvimento. Essa abordagem permite que você implante seu modelo de forma rápida e simples em um aplicativo web sem servidor, sem os obstáculos tradicionais do gerenciamento de infraestrutura.
Esperamos que você tenha achado este tutorial útil ao concluir esta jornada. Encorajamos você a explorar mais estas capacidades e ver como elas podem acelerar suas iniciativas de IA. Com a ajuda deste blog, você pode levar seu App para o próximo nível, ajustando o modelo, permitindo que você personalize ainda mais seu aplicativo para atender às suas necessidades específicas. Esta personalização permitirá que você crie soluções de IA verdadeiramente adaptadas às necessidades da sua organização, potencialmente revolucionando seus processos de negócios e impulsionando a inovação.
Desejamos-lhe sucesso na construção do seu próprio aplicativo web GenAI e estamos animados para ver os fantásticos aplicativos web GenAI que você criará!
(This blog post has been translated using AI-powered tools) Original Post