在本篇文章中我们将介绍Gradio最常见的Building Demo——Interface。无论你是想做个文生图还是图生图甚至生成视频等的前端展示,在考虑便捷性和建议性的情况下,使用Interface是最好上手的选择。在本篇文章中将继上一篇文章对其lauch函数等展开介绍
前言
在本文的内容中,我们将介绍launch方法、load方法、from_pipeline方法、integrate方法、queue方法以及它们的参数等
提示:以下是本篇文章正文内容,下面案例可供参考
一、launch()
这个函数可用于启动一个简单的Web服务器来提供内容展示。此外,通过设置share=True,可以用于创建一个公共链接,任何人都可以使用这个链接在浏览器中访问这个演示。至于其具体参数介绍如下:(在自己简要使用中一般不用管launch函数的参数)
参数名称 | 说明 |
---|---|
inline | default: None 是否在界面中以内联方式在iframe中显示。在Python notebook中默认为True;在其他情况下默认为False。 |
inbrowser | default: False 是否在默认浏览器的新标签页中自动启动界面。如果设置为True,则界面将在浏览器的新标签页中自动打开。 |
share | default: None 是否为界面创建一个可公开分享的链接。如果设置为True,它将创建一个SSH隧道,使你的用户界面可以从任何地方访问。如果没有提供此参数,则默认值为False,但在Google Colab中运行时除外。在无法访问localhost的环境中(例如Google Colab),将share设置为False是不支持的。 |
debug | default: False 如果为True,则阻塞主线程运行。在Google Colab中运行时,这是必要的,以便在单元格输出中打印错误。 |
max_threads | default: 40 Gradio应用可以并行生成的最大线程数。默认值继承自starlette库(当前为40)。 |
auth | default: None 如果提供,则要求输入用户名和密码(或用户名-密码元组的列表)才能访问界面。也可以提供一个函数,该函数接受用户名和密码,并在验证登录时返回True。 |
auth_message | default: None 如果提供,则在登录页面上显示的HTML消息。 |
prevent_thread_lock | default: False 如果为True,则在服务器运行时,界面将阻止主线程。 |
show_error | default: False 如果为True,界面中的任何错误都将在一个警告模态框中显示,并在浏览器控制台日志中打印。 |
server_name | default: None 要使应用在本地网络上可访问,请将其设置为"0.0.0.0"。可以通过环境变量GRADIO_SERVER_NAME设置。如果为None,则使用"127.0.0.1"。 |
server_port | default: None 将在该端口上启动Gradio应用(如果可用)。可以通过环境变量GRADIO_SERVER_PORT设置。如果为None,则将从7860开始搜索可用端口。 |
height | default: 500 这表示包含界面的iframe元素的高度,以像素为单位。这个参数只在inline参数为True时使用,即当界面以内联方式嵌入到iframe中时。 |
width | default: “100%” 这表示包含界面的iframe元素的宽度。它可以是一个像素值(int)或一个百分比(str)。同样,这个参数只在inline参数为True时使用。 |
favicon_path | default: None 如果提供了指向文件(.png, .gif, 或 .ico)的路径,该文件将用作网页的favicon(网站图标)。通常,favicon显示在浏览器的地址栏或标签页上。 |
ssl_keyfile | default: None 如果提供了文件路径,它将用作创建运行在https上的本地服务器的私钥文件。这在需要安全连接时很有用。 |
ssl_certfile | default: None 如果提供了文件路径,它将用作https的签名证书。如果提供了ssl_keyfile,则必须提供此参数。 |
ssl_keyfile_password | default: None 如果提供了密码,它将与ssl证书一起用于https。这是为了保护私钥文件的安全访问。 |
ssl_verify | default: True 如果为False,则跳过证书验证,这允许使用自签名证书。这在某些测试或内部环境中可能很有用,但在生产环境中可能不安全。 |
quiet | default: False 如果为True,则抑制大多数打印语句。这有助于减少控制台或终端上的输出,特别是在不需要详细日志的情况下。 |
show_api | default: True 如果为True,则在应用的页脚显示API文档。这有助于用户了解和使用API接口。 |
allowed_paths | default: None 允许gradio服务的完整文件路径或父目录列表(除了包含gradio python文件的目录)。必须是绝对路径。警告:如果提供目录,则这些目录或其子目录中的任何文件都将对所有应用用户可访问。 |
blocked_paths | default: None 不允许gradio服务的完整文件路径或父目录列表(即应用用户不允许访问)。必须是绝对路径。警告:该选项优先于allowed_paths和Gradio默认公开的其他所有目录。 |
root_path | default: None 如果应用程序不是从域名的根目录(“/”)提供服务,则这是应用程序的根路径(或“挂载点”)。当应用程序位于反向代理后面,该代理将请求转发到应用程序时,该选项通常很有用。例如,如果应用程序在"https://example.com/myapp"上提供服务,则应将root_path设置为"/myapp"。可以提供一个以http://或https://开头的完整URL,这将被用作整个根路径。可以通过环境变量GRADIO_ROOT_PATH进行设置。默认为""。 |
app_kwargs | default: None 要作为参数键和参数值字典传递给底层FastAPI应用的附加关键字参数。例如,“docs_url”: “/docs”。 |
state_session_capacity | default: 10000 存储在内存中的会话信息的最大数量。如果会话数量超过此数量,将删除最旧的会话。在使用gradio.State或从函数返回更新的组件时,减少容量可减少内存使用。默认为10000。 |
share_server_address | default: None 用于指定用于共享Gradio应用的自定义FRP服务器和端口(仅当share=True时适用)。如果未提供,将使用默认的FRP服务器https://gradio.live。更多信息请参见https://github.com/huggingface/frp。 |
share_server_protocol | default: None 用于指定共享链接使用的协议。默认为"https",除非提供了自定义的share_server_address,在这种情况下,它默认为"http"。如果您使用的是自定义的share_server_address并希望使用https,则必须将其设置为"https"。 |
auth_dependency | default: None 一个函数,它接受一个FastAPI请求并返回一个字符串用户ID或None。如果该函数对特定请求返回None,则该用户无权访问应用(他们将看到401 Unauthorized响应)。用于与OAuth等外部身份验证系统一起使用。 |
二、load()
设置一个侦听器,在浏览器中初始加载时被触发
这个方法由于主要是Blocks这种块布局中使用的比较多,所以我们将在Block中进行介绍
三、from_pipeline()
gradio.Interface.from_pipeline 的主要作用是简化从预训练模型到交互式 Gradio 接口的创建过程。当你有一个预训练的模型管道时,你可以使用这个方法快速生成一个前端界面,让用户能够上传数据、观察模型输出,并实时与模型进行交互。
具体来说,from_pipeline 方法会根据提供的管道对象自动确定输入和输出组件,并为你创建一个 Gradio 接口。这意味着你不需要手动指定输入和输出类型,也不需要编写复杂的代码来连接模型和前端界面。
参数名称 | 说明 |
---|---|
pipeline(必要函数) | 使用pipeline对象 |
例如对于一个image-classification模型,我们可以使用transformers里的pipeline函数,并将创建的对象传入Interface中,直接可以生成个简单的前段交互界面,如下:
import gradio as gr
from transformers import pipeline
pipe = pipeline("image-classification")
gr.Interface.from_pipeline(pipe).launch()
(由于hugging face访问超时,此处就无图片)
四、integrate()
用于与其他库集成的“捕获所有”方法。它应该在launch()方法之后运行。
参数名称 | 说明 |
---|---|
comet_ml | default: None 如果提供了comet_ml Experiment对象,将与其集成并在Comet仪表板上显示。 |
wandb | default: None 如果提供了wandb模块,将与其集成并在WandB仪表板上显示。 |
mlflow | default: None 如果提供了mlflow模块,将与其集成并在ML Flow仪表板上显示。 |
五、queue()
通过启用队列功能,您可以控制用户能够知晓他们在队列中的位置,并设置允许的最大事件数量限制。
参数名称 | 说明 |
---|---|
status_update_rate | default: “auto” 如果设置为"auto",Queue将在每个作业完成时向所有客户端发送状态估计。否则,Queue将按此参数设置的秒数间隔定期发送状态。 |
api_open | default: None 如果为True,则后端的REST路由将打开,允许直接发送到这些端点的请求跳过队列。 |
max_size | default: None 队列在任何给定时刻将存储的最大事件数。如果队列已满,则不会添加新事件,并且用户将收到一条消息,指示队列已满。如果为None,则队列大小将不受限制。 |
concurrency_count | default: None 已弃用。直接在事件监听器上设置concurrency_limit,例如btn.click(fn, …, concurrency_limit=10)或gr.Interface(concurrency_limit=10)。如有必要,可以通过launch()中的max_threads配置总工作线程数。 |
default_concurrency_limit | default: “not_set” 未指定concurrency_limit的事件监听器的默认值。可以通过环境变量GRADIO_DEFAULT_CONCURRENCY_LIMIT设置。如果未设置,则默认为1。 |
代码如下: |
demo = gr.Interface(image_generator, gr.Textbox(), gr.Image())
demo.queue(max_size=20)
demo.launch()
总结
这一节内容,主要是对Interface的方法的一个总结与盘点,并且由于不够直观,所以在这一节中并没有采用图片的形式进行展现。