Food Image Rotation (음식이미지 회전) 이라는 주제에 대해서. 실제로 딥러닝(deeplearning)을 어떻게 도입하고, 이를 API(backend)로서 서버에 올리며, 웹(frontend) 를 통해서 올리는 과정을 구현하기 위해서 만든 프로젝트입니다.
0
stars
0
forks
source link
[Backend] Model Version Server 설계 및 구상도 #18
Open
heojae opened 3 years ago
참고 이슈
User Server 설계 및 구상도
만든이유
dl server
에서, 단순히 모델을load
하고,inference
하는 것만 해도 괜찮도록 만들기 위해서, 고안한 서버입니다.dl server
에서는 오직,model 의 inference
작업에만 하고, 그외에 DB 작업과 관련된 것은 배제하였습니다.API 설명
아래 3개의 API 모두,
Service-Side Interceptor
를 활용해서,https://grpc.github.io/grpc/python/grpc.html#service-side-interceptor
user server - authenticate
에게 요청을 보내서, 유저 인증을 하게 됩니다.GetUsingModelVersion
현재 사용중인, 모델의 정보를 들고 온다.
GetAllModelVersion
모든 모델의 정보를 들고온다.
Change
현재 사용중인 모델의 버젼을, 다른 모델로 바꾸어 준다.
그리고,
dl server
에load model api
를 활용하여, 새로운 모델을load
하게한다.DB 설계도
아래와 같이,
ModelVersion
하나의 테이블로 이루어져있으며, 기본적인 정보들만, 포함하고 있습니다. erdcloud 를 활용하여 그렸습니다.라이브러리
User Server 설계 및 구상도 의 라이브러리를 기본으로 하였지만, 추가로 활용한 라이브러리에서, 해결을 하는데 어려움이 있었기에 정리하고 싶습니다.
처음
grpc
에 접하게 된다면, 아래와 같은 내용들은 흔하지 않은 내용이기에, 도움이 될 수 있을 것이라 생각합니다.Server Side Interceptor
아래와 같이,
interceptors
에 추가하여, 할 수 있으며,아래의
AuthenticateUserAccessToken
말고도, 다른 미들웨어(interceptor
) 또한, 아래처럼 구현하여 추가할 수 있습니다.async generator
async
에서stream
을 활용한 API 를 구현하게 될때, 이를 활용할 수 있습니다.purerpc 를 사용하지는 않았으나,
아래와 같이, 활용할 수 있다는 것을 확인할 수 있었으며,
더 심화적으로, 이해하고 싶은 분은 아래 자료들을 참고해주시면 감사하겠습니다.
https://docs.python.org/3/glossary.html#term-asynchronous-generator
https://rickyhan.com/jekyll/update/2018/01/27/python36.html
https://www.python.org/dev/peps/pep-0525/
https://youtu.be/PulzIT8KYLk?t=24m30s
https://pypi.org/project/async_generator/1.7/