NLP Course documentation

Создание вашего первого демо

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Создание вашего первого демо

Ask a Question Open In Colab Open In Studio Lab

Давайте начнем с установки Gradio! Поскольку это пакет для Python, просто выполните:

$ pip install gradio

Вы можете запускать Gradio где угодно, будь то ваша любимая IDE Python, Jupyter-блокнот или даже Google Colab 🤯! Так что установите Gradio везде, где вы используете Python!

Давайте начнем с простого примера “Hello World”, чтобы познакомиться с синтаксисом Gradio:

import gradio as gr


def greet(name):
    return "Hello " + name


demo = gr.Interface(fn=greet, inputs="text", outputs="text")

demo.launch()

Давайте пройдемся по приведенному выше коду:

  • Сначала мы определяем функцию greet(). В данном случае это простая функция, которая добавляет “Hello” перед вашим именем, но это может быть любая функция Python в целом. Например, в приложениях машинного обучения эта функция будет вызывать модель для прогнозирования на входных данных и возвращать вывод.
  • Затем мы создаем интерфейс Gradio Interface с тремя аргументами, fn, inputs и outputs. Эти аргументы определяют функцию прогнозирования, а также тип входных и выходных компонентов, которые мы хотим получить. В нашем случае оба компонента представляют собой простые текстовые поля.
  • Затем мы вызываем метод launch() для созданного нами Interface.

Если вы запустите этот код, нижеприведенный интерфейс автоматически появится в блокноте Jupyter/Colab или откроется в браузере на http://localhost:7860 при запуске из скрипта.

Попробуйте использовать этот GUI прямо сейчас с собственным именем или другими данными!

Вы заметите, что в этом GUI Gradio автоматически определил имя входного параметра (name) и применил его в качестве метки поверх текстового поля. Что если вы захотите изменить это? Или если вы хотите настроить текстовое поле каким-то другим способом? В этом случае вы можете инстанцировать объект класса, представляющий компонент ввода.

Посмотрите на пример ниже:

import gradio as gr


def greet(name):
    return "Hello " + name


# Мы инстанцируем класс Textbox
textbox = gr.Textbox(label="Type your name here:", placeholder="John Doe", lines=2)

gr.Interface(fn=greet, inputs=textbox, outputs="text").launch()

Здесь мы создали текстовое поле ввода с меткой, заполнителем и заданным количеством строк. То же самое можно сделать и для выходного текстового поля, но мы пока что остановимся на этом.

Мы увидели, что с помощью всего нескольких строк кода Gradio позволяет создать простой интерфейс вокруг любой функции с любыми входами и выходами. В этом разделе мы начали с простого текстового поля, но в следующих разделах мы рассмотрим другие виды входов и выходов. Теперь давайте рассмотрим применение некоторого NLP в приложении Gradio.

🤖 Добавление прогнозов модели

Теперь давайте рассмотрим простой интерфейс, который позволит продемонстрировать демо модели генерации текста (text-generation), такой как GPT-2.

Мы загрузим нашу модель с помощью функции pipeline() из 🤗 Transformers. Если вам нужно быстро освежить в памяти материал, вы можете вернуться к этому разделу в Главе 1.

Сначала мы определяем функцию прогнозирования, которая принимает текстовую подсказку (text prompt) и возвращает ее завершение текста:

from transformers import pipeline

model = pipeline("text-generation")


def predict(prompt):
    completion = model(prompt)[0]["generated_text"]
    return completion

Эта функция завершает введенные вами подсказки, и вы можете запустить ее с вашими собственными подсказками, чтобы посмотреть, как она работает. Вот пример (вы можете получить другое завершение):

predict("My favorite programming language is")
>> My favorite programming language is Haskell. I really enjoyed the Haskell language, but it doesn't have all the features that can be applied to any other language. For example, all it does is compile to a byte array.

Теперь, когда у нас есть функция для генерации прогнозов, мы можем создать и запустить Interface таким же образом, как мы делали это ранее:

import gradio as gr

gr.Interface(fn=predict, inputs="text", outputs="text").launch()

Вот и все! Теперь вы можете использовать этот интерфейс для генерации текста с помощью модели GPT-2, как показано ниже 🤯.

Продолжайте читать, чтобы узнать, как создавать другие виды демо с помощью Gradio!