Sobre a Streamlit in Snowflake

Atenção

Este recurso está disponível para contas nas regiões comerciais do AWS e Microsoft Azure. AWS PrivateLink e Azure Private Link não são suportados.

Este tópico descreve como usar Streamlit in Snowflake para desenvolver e executar aplicativos Streamlit.

Sobre a Streamlit in Snowflake

Streamlit é uma biblioteca Python de código aberto que facilita a criação e o compartilhamento de aplicativos da web personalizados para aprendizado de máquina e ciência de dados. Ao usar o Streamlit, você pode criar e implantar rapidamente aplicativos de dados poderosos. Para obter mais informações sobre a biblioteca de código aberto, consulte a documentação da biblioteca Streamlit.

Streamlit in Snowflake ajuda os desenvolvedores a criar, implantar e compartilhar aplicativos Streamlit com segurança na nuvem de dados do Snowflake. Usando Streamlit in Snowflake, você pode criar aplicativos que processam e usam dados no Snowflake sem mover dados ou código do aplicativo para um sistema externo.

Pré-requisitos para o uso do Streamlit in Snowflake

Para usar Streamlit in Snowflake certifique-se de atender aos seguintes pré-requisitos:

Privilégios necessários para criar e usar um aplicativo Streamlit

Dentro de Streamlit in Snowflake, um aplicativo Streamlit é um objeto protegível que segue a estrutura de controle de acesso Snowflake. Os aplicativos Streamlit usam um modelo de permissão baseado nos direitos do proprietário. Consulte Noções básicas sobre os direitos do proprietário e aplicativos Streamlit in Snowflake para obter mais detalhes.

Um editor de aplicativo e o proprietário do esquema que contém o aplicativo Streamlit podem determinar quais funções têm permissão para usar o aplicativo. Os usuários podem interagir com o aplicativo e ver qualquer coisa exibida pelo aplicativo Streamlit. Os usuários têm a mesma visão do aplicativo que o proprietário.

Para obter mais informações, consulte Compartilhamento de um aplicativo Streamlit.

Privilégios necessários para criar um aplicativo Streamlit

Os aplicativos Streamlit são objetos no nível do esquema.

Para criar e editar um aplicativo Streamlit usando Streamlit in Snowflake, você deve usar uma função que tenha o privilégio OWNERSHIP no esquema ou ambos os privilégios a seguir:

  • Concedido no bando de dados que contém o aplicativo Streamlit:

    • USAGE

  • Concedido no esquema que contém o aplicativo Streamlit:

    • USAGE

    • CREATE STREAMLIT

    • CREATE STAGE

Use o comando GRANT <privilégios> para conceder esses privilégios a uma função, conforme mostrado nos exemplos a seguir:

GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
Copy

Se uma concessão futura for definida no banco de dados ou esquema, certifique-se de que o usuário crie o aplicativo Streamlit usando a função definida na concessão futura.

Privilégios necessários para visualizar um aplicativo Streamlit

Para visualizar um aplicativo Streamlit, você deve ter uma conta Snowflake e estar conectado nela. Adicionalmente, você deve usar uma função com o privilégio USAGE no seguinte:

  • Banco de dados que contém o aplicativo Streamlit.

  • Esquema que contém o aplicativo Streamlit.

  • Aplicativo Streamlit.

Na maioria dos casos, quando o proprietário do aplicativo compartilha um aplicativo Streamlit com outra função, o privilégio USAGE é concedido automaticamente à nova função. No entanto, se um aplicativo Streamlit for criado em um esquema com MANAGED ACCESS, o privilégio USAGE deverá ser concedido manualmente à nova função.

O proprietário do esquema ou um usuário com função com o privilégio MANAGE GRANTS deve conceder o privilégio USAGE usando o comando GRANT <privilégios>, conforme mostrado nos exemplos a seguir:

GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT streamlit_db.streamlit_schema.streamlit_app to ROLE streamlit_user;
Copy

Nota

Concessões futuras não são suportados para objetos STREAMLIT.

Versões suportadas da biblioteca Streamlit

Streamlit in Snowflake oferece suporte a v1.22.0 e v1.26.0 da biblioteca Streamlit. O suporte para novas versões da biblioteca Streamlit será incluído posteriormente.

Para visualizar as notas de lançamento de cada versão, consulte o log de alterações da biblioteca Streamlit. Observe que alguns recursos da biblioteca Streamlit de código aberto não são compatíveis com Streamlit in Snowflake. Consulte Recursos Streamlit não suportados.

Seleção da versão da biblioteca Streamlit

Para cada aplicativo Streamlit in Snowflake, você pode selecionar a versão da biblioteca Streamlit em Snowsight ou fixar a versão no arquivo environment.yml do aplicativo. Se você não fixar a versão, a versão mais recente disponível será usada.

Snowflake recomenda fixar uma versão do Streamlit para evitar que o aplicativo seja atualizado quando uma nova versão do Streamlit estiver disponível no Snowflake Anaconda Channel.

Seleção da versão Streamlit no aplicativo Streamlit no Snowsight

Para selecionar a versão a ser usada no aplicativo Streamlit em Snowsight:

  1. Entre em Snowsight como um usuário com o privilégio CREATE STREAMLIT.

  2. No menu de navegação, selecione Projects » Streamlit.

  3. Selecione o aplicativo Streamlit.

  4. Selecione Edit.

  5. Na parte superior do editor Streamlit, selecione Packages.

  6. Selecione a versão Streamlit.

Fixação da versão do Streamlit no arquivo environment.yml

Para fixar a versão do Streamlit no arquivo environment.yml, use o seguinte exemplo:

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
- streamlit=1.26
Copy

Pacotes externos suportados

Por padrão, Streamlit in Snowflake inclui os pacotes python, streamlit e snowflake-snowpark-python pré-instalados em seu ambiente. O ambiente também tem acesso às dependências exigidas por esses pacotes.

Os aplicativos Streamlit in Snowflake são executados em Python 3.8.

Você pode instalar pacotes adicionais em seu aplicativo Streamlit. Consulte o Canal Snowflake Anaconda para obter uma lista de pacotes suportados.

Consulte os tópicos a seguir para obter informações sobre como incluir um pacote compatível em seu aplicativo Streamlilt:

Considerações de simultaneidade para Streamlit in Snowflake

Streamlit in Snowflake fornece otimização de sessão e escalonamento automático no Snowflake para lidar com períodos de maior demanda por um aplicativo Streamlit. Streamlit in Snowflake usa uma combinação de instâncias de serviços de nuvem e instâncias de warehouse virtual. Consulte Conceitos-chave e arquitetura para obter mais informações.

Para manter a integridade do Snowflake, Streamlit in Snowflake impõe limites por instância, por conta e por usuário no número de sessões Streamlit simultâneas que uma instância de serviços de nuvem pode lidar. As sessões Streamlit têm balanceamento de carga entre essas instâncias até que todas as instâncias atinjam seu limite de sessões simultâneas. Quando um limite é atingido, a instância é dimensionada automaticamente para suportar sessões adicionais.

Nota

As solicitações de usuários do aplicativo Streamlit podem ser limitadas temporariamente. Os usuários poderão ver uma mensagem «Aguarde» quando o escalonamento automático for iniciado.

Considerações sobre faturamento para Streamlit in Snowflake

Streamlit in Snowflake requer um warehouse virtual para executar um aplicativo Streamlit e realizar consultas SQL. Para executar um aplicativo Streamlit, você deve selecionar um único warehouse virtual para executar o próprio aplicativo e suas consultas. Este warehouse permanece ativo enquanto a conexão do WebSocket do aplicativo estiver ativa. A conexão do WebSocket, que mantém o warehouse virtual do aplicativo Streamlit ativo, expira aproximadamente 15 minutos após o último uso do aplicativo.

Para conservar os créditos, você pode suspender o warehouse virtual. Como alternativa, você pode fechar a página da Web que executa o aplicativo, o que permite que o warehouse virtual em execução seja suspenso automaticamente.

Diretrizes para selecionar um warehouse em Streamlit in Snowflake

Ao executar um aplicativo Streamlit em Streamlit in Snowflake, vários fatores podem afetar o desempenho, incluindo a complexidade do aplicativo Streamlit, a disponibilidade de warehouses, a latência e o custo. As seções a seguir fornecem diretrizes gerais para usar warehouses virtuais em Streamlit in Snowflake.

Uso de warehouses menores

Ao executar um aplicativo Streamlit em Streamlit in Snowflake, você deve selecionar o menor warehouse possível.

Durante a execução, um warehouse mantém um cache dos pacotes Python usados por um aplicativo Streamlit. O armazenamento em cache de pacotes Python melhora o desempenho para carregamentos posteriores de aplicativos usando a versão em cache de um pacote em vez de fazer download dos pacotes novamente. O cache é removido quando o warehouse é suspenso, o que pode resultar em um carregamento mais lento do aplicativo inicialmente após a retomada do warehouse. À medida que o warehouse retomado é executado e executa mais aplicativos, o cache do pacote é reconstruído e os aplicativos que conseguem aproveitar o cache terão melhor desempenho de carregamento de aplicativos.

Observe que o faturamento de crédito por segundo e a suspensão automática fornecem flexibilidade para começar com warehouses menores e, em seguida, ajustar o tamanho do warehouse para corresponder à carga de trabalho do aplicativo Streamlit. Você pode diminuir o tamanho de um warehouse a qualquer momento. Consulte Alteração do warehouse de um aplicativo Streamlit para obter mais informações.

Uso de warehouses dedicados

Ao usar Streamlit in Snowflake, Snowflake recomenda usar warehouses dedicados para executar aplicativos Streamlit. Isso permite isolar os custos de execução de aplicativos Streamlit. Um warehouse dedicado também pode melhorar o tempo de carregamento do aplicativo, uma vez que o warehouse não precisa gerenciar outras cargas de trabalho.

Consulte Considerações sobre warehouses para obter mais informações.

Dica

Para evitar a suspensão do warehouse durante a inicialização, considere definir a suspensão automática para um mínimo de 30 segundos.