Gradio

Егор Горбань — Data Engineer

Gradio: Overview

Gradio is an open-source Python package that allows you to quickly build a demo or web application for your machine learning model, API, or any arbitary Python function.

Типы приложений

  • gr.Blocks - кастомное приложение: базовый класс;
  • Интерфейсы
    • gr.Interface - input-output интерфейс;
    • gr.ChatInterface - чат-интерфейс;
    • gr.TabbedInterface - приложение, разделённое на несколько tab-секций. То есть несколько приложений внутри одного;

Интерфейс

Запуск любого приложения: gradio <filename.py> или python <filename.py>

gr.Interface — input-output приложение, позволяющее в интерактивном режиме взаимодействовать с пользователем.

import gradio as gr
import pandas as pd

df = pd.read_csv("examples/data/sales.csv")


def get_sample_dataframe(
    sample_size,
):
    return df.sample(sample_size)


demo = gr.Interface(
    fn=get_sample_dataframe,
    inputs=["number"], # inputs=[gr.Number()],
    outputs=["dataframe"], # outputs=[gr.DataFrame()],
)
demo.launch()

Интерфейс: Data Flow

  • input —>

    1. preprocessing - преобразование к объекту Python
    2. function prosessing
    3. postprocessing - преобразование к объекту HTML
  • —> output

  • Например gr.Image может быть картинкой (np.ndarray), путём до файла с картинкой (str), списком путей до файлов (list[str]).

Интерфейс: специальные возможности

  • можно указать, каким образом препроцессить input

    demo = gr.Interface(
        fn=your_func,
        inputs=[gr.Image(type="pil"), gr.DataFrame(type='polars')],
        outputs=["dataframe"],
    )
  • input/output могут отсутствовать

    gr.Interface(
        fn=predict,
        inputs=None,
        outputs=["str"],
    )

Интерфейс: специальные возможности

  • можно добавить примеры для тестирования интерфейса

    gr.Interface(
        fn=predict,
        inputs=gr.Image(type="pil"),
        outputs=gr.Label(num_top_classes=3),
        examples=["lion.jpg", "cheetah.jpg"]
    )