gradio初体验

news2024/11/23 12:41:25

背景

近期随着很多开源大模型的出现,对于其如何落地,或者说充分地去挖掘其实际应用领域和商业价值变得格外重要。于是乎,对于不懂技术的前方市场或销售人员,如何在没有形成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框架源码研究下,进行二次开发。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【严重】Citrix ADC 和 Citrix Gateway 远程代码执行漏洞(PoC)

漏洞描述 Citrix ADC是应用程序交付和负载平衡解决方案,Citrix Gateway是一套安全的远程接入解决方案,常用于提供虚拟桌面和远程桌面服务,此外,Citrix ADC还被广泛用作Windows堡垒机。 在 Citrix ADC 和 Citrix Gateway 受影响版…

《我为什么要听你的 如何与强势的人相处》读书笔记二

目录 反驳例子 勇敢反击的益处 一些重要的自我保护法 不要再讲述你生活中的细节 别答应那些表意不明的请求 记录下一切 第一时间告知亲友 拒绝成为中间人 区别对待强势者 谨慎应对奉承话 想方设法快点跑 反驳例子 例子 例子: 例子: 例子&am…

什么是UE像素流送,像素流推流是什么原理?

游戏开发者通常在运行游戏逻辑时会将游戏渲染到屏幕的同一台设备上来运行虚幻引擎应用,多人联网游戏可能会在应用程序的多个实例之间分发部分游戏逻辑,但每个单独的实例仍然会为自己的玩家在本地渲染游戏。即使是使用 HTML5 部署选项创建可以在 Web 浏览…

CountDownLatch 一个神奇的计数器,您了解吗

一、CountDownLatch基础概念及案例 1.CountDownLatch是java.util.concurrent 包下提供一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完成再执行。其本质就是一个计数器,传入一个初始的值,调用await 方法会阻塞当…

vue+Element项目中v-for循环+表单验证

如果在Form 表单里有通过v-for动态生成&#xff0c;如何设置验证呢&#xff1f; <el-form ref"ruleFormRef" :model"ruleForm" status-icon :rules"rules" label-width"120px"class"demo-ruleForm" hide-required-aster…

大数据课程综合实验案例---课设问题汇总

最近翻看两年前的大数据课设&#xff0c;感觉这个大数据课设实验当时答辩 在大数据课设实验过程中&#xff0c;我遇到了很多问题&#xff0c;在这里做出汇总&#xff1a; 1、MySQL启动报错 首先&#xff0c;我的MySQL有时候启动不了&#xff0c;当我输入这个命令的时候&#…

ModuleNotFoundError: No module named sklearn

前言 出现ModuleNotFoundError: No module named sklearn’的debug过程记录 步骤 安装机器学习库&#xff0c;需要注意报错的sklearn是scikit-learn缩写。 pip install scikit-learn 完成&#xff0c;不再报错

剖析Linuxptp中ptp4l实现--OC

源码克隆地址&#xff1a; git://git.code.sf.net/p/linuxptp/code 项目官网文档&#xff1a; https://linuxptp.nwtime.org/documentation/ 关于linuxptp的相关配置可以参考以下博文&#xff1a; linuxptp/ptp4l PTP时钟同步配置选项 代码剖析 ptp4l的main函数在ptp4l.…

“学习嵌入式开发:明确目标,提升技能“

嵌入式领域涵盖广泛&#xff0c;不可能一次性掌握所有知识。因此&#xff0c;明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展&#xff0c;过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…

基于STM32设计的人体健康监护系统(华为云IOT)

一、设计需求 1.1 设计需求总结 根据需求,要求设计一款基于 STM32 的人体健康监护系统。采用系统模块化思路进行,将多个数模传感器收集到的数据和操作指令一并送至 STM32 中心处理器进行处理分析。 该系统可以实时监测被测者的心率、体温以及周围环境的温度,也同时可以通…

生物信息学_玉泉路_课堂笔记_06 第六章 基因组学:遗传变异分析以及FGWAS

&#x1f345; 课程&#xff1a;生物信息学_玉泉路_课堂笔记 中科院_2022秋季课 第一学期 &#x1f345; 个人笔记使用 &#x1f345; 2023/7/21 课程回顾 第六章 基因组学&#xff1a;遗传变异分析以及FGWAS 第一节 SNP 与 Indel 的鉴定与分析 基本概念 参考基因组 和基因组…

tinkerCAD案例:9.Twist Earrings 扭耳环

tinkerCAD案例&#xff1a;9.Twist Earrings 扭耳环 In this lesson you learn how to create earrings by using cylinder shapes. Let’s get started! 在本课中&#xff0c;您将学习如何使用圆柱形制作耳环。让我们开始吧&#xff01; 说明 Drag a Cylinder shape to the w…

为Android构建现代应用—— 练习状态管理

介绍 本章是一个应用上一章&#xff1a;设计原则中学到的概念的项目。 项目的目标包括以下实现&#xff1a; • 创建一个应用程序&#xff0c;该应用程序使用View作为真实来源。 • 修改应用程序&#xff0c;使其使用ViewModel作为真实来源。 • 将状态和事件进行分组&#x…

N型光伏电池技术“两头开花”,谁是诗和远方?

光伏产业已经进入大规模、市场化发展的新阶段。 近日&#xff0c;国家能源局公布了上半年全国电力工业统计数据&#xff0c;根据总装机容量&#xff0c;光伏装机已正式成为我国第二大电源装机&#xff0c;仅次于煤电。 作为新兴产业&#xff0c;光伏市场持续扩容总是伴随着技…

SpringMVC----(1)基础

SringMVC 1 SpringMVC简介2 SpringMVC入门案例2.1 入门案例2.2 入门案例工作流程2.3 bean加载控制2.4 PostMan工具 3 请求与响应3.1 请求映射路径3.2 Get和Post请求发送普通参数3.3 请求头的五种类型参数传递3.4 请求体的JSON数据传输参数3.5 日期型参数3.6 响应 4 REST风格4.1…

SpringCloud整合Nacos配置中心

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

NoSQL之Redis配置使用

目录 一、关系数据库与非关系型数据库 1.1.关系型数据库的概述 1.2关系型数据库的优缺点 1.2.1优点 1.2.2缺点 1.3.非关系型数据库的概述 二.关系数据库与非关系型数据库的区别 2.1数据存储方式不同 2.2扩展方式不同 2.3对事务性的支持不同 2.4非关系型数据库产生背景 2…

亚马逊攀岩绳EN892:2012+A1:2016安全带标准、攀岩安全带EN 12277:2015登山装备要求和ASTM F1772–17体育运动安全标准规范

如果您在亚马逊商城发布商品&#xff0c;则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策&#xff08;包括本政策&#xff09;。 本政策适用的攀岩安全带 本政策适用于主要在攀岩或登山期间使用且使用者双脚不接触地面时使用的安全带。安全带是一种…

Xshell使用sftp传输文件

单击工具栏新建回话图标&#xff0c;在弹出的新建回话窗口中协议选择SFTP&#xff0c;输入主机名或ip地址&#xff0c;端口号22&#xff0c;单击连接&#xff0c;输入用户名和密码完成创建连接。 本地/远程目录设置&#xff1a;新建会话时在下图中SFTP中设置文件上传下载的本地…

基于vue+element 分页的封装

目录标题 项目场景&#xff1a;认识分页1.current-page2.page-sizes3.page-size4.layout5.total6.size-change7.current-change 封装分页&#xff1a;创建paging&#xff1a;进行封装 页面中使用&#xff1a;引入效果 项目场景&#xff1a; 分页也是我们在实际应用当中非常常见…