快速搭建机器学习demo: gradio教程

本文介绍了gradio工具,它能帮助开发者快速创建机器学习模型的交互式DEMO。gradio与Streamlit相比更简洁易用,通过几个基础组件如输入输出、触发和布局组件,可以构建简易或复杂的UI。文中还提供了基础和进阶组件的使用示例,包括图像、文本、数字、布局等,并鼓励读者探索更优雅的界面设计。

🙃关注公众号 funNLPer 白嫖畅读全文🙃

1. Intro

gradio是一个能够快速建立机器学习demo web应用的工具,仅需简单的几行代码就能构建机器学习模型的可视化交互demo,并分享给你的朋友使用。

与gradio相同功能的竞品有Streamlit,相比Gradio,Streamlit相对复杂,完全熟练使用需要一定时间。

2. quick start

如下展示了一个简单的case,其他所有的case都可套用该模板

import gradio as gr

# 定义处理函数/模型推理
def greet(name):
    return "Hello " + name + "!"

# interface中三个必要参数: 推理函数、输入、输出
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
# 是否开启公网分享
demo.launch(share=False)

可得到如下的界面
在这里插入图片描述

3. 基础组件

3.1 应用界面

  • 简易界面通常使用 gr.Interface(fn, inputs, outputs, ···)
    • fn 是一个包装函数,通常为机器学习模型的推理部分
    • inputs 输入,通常是gradio的组件,如gr.Image(), 对于文本、图片等简单类型可直接写成[“text”, “image”]
    • outputs 输出,同输入
  • 定制化场景通常使用 gr.Blocks()
    block一般应用在定制化的复杂场景,可以自己定义很多模块,进行组合,后面会做详细介绍

3.2 输入输出组件

  • 图像 gr.Image(value, label, show_label)
    • value: 输入的图像,支持pil, np_array, path, url等格式
    • label: 组件名称
    • show_label: 是否展示组件名称
  • 文本 gradio.Textbox(value, lines, placeholder, show_copy_button)
    • value: 输入文本
    • lines: 文本框最少展示行数
    • placeholder: 一般用作提示语
    • show_copy_button: 是否展示复制按钮
  • 数字 gr.Number(choices, value, label)
  • 数据框 gr.DataFrame()
  • 下拉选项 gr.Dropdown()
  • markdown gr.Markdown()
  • 文件 gr.Files()
  • 调节带 gradio.Slider(···)
  • 单选 gradio.Radio(choices, value, label)
    • choice: 选择项list
    • value: 默认选定值
    • label: 组件名称

3.3 触发组件

  • 按钮组件:gradio.Button(value)
    • value: 按钮的名称
    • 通常和click组件联合使用 gradio.Button.click(fn, inputs, outputs)
  • 清除按钮: gradio.ClearButton(components, value)
    • components: 要清除的组件
    • value: 按钮名称
    • 通常和gradio.ClearButton.add(components, ···)以及click()方法联合使用

3.4 布局组件

  • 标签页: gr.Tab()
  • 行布局: gradio.Row()
  • 列布局: gradio.Column()
  • 折叠项: gradio.Accordion(label, ···)

3.5 demo

这里我们使用Block和以上部分组件搭建了一个case

def chat(name,  lan, repeat=1, machine_name="小明"):
    if lan == "chinese":
        reply = "你好,"+name+",我叫"+machine_name
    elif lan == "english"
Gradio是一个用于快速搭建机器学习演示(demo)的Python库,以下是关于Gradio demo的详细介绍: ### 安装 在终端窗口中使用`pip`命令安装Gradio及其依赖包,命令为`pip install --upgrade gradio` [^1]。 ### 简单功能demo编写示例 #### 两数相加功能 创建一个`py`格式的文件,如`001_demo.py`,编写代码实现两数相加功能。 ```python import gradio as gr def greet(num1, num2): return num1 + num2 demo = gr.Interface( fn=greet, inputs=["number", "number"], outputs=["number"], ) demo.launch() ``` 这段代码中,定义了一个`greet`函数用于实现两数相加,然后使用`gr.Interface`创建一个界面,指定输入类型为两个数字,输出类型为一个数字,最后启动这个界面 [^1]。 #### 文本处理功能 以下是一个简单的文本处理示例,输入一个名字,输出包含该名字的问候语。 ```python import gradio as gr # 定义处理函数/模型推理 def greet(name): return "Hello " + name + "!" # interface中三个必要参数: 推理函数、输入、输出 demo = gr.Interface(fn=greet, inputs="text", outputs="text") # 是否开启公网分享 demo.launch(share=False) ``` 此示例中,定义了`greet`函数处理输入的文本,使用`gr.Interface`创建界面,指定输入输出类型为文本,最后启动界面,不开启公网分享 [^2]。 ### 特定模块demo示例 #### 语音转文字功能 利用Gradio实现语音转文字功能,借助Hugging Face的模型。 ```python import gradio as gr import os # save your HF API token from https:/hf.co/settings/tokens as an env variable to avoid rate limiting auth_token = os.getenv("auth_token") # automatically load the interface from a HF model # you can remove the api_key parameter if you don't care about rate limiting. demo = gr.load( "huggingface/facebook/wav2vec2-base-960h", title="Speech-to-text", inputs="mic", description="Let me try to guess what you're saying!", hf_token=auth_token ) demo.launch() ``` 该示例中,从环境变量获取Hugging Face的API令牌,使用`gr.load`加载预训练模型创建界面,指定输入为麦克风,设置标题和描述,最后启动界面 [^4]。 ### 服务器部署 在服务器上部署Gradio demo,外网可通过服务器IP访问。注意执行Gradio时用`screen`挂后台,不要在VSCode的终端中启动。若提交后出现422 error的情况,可能是Gradio版本问题,需升级到3.36.1 (参考链接:https://github.com/gradio-app/gradio/issues/4936)。若仍然无法访问,可能需要开启防火墙端口 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值