深度学习rest api的使用

段干弘扬
2023-12-01

2020/06/28 -
今天思考的一个问题就是,使用django部署一个rest api的时候,那么这个模型是怎么初始化的呢!?
然后还有可能设及到如果是多用户的话,同样是这个问题,会不会造成这个模型有什么问题??
这里我说的是深度学习的模型,但是正常情况下,应该是没有问题的啊(多用户的情况),因为模型应该只是可读的。
但是没想明白。

而且,我发现我在百度搜索了一下这个深度学习rest api的东西,我之前看到的很多东西都是在外网上看到的,然而在国内搜索基本上什么也没有。。。也是醉了。。真是垃圾哦。

其实我现在也有点,就是那种模糊了,看到的各种资料都在说使用flask,我还在用这个django.。


总之,我要实现的问题是,能够在应用服务启动后初始化一个模型,同时在可能在单个或者多个视图中能够使用这个模型,甚至于可以实现多用户。


下面来记录一下看到的这方便的内容。

  1. 初始化以及多用户的问题[1]
    这个是一个问答,他的问题是,如何放置这个初始化的模型,最后选择了在setting中进行;然后在视图文件中全局使用。
    后面,他又引出了一个问题,那就是当两次使用这个模型的时候,我不是很清楚这个东西具体是什么意思,他也没有说清楚到底是不是实时并发的问题。反正就是出问题了,不能支持这种。
    下面有人告诉他你可以每次都copy一下这个模型。

但是,实际上,我看到很多的文章,比如哪些使用flask框架的, 他们都没有说过有这些问题。搞不明白。

其实我也对这个底层的模型有些不清楚,假设我也没那么多用户,两个用户同时使用这个模型,会有影响吗??不清楚

2.利用flask构建一个rest api
这个是keras的博客写的。

3。大规模部署[3]
我大致看了一下这个东西,估计就是大规模部署web的介绍经验。我看完了这个文章。
大致思路就是,在来了请求之后,将要分类的图片放置到redis数据库里面,然后实际分类的过程将图片取出来,再放进去。
但是我看了看他文章中讲述的代码过程。我来详细说一下。
首先他接收客户端请求,然后取出来图片,之后将图片存到redis的数据库里面,在这以后就进入了死循环,这个死循环就一直在请求这个东西,请求到了之后,就把这个东西返回。
好像没什么毛病。但是,如果是多个请求,也就是多个客户端,他从这个数据库中取数据,一定能拿到的是自己的吗。
而且,你看这里的一个过程就是,他是将数据存到了队列中,然后持续去请求这个信息。这里就有一个死循环的过程。

搞不懂搞不懂。

这里把这个问题抽离一下,实际上就是,在多线程的情况下,怎么保证同一个客户端就不会把别人的拿走呢?
(这里可能也有点误解,他文章是把redis当成了队列,但实际上好像他是一个key-value数据库)如果这样来理解的话,就没有问题了。

[1]correctly-loading-keras-model-in-django-that-supports-multi-tenancy
[2]building-a-simple-keras-deep-learning-rest-api.html
[3]https://www.pyimagesearch.com/2018/01/29/scalable-keras-deep-learning-rest-api/

 类似资料: