Buckets:

rtrm's picture
|
download
raw
9.26 kB

Создание вашего первого демо[[building-your-first-demo]]

<CourseFloatingBanner chapter={9} classNames="absolute z-10 right-0 top-0" notebooks={[ {label: "Google Colab", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter9/section2.ipynb"}, {label: "Aws Studio", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter9/section2.ipynb"}, ]} />

Давайте начнем с установки 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.

🤖 Добавление прогнозов модели[[including-model-predictions]]

Теперь давайте рассмотрим простой интерфейс, который позволит продемонстрировать демо модели генерации текста (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!

Xet Storage Details

Size:
9.26 kB
·
Xet hash:
63134818bb8453c98188d9054a7757b074960d883ef45b2710f3e5ff5e07393e

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.