Gradio快速搭建机器学习模型的wedui展示用户界面/深度学习网页模型部署

Gradio 快速开始

    • Installation 安装
    • Building Your First Demo
    • Sharing Your Demo 分享您的演示

官网

Gradio 是一个开源 Python 包,可让您快速为机器学习模型、API 或任何任意 Python 函数构建演示或 Web 应用程序。然后,您可以使用 Gradio 的内置共享功能在几秒钟内共享演示或 Web 应用程序的链接。无需 JavaScript、CSS 或网络托管经验!

在这里插入图片描述
只需几行 Python 代码就可以创建一个像上面这样的漂亮演示,所以让我们开始吧 💫

Installation 安装

先决条件:Gradio 需要 Python 3.8 or higher

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

✍️提示:最好在虚拟环境中安装Gradio。此处提供了所有常见操作系统的详细安装说明。

Building Your First Demo

构建您的第一个演示

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

# 导入 Gradio 库,它是一个用于构建机器学习模型演示的开源库。
import gradio as gr

# 定义一个函数 greet,它接受两个参数:name(名字)和 intensity(强度)。
# 这个函数返回一个字符串,内容是重复“Hello, ”和name的“!”,重复次数由intensity决定。
def greet(name, intensity):
    return "Hello, " + name + "!" * int(intensity)

# 创建一个 Gradio 接口对象,它将使用 greet 函数。
# 接受两个输入:一个文本输入(名字)和一个滑动条输入(强度)。
# 输出是一个文本。
demo = gr.Interface(
    fn=greet,  # 指定要使用的函数
    inputs=["text", "slider"],  # 输入类型:文本和滑动条
    outputs=["text"],  # 输出类型:文本
)

# 启动 Gradio 接口,允许用户通过网页界面与 greet 函数交互。
demo.launch()

✍️提示:我们将导入的名称从 gradio 缩短为 gr ,以提高代码的可读性。这是一个广泛采用的约定,您应该遵循它,以便使用您的代码的任何人都可以轻松理解它。

✍️提示:如果第一次生成本地网址后打开显示空白,可以尝试一下科学上网

现在,运行您的代码。例如,如果您将 Python 代码编写在名为 app.py 的文件中,那么您可以从终端运行 python app.py

如果从文件运行,下面的演示将在浏览器中打开 http://localhost:7860。如果您在笔记本中运行,演示将嵌入笔记本中。
在这里插入图片描述

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

✍️ Tip: When developing locally, you can run your Gradio app in hot reload mode, which automatically reloads the Gradio app whenever you make changes to the file. To do this, simply type in gradio before the name of the file instead of python. In the example above, you would type: gradio app.py in your terminal. Learn more about hot reloading in the .
✍️提示:在本地开发时,您可以在热重载模式下运行 Gradio 应用程序,只要您对文件进行更改,该模式就会自动重新加载 Gradio 应用程序。为此,只需在文件名前输入 gradio 而不是 python 。在上面的示例中,您可以在终端中输入: gradio app.py 。在Hot Reloading Guide中了解更多信息。

Understanding the Interface Class
了解 Interface

You’ll notice that in order to make your first demo, you created an instance of the gr.Interface class. The Interface class is designed to create demos for machine learning models which accept one or more inputs, and return one or more outputs.
您会注意到,为了制作第一个演示,您创建了 gr.Interface 类的实例。 Interface 类旨在为机器学习模型创建演示,该模型接受一个或多个输入并返回一个或多个输出。

The Interface class has three core arguments:
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 :用于输入的渐变组件。组件的数量应与函数中参数的数量相匹配。
  • 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 :用于输出的渐变组件。组件的数量应与函数返回值的数量相匹配。

The fn argument is very flexible — you can pass any Python function that you want to wrap with a UI. In the example above, we saw a relatively simple function, but the function could be anything from a music generator to a tax calculator to the prediction function of a pretrained machine learning model.
fn 参数非常灵活——您可以传递任何您想要用 UI 包装的 Python 函数。在上面的示例中,我们看到了一个相对简单的函数,但该函数可以是从音乐生成器到税收计算器再到预训练机器学习模型的预测函数的任何函数。

The input and output arguments take one or more Gradio components. As we’ll see, Gradio includes more than 30 built-in components (such as the gr.Textbox(), gr.Image(), and gr.HTML() components) that are designed for machine learning applications.
inputoutput 参数采用一个或多个 Gradio 组件。正如我们将看到的,Gradio 包含 30 多个专为机器设计的内置组件(例如 gr.Textbox()gr.Image()gr.HTML() 组件)学习应用程序。

✍️ Tip: For the inputs and outputs arguments, you can pass in the name of these components as a string ("textbox") or an instance of the class (gr.Textbox()).
✍️提示:对于 inputsoutputs 参数,您可以将这些组件的名称作为字符串 ( "textbox" ) 或类的实例 ( gr.Textbox() )。

If your function accepts more than one argument, as is the case above, pass a list of input components to inputs, with each input component corresponding to one of the arguments of the function, in order. The same holds true if your function returns more than one value: simply pass in a list of components to outputs. This flexibility makes the Interface class a very powerful way to create demos.
如果您的函数接受多个参数(如上面的情况),请将输入组件列表传递给 inputs ,每个输入组件按顺序对应于函数的参数之一。如果您的函数返回多个值,同样如此:只需将组件列表传递给 outputs 即可。这种灵活性使得 Interface 类成为创建演示的非常强大的方式。

We’ll dive deeper into the gr.Interface on our series on building Interfaces.
我们将在构建界面系列中更深入地探讨 gr.Interface

Sharing Your Demo 分享您的演示

What good is a beautiful demo if you can’t share it? Gradio lets you easily share a machine learning demo without having to worry about the hassle of hosting on a web server. Simply set share=True in launch(), and a publicly accessible URL will be created for your demo. Let’s revisit our example demo, but change the last line as follows:
如果不能分享,再漂亮的演示又有什么用呢? Gradio 可让您轻松共享机器学习演示,而无需担心托管在 Web 服务器上的麻烦。只需在 launch() 中设置 share=True ,将为您的演示创建一个可公开访问的 URL。让我们重新审视我们的示例演示,但将最后一行更改如下:

# 导入 Gradio 库,它是一个用于构建机器学习模型演示的开源库。
import gradio as gr

# 定义一个函数 greet,它接受一个参数:name(名字)。
# 这个函数返回一个字符串,内容是“Hello”加上传入的名字。
def greet(name):
    return "Hello " + name + "!"

# 创建一个 Gradio 接口对象,它将使用 greet 函数。
# 接受一个文本输入(名字)。
# 输出是一个文本。
demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox")

# 启动 Gradio 接口,允许用户通过网页界面与 greet 函数交互。
# share=True 参数允许生成的链接被其他人访问。
demo.launch(share=True)  # Share your demo with just 1 extra parameter 🚀

When you run this code, a public URL will be generated for your demo in a matter of seconds, something like:
当您运行此代码时,将在几秒钟内为您的演示生成一个公共 URL,如下所示:

👉 https://a23dsf231adb.gradio.live

Now, anyone around the world can try your Gradio demo from their browser, while the machine learning model and all computation continues to run locally on your computer.
现在,世界各地的任何人都可以通过浏览器尝试您的 Gradio 演示,而机器学习模型和所有计算将继续在您的计算机上本地运行。

To learn more about sharing your demo, read our dedicated guide on sharing your Gradio application.
要了解有关共享演示的更多信息,请阅读我们有关共享 Gradio 应用程序的专用指南。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

熬过了劫数,生活将会越过越好

人情无常,看开方自在;得失无常,随缘半称心;生命无常,心宽人自安。人生无常,才是世间常态。生命的长短和意外一样,是一件突如其来的事情,我们都无法控制。死亡面前,人永远…

LLM 推理优化探微 (3) :如何有效控制 KV 缓存的内存占用,优化推理速度?

编者按: 随着 LLM 赋能越来越多需要实时决策和响应的应用场景,以及用户体验不佳、成本过高、资源受限等问题的出现,大模型高效推理已成为一个重要的研究课题。为此,Baihai IDP 推出 Pierre Lienhart 的系列文章,从多个…

PHP学习笔记

PHP学习笔记 一.准备环境二.安装Apache添加环境变量 三.安装PHP添加环境变量 配置 apache 支持 php四.安装Mysql配置环境MySQL的访问流程php连接mysql 五虚拟主机虛拟主机的分类搭建基于域名的虚拟主机 一.准备环境 下载Apache 和PHP 安装mysql 特殊IP:127.0.0.1 代…

Java高频面试之集合篇

Java 中常用的容器有哪些? ArrayList 和 LinkedList 的区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的. ArrayList实现了RandomAccess接口,可基于下标访问. LinkedList 实现了Deque /dek/,可以当做双端队列使用. 插入效率对比 如果从头部…

Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify

文章目录 1.共享带来的问题1.1 临界区 Critical Section1.2 竞态条件 Race Condition 2. synchronized语法及理解2.1 方法上的 synchronized 3.变量的线程安全分析3.1.成员变量和静态变量是否线程安全?3.2.局部变量是否线程安全?3.2.1 局部变量线程安全分…

NIO学习总结(二)——Selector、FileLock、Path、Files、聊天室实现

一、Selector 1.1 Selector简介 1.1.1 Selector 和 Channel的关系 Selector 一般称为选择器 ,也可以翻译为 多路复用器 。 它是 Java NIO 核心组件中的一个,用于检查一个或多个 NIO Channel(通道)的状态是否处于可读、可写。由…

ubuntu20.04环境搭建:etcd+patroni+pgbouncer+haproxy+keepalived的postgresql集群方案

搭建基于etcdpatronipgbouncerhaproxykeepalived的postgresql集群方案 宿主机操作系统:ubuntu20.04 使用kvm搭建虚拟环境(如没有安装kvm,请先自行安装kvm) 1、安装kvm服务 ①、查看虚拟支持 如果CPU 支持硬件虚拟化则输出结果大于0,安装kvm-ok命令检…

蓝桥省赛倒计时 35 天-双指针

双指针介绍 双指针算法是一种常用的算法技巧,它通常用于在数组或字符串中进行快速查找、匹配、排序或移动操作。 pointer 双指针并非真的用指针实现,一般用两个变量来表示下标(在后面都用指针来表示)。 双指针算法使用两个指针在数…

Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用命令行创建Gradle插件

1. 前言 前文中,我们介绍了在Android中,如何基于Gradle 8.2,创建Gradle插件。这篇文章,我们以buildSrc的方式来创建Gradle插件。此外,还介绍一种用Cmd命令行的方式,来创建独立的Gradle插件的方式。 1.1 本…

第3集《天台教观纲宗》

乙二、约观行释 诸位法师慈悲!陈会长慈悲!诸位菩萨!阿弥陀佛! 请大家打开讲义第六页。我们看到乙二、约观行释。这一科是讲到天台教观的修学宗旨。 我们前面讲到,天台教观整个建立的过程,它是先有观法&a…

06 数据结构之树

引言&#xff1a; 数的代码实现&#xff0c; 先序遍历、中序、后序、层次遍历 /* binary_tree.h */ #ifndef _BINARY_TREE_H #define _BINARY_TREE_H#include <stdio.h> #include <stdlib.h> #include <string.h>#define DEBUG(msg) \printf("--%s--, %…

Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows+Linux

Tensorflow2.0部署&#xff08;tensorflow/serving&#xff09;过程备忘记录 部署思路&#xff1a;采用Tensorflow自带的serving进模型部署&#xff0c;采用容器docker 1.首先安装docker 下载地址&#xff08;下载windows版本&#xff09;&#xff1a;https://desktop.docke…

python 蓝桥杯之动态规划入门

文章目录 DFS滑行&#xff08;DFS 记忆搜索&#xff09; 思路&#xff1a; 要思考回溯怎么写&#xff08;入参与返回值、递归到哪里&#xff0c;递归的边界和入口&#xff09; DFS 滑行&#xff08;DFS 记忆搜索&#xff09; 代码分析&#xff1a; 学会将输入的数据用二维列表…

WebMagic框架

1.webmagic框架 webmagic框架是一个Java实现的爬虫框架&#xff0c;底层依然是HttpClient和jsoup 组件&#xff1a; downloader&#xff1a;下载器组件PageProcessor&#xff1a;页面解析组件&#xff08;必须自定义&#xff09;scheculer&#xff1a;访问队列组件pipeline&am…

redis 性能优化一

目录 前言 尾延迟 前言 说到redis 性能优化&#xff0c;优化的目的是什么&#xff1f;提高响应&#xff0c;减少延迟。就要关注两点&#xff0c;一是尾延迟&#xff0c;二是Redis 的基线性能。只有指标&#xff0c;我们的优化&#xff0c;才有意义&#xff0c;才能做监控以及…

Java中常用的集合及方法(3)

1、List&#xff08;接上级--常用方法示例补充&#xff09; 1.4 常用的方法 1.4.2 LinkedList&#xff08;JDK8&#xff09; LinkedList是Java中一个实现了List接口和Deque接口的类&#xff0c;它采用链表结构存储数据&#xff0c;支持高效的插入和删除操作。 LinkedList中…

【C++】深度解剖多态

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是多态&#xff0c;熟练掌握多态的定义&a…

NIO学习总结(一)——简介、Channel、Buffer

相关代码地址&#xff1a;nio_demo_learn: nio学习相关代码 (gitee.com) 一、BIO、NIO和AIO 1.1 阻塞IO&#xff08;BIO&#xff09; BIO即同步阻塞IO&#xff0c;实现模型为一个连接就需要一个线程去处理。这种方式简单来说就是当有客户端来请求服务器时&#xff0c;服务器就…

分布式搜索elasticsearch

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案…

MySQL主从读写分离之Proxysql(openEuler版)

实验目的&#xff1a; 基于proxysql实现MySQL的主从读写分离。 实验过程&#xff1a; 前期准备&#xff1a; 一共有四台虚拟机&#xff0c;其中三台为配置好的一主两从虚拟机&#xff0c;还有一台干净的虚拟机用来配置proxysql。 主机名地址master192.168.27.137node1192.…