一.Gradio的简单介绍
1.Gradio是一个Python的第三方库,是一个交互式平台,一个基于Web的图形用户界面,用来作为可视化演示,为机器学习模型和深度学习模型等提供了强大的解决方案。
2.Gradio的核心是“Interface”模块,该模块简单上手,容易操作,非常简单的实现可视化,还可以实现与用户共享的功能。Gradio通过封装关键功能,简化了构建交互式演示的过程。如何实现创建引人注目且用户友好的机器学习界面化,是每一个计算机学习者渴望实现的事。
3.Gradio.Interface是Gradio提供的主要类,仅仅只需几行代码,研究算法的人员就可以创建一个界面,允许用户与底层模型进行交互并观察实时输出,给算法工程师带来了福音。
4.Interface类需要三个关键参数:封装的函数、所需的输入组件和所需的输出组件。此外,可以使用各种可选参数来自定义演示的外观和行为。
二.Gradio的基础使用
这里使用huggingface中的预训练模型完成gradio的基础demo,官网也实现了相关案例的研究和demo的开发,有兴趣的可以参考下方的链接。
# 导入gradio
import gradio as gr
# 导入Transformers相关包
from transformers import pipeline
# 使用Gradio展示文本分类
# share参数可以
gr.Interface.from_pipeline(pipeline("text-classification",model="uer/roberta-base-finetuned-dianping-chinese")).launch(share=True)
运行后的图形界面
三.Gradio中Interface的主要参数详解
Gradio Interface参数表格,包括每个参数的数据类型和默认值
Interface类通过以下三个参数进行初始化:
fn:包装的函数
inputs:输入组件类型,(例如:“text”、"image)
ouputs:输出组件类型,(例如:“text”、"image)
参数名 | 数据类型 | 描述 |
---|---|---|
fn | Callable | None 该参数是必须的 | 用于包装接口的函数。通常是机器学习模型的预测函数。函数的每个参数对应于一个输入组件,函数应返回单个值或值元组,元组中的每个元素对应于一个输出组件。 |
inputs | Component | list[Component] | None | 要用作输入的 gradio.components 列表。如果函数不接受任何输入,则这应该是一个空列表。 |
ouputs | Component | list[Component] | None | 用作输出的 gradio.components 列表。如果函数未返回任何输出,则这应该是一个空列表。 |
api_name | str | None | Literal[False] | 定义终结点在 API 文档中的显示方式。可以是字符串、无或假。如果为 False,则不会在 api 文档中公开终结点。如果设置为“无”,则端点将在 api 文档中作为未命名端点公开,尽管此行为将在 Gradio 4.0 中更改。如果设置为字符串,则终结点将以给定名称在 api 文档中公开。 |
show_progress | Literal[‘full’, ‘minimal’, ‘hidden’] | 如果为 True,则在挂起时显示进度动画 |
queue | bool | 如果为 True,则将请求放在队列上(如果队列已启用)。如果为 False,则不会将此事件放在队列中,即使队列已启用也是如此。如果为 None,将使用 gradio 应用程序的队列设置。 |
batch | bool | 如果为 True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(长度应为“max_batch_size”)。然后需要该函数返回列表元组(即使只有 1 个输出组件),元组中的每个列表对应于一个输出组件。 |
max_batch_size | int | 如果从队列中调用,则要批处理在一起的最大输入数(仅当 batch=True 时才相关) |
preprocess | bool | 如果为 False,则在运行“fn”之前不会运行组件数据的预处理 |
postprocess | bool | 如果为 False,则在将“fn”输出返回到浏览器之前不会运行组件数据的后处理。 |
cancels | dict[str, Any] | list[dict[str, Any]] | None |
every | float | 在客户端连接打开的情况下,每隔’秒运行一次此事件。以秒为单位进行解释。必须启用队列。 |
最常用的基础模块构成。
1.常常使用的应用界面:gr.Interface(简易场景), gr.Blocks(定制化场景)
2.布局组件:gr.Tab(标签页), gr.Row(行布局), gr.Column(列布局)
3.比较常用于人工智能的输入输出操作:gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.Number(数字), gr.Markdown, gr.Files
4.相关图形交互页面的控制组件:gr.Button(按钮)
四.总结
Gradio Interface提供了多个参数,允许开发人员根据特定需求自定义自己的需求。开发人员可以为函数提供示例输入,这些输入将显示在UI组件下方,并可点击以填充界面。这个功能有助于用户理解预期的输入格式,并提供了一种方便的方式来探索模型的行为。Interface支持不同的解释方法来解释预测输出。同时,Gradio允许开发人员应用自定义主题和CSS样式到界面,使其与应用的品牌或设计指南相匹配,提供了启用用户标记输入和输出的选项。
在需要同时处理多个输入的情况下,Gradio Interface提供了批处理支持。通过将batch参数设置为True,函数可以接受每个参数的输入值列表。界面将自动对输入进行批处理,并显示相应的输出。开发人员可以使用max_batch_size参数指定最大批处理大小。
今天在学习huggingface的时候,本来要使用streamlit构建交互式平台,看到网上有人使用一种新的交互式平台Gradio,因此在网上查了一些资料进行学习,相关的参考资料如下。后续学习到新的知识会进行更新。
1.官网API参考手册
2.Gradio快速入手
3.官网给出的Demo
4Gradio从入门到进阶