Implementación en Heroku | Implementar la aplicación ML / DL Streamlit en Heroku

Contenidos

¿Desarrolló una aplicación de aprendizaje automático o aprendizaje profundo utilizando Streamlit y no sabe cómo implementarla en Heroku? No se preocupe, le cubro las espaldas. En este artículo, discutiré cómo implementar su aplicación ML / DL Streamlit en Heroku. ¡Entonces empecemos!

Nota: Este artículo considera que el lector ya ha desarrollado una aplicación optimizada y usaremos una aplicación de demostración en este artículo.

Tabla de contenido

  1. Creación de una aplicación de demostración
  2. Softwares requeridos
  3. Implementación en Heroku
  4. Notas finales

Creación de una aplicación de demostración

Construyamos una aplicación de demostración. Usaremos un sencillo y famoso Predicción del precio de la vivienda Solicitud. Puede descargar los conjuntos de datos desde aquí. A continuación se muestra el código.

import pandas as pd
import numpy as np
import streamlit as st
import time
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
def main():
    df = load_data()
    df = preprocess_data(df)
    st.title('House Price Prediction for Silicon Valley of India - Bangalore')
    st.markdown('Just Enter the following details and we will predict the price of your **Dream House**')
    st.sidebar.title('Developer's Contact')
    st.sidebar.markdown('[![Harsh-Dhamecha]'
                        '(https://img.shields.io/badge/Author-Harsh%20Dhamecha-brightgreen)]'
                        '(https://www.linkedin.com/in/harsh-dhamecha/)')
    st.warning('Only Enter Numeric Values in the Following Fields')
    bhk = st.text_input("Total BHK")
    area = st.text_input("Area in Square Feet")
    baths = st.text_input("Total Bathrooms")
    balcony = st.selectbox("Total Balcony", ['0', '1', '2', '3'])
    submit = st.button('Predict Price')
    if submit: 
        if bhk and area and baths and balcony:
            with st.spinner('Predicting...'):
                time.sleep(2)
                bhk, area, baths, balcony = int(bhk), int(area), int(baths), int(balcony)
                x_test = np.array([[bhk, area, baths, balcony]])
                prediction = predict(df, x_test)
                st.info(f"Your **Dream House** Price is {prediction} lacs")
        else:
            st.error('Please Enter All the Details')
@st.cache
def train_model(df):
    global scaler
    X, y = df.iloc[:, :-1].values, df.iloc[:, -1].values
    scaler = StandardScaler().fit(X)
    X = scaler.transform(X)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=23)
    model = LinearRegression().fit(X_train, y_train)
    return model, scaler
def predict(df, x_test):
    model, scaler = train_model(df)
    X_test = scaler.transform(x_test)
    y_pred = model.predict(X_test)
    return round(y_pred[0], 2)
def load_data():
    return pd.read_csv('Datasets/house-price-prediction.csv')
def preprocess_data(df):
    df = df.loc[:, ['size', 'total_sqft', 'bath', 'balcony', 'price']]
    df.dropna(inplace=True)
    df = df[df['size'].str.contains('BHK', na=False)]
    df['size'] = df['size'].str.replace(r'D', '').astype(int)
    df['total_sqft'] = df['total_sqft'].str.extract(r'(d+)', expand=False)
    df['bath'] = df['bath'].astype(int)
    df['balcony'] = df['balcony'].astype(int)
    df['total_sqft'] = df['total_sqft'].astype(int)
    return df
if __name__ == '__main__':
    main()

Puede ejecutar su aplicación streamlit localmente usando el siguiente comando.

streamlit run app.py

Nota: app.py es el archivo que queremos ejecutar.

Nuestra aplicación se parece a lo siguiente.

Antes de ingresar los detalles:

58168app-1-1105647

Después de ingresar los detalles:

65904app-2-7907168

Softwares requeridos

Para implementar nuestra aplicación optimizada, necesitamos el siguiente software:

  1. Git Descarga desde aquí
  2. Heroku CLI Descarga desde aquí
  3. Cuenta Heroku gratis Crea aqui

y siga las instrucciones en pantalla.

Implementación en Heroku

Ahora que tenemos nuestra aplicación de demostración y el software necesario en nuestras manos, implementemos nuestra aplicación en Heroku.

Archivos necesarios

Primero, necesitamos agregar algunos archivos que permitan a Heroku instalar todas las bibliotecas requeridas y ejecutar nuestra aplicación.

requisito.txt

Este archivo contiene todas las bibliotecas necesarias que se instalarán para que funcione el proyecto. Este archivo se puede crear manualmente revisando el proyecto y enumerando todas las bibliotecas que se utilizaron en el proyecto. Pero estaremos usando los pipreqs module para hacer eso, lo que crea automáticamente un archivo requirements.txt. Instálelo con el siguiente comando si aún no lo ha hecho.

pip install pipreqs

Ahora, navegue hasta el directorio de su proyecto y escriba el siguiente comando.

pipreqs ./

¡Nuestro archivo requirements.txt ya está listo! Debería tener un aspecto parecido al siguiente.

16279requirements-4918732

Procfile y setup.sh

Usando estos dos archivos, le decimos a Heroku los comandos necesarios para iniciar nuestra aplicación.

En el archivo setup.sh crearemos una carpeta streamlit con credentials.toml y un archivo config.toml. A continuación se muestra el comando que se pegará en el archivo setup.sh.

mkdir -p ~/.streamlit/
echo "
[general]n
email = "[email protected]"n
" > ~/.streamlit/credentials.toml
echo "
[server]n
headless = truen
enableCORS=falsen
port = $PORTn
" > ~/.streamlit/config.toml

El Procfile se usa para ejecutar primero setup.sh y luego llamar carrera iluminada para ejecutar la aplicación. Su Procfile debería tener un aspecto similar al siguiente.

web: sh setup.sh && streamlit run app.py

Nota: app.py es el archivo que queremos ejecutar primero (contiene la función principal). Si ha definido su función principal en algún otro archivo, páselo en lugar de app.py.

Crear un repositorio de Git

Heroku proporciona diferentes formas de implementación, pero usaremos git ya que es simple.

Escriba el siguiente comando para inicializar un repositorio git vacío. Asegúrese de estar en el directorio raíz de su proyecto.

git init

Iniciar sesión en Heroku

A continuación, debemos iniciar sesión en Heroku. Podemos hacer eso con el siguiente comando.

heroku login

Se le pedirá que presione un botón y, una vez que lo haya hecho, se le redirigirá a una pantalla de inicio de sesión en su navegador predeterminado.

32580screenshot20229-7299430

Después de ingresar sus credenciales, debería ver algo como lo siguiente.

61684screenshot20230-4759232

Implementar la aplicación

Finalmente, podemos implementar nuestra aplicación en Heroku. Primero creemos una instancia de nuestra aplicación. Podemos hacer eso con el siguiente comando.

heroku create houses-prices-predictor

predictor de precios de viviendas es un nombre que elegí para mi aplicación. No puedes usar el mismo nombre que ya lo he tomado yo. Así que elija el nombre de su aplicación en consecuencia.

Por último, envíe el código a esa instancia con los siguientes comandos.

git add . 
git commit -m "some message" 
git push heroku master

Al ejecutar git push Heroku master, debería notar que debería detectar automáticamente que tiene una aplicación Python y debería instalar todos los paquetes dentro de requirements.txt. Una vez finalizado el comando, debería ver algo como lo siguiente.

22116deployed-8359176

Nota: Como elegí el nombre predictor de precios de viviendas, Tengo esta URL. Obtendría una URL de acuerdo con el nombre de su aplicación.

Haga clic en la URL para ver su aplicación implementada en vivo.

¡Felicidades! Tenemos Implementé con éxito nuestra primera aplicación.

Consejos de bonificación

Si desea cambiar / editar los archivos después de la implementación, puede hacerlo en sus archivos y ejecutar los siguientes comandos para que esos cambios se reflejen en su aplicación implementada en vivo.

git add . 
git commit -m "some message" 
git push heroku master

Obtendría nuevamente la misma URL que se muestra en la imagen de arriba, haga clic en eso y ¡listo!

Notas finales

Esto completa la discusión de hoy.

¡Gracias por leer esto!

¡Espero que hayas disfrutado del artículo y hayas implementado con éxito tu primera aplicación Streamlit en Heroku!

Haga clic aquí para ver nuestra primera aplicación iluminada en vivo. No dude en poner su primer enlace de aplicación en vivo en la sección de comentarios a continuación.

¿Me perdí algo importante o quería compartir tus pensamientos? Comenta abajo y te responderé.

Sobre el Autor

Soy Harsh Dhamecha, un aspirante a científico de datos. Soy un estudiante de último año de la carrera de Informática con especialización en Inteligencia Artificial. Un alumno motivado que está ansioso por ayudar a la comunidad de ciencia de datos tanto como pueda.

Si tiene alguna consulta, puede directamente Email yo o conéctate conmigo en LinkedIn o Gorjeo.

Si te gusta la forma en que escribo, también puedes buscar los otros artículos que he escrito.

¡Seguir leyendo! Un agradecimiento especial para ti 🙌

Los medios que se muestran en este artículo que explican cómo implementar la aplicación Streamlit en Heroku no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.