본문 바로가기
ML or DL

[모델 배포하기(3/3)] TF-Serving 예제

by chaloalto 2021. 11. 4.

https://ichi.pro/ko/torchserve-eseo-model-baepo-mich-sayongja-jijeong-haendeulleo-saengseong-277270280257169

 

Torchserve 🚀에서 모델 배포 및 사용자 지정 핸들러 생성

구조에 횃불! 이 기사에 사용 된 모든 코드는 여기에 있습니다 최근 PyTorch는 모델을 올바르게 제공하기위한 새로운 프로덕션 프레임 워크 인 torchserve를 도입했습니다. 따라서 더 이상 기한없이

ichi.pro

Docker로 torchserve 설치

docker pull pytorch/torchserve:latest

모델 제공

이것은 쉬운 단계입니다. 필요한 모든 매개 변수를 사용하여 torchserve 도커 컨테이너를 실행할 수 있습니다.

docker run --rm -it \ -p 3000:8080 -p 3001:8081 \ -v $(pwd)/model-store:/home/model-server/model-store pytorch/torchserve:0.1-cpu \ torchserve --start --model-store model-store --models resnet34=resnet34.mar

이 시점에서 torchserve에는 /predictions/resnet34이미지를 전송하여 예측할 수있는 엔드 포인트가 하나 있습니다. 이것은 다음을 사용하여 수행 할 수 있습니다.curl

curl -X POST http://127.0.0.1:3000/predictions/resnet34 -T inputs/kitten.jpg

 

# 핸들러

기본 핸들러

Torchserve는 다음과 같은 기본 처리기를 지원합니다.

  1. image_classifier
  2. object_detector
  3. text_classifier
  4. image_segmenter

커스텀 핸들러

torchserve는 사용자가 원하는 거의 모든 작업을 수행 할 수있는 풍부한 인터페이스를 제공합니다. An Handler은 세 가지 기능이 있어야하는 클래스입니다.

  • 전처리
  • 추론
  • 후 처리
import loggint
from ts.torch_handler.base_handler import BaseHandler

class MyHandler(BaseHandler):
	def preprocess(self, requests):
    	''' 
        전처리 코드
        '''
        pass
    
    def inference(self,x):
    	'''
        추론
        '''
        pass
        
    def postprocess(self,preds):
    	'''
        given the data from .inference, postprocess the output/
        you have to return an array
        '''
        return ['ok']

이미지 분류 예제로 돌아갑니다. 우리는

  • 각 요청에서 이미지를 가져와 사전 처리
  • 모델에서 예측 가져 오기
  • 답장을 보내다

 .preprocess함수는 요청 배열을받습니다. 이미지를 서버로 전송한다고 가정하면 직렬화 된 이미지는 요청 의 data또는 body필드 에서 액세스 할 수 있습니다 . 따라서 모든 요청을 반복하고 각 이미지를 개별적으로 전처리 할 수 ​​있습니다. 전체 코드는 다음과 같습니다.

self.transform우리의 전처리 변환입니다. 이것은 ImageNet에서 훈련 된 모델을위한 고전적인 전처리 단계입니다.

각 요청에서 각 이미지를 사전 처리 한 후 이미지를 연결하여 pytorch Tensor를 만듭니다.

추론

이 단계는 매우 간단합니다. .preprocess함수 에서 텐서를 가져와 각 이미지에 대한 예측을 추출합니다.

후 처리

이제 각 이미지에 대한 예측이 있으므로 클라이언트에게 무언가를 반환해야합니다. Torchserve는 항상 배열이 반환 될 것으로 예상합니다. BaseHandler또한 .json매핑 이 포함 된 파일을 자동으로 열고 index -> label(나중에 이러한 파일을 제공하는 방법을 살펴 보겠습니다) self.mapping. 각 예측에 대해 label및 index클래스를 사용하여 사전 배열을 반환 할 수 있습니다.

 

'ML or DL' 카테고리의 다른 글

CNN Layer 갯수 이해하기  (0) 2022.01.17
tf serving 내일 확인  (0) 2021.11.04
[Jupyter notebook] column, row 생략없이 출력하기  (0) 2021.10.26
[USAD] 논문 리뷰  (0) 2021.10.26
Optimizer 정리  (0) 2021.09.15