当前位置: 首页 > news >正文

【Gradio】快速入门

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 。

相关文章:

【Gradio】快速入门

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

深度学习Day-19:DenseNet算法实战与解析

🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 要求: 根据 Pytorch 代码,编写出 TensorFlow 代码研究 DenseNet 与 ResNetV 的区别改进思路是…...

基于openssl实现AES ECB加解密

AES加密,全称高级加密标准(Advanced Encryption Standard),是一种广泛使用的对称加密算法,用于保护电子数据的安全。以下是AES加密的基本原理和特点: 基本概念 对称加密:AES是一种对称加密算法…...

Git:从配置到合并冲突

目录 1.前言 2.Git的下载与初始化配置 3.Git中新建仓库 4.Git的工作区域和文件状态 5.Git中查看操作和提交记录 6.Git中添加和提交文件 7.Git中回退提交版本 8.Git中查看版本间的差异 9.Git中删除文件 10.Git中忽略指定文件 11.Git中配置SSH密钥 12.Git中关联克隆仓库 13.Git中…...

leetcode hot100 之 最长公共子序列

题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(…...

短剧APP开发,新的“财富”

在数字化时代,开发短剧APP不仅是顺应潮流的必然选择,更是抓住市场机遇的关键所在。为确保短剧APP能有效地吸引并留住用户,以下是一些主要功能及其介绍: 1、短剧搜索 关键词搜索:用户可以通过输入关键词(如…...

Uniapp与第三方应用数据通讯

首先说明一点,这个只是uniapp代码编写的应用之间相互传递数据,uniapp编写的与其他语言编写的我尚不知道能不能传递。 应用1: plus.runtime.launchApplication({pname: "应用的appid",// extra 中可以自定数据,url和da…...

AI大模型战场:通用大模型与垂直大模型的角逐

随着人工智能技术的迅猛发展,AI大模型已成为推动科技进步的重要力量。然而,在AI大模型的战场上,通用大模型与垂直大模型之间的分化日益明显。两者各有其独特的优势和潜力,在不同的应用场景中发挥着重要作用。那么,在这…...

linux的一些知识点分享-------关于操作维护的一些知识点

Apache服务器的监听端口,默认为() Apache服务器的监听端口,默认为80。 vsftpd中,可以不需提供账号密码就能进行访问的用户是( ) 在vsftpd(Very Secure FTP Daemon)中,可以不需要提供账号密码就能进行访问的用户通常是匿名用户。…...

Python使用tkinter库设置背景图片、label显示位置和label设置显示图片

tkinter 设置背景图片 label显示位置 label设置显示图片 from tkinter import * import tkinter as tk from PIL import ImageTk from PIL import Imagedef get_img(filename, width, height):im Image.open(filename).resize((width, height))im ImageTk.PhotoImage(im)…...

OpenStack是什么?

OpenStack是一个开源的云计算管理平台项目,它是一系列软件开源项目的组合。该项目由美国国家航空航天局(NASA)和Rackspace合作研发并发起,旨在提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack不仅是一个软…...

2024下《系统规划与管理师》50个高频考点汇总!背就有效

2024上半年软考考试已经结束,有不少小伙伴已经开始准备下半年软考了,但是大家要注意:今年高项仅考上半年一次,下半年考的高级科目只有系规难度相对较低,系规需要学习的内容比高项少很多,高项第四版教程731页…...

软件游戏提示msvcp140.dll丢失的原因分析及解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“计算机缺失msvcp140.dll”。那么,这个错误是什么意思呢?它会造成哪些问题?小编将从以下几个方面进行详细解析。 一,了解msvcp140.dll是什么 …...

备战 清华大学 上机编程考试-冲刺前50%,倒数第3天

T1:水滴 - 模拟 这是一个经典的游戏。 在一个 𝑛𝑚 的棋盘上,每一个格子中都有一些水滴。 玩家的操作是,在一个格子中加一滴水。 当一个格子中的水滴数超过了 4,这一大滴水就会因格子承载不住而向外扩散。扩散的规…...

docker的安装及docker常用命令

目录 环境介绍docker卸载docker安装docker镜像命令查看docker可用的镜像查看docker可安装的镜像安装镜像删除镜像 docker容器命令查看容器启动容器启动示例进入容器内部停止容器删除容器容器和主机之间的文件复制 docker网络命令创建docker网络查看docker网络删除docker网络 do…...

Dell服务器根据GPU温度调整风扇转速

前言 dell服务器自动风扇是根据CPU温度来调速的,我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行,我看了下也没有基于显卡温度调速的脚本,于是我就自己写了一个 基于ipmi工具 乌班图等linux先安装ipmi apt …...

快捷键专栏 IDEA、Navicat、电脑、Excle、Word等

标题 电脑篇windowsR 配合以下常用命令连上公司网线WiFi速度变慢问题解决Windows10 设置鼠标右键在此处打开cmd和Powershell窗口、关机打开电脑诊断工具系统设置常用设置查看电脑出场日期 systeminfo删除文件显示已在另一个程序打开?找回回收站删除的文件WindowsR输…...

卸载MySQL5.0,安装MySQL8.0

卸载MySQL 1、以管理员身份运行cmd,删除MySQL服务 2、卸载MySQL 3、删除残余文件 4、清楚注册表 winR -> regedit 5、删除环境变量 安装MySQL步骤 官方下载地址 https://www.mysql.com/downloads/ 以上步骤即完成MySQL数据库安装。...

苹果WWDC重磅发布的IOS 18、Apple Intelligence背后的技术分析!

2024年6月10日,在2024年WWDC全球开发者大会上,苹果推出了Apple Intelligence,这是深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。 为了让大模型能在 iPhone 端侧跑,苹果还是做了很多事情的。接下来就跟大家介绍一…...

Linux基础IO【II】

今天,我们接着在上一篇文章的基础上,继续学习基础IO。观看本文章之前,建议先看:Linux基础IO【I】,那,我们就开始吧! 一.文件描述符 1.重新理解文件 文件操作的本质:进程和被打开文件…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

windows系统MySQL安装文档

概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...