【Gradio】快速入门

news2024/11/27 17:50:50

3e7e8b918fbdf9dbbe2c7dfe9879fb33.png

https://www.gradio.app/

Gradio 是一个开源 Python 软件包https://github.com/gradio-app/gradio ,可以让你快速为机器学习模型、API 或任何任意 Python 函数创建一个演示或网络应用程序。然后,您就可以使用 Gradio 内置的分享功能,在几秒钟内分享您的演示或网络应用程序的链接。无需 JavaScript、CSS 或网络托管经验!

f22a9ae810c15b8552af6fc46fe71f45.gif

只需几行 Python 代码就能创建一个类似上面的演示,让我们开始吧 💫

安装 

前提条件Gradio 需要 Python 3.8 或更高版本

我们建议使用 pip 安装 Gradio,它默认包含在 Python 中。在终端或命令提示符下运行它:

pip install gradio

✍️ 提示:最好在虚拟环境中安装 Gradio。这里提供了所有常见操作系统的详细安装说明。https://www.gradio.app/main/guides/installing-gradio-in-a-virtual-environment

制作第一个演示版 

你可以在自己喜欢的代码编辑器、Jupyter 笔记本、Google Colab 或其他任何编写 Python 的地方运行 Gradio。让我们编写第一个 Gradio 应用程序吧:

import gradio as gr  # 导入gradio库,gradio用于快速创建机器学习模型的web界面


# 定义一个名为greet的函数,接收两个参数:name 和 intensity
def greet(name, intensity):
    # 函数返回一个字符串,包含问候语和根据intensity重复的名字
    return "Hello, " + name + "!" * int(intensity)  


# 使用gr.Interface创建一个UI界面,fn指定了接口的函数,inputs定义了输入类型,outputs定义了输出类型
demo = gr.Interface(
    fn=greet,  # 指定greet函数作为接口的回调函数
    inputs=["text", "slider"],  # 设置两个输入,一个文本输入框和一个滑块
    outputs=["text"],  # 设置一个文本输出,用于显示greet函数的结果
)


demo.launch()  # 启动界面,这将会在本地服务器上运行web应用程序

该代码的功能是使用Gradio库创建一个简单的web界面,该界面通过一个「text」框输入名字和一个「slider」滑块输入亲密度(intensity),然后点击提交会调用greet函数生成含有问候语的字符串。根据滑块的值,名字会被重复相应的次数,并将结果显示在界面上。

✍️ 提示:为了提高代码的可读性,我们将导入名称从 gradio 简化为 gr 。这是一个被广泛采用的约定,您应该遵守,这样任何与您的代码打交道的人都能很容易地理解它。

现在,运行您的代码。如果您将 Python 代码写入一个名为 app.py 的文件,那么您就可以在终端运行 python app.py 

如果从文件运行,下面的演示将在 http://localhost:7860 的浏览器中打开。如果在笔记本中运行,演示将嵌入笔记本中显示。

38ef1b82604b6bd3206adfc60fa80b72.png

在左边的文本框中输入您的姓名,拖动滑块,然后按提交按钮。您应该会在右侧看到一个友好的问候语。

✍️ 提示:在本地开发时,你可以在热重载模式下运行 Gradio 应用程序,每当你对文件进行修改时,Gradio 应用程序就会自动重载。要做到这一点,只需在文件名前输入 gradio 而不是 python 即可。在上面的例子中,你需要在终端中输入gradio app.py。有关热重载的更多信息,请参阅《热重载指南》https://www.gradio.app/guides/developing-faster-with-reload-mode。

理解 Interface 类

你会注意到,为了制作第一个演示,你创建了一个 gr.Interface 类的实例。 Interface 类旨在为机器学习模型创建演示,这些模型接受一个或多个输入,并返回一个或多个输出。

Interface 类有三个核心参数:

  • fn: the function to wrap a user interface (UI) around
    fn :用于封装用户界面(UI)的函数

  • inputs: the Gradio component(s) to use for the input. The number of components should match the number of arguments in your function.
    inputs:输入要使用的 Gradio 组件。组件数量应与函数参数数量一致。

  • outputs: the Gradio component(s) to use for the output. The number of components should match the number of return values from your function.
    outputs:输出时使用的 Gradio 组件。组件的数量应与函数返回值的数量一致。

fn 参数非常灵活--你可以传递任何你想用 UI 封装的 Python 函数。在上面的示例中,我们看到的是一个相对简单的函数,但这个函数可以是任何东西,从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。

inputs 和 outputs 参数包含一个或多个 Gradio 组件。正如我们将看到的,Gradio 包含 30 多个内置组件(如 gr.Textbox() 、 gr.Image() 和 gr.HTML() 组件),专为机器学习应用而设计。

如果函数接受多个参数(如上文所述),则向 inputs 传递一个输入组件列表,每个输入组件依次对应函数的一个参数。如果函数返回一个以上的值,也可以这样做:只需向 outputs 传递一个组件列表即可。这种灵活性使 Interface 类成为创建演示的一种非常强大的方式。

我们将在 "构建界面 " https://www.gradio.app/main/guides/the-interface-class 系列中深入探讨 gr.Interface 。

分享您的演示 

如果不能分享,再漂亮的演示又有什么用呢?Gradio 可以让你轻松分享机器学习演示,而不必担心托管到网络服务器上的麻烦。只需在 launch() 中设置 share=True ,就能为你的演示创建一个可公开访问的 URL。让我们重温一下演示示例,将最后一行修改如下:

import gradio as gr  # 导入gradio库,用于快速创建交互式的机器学习应用程序的Web界面


# 定义一个名为greet的函数,接收一个参数:name
def greet(name):
    # 函数返回一个字符串拼接,内容为向用户打招呼
    return "Hello " + name + "!"


# 创建一个Gradio界面,该界面将包括用于输入和显示结果的文本框
demo = gr.Interface(
    fn=greet,  # 指定greet函数作为用户输入的处理函数
    inputs="textbox",  # 定义用户输入界面为一个文本框
    outputs="textbox"  # 定义输出界面也为一个文本框
)
    
# 启动Gradio界面,并开启共享功能
demo.launch(share=True)  # 通过添加参数share=True来共享应用程序,可以通过互联网访问

运行这段代码后,几秒钟内就会为您的演示生成一个公共 URL,类似于这样:

👉   https://a23dsf231adb.gradio.live

现在,世界各地的任何人都可以通过浏览器试用您的 Gradio 演示,而机器学习模型和所有计算仍在您的计算机上本地运行。

要了解更多关于分享演示的信息,请阅读我们的 Gradio 应用程序分享指南https://www.gradio.app/guides/sharing-your-app 。

Core Gradio Classes

到目前为止,我们已经讨论了 Interface 类,它是一个高级类,可以让我们用 Gradio 快速制作演示。但 Gradio 还包括什么呢?

带有 gr.ChatInterface  的聊天机器人

Gradio 还包含另一个高级类 gr.ChatInterface ,专门用于创建聊天机器人用户界面。与 Interface 类似,你只需提供一个函数,Gradio 就会创建一个完整的聊天机器人用户界面。如果你对创建聊天机器人感兴趣,可以直接跳转到我们专门的 gr.ChatInterface 指南https://www.gradio.app/guides/creating-a-chatbot-fast。

使用 gr.Blocks  的自定义演示

Gradio 还提供了一种底层方法,利用 gr.Blocks 类设计具有更灵活布局和数据流的网络应用程序。通过块,你可以控制组件在页面上的位置,处理复杂的数据流(例如,输出可以作为其他函数的输入),并根据用户交互更新组件的属性/可见性。

您可以使用 gr.Blocks() 构建非常定制和复杂的应用程序。例如,广受欢迎的图像生成器 Automatic1111 Web UI (https://github.com/AUTOMATIC1111/stable-diffusion-webui)就是使用 Gradio 块构建的。我们将在 "使用积木构建 "系列中深入探讨 gr.Blocks(https://www.gradio.app/guides/blocks-and-event-listeners) 。

Gradio Python 和 JavaScript 生态系统 

这就是 gradio Python 核心库的要点,但 Gradio 实际上远不止这些!它是一个由 Python 和 JavaScript 库组成的完整生态系统,让您可以用 Python 或 JavaScript 构建机器学习应用程序,或以编程方式进行查询。以下是 Gradio 生态系统的其他相关部分:

  • Gradio Python Client (gradio_client): query any Gradio app programmatically in Python.
    Gradio Python Client ( gradio_client ): 查询任何 用 Python 编程的Gradio 应用程序。https://www.gradio.app/guides/getting-started-with-the-python-client

  • Gradio JavaScript Client (@gradio/client): query any Gradio app programmatically in JavaScript.
    Gradio JavaScript Client ( @gradio/client ):使用 JavaScript 程式查詢任何 Gradio 應用程式。https://www.gradio.app/guides/getting-started-with-the-js-client

  • Gradio-Lite (@gradio/lite): write Gradio apps in Python that run entirely in the browser (no server needed!), thanks to Pyodide.
    Gradio-Lite @gradio/lite ): 多亏了 Pyodide,用 Python 编写的 Gradio 应用程序可以完全在浏览器中运行(无需服务器!)。https://www.gradio.app/guides/gradio-lite

  • Hugging Face Spaces: the most popular place to host Gradio applications — for free! 
    Hugging Face Spaces:免费托管 Gradio 应用程序的最受欢迎的地方!https://huggingface.co/spaces

下一步是什么? 

继续使用 Gradio 指南学习 Gradio,其中包括解释、示例代码和嵌入式交互演示。下一步:让我们深入了解 Interface 类 https://www.gradio.app/guides/the-interface-class 。

或者,如果您已经掌握了基础知识,但还在寻找特定的内容,您可以搜索技术性更强的 API 文档 https://www.gradio.app/docs 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1816249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS2底层机制源码分析

init ->init_and_remove_ros_arguments ->init ->Context::init 保存初始化传入的信号 ->install_signal_handlers→SignalHandler::install 开线程响应信号 ->_remove_ros_arguments 移除ros参数 ->SingleNodeManager::instance().…

D-Bus——system 调用session 报错

以下代码是一个 session 服务和 systemd 服务 demo &#xff1a; systemd DBus #include <QCoreApplication> #include <QDBusConnection> #include <QDBusInterface> #include <QDBusError> #include <QDebug>class TestObject : public QObje…

一文搞懂flex布局

上学读书的时候&#xff0c;学习flex布局&#xff0c;更多停留在理论知识层面。近来&#xff0c;经过工作实践&#xff0c;发现自己对flex布局的理解更加深入&#xff0c;运用起来更加熟练&#xff0c;也越发能感受到flex布局的强大灵活性&#xff0c;特来总结一波。若有错误之…

Android Glide loading Bitmap from RESOURCE_DISK_CACHE slow,cost time≈2 seconds+

Android Glide loading Bitmap from RESOURCE_DISK_CACHE slow,cost time≈2 seconds 加载一张宽高约100px多些的小图&#xff0c;是一张相当小的正常图片&#xff0c;loading Bitmap from RESOURCE_DISK_CACHE竟然耗时达到惊人的3秒左右&#xff01;&#xff08;打开Glide调试…

元宇宙数字化3D虚拟展馆

随着科技的飞速发展&#xff0c;我们迎来了一个全新的时代——元宇宙时代。在这个充满无限可能的虚拟世界中&#xff0c;元宇宙数字展馆搭建编辑器应运而生&#xff0c;以其卓越的技术和创新的理念&#xff0c;为用户带来了前所未有的沉浸式展览体验。 元宇宙数字展馆搭建编辑器…

普涨和补涨—2024年上半年全球投资趋势

全球大宗商品价格处在上涨周期&#xff0c;东吴证券认为上游能源行业股价还有继续上涨的空间。随着6月全球股指进一步上涨&#xff0c;预计港股可能还会迎来补涨行情。 一、我们观察的全球投资趋势&#xff1a; 1、全球股指普涨&补涨。全球风险资产进入2024年后普遍上涨&am…

Spark安装、解压、配置环境变量、WordCount

Spark 小白的spark学习笔记 2024/5/30 10:14 文章目录 Spark安装解压改名配置spark-env.sh重命名&#xff0c;配置slaves启动查看配置环境变量 工作流程maven创建maven项目配置maven更改pom.xml WordCount按照用户求消费额上传到spark集群上运行 安装 上传&#xff0c;直接拖拽…

一文讲清:生产报工系统的功能、报价以及如何选择

最近这几年&#xff0c;企业越来越注重生产的速度和成本&#xff0c;尤其是“性价比”&#xff0c;生产报工系统已经变成了制造业里不可或缺的一部分。不过&#xff0c;市场上生产报工系统的选择太多&#xff0c;价格也都不一样&#xff0c;这就给很多企业出了个难题&#xff1…

【Python数据魔术】:揭秘类型奥秘,赋能代码创造

文章目录 &#x1f680;一.运算符&#x1f308;1. 算术运算符&#x1f308;2. 身份运算符&#x1f308;3. 成员运算符⭐4. 增量运算符⭐5. 比较运算符⭐6. 逻辑运算符 &#x1f680;二.可变与不可变&#x1f680;三.字符串转义&#x1f680;四.编码与解码&#x1f4a5;1. 基础使…

SpringBoot 异常配置

系统异常处理 创建异常处理器类&#xff0c;类上添加ControllerAdvice注解。 package com.soft.exception;import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframewor…

Java的集合框架总结

Map接口和Collection接口是所有集合框架的父接口&#xff1a; Collection接口的子接口包括&#xff1a;Set接口和List接口 Map接口的实现类主要有&#xff1a;HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等 Set接口的实现类主要有&#xff1a;HashSet、Tr…

【数据结构】二叉树:一场关于节点与遍历的艺术之旅

专栏引入 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我想让大家…

数据结构之链表的经典笔试题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 203. 移除链表元素 206. 反转链表 876. 链表的中间节点 面试题 02.02. 返回倒数第k个节点 …

零基础非科班也能掌握的C语言知识22 预处理详解(完结)

预处理详解 1.预处理符号2.#define 定义常量3.#define 定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比6.1 例子6.1 .16.1.26.1.3 7.命名约定8.undefin9.命令行定义(博主没办法演示)10.条件编译11.头文件的包含11.1本地文件11.2库文件的包含11.3 嵌套文件的包含 12.其…

软件安全测评有哪些测试流程?第三方检测机构进行安全测评的好处

在今天的高科技时代&#xff0c;软件产品已经成为人们生活和工作的重要组成部分。然而&#xff0c;与其普及和深入应用的&#xff0c;软件安全问题也日益凸显。 为了保障软件产品在使用过程中的安全性&#xff0c;进行安全测评是必不可少的。安全测评可以全面评估软件系统的安…

GPT-4o多模态大模型的架构设计

GPT-4o&#xff1a;大模型风向&#xff0c;OpenAI大更新 OpenAI震撼发布两大更新&#xff01;桌面版APP与全新UI的ChatGPT上线&#xff0c;简化用户操作&#xff0c;体验更自然。同时&#xff0c;全能模型GPT-4o惊艳亮相&#xff0c;跨模态即时响应&#xff0c;性能卓越且性价比…

Java集合自测题

文章目录 一、说说 List , Set , Map 三者的区别&#xff1f;二、List , Set , Map 在 Java 中分别由哪些对应的实现类&#xff1f;底层的数据结构&#xff1f;三、有哪些集合是线程不安全的&#xff1f;怎么解决呢&#xff1f;四、HashMap 查询&#xff0c;删除的时间复杂度五…

k8s中的pod域名解析失败定位案例

问题描述 我在k8s中启动了一个Host网络模式的pod&#xff0c;这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台&#xff0c;查看/etc/resolv.conf&#xff0c;发现nameserver配的有问题。这里我预期的nameserver应该使用宿主机的&…

【Linux】线程(一)

谈论之前需要先谈论一些线程的背景知识 其中就有进程地址空间&#xff0c;又是这个让我们又爱又恨的东西 目录 背景知识&#xff1a;地址空间&#xff1a; 背景知识&#xff1a; 地址空间&#xff1a; 说在前边&#xff0c;OS通常分为4个核心模块&#xff1a;执行流管理&…

【qt】绘图

绘图 一.画家二.绘图事件三.坐标体系四.画笔1.setColor2.setWidth3.setStyle4.setCapStyle5.setJoinStyle6.给画家配置笔 五.画刷1.setColor2.setStyle3.给画家设置刷子 六.用到的类汇总1.QRect 矩形2.QPoint 点3.QImage 图片4.QPixmap 图片5.QLine 线6.QPainterPath 路径 七.开…