π€πΌοΈ Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Gradio: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π»ΡΠ±ΠΎΠ³ΠΎ API ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ Gradio.

Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Gradio?
Gradio β ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Python Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π»ΡΠ±ΠΎΠ³ΠΎ API ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Gradio Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Jupyter notebook ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠ»ΠΊΠΈ Ρ ΠΊΠ΅ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Gradio
Gradio ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PIP ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ Π² Google Colab, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ:
pip install gradio
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Jupyter Notebook, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
!pip install gradio
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Gradio, ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
#!pip install gradio import gradio as gra def user_greeting(name): return "Hi! " + name + " Welcome to your first Gradio application!π" #define gradio interface and other parameters app = gra.Interface(fn = user_greeting, inputs="text", outputs="text") app.launch()
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Gradio Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΆΠ΅. Π ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΠ΅:
gradio app.py

Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ URL-Π°Π΄ΡΠ΅Ρ: http://127.0.0.1:7862. Π£ Π²Π°Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π° Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π·ΡΡΡ ΠΎΡΡΡΠ΄Π°.
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Gradio ΠΈΠ· Jupyter Notebook
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² Jupyter Notebook. ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ launch()
Ρ ΠΏΠΎΠΌΠΎΡΡΡ app.launch()
.
app = gra.Interface(fn = user_greeting, inputs="text", outputs="text") #run the app app.launch()
ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ.
ΠΠ»Π°ΡΡ Interface
Interface
β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡΠ΅, ΠΊΠ»Π°ΡΡ Interface ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: Interface(fn, inputs, outputs, ...).
Fn β ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠ½ΡΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Gradio. Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
- Inputs β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ(Ρ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²Π²ΠΎΠ΄Π°. Gradio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ
text
,image
ΠΈΠ»ΠΈmic
. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²Π²ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²fn
. ΠΡΠ»ΠΈ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅None
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΠ²ΠΎΠ΄Π°. - Outputs β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΏ(Ρ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ²ΠΎΠ΄Π°. Gradio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π°, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ
image
,text
ΠΈΠ»ΠΈlabel
. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡfn
. ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅None
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²Π²ΠΎΠ΄Π°.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Gradio .
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΠΎ Ρ Gradio ΠΊΠ°ΠΊ ΡΠ°Π· Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΊΠ°ΠΊ TabbedInterface
, Parallel
ΠΈ Series
, Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ-ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TabbedInterface
Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Gradio
Gradio ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²Π°ΡΡΠΈΡΡΡΡΡΡ ΠΎΡ ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π°ΡΠ΄ΠΈΠΎ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π΄ΠΎ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠ°ΠΊ Plotly ΠΈ Altair.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Gradio ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π² Gradio
Π’Π΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ gradio.Text
ΠΈΠ»ΠΈ gradio.Textbox
. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°.
#display a text import gradio as gr def text_display(text): return text demo = gr.Interface(text_display, gr.Text(), "text") #alternatively use gr.TextBox() demo.launch()
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² Gradio
Π’Π°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ Β«strΒ», Β«numberΒ», Β«boolΒ», Β«dateΒ» ΠΈ Β«markdownΒ», ΠΌΠΎΠ³ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Gradio. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Pandas DataFrame.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, ΡΠΊΠ°Π·Π°Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ°ΡΡΠΈΠ² NumPy ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ numpy
, Π° array
β Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Python.
#display a data import gradio as gr def data_display(input_img): return input_img demo = gr.Interface(data_display, gr.Dataframe(), "dataframe") demo.launch()
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° Π² Gradio
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π² Gradio. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΏΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡ ΡΠΈΠ½Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½ΠΊΠ°. Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Image
, Video
, Audio
ΠΈΠ»ΠΈ File
.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ° ΡΠΈΠ½Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½ΠΊΠ°.
import numpy as np import gradio as gr def blue_hue(input_img): blue_hue_filter = np.array([ [0.272, 0.534, 0.131], [0.349, 0.686, 0.168], [0.393, 0.769, 0.189]]) blue_hue_img = input_img.dot(blue_hue_filter.T) blue_hue_img /= blue_hue_img.max() return blue_hue_img demo = gr.Interface(blue_hue, gr.Image(shape=(300, 200)), "image") demo.launch()
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
#display a video import gradio as gr def video_display(input_img): return input_img demo = gr.Interface(video_display, gr.Video(), "video") demo.launch()
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Gradio
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ gradio.Textbox
Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
import gradio as gr #define your code #average of a list code = '''def cal_average(numbers): sum_number = 0 for t in numbers: sum_number = sum_number + t average = sum_number / len(numbers) return average''' with gr.Blocks() as demo: gr.Textbox(code) demo.launch()
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° ΠΈ ΡΡΠ°ΡΡΡΠ° Π² Gradio
ΠΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Ρ
ΠΎΠ΄ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°Ρ show_progress = True
Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ
change()
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² gradio.Textbox.change()
ΠΈΠ»ΠΈ gradio.Slider.change()
.
Π‘ΡΠ°ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ status_tracker
Π² change()
import gradio as gr def show_text(x): return x demo = gr.Blocks() with demo: gr.Markdown( """ # Show text! Start typing below to see the output. """ ) input = gr.Textbox(placeholder="Flip this text") output = gr.Textbox() input.change(fn=show_text, inputs=input, outputs=output, show_progress = True, status_tracker = None) demo.launch()
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ show_progress = False
Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ Π² Gradio
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Gradio Ρ ΠΏΠΎΠΌΠΎΡΡΡ gradio.Plot()
. ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ fn = your_ploting_function
, input = None
ΠΈ output = gradio.Plot()
.
Plotly
import plotly.express as px import pandas as pd def plotly_plot(): # prepare some data x = ["Math", "Business", "Statistics", "IT", "Commerce"] y = [68, 73, 82, 74, 85] data = pd.DataFrame() data['Subject'] = x data['Score'] = y # create a new plot p = px.bar(data, x='Subject', y='Score') return p # show the results outputs = gr.Plot() demo = gr.Interface(fn=plotly_plot, inputs=None, outputs=outputs) demo.launch()
import matplotlib.pyplot as plt def plt_plot(): # prepare some data x = ["Math", "Business", "Statistics", "IT", "Commerce"] y = [68, 73, 82, 74, 85] # create a new plot plt.rcParams['figure.figsize'] = 6,4 fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.bar(x, y) plt.title("Marks per subject") plt.xlabel("Subject") plt.ylabel("Score") return fig # show the results outputs = gr.Plot() demo = gr.Interface(fn=plt_plot, inputs=None, outputs=outputs) demo.launch()
ΠΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Grade
ΠΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ gradio.Video()
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ play()
, ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ play, Π° gradio.Text()
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ change()
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄Π°.
import gradio as gr def welcome(name): return f"Welcome back, {name}!" with gr.Blocks() as demo: gr.Markdown( """ Type anything to see the output """) inp = gr.Textbox(placeholder="Enter your name") out = gr.Textbox() inp.change(welcome, inp, out) demo.launch()
ΠΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Gradio
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Interface
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ. Π£ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Audio
, Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π°, Π° Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Image
β ΡΠ΅ΠΆΠΈΠΌ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π²ΡΠΊΡ ΠΈ ΠΊΠ°ΠΌΠ΅ΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ.
import gradio as gr import numpy as np def flip(im): return np.flipud(im) demo = gr.Interface( flip, gr.Image(source="webcam", streaming=True), "image", live=True ) demo.launch()
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Gradio
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ β Π²Π°ΠΆΠ½Π°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Gradio. Gradio ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π°Ρ .
ΠΠ½ΠΎΠΏΠΊΠ°
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ gradio.Button()
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π² value = "Submit"
ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠ±ΡΡΠΈΠ΅ gradio.Button.click()
.
import gradio as gr import os def combine(a, b): return "Hey! " + a + " " + b + '\n'+ " Welcome to Machine Learning Nuggets." with gr.Blocks() as demo: txt = gr.Textbox(label="First Name", lines=2) txt_2 = gr.Textbox(label="Second Name") txt_3 = gr.Textbox(value="", label="Output") btn = gr.Button(value="Submit") btn.click(combine, inputs=[txt, txt_2], outputs=[txt_3]) if __name__ == "__main__": demo.launch()
Π€Π»Π°ΠΆΠΎΠΊ
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π°ΠΆΠΎΠΊ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ°. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎΠ»Π·ΡΠ½ΠΎΠΊ ΠΈ ΡΠ»Π°ΠΆΠΎΠΊ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
import gradio as gr def sentence_builder( morning): return f"""It is a nice time take a {"morning" if morning else "later in the day"} glass of water""" demo = gr.Interface( sentence_builder, [ gr.Checkbox(label="Is it before noon"), ], "text") if __name__ == "__main__": demo.launch()
Check box
Check box ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ gradio.CheckboxGroup()
. ΠΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ°.
import gradio as gr def sentence_builder(morning, activity_list): return f"""It is a nice time take a {"morning" if morning else "later in the day"} glass of water {" and take a ".join(activity_list)}""" demo = gr.Interface( sentence_builder, [ gr.Checkbox(label="Is it before noon"), gr.CheckboxGroup(["juice", "beverage", "snack", "nap"]), ], "text") if __name__ == "__main__": demo.launch()
ΠΠ²ΠΎΠ΄ Π΄Π°ΡΡ
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Gradio Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ±ΠΎΡ Π΄Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΡΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ datetime
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Textbox()
.
import gradio as gr import datetime with gr.Blocks() as demo: gr.Textbox(datetime.datetime.now) demo.launch()
ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ°
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ gradio.ColorPicker()
.
import gradio as gr import cv2 import numpy as np import random # Convert decimal color to hexadecimal color def RGB_to_Hex(rgb): color = "#" for i in rgb: num = int(i) color += str(hex(num))[-2:].replace("x", "0").upper() return color # Randomly generate light or dark colors def gen_random_color(is_light=True): return ( random.randint(0, 127) + int(is_light) * 128, random.randint(0, 127) + int(is_light) * 128, random.randint(0, 127) + int(is_light) * 128, ) def change_color(color_style): if color_style == "light": is_light = True elif color_style == "dark": is_light = False back_color_ = gen_random_color(is_light) # Randomly generate colors back_color = RGB_to_Hex(back_color_) # Convert to hexadecimal # Draw color pictures. w, h = 50, 50 img = np.zeros((h, w, 3), np.uint8) cv2.rectangle(img, (0, 0), (w, h), back_color_, thickness=-1) return back_color, back_color, img inputs = [gr.Radio(["light", "dark"], value="light")] outputs = [ gr.ColorPicker(label="color"), gr.Textbox(label="hexadecimal color"), gr.Image(type="numpy", label="color picture"), ] title = "Random Color Generator" description = ( "By clicking submit, a new color will be generated" ) demo = gr.Interface( fn=change_color, inputs=inputs, outputs=outputs, title=title, description=description, ) if __name__ == "__main__": demo.launch()
Π‘Π»Π°ΠΉΠ΄Π΅Ρ
gradio.Slider()
ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΠ»Π·ΡΠ½ΠΎΠΊ Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡ minimum
Π΄ΠΎ maximum
Ρ ΡΠ°Π³ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° step
. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ value
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ minimum = 20
, maximum = 100
, step = 5
Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
import gradio as gr def sentence_builder(quantity, morning, activity_list): return f"""{quantity} o'clock is a nice time take a {"morning" if morning else "later in the day"} glass of water {" and take a ".join(activity_list)}""" demo = gr.Interface( sentence_builder, [ gr.Slider(2, 24, value=4, step = 2), gr.Checkbox(label="Is it before noon"), gr.CheckboxGroup(["juice", "beverage", "snack", "nap"]), ], "text") if __name__ == "__main__": demo.launch()
ΠΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ
Π€ΡΠ½ΠΊΡΠΈΡ Dropdown()
Π² Gradio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ watch, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅ΡΠ΅ ΠΌΠΎΠ³ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ.
import gradio as gr def sentence_builder(quantity, morning, activity_list, watch): return f"""{quantity} o'clock is a nice time take a {"morning" if morning else "later in the day"} glass of water {" and take a ".join(activity_list)} or watch a {watch}""" demo = gr.Interface( sentence_builder, [ gr.Slider(2, 24, value=4, step = 2), gr.Checkbox(label="Is it before noon"), gr.CheckboxGroup(["juice", "beverage", "snack", "nap"]), gr.Dropdown(["Television series", "Movie", "Documentary", "Class"]), ], "text") if __name__ == "__main__": demo.launch()
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Gradio
ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ cache_examples = True
Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Gradio, ΡΠΎ Π΅ΡΡΡ Π² gradio.Interface()
, ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ examples
.
#!pip install gradio import gradio as gra def user_greeting(name): return "Hi! " + name + " Welcome to your first Gradio application!π" app = gra.Interface(fn = user_greeting, inputs="text", outputs="text", examples = ["Zenith", "Antoinne", "Amelia", "Johanna"], cache_examples = True) app.launch()
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Gradio
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² launch()
ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΅Π΄Ρ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«0.0.0.0Β» Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ server_name
Π² gradio.Interface.launch()
. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ GRADIO_SERVER_NAME
. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ None
, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ 127.0.0.1
.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ Gradio
Gradio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Plot output component Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Python, Π²ΠΊΠ»ΡΡΠ°Ρ Matplotlib, Bokeh ΠΈ Plotly.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Matplotlib ΠΈ Seaborn Π² Gradio
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Seaborn ΠΈΠ»ΠΈ Matplotlib Π² Gradio ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ.
ΠΠ»Ρ matplotlib ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ matplotlib.plot()
, Π° Π΄Π»Ρ Seaborn β seaborn.plot()
.
Matplotlib
import gradio as gr from math import log import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np import pandas as pd def gdp_change(r, year, country, smoothen): years = ['1850', '1900', '1950', '2000', '2050'] m = years.index(year) start_day = 10* m final_day = 10* (m + 1) x = np.arange(start_day, final_day + 1) pop_count = {"USA": 350, "Canada": 40, "Mexico": 300, "UK": 120} if smoothen: r = log(r) df = pd.DataFrame({'day': x}) df[country] = ( x ** (r) * (pop_count[country] + 1)) fig = plt.figure() plt.plot(df['day'], df[country].to_numpy(), label = country) plt.title("GDP in " + year) plt.ylabel("GDP (Millions)") plt.xlabel("Population Change since 1800") plt.grid() return fig inputs = [ gr.Slider(1, 4, 3.2, label="R"), gr.Dropdown(['1850', '1900', '1950', '2000', '2050'], label="Year"), gr.Radio(["USA", "Canada", "Mexico", "UK"], label="Countries", ), gr.Checkbox(label="Log of GDP Growth Rate?"), ] outputs = gr.Plot() demo = gr.Interface(fn=gdp_change, inputs=inputs, outputs=outputs) demo.launch()
Seaborn
Seaborn ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΡΠΎ ΠΈ Matplotlib. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ°Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ.
def gdp_change(r, year, country, smoothen): years = ['1850', '1900', '1950', '2000', '2050'] m = years.index(year) start_day = 10* m final_day = 10* (m + 1) x = np.arange(start_day, final_day + 1) pop_count = {"USA": 350, "Canada": 40, "Mexico": 300, "UK": 120} if smoothen: r = log(r) df = pd.DataFrame({'day': x}) df[country] = ( x ** (r) * (pop_count[country] + 1)) fig = plt.figure() sns.lineplot(x = df['day'], y = df[country].to_numpy()) plt.title("GDP in " + year) plt.ylabel("GDP (Millions)") plt.xlabel("Population Change since 1800") plt.grid() return fig inputs = [ gr.Slider(1, 4, 3.2, label="R"), gr.Dropdown(['1850', '1900', '1950', '2000', '2050'], label="year"), gr.Radio(["USA", "Canada", "Mexico", "UK"], label="Countries", ), gr.Checkbox(label="Log of GDP Growth Rate?"), ] outputs = gr.Plot() demo = gr.Interface(fn=gdp_change, inputs=inputs, outputs=outputs) demo.launch()
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Plotly Π² Gradio
Π ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ gdp_change(...)
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ plotly ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ Π² gradio.Plot()
.
import gradio as gr from math import log import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np import plotly.express as px import pandas as pd def gdp_change(r, year, country, smoothen): years = ['1850', '1900', '1950', '2000', '2050'] m = years.index(year) start_day = 10* m final_day = 10* (m + 1) x = np.arange(start_day, final_day + 1) pop_count = {"USA": 350, "Canada": 40, "Mexico": 300, "UK": 120} if smoothen: r = log(r) df = pd.DataFrame({'day': x}) df[country] = ( x ** (r) * (pop_count[country] + 1)) fig = px.line(df, x='day', y=df[country].to_numpy()) fig.update_layout(title="GDP in " + year, yaxis_title="GDP", xaxis_title="Population change since 1800s") return fig inputs = [ gr.Slider(1, 4, 3.2, label="R"), gr.Dropdown(['1850', '1900', '1950', '2000', '2050'], label="year"), gr.Radio(["USA", "Canada", "Mexico", "UK"], label="Countries", ), gr.Checkbox(label="Log of GDP Growth Rate?"), ] outputs = gr.Plot() demo = gr.Interface(fn=gdp_change, inputs=inputs, outputs=outputs) demo.launch()
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΊΠ°ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Gradio
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΡΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠ°ΠΊ Plotly ΠΈΠ»ΠΈ Seaborn, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ gradio.Plot()
.
import plotly.express as px import pandas as pd def map_plot(): #define a map element df = px.data.gapminder().query("year==2002") fig = px.scatter_geo(df, locations="iso_alpha", color="continent", hover_name="country", size="lifeExp", projection="natural earth") return fig outputs = gr.Plot() demo = gr.Interface(fn=map_plot, inputs=None, outputs=outputs) demo.launch()
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Gradio ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Π² ΡΠ΅Π°Π½ΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ .
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² Blocks ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΡΠ±Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ track_gdp
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ gdps
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π±Π°Π»Π»Ρ Π² ΡΠΏΠΈΡΠΎΠΊ.
import gradio as gr gdps = [] def track_gdp(gdp): gdps.append(gdp) top_gdps = sorted(gdps, reverse=True)[:3] return top_gdps demo = gr.Interface( track_gdp, gr.Number(label="gdp"), gr.JSON(label="Top gdps") ) demo.launch()
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠ°
Gradio ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠ°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ°Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅Π°Π½ΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Blocks. ΠΠ»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π°Π½ΡΠ°:
- ΠΠ°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
gradio.State()
. - ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ
State
Π² ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . - Π ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ³ΡΡ Β«ΠΠΈΡΠ΅Π»ΠΈΡΠ°Β».
import gradio as gr import random secret_word = "Machine" with gr.Blocks() as demo: used_letters_var = gr.State([]) with gr.Row() as row: with gr.Column(): input_letter = gr.Textbox(label="Enter letter") btn = gr.Button("Guess Letter") with gr.Column(): hangman = gr.Textbox( label="Hangman", value="_"*len(secret_word) ) used_letters_box = gr.Textbox(label="Used Letters") def guess_letter(letter, used_letters): used_letters.append(letter) answer = "".join([ (letter if letter in used_letters else "_") for letter in secret_word ]) return { used_letters_var: used_letters, used_letters_box: ", ".join(used_letters), hangman: answer } btn.click( guess_letter, [input_letter, used_letters_var], [used_letters_var, used_letters_box, hangman] ) demo.launch()
ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ ΡΠ΅Π°Π½Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»ΠΈΡΡΡΡ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ Β«Π΄ΠΎΠ³Π°Π΄ΠΎΠΊΒ».
Π Π°Π·ΠΌΠ΅ΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio
ΠΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠ°ΠΊ gradio.Row()
, gradio.Columns()
, gradio.Tab()
ΠΈ gradio.Accordion().
Π‘ΡΡΠΎΠΊΠΈ
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΠ΅ΡΠ° ΡΡΡΠΎΠΊΠΈ Π² Blocks Π²ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ.
import gradio as gr with gr.Blocks() as demo: with gr.Row(): gr.Text() gr.Text() demo.launch()
Π‘ΡΠΎΠ»Π±ΡΡ
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ gradio.Column()
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΡΠΊΠ°Π·Π°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ scale
ΠΈ min_width
.
import gradio as gr with gr.Blocks() as demo: with gr.Column(scale=2): btn1 = gr.Button("Button 1") btn2 = gr.Button("Button 2") with gr.Column(scale=1): text1 = gr.Textbox() text2 = gr.Textbox() demo.launch()
Π’Π°Π±Ρ ΠΈ accordion
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² gradio.Tab()
. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»Ρ Tab
. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ Tab
ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΊΠ°.
import gradio as gr with gr.Blocks() as demo: with gr.Tab(label = "Button tab"): btn1 = gr.Button("Button 1") btn2 = gr.Button("Button 2") with gr.Tab(label = "Textbox tab"): text1 = gr.Textbox() text2 = gr.Textbox() demo.launch()
Accordion Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° update(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ ΡΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅.
import gradio as gr with gr.Blocks() as demo: with gr.Accordion("Display Details"): gr.Markdown("Machine Learning and Big Data") demo.launch()
ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ
ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Gradio ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Block ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. gradio.update
ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ Textbox
ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Image
, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° update()
.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
import gradio as gr import gradio as gr def update_textbox(choice): if choice == "short": return gr.Textbox.update(lines=1, visible=True) elif choice == "long": return gr.Textbox.update(lines=6, visible=True) else: return gr.Textbox.update(visible=False) gr.Interface( update_textbox, gr.Radio( ["short", "long", "No message"], label="What kind of message would you like to send?" ), gr.Textbox(lines=2), live=True, ).launch()
ΠΠ½ΠΎΠ³ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠ°ΠΊ:
gradio.TabbedInterfaces()
ΠΈgradio.Parallel()
Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉgradio.Series()
Π΄Π»Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ gradio.TabbedInterface()
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Dropdown ΠΈ Seaborn, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
#define your first application #!pip install gradio import gradio as gr import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as pd from math import log def user_greeting(name): return "Hi! " + name + " Welcome to your multi-page application!π" #app 1 app = gr.Interface(fn = user_greeting, inputs="text", outputs="text", examples = ["Zenith", "Antoinne", "Amelia", "Johanna"]) #define your second application def gdp_change(r, year, country, smoothen): years = ['1850', '1900', '1950', '2000', '2050'] m = years.index(year) start_day = 10* m final_day = 10* (m + 1) x = np.arange(start_day, final_day + 1) pop_count = {"USA": 350, "Canada": 40, "Mexico": 300, "UK": 120} if smoothen: r = log(r) df = pd.DataFrame({'day': x}) df[country] = ( x ** (r) * (pop_count[country] + 1)) fig = plt.figure() sns.lineplot(x = df['day'], y = df[country].to_numpy()) plt.title("GDP in " + year) plt.ylabel("GDP (Millions)") plt.xlabel("Population Change since 1800s") plt.grid() return fig inputs = [ gr.Slider(1, 4, 3.2, label="R"), gr.Dropdown(['1850', '1900', '1950', '2000', '2050'], label="year"), gr.Radio(["USA", "Canada", "Mexico", "UK"], label="Countries", ), gr.Checkbox(label="Log of GDP Growth Rate?"), ] outputs = gr.Plot() #app 2 app2 = gr.Interface(fn=gdp_change, inputs=inputs, outputs=outputs) #combine to create a multipage app demo = gr.TabbedInterface([app, app2], ["Welcome page", "Visualization page"]) if __name__ == "__main__": demo.launch()
ΠΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ CSS ΠΈ Javascript Π² Gradio
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΠ»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π»ΡΠ±ΠΎΠΉ CSS Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ css = kwarg
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ°ΠΊΠ΅ΡΠ° Ρ Tab
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ CSS ΡΠΎΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import gradio as gr with gr.Blocks(css=".gradio-container {background-color: grey}") as demo: with gr.Tab(label = "Button tab"): btn1 = gr.Button("Button 1") btn2 = gr.Button("Button 2") with gr.Tab(label = "Textbox tab"): text1 = gr.Textbox() text2 = gr.Textbox() demo.launch()
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ JS Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
import gradio as gr blocks = gr.Blocks() with blocks as demo: subject = gr.Radio(["Analyse", "Explore", "Learn"]) verb = gr.Radio(["GDP Change", "Population Growth", "Big Data"]) object = gr.Textbox(placeholder="region") with gr.Row(): btn = gr.Button("Create sentence.") reverse_btn = gr.Button("Reverse sentence.") def sentence_maker(w1, w2, w3): return f"{w1} {w2} in {w3}" output1 = gr.Textbox(label="output 1") output2 = gr.Textbox(label="verb reversed") btn.click(sentence_maker, [subject, verb, object], output1) #custom JS to reverse the sentense reverse_btn.click(None, [subject, verb, object], output2, _js="(s, v, o) => o + ' ' + v + ' ' + s") demo.launch()
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Gradio
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠΊΠ°Π·Π°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ auth
. ΠΡΠ»ΠΈ auth
ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ, Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ (ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ).
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ auth_message
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ.
import gradio as gr def data_display(input_img): return input_img demo = gr.Interface(data_display, gr.Dataframe(), "matrix") demo.launch(enable_queue=False, auth=("username", "password"), auth_message="Try this")
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π² Gradio
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π²ΡΠ²ΠΎΠ΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
import numpy as np import gradio as gr def upload_image(input_img): return input_img demo = gr.Interface(upload_image, gr.Image(shape=(400, 300)), "image") demo.launch()
gradio.File()
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ zip-ΡΠ°ΠΉΠ»Ρ.
from zipfile import ZipFile import gradio as gr def upload_file(file_obj): files = [] with ZipFile(file_obj.name) as zfile: for zinfo in zfile.infolist(): files.append( { "name": zinfo.filename, } ) return files demo = gr.Interface(upload_file, "file", "json") if __name__ == "__main__": demo.launch()
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
Π§ΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ file_count
, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π°Π½Ρ.
import os from zipfile import ZipFile import gradio as gr def zip_files(files): with ZipFile("tmp.zip", "w") as zipObj: for idx, file in enumerate(files): zipObj.write(file.name, "file" + str(idx)) return "tmp.zip" demo = gr.Interface( zip_files, gr.File(file_count="multiple"), "file" ) if __name__ == "__main__": demo.launch()
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΡΠ΅Π½ΠΎΠΊ Π²Π°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
import numpy as np import gradio as gr def sepia_hue(input_img): sepia_filter = np.array([[.393, .769, .189], [.349, .686, .168], [.272, .534, .131]]) sepia_hue_img = input_img.dot(sepia_hue_filter.T) sepia_hue_img /= sepia_hue_img.max() return sepia_hue_img demo = gr.Interface(sepia_hue, gr.Image(shape=(300, 200)), "image") demo.launch()
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ»Π°Π³ΠΎΠ² Π² Gradio
ΠΠΎΠΌΠ΅ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎ ΡΠΎΡΠΊΠ°Ρ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ. Π Gradio Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ»Π°Π³ΠΎΠ².
ΠΠΊΠ»ΡΡΠΈΠ² ΠΊΠ½ΠΎΠΏΠΊΡ Β«Flag
Β» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Gradio Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ gradio.Interface()
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ»Π°Π³ΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: allow_flagging
, flagging_options
, flagging_dir
ΠΈ flagging_callback
.
allow_flagging
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ manual
, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΡΡ Π±ΡΠ΄ΡΡ ΠΎΡΠΌΠ΅ΡΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Flag. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ flagging_dir = "path/to/store"
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΆΡΡΠ½Π°Π»Π°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΆΡΡΠ½Π°Π»Ρ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Altair, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
import numpy as np import pandas as pd import gradio as gr import altair as alt from math import log import numpy as np import pandas as pd def gdp_change(r, year, country, smoothen): years = ['1850', '1900', '1950', '2000', '2050'] m = years.index(year) start_day = 1* m final_day = 1* (m + 1) x = np.arange(start_day, final_day + 1) pop_count = {"USA": 350, "Canada": 40, "Mexico": 300, "UK": 120} if smoothen: r = log(r) df = pd.DataFrame({'day': x}) df[country] = ( x ** (r) * (pop_count[country] + 1)) df['country'] = df[country].values return alt.Chart(df).mark_bar().encode( x='day', y= 'country').properties(width=550) inputs = [ gr.Slider(0.1, 1, 0.3,step = 0.001, label="R"), gr.Dropdown(['1850', '1900', '1950', '2000', '2050'], label="year"), gr.Radio(["USA", "Canada", "Mexico", "UK"], label="Countries", ), gr.Checkbox(label="Log of GDP Growth Rate?"), ] outputs = gr.Plot() demo = gr.Interface(fn=gdp_change, inputs=inputs, outputs=outputs, allow_flagging="manual", flagging_options=["No plot shown", "Wrong axis", "Other"]) demo.launch()
Π‘ΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Gradio Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Vision Transformers Π² Gradio
Transformers ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ API ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ vision transformers.
import gradio as gr #load your preffered model app = gr.Interface.load( "huggingface/google/vit-base-patch16-224") #launch app.launch()
Llama: Photo by Raspopova Marina, on Unsplash
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ΅ΡΠΎΠ² ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Hugging face .
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Hugging face Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Ρ-Π±ΠΎΡΠ° Ρ Gradio
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Ρ-Π±ΠΎΡΠ° ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Hugging face. ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΎΡ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ DialoGPT .
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΎΡ DialoGPT ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ.
from transformers import AutoModelForCausalLM, AutoTokenizer import torch #set up the model (large version of DialoGPT) tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-large") model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-large") #Defining a predict function def predict(input, history=[]): # tokenize the new input sentence new_user_input_ids = tokenizer.encode(input + tokenizer.eos_token, return_tensors='pt') # append the new user input tokens to the chat history bot_input_ids = torch.cat([torch.LongTensor(history), new_user_input_ids], dim=-1) # generate a response history = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id).tolist() # convert the tokens to text, and then split the responses into lines response = tokenizer.decode(history[0]).split("<|endoftext|>") response = [(response[i], response[i+1]) for i in range(0, len(response)-1, 2)] # convert to tuples of list return response, history #creating a gradio interface import gradio as gr demo = gr.Interface(fn=predict, inputs=["text", "state"], outputs=["chatbot", "state"]) demo.launch()
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Gradio
ΠΠ°ΠΊΠ΅Ρ Gradio ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎ Π²Π΅ΡΠ½ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π²Π°ΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΌ Ρ ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ΄Π΅ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Ρ ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΡΠ° Heroku ΠΈ Hugging Face.
Heroku
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio Π² Heroku Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΡΡ ΡΠ°Π³ΠΎΠ²:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (
app.py
) ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. - ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ»
requirements.txt
ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Heroku ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Heroku. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Heroku ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ CLI, Π΅ΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ»
setup.sh
. Π§ΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ ΠΈ ΠΏΠΎΡΡΡ. ΠΠΎΠ±Π°Π²ΡΡΠ΅export GRADIO_SERVER_NAME=0.0.0.0
ΠΈexport GRADIO_SERVER_PORT="$PORT"
Π² ΡΠ°ΠΉΠ»setup.sh
. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Procfile. Procfile ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio. ΠΠΎΠΌΠ°Π½Π΄ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π΅: Π·Π°ΠΏΡΡΡΠΈΡΡ bash-ΡΠΊΡΠΈΠΏΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²Π°Ρ Procfile:
web: source setup.sh && python app.py
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅! ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Heroku.
Hugging Face
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° https://huggingface.co/. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ Spaces Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ New Space.
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΡΠ»ΠΊΠ° Ρ ΡΠ΅ΠΏΠΎ. Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
git clone https://huggingface.co/spaces/Kamanda/Gradio_machine_learning
ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠ°ΠΏΠΊΠ° (Gradio_machine_learning
).
- Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΊΠΎΠΏΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gradio, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
app.py
,requirements.txt
, Π² ΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ. - ΠΠ΅ΡΠ½ΠΈΡΠ΅ΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.
cd Gradio_Machine_Learning git add . git commit -m "first commit" git push
ΠΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Hugging Face. ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows-Π²ΠΈΠ΄ΠΆΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² spaces ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° space. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Hugging faceΒ» ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°.
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π»ΡΠ±ΠΎΠ³ΠΎ API ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ Gradio.
ΠΠΎΡ ΠΈ Π²ΡΠ΅!
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
- π€ ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ : ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ, Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ
- ΠΠ΅ΠΉΡΠΎΡΠ΅ΡΠΈ Π² ΠΏΠΎΠΌΠΎΡΡ Π³Π΅ΠΉΠΌΠ΄Π΅Π²-Ρ
ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΡ: ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ-Π°ΡΡΠ°