Gradio快速搭建ML/DL Web端服务

这篇具有很好参考价值的文章主要介绍了Gradio快速搭建ML/DL Web端服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Gradio快速搭建ML/DL Web端服务

前言

当我们训练好了某个模型并且效果还不错时,最先想到的应该是部署.部署又可以分为线上Web服务和边缘模块上;为了汇报的时候往往还是选择线上部署,毕竟盒子部署好了还得配置相应的硬件输入也不方便展示.在这个专栏之前尝试用fastapi搭建了Web服务,并且将一些算法模型部署到api接口中,但是由于要自己设计一些预处理工作,路由,附加功能以及页面UI感觉很麻烦.所以今天就介绍一下这个基于fastapi构建的一个非常方便就可以部署模型且功能强大的Web框架—Gradio

官网的链接在这里,大家可以先去了解一下Gradio 虽然目前没有中文文档,但是我感觉整个文档写的还是比较好读懂的,所以一步步模仿文档操作也不难.

介绍了这么多,下面就开始写demo.计划是这样的

  1. 撸一个简单的层数较少的ResNet,在cifar10上训练一下,得到一个效果好点的模型(这里不用迁移主要是之前为了实验重参数化在ResNet结构上效果不好然后自己写了个简单的顺便拿来用了)
  2. 使用Gradio编写一个Web服务,其实只要我们实现推理的函数就行,其他的只用实例化接口,非常快捷.

开始

模型训练

最基本的残差模块堆一堆,接个全连接层分类然后就可以训练了.这里面训练特意尝试了一下最近几年提出的Ranger优化器代替之前的sgd,adam之类的,效果确实会有一定的提升.

来看看官网给出的效果对比,经过我的训练结果来看也确实如此.

Gradio快速搭建ML/DL Web端服务

使用的最简单方法只需要把ranger21.py下载下来,然后训练的时候引用就可以了或者按照官网用pip安装pip install git+https://github.com/lessw2020/Ranger21.git

只有几层的模型最终效果也还不错

Gradio快速搭建ML/DL Web端服务

Gradio快速搭建ML/DL Web端服务

这样我们就得到了一个效果还可以的模型,下一步就使用Gradio部署

部署

从官网的入门教程可以看到,我们需要自己写推理部分的函数,并且在gr.Interface()中注册自己的函数以及输入输出一些附加功能.不得不说这个框架封装之后真的非常便于开发,很多功能已经实现了,比如:结果缓存,模型解释甚至考虑到访问量特别大的时候利用队列而不是并行进行结果响应等等

先加载模型然后写推理函数

if os.path.exists("best.pt"):
    ResNet.load_state_dict(torch.load('best.pt'))
ResNet.eval()
labels=['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']

def classify_image(img):
    img = transforms.ToTensor()(img).unsqueeze(0).cuda()
    with torch.no_grad():
        predict=torch.nn.functional.softmax(ResNet(img)[0],dim=0).cpu()
        confidence={labels[i]:float(predict[i]) for i in range(10)}
    return confidence

然后注册到接口实例化并启动

gr.Interface(
    fn=classify_image,
    inputs=gr.Image(type="pil",shape=(320,320)),
    outputs=gr.Label(num_top_classes=10),
    examples=['./data/airplane.jpeg'],
    interpretation="default",cache_examples=True,title="Shelgi的分类Demo"
).launch(enable_queue=True)

Gradio快速搭建ML/DL Web端服务

Gradio快速搭建ML/DL Web端服务

上面的解释基于默认的``SHAP`,也可以设置自己的解释函数.再来看看其他的结果

Gradio快速搭建ML/DL Web端服务

Gradio快速搭建ML/DL Web端服务

到这里基本的部署部分就实现了,但是和以往惯例一样,还是要带着看看源码的.

源码部分

开头我说这是基于fastapi封装的框架,那就来好好看看它的一些实现.最基本的既然是Web框架,那就先看看它的路由部分.

Gradio快速搭建ML/DL Web端服务

很明显,就是利用fastapi来搭建路由的.App继承了FastAPI,实现了自己的相关路由(login,config,file等等)

然后在blocks中有更多功能的实现,包括前处理,运行注册函数和后处理,这也是调用预测的重要代码

Gradio快速搭建ML/DL Web端服务

再来看看基础设置,类似于url,端口号这些都在networking.py中,设置如下图

Gradio快速搭建ML/DL Web端服务

当然,我们也可以对页面进行一些自己的diy设计

Gradio快速搭建ML/DL Web端服务

可以看出来静态页面是从templates文件夹下读取的,所以我们可以对页面进行更改.或者我们想要简单的添加一些内容,可以试试模仿标题和描述那样,调用Markdown()进行添加

Gradio快速搭建ML/DL Web端服务

Gradio快速搭建ML/DL Web端服务

当然如果想要创造更复杂的页面,就需要使用Blocks一点点的组建页面,更详细的内容有兴趣的可以去官网文档中好好查看.文章来源地址https://www.toymoban.com/news/detail-504827.html

到了这里,关于Gradio快速搭建ML/DL Web端服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)

    常用的两款AI可视化交互应用比较: Gradio Gradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,想要快速部署应用的开发者。便于分享:gradio可以在启动应用时设置share=True参数

    2023年04月25日
    浏览(32)
  • 快速搭建一个go语言web后端服务脚手架

    快速搭建一个go语言web后端服务脚手架 源码:https://github.com/weloe/go-web-demo web框架使用gin,数据操作使用gorm,访问控制使用casbin 首先添加一下自定义的middleware recover_control.go ,统一处理panic error返回的信息 access_control.go 使用casbin进行访问控制的中间件 reader.go 读取yaml配置文件

    2023年04月12日
    浏览(62)
  • 树莓派本地快速搭建web服务器,并发布公网访问

    随着科技的发展,电子工业也在不断进步,我们身边的电子设备也在朝着小型化和多功能化演进,以往体积庞大的电脑也在逐渐缩小体积。树莓派作为一台功能完备的硬件设备,其功耗和体积远小于传统的台式电脑,并且在大部分功能上并不逊于台式机,因此被开发出多种应

    2024年02月15日
    浏览(33)
  • Linux -- Web服务器 快速搭建静态网站,替换默认网页目录

    先简单写个 页面          我们给网页写了一行内容 作为 静态网页的内容 ( 当然了,写的相当简单,您先理解着看)         可以看到的是,我们将内容 定向到了一个文件里,         这个文件的路径 (  /var/www/html  )熟悉不熟悉???         ===            

    2023年04月19日
    浏览(43)
  • 无需服务器内网穿透Windows下快速搭建个人WEB项目

    本文主要是windows下内网穿透文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 本次教程中,我们将实现在windows上搭建一个web站点,并通过cpolar内网穿透,将该站点免

    2024年02月20日
    浏览(35)
  • 无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线

    转载自cpolar文章:Linux CentOS本地搭建Web站点,并实现公网访问 在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有

    2024年02月02日
    浏览(48)
  • Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

    相关文章:Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享) 在教程一中主要侧重讲解gradio的基础模块搭建以及demo展示,本篇文章则会侧重实际任务的搭建。 保持一贯作风简单展示一下如何使用 gradio的核心是它的gr.Interface函数,

    2023年04月26日
    浏览(43)
  • 无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线(1)

    转载自cpolar文章:Linux CentOS本地搭建Web站点,并实现公网访问 在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有

    2024年02月03日
    浏览(39)
  • 事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2)

    坊间有传MacOs系统不适合机器(ml)学习和深度(dl)学习,这是板上钉钉的刻板印象,就好像有人说女生不适合编程一样的离谱。现而今,无论是Pytorch框架的MPS模式,还是最新的Tensorflow2框架,都已经可以在M1/M2芯片的Mac系统中毫无桎梏地使用GPU显卡设备,本次我们来分享如何在苹

    2023年04月11日
    浏览(27)
  • 宝塔面板快速搭建贪吃蛇小游戏web网站 - 无需云服务器,网站发布上线

    转载自远程内网穿透的文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等,通过Web端轻松管理服务器。 以下教程,我们将演示使用宝塔

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包