Implémentation dans Heroku | Déployer l'application ML / DL Streamlit en Heroku

Contenu

Développé une application de machine learning ou de deep learning à l'aide de Streamlit et vous ne savez pas comment l'implémenter sur Heroku? Ne t'inquiète pas, je couvre son dos. Dans cet article, Je vais discuter de la façon de mettre en œuvre votre application ML / DL Streamlit en Heroku. Alors commençons!

Noter: Cet article considère que le lecteur a déjà développé une application optimisée et nous utiliserons une application de démonstration dans cet article.

Table des matières

  1. Créer une application de démonstration
  2. Logiciel requis
  3. Implémentation dans Heroku
  4. Remarques finales

Créer une application de démonstration

Créons une application de démonstration. Nous utiliserons un simple et célèbre Prévision du prix de l'immobilier Application. Vous pouvez télécharger les ensembles de données à partir de ici. Ci-dessous le code.

importer des pandas au format pd
importer numpy en tant que np
importer simplifié en tant que st
heure d'importation
de sklearn.preprocessing importer StandardScaler
à partir de sklearn.linear_model importer LinearRegression
de sklearn.model_selection importer train_test_split
def principal():
    df = load_data()
    df = preprocess_data(df)
    st.titre(« Prévision du prix de la maison pour la Silicon Valley en Inde - Bangalore')
    st.markdown('Entrez simplement les informations suivantes et nous prédisons le prix de votre **Maison de Rêve**')
    st.sidebar.title('Contact du développeur')
    st.sidebar.markdown('[![Dur-Dhamecha]'
                        '(https://img.shields.io/badge/Author-Harsh Dhamecha-brightgreen)]'
                        '(https://www.linkedin.com/in/harsh-dhamecha/)')
    avertissement(« N'entrez que des valeurs numériques dans les champs suivants »)
    bhk = st.text_input("BHK totaux")
    zone = st.text_input("Superficie en pieds carrés")
    bains = st.text_input("Salles de bains totales")
    balcon = st.selectbox("Total Balcon", ['0', '1', '2', '3'])
    soumettre = st.bouton(« Prédire le prix »)
    si soumettre: 
        si bhk et zone et bains et balcon:
            avec st.spinner(« Prédire... »):
                le sommeil de temps(2)
                bhk, Région, thermes, balcon = int(bhk), entier(Région), entier(thermes), entier(balcon)
                x_test = np.array([[bhk, Région, thermes, balcon]])
                prédiction = prédire(df, x_test)
                st.info(F"Votre **Maison de Rêve** Prix est {prédiction} lacs")
        autre:
            st.erreur(« Veuillez entrer tous les détails »)
@st.cache
def train_model(df):
    échelle mondiale
    X, y = df.iloc[:, :-1].valeurs, df.iloc[:, -1].valeurs
    scaler = StandardScaler().ajuster(X)
    X = scaler.transform(X)
    X_train, X_test, y_train, y_test = train_test_split(X, Oui, taille_test=0.2, état_aléatoire=23)
    modèle = Régression Linéaire().ajuster(X_train, y_train)
    modèle de retour, écailleur
def prédire(df, x_test):
    maquette, scaler = train_model(df)
    X_test = scaler.transform(x_test)
    y_pred = model.predict(X_test)
    retour en rond(y_pred[0], 2)
def load_data():
    retourner pd.read_csv('Datasets/house-price-prediction.csv')
def preprocess_data(df):
    df = df.loc[:, ['Taille', 'total_sqft', 'bain', 'balcon', 'le prix']]
    df.dropna(inplace=Vrai)
    df = df[df['Taille'].str.contient('BHK', na = Faux)]
    df['Taille'] = df['Taille'].str.remplacer(r'D', '').astype(entier)
    df['total_sqft'] = df['total_sqft'].extrait.str(r'(d+)', expand=Faux)
    df['bain'] = df['bain'].astype(entier)
    df['balcon'] = df['balcon'].astype(entier)
    df['total_sqft'] = df['total_sqft'].astype(entier)
    retour df
if __name__ == '__main__':
    principale()

Vous pouvez exécuter votre application rationalisée localement à l'aide de la commande suivante.

exécution simplifiée app.py

Noter: app.py est le fichier que nous voulons exécuter.

Notre application ressemble à ce qui suit.

Avant d'entrer les détails:

58168app-1-1105647

Après avoir entré les détails:

65904app-2-7907168

Logiciel requis

Pour mettre en œuvre notre application optimisée, nous avons besoin du logiciel suivant:

  1. Git Télécharger à partir d'ici
  2. CLI Heroku Télécharger à partir d'ici
  3. Compte Heroku gratuit créer ici

et suivez les instructions à l'écran.

Implémentation dans Heroku

Maintenant que nous avons notre application de démonstration et le logiciel nécessaire entre nos mains, implémentons notre application sur Heroku.

Fichiers requis

Premier, nous devons ajouter des fichiers qui permettent à Heroku d'installer toutes les bibliothèques requises et d'exécuter notre application.

requisito.txt

Ce fichier contient toutes les bibliothèques nécessaires qui seront installées pour que le projet fonctionne. Ce fichier peut être créé manuellement en examinant le projet et en répertoriant toutes les bibliothèques qui ont été utilisées dans le projet. Mais nous utiliserons les pipreqs module pour faire ça, qui crée automatiquement un fichier requirements.txt. Installez-le avec la commande suivante si vous ne l'avez pas déjà fait.

pip installer pipreqs

À présent, accédez à votre répertoire de projet et tapez la commande suivante.

pipreqs ./

Notre fichier requirements.txt est prêt !! Cela devrait ressembler à ce qui suit.

16279exigences-4918732

Procfile et setup.sh

Utilisation de ces deux fichiers, nous indiquons à Heroku les commandes nécessaires pour démarrer notre application.

Dans le fichier setup.sh, nous allons créer un dossier simplifié avec credentials.toml et un fichier config.toml. Ci-dessous la commande qui sera collée dans le fichier setup.sh.

mkdir -p ~/.streamlit/
écho "
[général]m
e-mail = "[email protégé]"m
" > ~/.streamlit/credentials.toml
écho "
[serveur]m
sans tête = vrai
enableCORS=falsen
port = $PORTn
" > ~/.streamlit/config.toml

Le Procfile est utilisé pour exécuter d'abord setup.sh, puis appeler course illuminée pour exécuter l'application. Votre profil devrait ressembler à ce qui suit.

la toile: sh configuration.sh && exécution simplifiée app.py

Noter: app.py est le fichier que nous voulons exécuter en premier (contient la fonction principale). Si vous avez défini votre fonction principale dans un autre fichier, passez-le à la place de app.py.

Créer un dépôt Git

Heroku propose différents modes de mise en œuvre, mais nous utiliserons git car c'est simple.

Tapez la commande suivante pour initialiser un référentiel git vide. Assurez-vous que vous êtes dans le répertoire racine de votre projet.

git init

Connectez-vous à Heroku

Ensuite, nous devons nous connecter à Heroku. Nous pouvons le faire avec la commande suivante.

connexion heroku

Vous serez invité à appuyer sur un bouton et, une fois que je l'ai fait, vous serez redirigé vers un écran de connexion dans votre navigateur par défaut.

32580capture d'écran20229-7299430

Après avoir saisi vos identifiants, vous devriez voir quelque chose comme ce qui suit.

61684capture d'écran20230-4759232

Déployer l'application

Finalement, nous pouvons implémenter notre application dans Heroku. Créons d'abord une instance de notre application. Nous pouvons le faire avec la commande suivante.

heroku créer des maisons-prix-prédicteur

prédicteur du prix d'une maison est un nom que j'ai choisi pour ma candidature. Vous ne pouvez pas utiliser le même nom que j'ai déjà pris. Alors choisissez le nom de votre application en conséquence.

Finalement, envoyer le code à cette instance avec les commandes suivantes.

git ajouter . 
git commit -m "un message" 
git push maître heroku

Lors de l'exécution de git push Heroku master, Vous devriez remarquer qu'il devrait détecter automatiquement que vous avez une application Python et qu'il devrait installer tous les packages dans requirements.txt. Une fois la commande terminée, vous devriez voir quelque chose comme ce qui suit.

22116déployé-8359176

Noter: Comment j'ai choisi le nom prédicteur du prix d'une maison, j'ai cette url. Vous obtiendrez une URL en fonction du nom de votre application.

Cliquez sur l'URL pour voir votre application déployée en direct.

Toutes nos félicitations! Ont J'ai déployé avec succès notre première application.

Conseils bonus

Si vous voulez changer / modifier les fichiers après le déploiement, vous pouvez le faire dans vos fichiers et exécuter les commandes suivantes pour que ces modifications soient reflétées dans votre application déployée en direct.

git ajouter . 
git commit -m "un message" 
git push maître heroku

Vous obtiendrez à nouveau la même URL que celle indiquée dans l'image ci-dessus, cliquez dessus et le tour est joué!

Remarques finales

Ceci termine la discussion d'aujourd'hui.

Merci d'avoir lu ceci!

J'espère que vous avez apprécié l'article et que vous avez implémenté avec succès votre première application Streamlit sur Heroku !!

Cliquez ici pour voir notre première application illuminée en direct. N'hésitez pas à mettre votre premier lien d'application en direct dans la section commentaire ci-dessous.

Ai-je manqué quelque chose d'important ou est-ce que je voulais partager vos pensées? Commentez ci-dessous et je vous répondrai.

A propos de l'auteur

Je suis dur Dhamecha, un chercheur de données en herbe. Je suis étudiante en dernière année de licence Informatique avec une spécialisation en Intelligence Artificielle. Un étudiant motivé et désireux d'aider autant que possible la communauté de la science des données.

Si vous avez une requête, peut directement E-mail moi ou connectez-vous avec moi sur LinkedIn O Twitter.

Si tu aimes ma façon d'écrire, vous pouvez également rechercher les autres articles que j'ai écrits.

Continuer à lire! Un merci spécial à vous ??

Les supports présentés dans cet article expliquant comment implémenter l'application Streamlit sur Heroku ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.