gradio初体验

背景

近期随着很多开源大模型的出现,对于其如何落地,或者说充分地去挖掘其实际应用领域和商业价值变得格外重要。于是乎,对于不懂技术的前方市场或销售人员,如何在没有形成AI产品之前向其展示算法模型效果呢?这时候gradio框架应运而生,完美解决了问题。

gradio

gradio是一个用python实现的快速构建AI应用的框架。将前端部件、后端业务和算法推理进行了封装,简单清晰,几行代码就可以搭建一个AI算法的应用,在浏览器上检验算法效果,直观高效,消除了算法到应用之间的鸿沟。

Gradio Interface Docs

安装

gradio已经封装成了python的一个开源库,python3.8及以上版本支持,需注意。pip安装即可,或者需要改源码的,可以下载源码修改后,python setup.sh install 安装。

实践

近期,算法团队在预研多模态大模型GLIP,为了便于产线人员更直观地了解目前开源大模型的实际效果,减少沟通成本,需要搭建一个多模态大模型演示平台。

开源项目:基于语言和图像的预训练模型

GitHub - microsoft/GLIP: Grounded Language-Image Pre-training

根据开源的部署指导部署好后,领导提出了一些定制化的小需求,为了减少开发工作量,未对gradio源码进行二次开发,尽量在开源项目基础上进行改动。 

1、增加用户登录功能

gradio在interface 和blocks的launch方法中提供了一个参数auth,可以方便地增加用户登录功能。

block.launch(
        server_name='0.0.0.0',
        server_port=9090,
        share=True,
        debug=False,
        auth=user_info,
        auth_message='欢迎登录大模型演示平台!'
)
user_info = [
    ("admin", "password"),
    ("guest", "password")
]

2、增加用户反馈信息并保存

前端组件触发事件响应函数中连接数据库并保存数据即可。考虑数据关系较简单,便于搜索,这里采用非关系型数据库elasticsearch。

这里遇到一个问题,对于输入的图片点击“检测”后,创建一条记录,当算法结果出来后,用户根据结果进行评价反馈,这些反馈信息要保存到这条记录中。此时就需要获取都这条记录的id,可这个id如何保存呢? 也不能作为全局变量,因为是多用户执行。

目前实现方法是:将id作为“检测”按钮的输出变量,反馈按钮或组件的输入变量,从而达到值传递。方法比较笨拙,但也算实现了功能。后续有时间看看gradio有没有其它好的机制。

3、页面美化

设置网页标题:Blocks中的title参数设置;

隐藏页脚gradio链接文字,设置背景色:Blocks中的css参数设置;

block = gr.Blocks(
           theme='default',
           title="多模态大模型演示平台",
           css=".gradio-container, .gradio-container button {background-color: #009FCC} footer {visibility: hidden}"
        ).queue(concurrency_count=1)

4、多线程引起的问题

gradio可以通过队列来对用户的请求进行响应,可以通过concurrency_count设置同时响应的请求数量,也就是线程数。当设置成多线程后,当多个用户并发请求,出现了检测结果和输入的检测项不对应的情况,将concurrency_count设置成1,也就是单线程后问题得到解决。当然响应速度会变慢,但可以接受。

后记

gradio Image组件中自带图片编辑功能,裁剪ROI功能可用,但非常不方便。后续有时可以对gradio框架源码研究下,进行二次开发。

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

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

相关文章

Spring 多数据源方法级别注解实现

Spring框架提供了多种数据源管理方式,其中多数据源管理是其中之一。多数据源管理允许应用程序使用多个数据源,而不是只使用一个数据源,从而提高了应用程序的灵活性和可靠性。 多数据源管理的主要目的是让应用程序能够在不同的数据库之间切换&…

【RabbitMQ(day1)】RabbitMQ的概述和安装

入门RabbitMQ 一、RabbitMQ的概述二、RabbitMQ的安装三、RabbitMQ管理命令行四、RabbitMQ的GUI界面 一、RabbitMQ的概述 MQ(Message Queue)翻译为消息队列,通过典型的【生产者】和【消费者】模型,生产者不断向消息队列中生产消息&…

SIGIR 2023 | 语音让对话推荐更easy,火山语音联合新加坡科学研究院发布业内首个语音对话推荐数据集

近年来,推荐系统在工业界取得了巨大成功,甚至成为互联网发展中不可或缺的增长引擎,基于此研究者们也在积极探索推荐系统的新形态,其中对话推荐系统(Conversational Recommender System,简称CRS)…

Mac上安装sshfs

目录 写在前面安装使用参考完 写在前面 1、本文内容 Mac上安装sshfs 2、平台 mac 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/130156287 安装 参考:https://ports.macports.org/port/sshfs/ 通过port安装 点击啊insta…

Qt/C++音视频开发49-多级连保存和推流设计(同时保存到多个文件/推流到多个平台)

一、前言 近期遇到个用户需要多级联的保存和推流,在ffmpegsave多线程保存类中实现这个功能,越简单越好,就是在推流的同时,能够开启自动转储功能,一边推流的同时一边录像保存到本地视频文件。最初设想的一个方案是new两…

【MySQL】之复合查询

【MySQL】之复合查询 基本查询多表查询笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from子句中使用子查询 合并查询小练习 基本查询 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用…

源码对接微软Azure OpenAI 规范注意点

众所周知,我们是访问不通OpenAI官方服务的,但是我们可以自己通过代理或者使用第三方代理访问接口 现在新出台的规定禁止使用境外的AI大模型接口对境内客户使用,所以我们需要使用国内的大模型接口 国内的效果真的很差,现在如果想合…

深圳湾晚霞下的职场分享:723深圳COC社区活动回顾

文章目录 深圳湾晚霞下的职场分享:723深圳COC社区活动回顾前言人物观察架构师李肯连续创业者石云升鸿蒙布道师坚果 职友分享个人分享 后记最后分享一波:深圳湾晚霞美图! 深圳湾晚霞下的职场分享:723深圳COC社区活动回顾 前言 ​…

vue项目入口和个文件之间的关系

vue项目入口和个文件之间的关系 1、代码的执行顺序和引入关系 1、代码的执行顺序和引入关系

时钟分频器

文章目录 一、8分频二、n倍时钟分频器 一、8分频 8倍时钟分频器是一种电路或设备,用于将输入时钟信号的频率分成原来的1/8。它可以在数字电子系统中用于将高频时钟信号降低到较低的频率,以满足特定的系统需求。 在这个电路中,CLK是输入的时钟…

【wxWidgets】剪贴板和拖放操作

【wxWidgets】剪贴板和拖放操作 使用剪贴板传输数据时应用程序间的一种交互方式 剪贴板和拖放操作在wxWidgets中共享了一些类来实现数据的传输 数据对象 wxDataObject类时剪贴板操作和拖放操作的核心,该类实例代表了拖放操作中鼠标拖拽的事物和剪贴板中拷贝和粘贴…

10分钟搭建链路追踪平台

随着项目越来越多,相互调用越来越复杂,搭建一个可视化的链路追踪平台显得尤为重要,今天给大家介绍的是zipkin,一个轻量级的零侵入的链路追踪平台,看我怎么10分钟给大家搭建出来。 1,介绍 zipkin官网&…

机器人制作开源方案 | 智能垃圾桶

1. 功能说明 智能垃圾桶是一种利用物联网技术和智能感知能力的智能设备,旨在提高垃圾分类和处理的效率。通常具备以下特点和功能: ① 智能感知:智能垃圾桶配备各种传感器,如压力传感器、红外线传感器等,可以实时感知…

FPGA开发:按键消抖

按键是FPGA开发板上的重要交互元件,因为按键的内部的结构设计,在按下和松开按键时,按键会无法避免地产生机械抖动,因此要对按键输入进行特殊处理,否则可能会因为机械抖动产生意外的重复触发。 按键消抖有很多方法&…

超详细,自动化测试allure测试报告实战(总结)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 allure可以输出非…

python机器学习(四)线性代数回顾、多元线性回归、多项式回归、标准方程法求解、线性回归案例

回顾线性代数 矩阵 矩阵可以理解为二维数组的另一种表现形式。A矩阵为三行两列的矩阵,B矩阵为两行三列的矩阵,可以通过下标来获取矩阵的元素,下标默认都是从0开始的。 A i j : A_{ij}: Aij​:表示第 i i i行,第 j j j列的元素。…

记录--关于前端的音频可视化-Web Audio

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 最近听音乐的时候,看到各种动效,突然好奇这些音频数据是如何获取并展示出来的,于是花了几天功夫去研究相关的内容,这里只是给大家一些代码实例&…

数字孪生:未来科技的新前沿

数字孪生作为一项新兴的研究方向,正逐渐成为科技界的焦点。它是将现实世界中的实体、系统或过程通过数字化手段进行建模、仿真和分析,形成与实体相对应的数字化副本。数字孪生的发展为我们带来了无限的想象空间,以及解决现实问题的新途径。 在…

如何有效跟踪你的计费时间?

对于自由职业者、小型企业和远程团队来说,时间跟踪是必需的。了解自己在单个项目或任务上投入了多少时间,可以帮助他们有效管理资源和优化工作流程。 然而,在向客户收费时,时间跟踪多了一层复杂性:不仅需要跟踪所花费…

在Win11的WSL子系统Ubuntu上安装Gnome桌面环境

目录 1. 使用 WSL 在 Win11 上安装 Linux 2. 安装Ubuntu 22.04默认Gnome桌面环境 2.1更新Ubuntu 22.04软件包 2.2 安装Ubuntu桌面环境 2.3 重启服务 2.4 重启Ubuntu 22.04系统 2.5 登录Gnome桌面环境 在Win11上安装ubuntu版linux系统并实现默认Gnome桌面环境&#xff08…