人工智能AI

Gradio编写模型的WebUI

2024-01-07  本文已影响0人  梅西爱骑车

一、基本概念

Gradio是一个用于快速创建机器学习模型交互式界面的Python库。它可以帮助用户快速构建一个可视化的、易于使用的Web界面,以便展示和测试机器学习模型。通过Gradio,用户可以使用内置的操作和解释工具来交互式地调试模型,并快速获取对模型性能的反馈。Gradio适用于多种情况,包括为客户、合作者、用户或学生演示机器学习模型,快速部署模型并获得性能反馈,以及在开发过程中使用内置的操作和解释工具交互式地调试模型。

ModelScope的创空间(Studio),为您提供自由灵活的AI应用展示空间。您可以基于ModelScope平台上模型提供的原子能力,自行搭建与展示不同AI应用,包括自定义的模型输入输出,多模型的组合,以及可视化交互展现形式等等。本次基于魔搭社区ModelScope的创空间进行Gradio应用部署。

Gradio提供轻量化的机器学习交互式web页面定制工具,为开发者迅速定制AI应用提供快速上手的脚手架。创空间目前支持通过Gradio来定制围绕ModelScope模型搭建的线上应用。

二、编写代码

编写app.py文件,注:文件名不要修改!
实现:输入长文本进行分词、摘要;以及输入英文生成图片的功能,使用pipeline共调用了3个模型(见3个pipeline,如果pipeline没有设置模型名称则为默认模型),由于使用免费CPU算力,第3个为大语言模型,无法跑起来,故注释,代码仅有2个小模型在运行。
代码如下:

import gradio as gr
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks


# 使用word-segmentation pipeline模型推理能力
word_segmentation = pipeline('word-segmentation')
    
# 调用模型进行文本摘要生成
text_summary = pipeline('text-generation', model='damo/nlp_palm2.0_text-generation_chinese-base')

#对图像中的人脸进行区域位置检测并生成虚拟人脸。免费资源长时间没有响应且报错,故注释。
#face_image_generation = pipeline(task=Tasks.text_to_image_synthesis, model='dienstag/Analog-Diffusion', model_revision='v1.0')
#negative_prompt = 'blur haze'


def wordSegmentationandTextGeneration(input_str,prompt):
     
    output1 = word_segmentation(input_str)['output']  # 返回分词输出    
    output2 = text_summary(input_str) # 第二个输出,模型的输出
    #output3 = face_image_generation({'text': prompt, 'negative_prompt': negative_prompt}) #胶片质量图片输出
    
    return output1, output2 #,output3 


model_input = gr.Textbox(lines=7, placeholder='输入一个长句,例如:今天天气不错,但是较冷,大学生放假撒欢了。', label='输入长句进行分词和摘要')
model_image = gr.Textbox(lines=2, placeholder='输入英文单词,生成胶片质量的图片。', label='输入图片的prompt')

demo = gr.Interface(fn=wordSegmentationandTextGeneration, inputs=[model_input,model_image], outputs=[gr.Textbox(label="分词结果:"), gr.Textbox(label="文本摘要:")], allow_flagging="never")
demo.launch()
上传文件到创空间。 上传app.py

在设置页面,重启创空间。


重启创空间
在创空间的设置页面可以查看启动日志:
查看日志

可以看到自动下载了app.py涉及到的模型,由于模型较大,即使8M/s的速度下载时间也较长,官方的提示为10分钟左右,但实际要根据使用了多少模型、每个模型的大小有关。


自动下载模型文件
等待发布成功... ...,注意观察日志是否有报错。
发布中

输入一段小故事,测试分词和摘要的效果。故事内容如下:在一片冰天雪地中,小明和小红快乐地打着雪仗。小红偷偷捏了一个雪球,朝小明扔去,却打中了他的朋友小刚。小刚假装生气,也抓起一把雪朝小红扔去。小明见状,赶紧闪躲,同时抓起雪球反击。三人玩得不亦乐乎,欢笑声在雪地中回荡。


运行效果

分词结果:

['在', '一', '片', '冰天雪地', '中', ',', '小明', '和', '小红', '快乐', '地', '打', '着', '雪仗', '。', '小红', '偷偷', '捏', '了', '一个', '雪球', ',', '朝', '小明', '扔', '去', ',', '却', '打', '中', '了', '他', '的', '朋友', '小刚', '。', '小刚', '假装', '生气', ',', '也', '抓', '起', '一', '把', '雪', '朝', '小红', '扔', '去', '。', '小明', '见状', ',', '赶紧', '闪躲', ',', '同时', '抓', '起', '雪球', '反击', '。', '三', '人', '玩', '得', '不亦乐乎', ',', '欢笑声', '在', '雪地', '中', '回荡', '。']

摘要结果:

{'text': '小明和小红快乐打雪仗'}

但是,我的小刚没体现在摘要里面。

上一篇 下一篇

猜你喜欢

热点阅读