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는 다음과 같은 기본 처리기를 지원합니다.
- image_classifier
- object_detector
- text_classifier
- 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 |