Buckets:
| # Создание вашего первого демо[[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: | |
| ```py | |
| 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](http://localhost:7860/)** при запуске из скрипта. | |
| <iframe src="https://course-demos-hello-world.hf.space" frameBorder="0" height="250" title="Gradio app" class="container p-0 flex-grow space-iframe" allow="accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"></iframe> | |
| Попробуйте использовать этот GUI прямо сейчас с собственным именем или другими данными! | |
| Вы заметите, что в этом GUI Gradio автоматически определил имя входного параметра (`name`) | |
| и применил его в качестве метки поверх текстового поля. Что если вы захотите изменить это? | |
| Или если вы хотите настроить текстовое поле каким-то другим способом? В этом случае вы можете | |
| инстанцировать объект класса, представляющий компонент ввода. | |
| Посмотрите на пример ниже: | |
| ```py | |
| 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() | |
| ``` | |
| <iframe src="https://course-demos-hello-world-custom.hf.space" frameBorder="0" height="300" title="Gradio app" class="container p-0 flex-grow space-iframe" allow="accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"></iframe> | |
| Здесь мы создали текстовое поле ввода с меткой, заполнителем и заданным количеством строк. | |
| То же самое можно сделать и для выходного текстового поля, но мы пока что остановимся на этом. | |
| Мы увидели, что с помощью всего нескольких строк кода Gradio позволяет создать простой интерфейс вокруг любой функции | |
| с любыми входами и выходами. В этом разделе мы начали с | |
| простого текстового поля, но в следующих разделах мы рассмотрим другие виды входов и выходов. Теперь давайте рассмотрим применение некоторого NLP в приложении Gradio. | |
| ## 🤖 Добавление прогнозов модели[[including-model-predictions]] | |
| Теперь давайте рассмотрим простой интерфейс, который позволит продемонстрировать демо модели **генерации текста (text-generation)**, такой как GPT-2. | |
| Мы загрузим нашу модель с помощью функции `pipeline()` из 🤗 Transformers. | |
| Если вам нужно быстро освежить в памяти материал, вы можете вернуться к [этому разделу в Главе 1](../chapter1/3#text-generation). | |
| Сначала мы определяем функцию прогнозирования, которая принимает текстовую подсказку (text prompt) и возвращает ее завершение текста: | |
| ```py | |
| 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` таким же образом, как мы делали это ранее: | |
| ```py | |
| import gradio as gr | |
| gr.Interface(fn=predict, inputs="text", outputs="text").launch() | |
| ``` | |
| Вот и все! Теперь вы можете использовать этот интерфейс для генерации текста с помощью модели GPT-2, как показано ниже 🤯. | |
| <iframe src="https://course-demos-gpt-2.hf.space" frameBorder="0" height="300" title="Gradio app" class="container p-0 flex-grow space-iframe" allow="accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"></iframe> | |
| Продолжайте читать, чтобы узнать, как создавать другие виды демо с помощью Gradio! | |
| <EditOnGithub source="https://github.com/huggingface/course/blob/main/chapters/ru/chapter9/2.mdx" /> |
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.