Search
Close this search box.
Cache em web apps Python criados com Streamlit
web apps Python

Posts Relacionados:

Em web apps Python alimentados por modelos de machine learning e IA, cache é extremamente importante. Aprenda como usar esse recurso em suas aplicações web.

Receba nossa newsletter

Cache em web apps Python

web apps Python cache

O cache é crucial para web apps Python, especialmente quando eles são alimentados por modelos de inteligência artificial (IA). Cache reduz o trabalho do lado do servidor, faz economia de largura de banda de internet e até garante alguma funcionalidade offline.

Modelos de IA e machine learning, particularmente modelos de redes neurais, costumam ser grandes. Para uma aplicação web com IA funcionar eficientemente, é importante que, uma vez que o modelo está carregado no app, ele seja preservado no cache até o final da sessão.

Web apps Python com Streamlit

Streamlit é uma biblioteca e API Python ideal para implementar web apps de maneira simples e rápida. Ele é muito popular para a criação de apps de análise e visualização de dados e também aplicações alimentadas com modelos de IA.

Mas o Streamlit tem uma pequena limitação em seus apps padrões. Ele executa o script do seu aplicativo web de cima para baixo a cada interação do usuário ou a cada alteração de código. Este modelo de execução torna o desenvolvimento super fácil. Mas isso causa um problema: as funções de longa execução são executadas repetidamente, tornando os apps lentos. A cada mudança no estado de um app, os objetos são recriados repetidamente e os dados são recarregados… Se seu dado é um arquivo CSV de 15 linhas, não tem problemas. Mas se você precisa usar uma rede neural com milhares de parâmetros, essa limitação é séria. Felizmente, o Streamlit pensou nesses casos!

Streamlit com cache

Apps Streamlit podem armazenar recursos e dados em cache. O cache armazena os resultados de chamadas de função lentas. Com isso, elas só precisam ser executadas uma vez durante uma mesma sessão.

Uma sessão é uma única instância de exibição de um aplicativo. Cada usuário de um aplicativo tem um estado de sessão vinculado à sua exibição específica enquanto ela está ativa. O Streamlit mantém essa sessão à medida que o usuário interage com o aplicativo.

O cache de recursos e dados durante uma sessão possibilita que funções lentas sejam executadas apenas uma vez. Você pode armazenar em cache recursos como modelos de machine learning e IA e dados.

Cache de dados e de recursos

O Streamlit possui dois tipos de cache: cache_data e cache_resource. Em código, ambos são definidos como decoradores Python

O cache_data é o comando ideal para todas as funções que retornam dados. Na primeira execução de uma dessas funções, ela é executada normalmente, e o Streamlit baixa seus dados. O dado baixado é serializado (convertido em bytes) via pickle e armazenado no cache. Nas execuções posteriores, o mecanismo de cache está ativo. Veja um exemplo ilustrativo de como usar o decorador cache_data abaixo:

				
					import streamlit as st

@st.cache_data  # cache para armazenar dados
def load_data(url):
    df = pd.read_csv(url)
    return df
				
			

O comando st.cache_resource é o ideal para armazenar em cache recursos que devem estar disponíveis globalmente para todos os usuários, sessões e reexecuções de um app. Ele é o comando certo para armazenar modelos de machine learning. Veja como usá-lo no exemplo abaixo:

				
					@st.cache_resource #  cache para armazenar recursos como modelos de machine learning
def load_model():
    model = pipeline("sentiment-analysis") # exemplo de modelo
    return model

model = load_model() # carrega modelo 
				
			

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial