Como configuro e soluciono problemas de aplicações Streamlit e Gradio em minhas instâncias de caderno do SageMaker AI?
Quero configurar e solucionar problemas de aplicações Streamlit e Gradio em minhas instâncias de caderno do Amazon SageMaker AI.
Resolução
Certifique-se de atender aos seguintes requisitos:
- Você tem uma instância ativa de caderno do SageMaker AI.
- Sua instância de caderno tem acesso à internet para baixar e instalar pacotes e dependências do Python. Se você desativou o acesso à internet, atualize os scripts e certifique-se de que seus pacotes estejam disponíveis off-line na instância de caderno.
- O usuário que executa o caderno tem permissões sudo para instalar as dependências do sistema. Por padrão, o ambiente de instância de caderno do SageMaker AI fornece permissões sudo.
- Sua instância de caderno tem Python 3.6 ou posterior. Por padrão, as instâncias de caderno do SageMaker AI têm o Python pré-instalado.
- Outros processos não usam as portas 8501 para Streamlit e 7861 para Gradio em sua instância de caderno. É possível atualizar suas portas padrão nos scripts com base no seu caso de uso.
- O grupo de segurança associado à sua instância de caderno permite tráfego de entrada nas portas 8501 e 7861.
Observação: os scripts a seguir são para uma célula de código do caderno Jupyter.
Instale e configure sua aplicação Streamlit
Conclua as etapas a seguir:
-
Execute o seguinte script de configuração único:
%%bash #!/bin/bash CURRENTDATE=$(date +"%Y-%m-%d %T") CYAN='\033[1;36m' NC='\033[0m' # Create the app.py file for Streamlit echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Creating app_streamlit.py for streamlit\n" cat << EOF > app_streamlit.py import streamlit as st st.title("Hello World") EOF echo -e "app_streamlit.py has been created successfully \n" echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Setup completed\n"O script anterior usa pip e o gerenciador de pacotes apropriado para instalar o Streamlit. Além disso, o script cria um arquivo de aplicação básico do Streamlit app_streamlit.py com o título "Hello World".
-
Execute o seguinte script:
%%bash #!/bin/bash CURRENTDATE=$(date +"%Y-%m-%d %T") RED='\033[0;31m' CYAN='\033[1;36m' GREEN='\033[1;32m' NC='\033[0m' echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Getting the URL to view your Streamlit app in the browser\n" PORT=8501 echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC} Port Number ${PORT}\n" RESOURCE_NAME=$(jq .ResourceName /opt/ml/metadata/resource-metadata.json || exit 1) RESOURCE_ARN=$(jq .ResourceArn /opt/ml/metadata/resource-metadata.json || exit 1) RESOURCE_NAME=$(sed -e 's/^"//' -e 's/"$//' <<< "$RESOURCE_NAME") RESOURCE_ARN=$(sed -e 's/^"//' -e 's/"$//' <<< "$RESOURCE_ARN") RESOURCE_ARN_ARRAY=($(echo "$RESOURCE_ARN" | tr ':' '\n')) REGION=$(echo "${RESOURCE_ARN_ARRAY[3]}") NOTEBOOK_URL="https://${RESOURCE_NAME}.notebook.${REGION}.sagemaker.aws" link="${NOTEBOOK_URL}/proxy/${PORT}/" echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC} Starting Streamlit App" echo -e "${CYAN}${CURRENTDATE}: [INFO]: ${GREEN}${link}${NC}" # Run the Streamlit app and save the output to "streamlit.txt" echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Allow upto 10 seconds before clicking the link for app launch to be successful" streamlit run app_streamlit.py --browser.serverPort=${PORT} --server.port=${PORT} >streamlit.txtO script anterior executa a aplicação Streamlit na porta 8501 e salva a saída em um arquivo temporário. O script usa as informações da instância de caderno do SageMaker dos metadados para exibir o URL do Streamlit.
Para obter mais informações sobre como instalar o Streamlit, consulte Install Streamlit (Instalar o Streamlit) no site do Streamlit.
Solucione problemas com sua aplicação Streamlit
Realize as seguintes ações:
-
Se a aplicação Streamlit não iniciar, execute o seguinte comando para verificar se você instalou a aplicação corretamente:
pip list | grep streamlit -
Execute o comando a seguir para garantir que outros processos não usem a porta 8501:
lsof -i :8501 -
Certifique-se de que o grupo de segurança da instância de caderno do SageMaker AI permita tráfego de entrada na porta 8501. Se necessário, é possível atualizar o número de PORT no script para atualizar a porta que o Streamlit usa.
-
Para depurar aplicações Streamlit, adicione o argumento --logger.level=debug à última linha do script, como no exemplo a seguir:
streamlit run app_streamlit.py --browser.serverPort=${PORT} --logger.level=debug --server.port=${PORT} >streamlit_logs.txt
Instale e configure sua aplicação Gradio
Conclua as etapas a seguir:
-
Execute o seguinte script de configuração único:
%%bash #!/bin/bash CURRENTDATE=`date +"%Y-%m-%d %T"` RED='\033[0;31m' CYAN='\033[1;36m' GREEN='\033[1;32m' NC='\033[0m' PORT=7861 # Install python dependencies echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Running pip install gradio\n" pip install --no-cache-dir -q gradio # Create the app.py file for Gradio echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Creating app_gradio.py for Gradio\n" cat << EOF > app_gradio.py import gradio as gr def greet(name): return "Hello " + name + "!" demo = gr.Interface(fn=greet, inputs= "text", outputs = "text") demo.launch(inline=False, debug=True, server_port=${PORT}, root_path="/proxy/${PORT}") EOF echo -e "${CYAN}${CURRENTDATE}: [INFO]:${NC}Setup completed. "O script anterior usa pip e o gerenciador de pacotes apropriado para instalar o Gradio e outras dependências do sistema operacional (SO). Além disso, o script cria um arquivo de aplicação básico do Gradio app_gradio.py Gradio com uma função de saudação.
-
Execute o seguinte script:
%%bash CYAN='\033[1;36m' GREEN='\033[1;32m' RED='\033[0;31m' NC='\033[0m' PORT=7861 MAX_RETRIES=15 RETRY_INTERVAL=3 GRADIO_PID="" cleanup() { echo -e "\n${CYAN}[INFO]: Cleaning up processes...${NC}" if [ ! -z "$GRADIO_PID" ]; then pkill -P $GRADIO_PID kill -9 $GRADIO_PID 2>/dev/null fi pkill -f "python app_gradio.py" exit 0 } check_gradio() { netstat -tuln | grep ":${PORT}" >/dev/null } trap cleanup EXIT INT TERM echo -e "${CYAN}[INFO]: Starting Gradio App${NC}" python app_gradio.py & GRADIO_PID=$! echo -e "${CYAN}[INFO]: Waiting for Gradio to start on port ${PORT}...${NC}" retries=0 while ! check_gradio; do if [ $retries -ge $MAX_RETRIES ]; then echo -e "${RED}[ERROR]: Gradio failed to start after ${MAX_RETRIES} attempts${NC}" cleanup exit 1 fi sleep $RETRY_INTERVAL ((retries++)) done RESOURCE_NAME=$(jq -r .ResourceName /opt/ml/metadata/resource-metadata.json) RESOURCE_ARN=$(jq -r .ResourceArn /opt/ml/metadata/resource-metadata.json) REGION=$(echo "$RESOURCE_ARN" | cut -d':' -f4) echo -e "${GREEN}Gradio is running at:${NC}" echo -e "${GREEN}https://${RESOURCE_NAME}.notebook.${REGION}.sagemaker.aws/proxy/${PORT}/${NC}" while true; do if ! check_gradio; then echo -e "${RED}[ERROR]: Gradio process is no longer running${NC}" cleanup exit 1 fi sleep 10 doneO script anterior configura uma função de limpeza para remover o processo Gradio na saída. O script executa a aplicação Gradio em segundo plano e, em seguida, recupera as informações da instância de caderno do SageMaker AI a partir dos metadados. Em seguida, ele constrói e exibe o URL para acessar a aplicação Gradio no navegador.
Para obter mais informações sobre como instalar o Gradio, consulte Installation (Instalação) no site do Gradio.
Solucione problemas da sua aplicação Gradio
Realize as seguintes ações:
-
Se a aplicação Gradio não iniciar, execute o seguinte comando para verificar se você instalou a aplicação corretamente:
pip list | grep gradio -
Execute o comando a seguir para garantir que outros processos não usem a porta 7861:
lsof -i :7861 -
Se não for possível gerar um URL, verifique as permissões do arquivo de metadados.
-
Certifique-se de que o grupo de segurança da instância de caderno do SageMaker AI permita tráfego de entrada na porta necessária.
-
Se não for possível acessar a aplicação, certifique-se de que a configuração de execução do Gradio root_path corresponda ao caminho do proxy do URL.
-
Se você receber a mensagem de erro "URL 500: Internal Error", interrompa e execute novamente o script da etapa 2 da seção Configure sua aplicação Gradio. Ou execute o seguinte comando para reinstalar sua aplicação:
pip install --no-cache-dir -q gradiohttps://www.gradio.app/guides/quickstart
- Tópicos
- Machine Learning & AI
- Tags
- Amazon SageMaker
- Idioma
- Português

Conteúdo relevante
feita há 9 meses
feita há um ano