返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、基础概念

发布于 2023-07-17 23:38:23 字数 8594 浏览 0 评论 0 收藏 0

  1. Gradio 允许用户使用 Python 为任何机器学习模型构建、自定义、共享 web-based 演示(demo )。

    安装:pip install gradio

  2. 简单用法:

    
    import gradio as gr
    
    
    def greet(name):
        return "Hello " + name
    
    
    demo = gr.Interface(fn=greet, inputs="text", outputs="text")
    demo.launch()
    
    
    # 或者也可以直接实例化一个文本框
    # textbox = gr.Textbox(label="Type your name here:", placeholder="John Doe", lines=2)
    # gr.Interface(fn=greet, inputs=textbox, outputs="text").launch()
  1. launch 方法:默认情况下,launch() 方法将在 Web server 中启动演示并在本地运行。 如果你在JupyterColab notebook 中运行代码,那么 Gradio 会将演示 GUI 嵌入到 notebook 中。也可以通过不同的参数自定义 launch() 的行为:

    • inline:是否在 Python notebook 中内嵌地展示 interface

    • inbrowser:是否在默认浏览器中自动地打开一个新 tablaunch interface

    • share:是否为 interface 从你的电脑上创建一个公开可分享的链接。

  2. 包含预测模型:首先,我们定义一个接受文本提示并返回文本完成的预测函数:

    
    
    xxxxxxxxxx
    from transformers import pipeline model = pipeline("text-generation") def predict(prompt): completion = model(prompt)[0]["generated_text"] return completion

    然后我们创建和启动一个接口:

    
    
    xxxxxxxxxx
    import gradio as gr gr.Interface(fn=predict, inputs="text", outputs="text").launch()
  3. Interface类: Interface 类有3 个必需参数:

    
    
    xxxxxxxxxx
    Interface(fn, inputs, outputs, ...)

    其中:

    • fn:由 Gradio 接口包装的预测函数。 该函数可以接受一个或多个参数并返回一个或多个值。

    • inputs:输入组件类型。 Gradio 提供了许多预构建的组件,例如 "image""mic"

    • outputs:输出组件类型。 同样,Gradio 提供了许多预构建的组件。

    有关组件的完整列表,请参考 https://gradio.app/docs 。 每个预构建的组件都可以通过实例化该组件对应的类来定制。

    为了给演示添加额外的内容,Interface 类支持一些可选参数:

    • title:演示标题,它出现在输入组件和输出组件的上方。

    • description:界面描述(文本、MarkdownHTML ),显示在输入组件和输出组件的上方、标题下方。

    • article:扩展文章(文本、MarkdownHTML)用于解释界面。如果提供,它会出现在输入组件和输出组件的下方。

    • theme:界面主题。可以为 default, huggingface, grass, peach 等之一。也可以添加 dark- 前缀从而得到深色主题。

    • examples:可以为函数提供一些示例的输入。它们可以出现在 UI 组件下方。

    • live:如果 live=True,那么每次当输入更改时,模型都会重新运行。

    例如:

    
    
    xxxxxxxxxx
    title = "Ask Rick a Question" description = """ The bot was trained to answer questions based on Rick and Morty dialogues. Ask Rick anything! <img src="https://huggingface.co/spaces/course-demos/Rick_and_Morty_QA/resolve/main/rick.png" width=200px> """ article = "Check out [the original Rick and Morty Bot](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) that this demo is based off of." gr.Interface( fn=predict, inputs="textbox", outputs="text", title=title, description=description, article=article, examples=[["What are you doing?"], ["Where should we time travel to?"]], ).launch()

  4. 处理多个输入和多个输出:

    
    
    xxxxxxxxxx
    import numpy as np import gradio as gr notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] def generate_tone(note, octave, duration): sr = 48000 a4_freq, tones_from_a4 = 440, 12 * (octave - 4) + (note - 9) frequency = a4_freq * 2 ** (tones_from_a4 / 12) duration = int(duration) audio = np.linspace(0, duration, duration * sr) audio = (20000 * np.sin(audio * (2 * np.pi * frequency))).astype(np.int16) return (sr, audio) gr.Interface( generate_tone, [ # 多个输入 gr.Dropdown(notes, type="index"), # 一个下拉菜单 gr.Slider(minimum=4, maximum=6, step=1), # 一个滑块 gr.Textbox(type="text", value=1, label="Duration in seconds"), # 一个文本框 ], "audio", # 一个输出 ).launch()
  5. 分享:有两种方式可以分享你的演示:

    • 临时分享:通过在 launch() 方法中设置 share=True 来实现:

      
      
      xxxxxxxxxx
      gr.Interface(classify_image, "image", "label").launch(share=True)

      这会生成一个公开的、可分享的链接。其它用户可以在该用户的浏览器中使用你的模型长达 72 个小时。所有模型计算都发生在你的设备上。注意,由于这些链接是公开可访问的,这意味着任何人都可以用你的模型进行预测。

      如果设置 share=False(默认行为),则仅创建本地链接。

    • Hugging Face Spaces 上托管(永久分享):Hugging Face Spaces 提供了在互联网上永久地、免费地托管Gradio 模型的基础设施。

  6. Hugging Face Hub 集成:Gradio 可以直接与 Hugging Face HubHugging Face Spaces 集成,仅用一行代码从 HubSpace 加载演示。

    
    
    xxxxxxxxxx
    import gradio as gr title = "GPT-J-6B" description = "Gradio Demo for GPT-J 6B, a transformer model trained using Ben Wang's Mesh Transformer JAX. 'GPT-J' refers to the class of model, while '6B' represents the number of trainable parameters. To use it, simply add your text, or click one of the examples to load them. Read more at the links below." article = "<p style='text-align: center'><a href='https://github.com/kingoflolz/mesh-transformer-jax' target='_blank'>GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model</a></p>" examples = [ ["The tower is 324 metres (1,063 ft) tall,"], ["The Moon's orbit around Earth has"], ["The smooth Borealis basin in the Northern Hemisphere covers 40%"], ] gr.Interface.load( "huggingface/EleutherAI/gpt-j-6B", # 从 HuggingFace Hub 加载 # "spaces/abidlabs/remove-bg", # 从 HuggingFace Space 加载 inputs=gr.Textbox(lines=5, label="Input Text"), title=title, description=description, article=article, examples=examples, enable_queue=True, ).launch()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文