Aller au contenu

Prise en main de Gradio : Le guide ultime#

Gradio est un package Python qui permet de créer des interfaces web pour les modèles de machine learning.

Gradio vous permet de créer rapidement des composants d'interface utilisateur personnalisables autour de vos modèles TensorFlow ou PyTorch, ou même des fonctions Python arbitraires. Mélangez et associez les composants pour prendre en charge toute combinaison d'entrées et de sorties.....

Les composants de Gradio#

Une application Gradio est composée de trois composantes

  • des entrées
  • une fonction de traitement
  • des sorties

Le fonctionnement de Gradio est relativement simplement, on fournit des entrées qui vont être traitées par la fonction de traitement et retourner des sorties.

Installation#

Gradio peut être installé depuis le répertoire PyPi.

pip install gradio

Première application#

Nous allons créer une première application Gradi qui demande à l'utilisateur de saisir son nom et lui affiche ensuite un message de salutation (voir capture ci-dessous).

Pour cela, créez un fichier greet.py

import gradio as gr

Créer la fonction de traitement#

def greet(name):
    return f"Hello {name} !"

Définir les entrées et les sorties#

input_name = gr.Textbox(label="Name")
output_msg = gr.Textbox(label="Message")
app = gr.Interface(fn=greet,
                   inputs=input_name,
                   outputs=output_msg,
                   title="Greeting App",
                   description="Enter your name to get a greeting message")

Lancer l'application#

app.launch()

Le code complet#

greet.py
import gradio as gr


def greet(name):
    return f"Hello {name} !"


input_name = gr.Textbox(label="Name")
output_msg = gr.Textbox(label="Message")

app = gr.Interface(fn=greet,
                   inputs=input_name,
                   outputs=output_msg,
                   title="Greeting App",
                   description="Enter your name to get a greeting message")

app.launch()

Lancer l'application#

Pour démarrer l'application, exécutez la commande suivante depuis le terminal

Run Gradio Application
python greet.py
Output
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Rendez-vous à l'adresse http://127.0.0.1:7860 ou http://localhost:7860

Image Black & White Converter#

Créer un fichier app.py

import gradio as gr

Créer la fonction de traitement#

def greet(name):
    return f"Hello {name} !"

Définir les entrées et les sorties#

input_name = gr.Textbox(label="Name")
output_msg = gr.Textbox(label="Message")
app = gr.Interface(fn=greet,
                   inputs=input_name,
                   outputs=output_msg,
                   title="Greeting App",
                   description="Enter your name to get a greeting message")

Lancer l'application#

app.launch()

Le code complet#

greet.py
# Packages
import gradio as gr
from PIL import Image


# Serving Function
def convert_image(image):
    pil_image = Image.fromarray(image)
    pil_image = pil_image.convert("L")
    return pil_image


# Setup interface
input_image = gr.Image()
output_image = gr.Image()
app = gr.Interface(fn=convert_image, 
                   inputs=input_image, 
                   outputs=output_image,
                   title="Image Black & White Converter",
                   description="Simple tool to convert any image in Black & White")

# Launch
app.launch()

Modèle de classification d'image#

Créons à pésent une interface pour un modèle de classification d'image

Déployer Gradio avec Docker#

Gradio App Dockerfile
FROM python:buster

WORKDIR /app

COPY . /app

RUN pip install --upgrade pip \
    && pip install -r requirements.txt

EXPOSE 7860

CMD ["python", "app.py"]

Pour en savoir plus, merci de consulter la documentation de Gradio ici https://gradio.app/.