深度学习模型简易部署
⏲️

深度学习模型简易部署

Categories
Software
Text
在本科时因为各种比赛或个人项目经常需要作品展示,所以写过很多次基于Flask和Gradio的演示,现在看来很多是dirty work,但还是值得记录一下。毕竟也用Flask写过一个校园选课互助网页。
Date
May 18, 2024

Flask

首先要说明一下Flask是一个Web后端的轻量级框架,如果你只是想实现模型功能的演示,写一个小的后端服务接口,那Flask其实是牛刀。因为Flask有许多在Web领域优秀的特性。

QuickStart

from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/data', methods=['POST']) def receive_data(): data = request.get_json() print(f"Received data: {data}") # Process data and prepare response result = {"message": "Data received successfully", "received_data": data} return jsonify(result) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
解释一下,@app.route()这个装饰器中的“/data”是url的后缀,假如你的ip为10.100.54.55,那么能让这个视图函数响应的网址就是10.100.54.55/data,只要你向此网址发送POST请求,服务器(也就是后端)就会自动运行这个函数,并返回结果。
什么是POST请求?
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。
HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。
根据HTTP规范,POST可能会修改服务器上的资源的请求。比如知乎编写文章,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面
 

如何让本地浏览器打开远端服务器的浏览器页面

MobaXterm

首先要介绍一下MobaXterm这个服务器连接软件,非常好用,陪伴了我整个本科生涯,用它不知道连了多少台服务器了。即下即用,指定ip和端口即可连接服务器。

在本地打开服务器浏览器

我曾经一直以为无法解决的一个问题是当在服务器运行一个gradio脚本启动网页时,自己本地的电脑是打不开服务器的浏览器的,但偶然间得知MobaXterm可以实现这一点。
notion image
只需要按以上设置,就可以在本地浏览器用127.0.0.1:端口号来访问服务器中的网页