HyperAI초신경

TorchServe 설명: 모델을 프로덕션 환경에 배포하는 5단계

2년 전
정보
Jiaxin Sun
特色图像

  내용물:

TorchServe는 2020년 4월에 출시되었으며 2년이 넘는 개발 기간을 거쳤습니다. 더욱 성숙하고 안정되었습니다. 이 글에서는 TorchServe에 대한 전반적인 소개를 제공합니다.

본 기사는 WeChat 공식 계정에 처음 게시되었습니다.PyTorch 개발자 커뮤니티

PyTorch를 사용한 보다 실용적인 모델 배포 사례를 보려면 다음을 방문하세요. 오픈베이즈닷컴 얻다

TorchServe는 PyTorch에서 모델을 프로덕션 환경에 배포하는 데 가장 적합한 솔루션입니다.HTTP 또는 HTTPS API로 모델을 캡슐화하는, 잘 동작하고 확장 가능한 도구입니다.

TorchServe의 프런트엔드는 Java로 구현되어 있으며, 모델 배포를 위한 작업자 할당 및 클라이언트와 서버 간 통신을 담당하는 등 다양한 작업을 처리할 수 있습니다. Python 백엔드는 주로 추론 서비스를 처리하는 역할을 합니다.

그림 1: TorchServe 성능 튜닝 프로세스 개요

또한 AB 테스트, 동적 배칭, 로깅, 다양한 모델 제공 및 메트릭 버전 관리도 지원합니다.4개의 공개 API는 다음과 같습니다.

* 추론 API:기본적으로 localhost를 통해 접근할 수 있는 포트 8080에서 수신하고, TorchServe 구성에서 구성할 수 있으며, 모델에서 예측을 가져오는 것을 지원합니다.

설명 API:Captum을 사용하여 배포되는 모델에 대한 설명을 제공하고 포트 8080에서 수신합니다.

관리 API:모델을 등록, 등록 해제하고 설명할 수 있습니다. 또한 사용자는 모델을 배포하는 작업자 수를 늘리거나 줄일 수 있습니다.

* 메트릭 API:기본적으로 포트 8082에서 수신하여 사용자가 배포되는 모델을 모니터링할 수 있습니다.

TorchServe는 일괄 추론을 지원하고 여러 작업자에게 모델을 배포합니다.사용자가 모델 배포를 확장하고 최대 트래픽을 처리할 수 있습니다. 이 확장은 관리 API와 구성 파일의 설정을 통해 이루어질 수 있습니다. 또한 Metrics API는 기본 및 사용자 정의 메트릭을 통해 모델 배포를 모니터링할 수 있습니다.

요청 수신 대기열 길이, 일괄 입력에 대한 최대 대기 시간 및 기타 속성과 같은 기타 고급 설정둘 다 구성 파일을 통해 구성할 수 있습니다(TorchServe가 시작할 때 이 파일을 전달하면 됩니다).

TorchServe를 사용하여 모델을 배포하는 단계는 다음과 같습니다.

1. TorchServe, 모델 아카이버 및 기타 종속성 설치

2. 적합한 기본 핸들러(예: 이미지 분류)를 선택하거나 사용자 정의 핸들러를 만듭니다.

3. Torcharchive를 사용하여 모델 아티팩트와 핸들러를 하나로 패키징합니다. .마르  파일을 모델 저장소에 넣어주세요

4. 모델 배포 시작

5. 추론 실행

TorchServe 프로젝트 주소:

https://github.com/pytorch/serve/blob/master/README.md#install-torchserve-and-torch-model-archiver

TorchServe 주요 개념: 핸들러

TorchServe 백엔드는 핸들러를 사용하여 모델을 로드하고, 수신된 데이터를 전처리하고, 추론을 실행하고, 응답을 후처리합니다. TorchServe의 핸들러는 파이썬 스크립트모든 모델 초기화, 전처리, 추론, 사후 처리 논리가 여기에 포함됩니다.

TorchServe는 또한 이미지 분류, 분할, 객체 감지, 텍스트 분류와 같은 애플리케이션을 위한 즉시 사용 가능한 핸들러를 제공합니다. 또한, 기본 핸들러가 현재 케이스를 지원하지 않는 경우 사용자 정의 핸들러도 지원합니다.

맞춤형 핸들러는 매우 큰 유연성을 제공합니다.이를 통해 TorchServe는 다중 프레임워크 제공 도구가 될 수 있습니다.사용자 정의 핸들러를 사용하면 사용자 정의 로직으로 모델을 초기화할 수 있으며, 모델이 다른 프레임워크(예: ONNX)에서 모델을 로드할 수도 있습니다.

TorchServe 핸들러는 4가지 주요 기능으로 구성됩니다.기능 , 초기화하다 , 추론  그리고 전처리각 함수는 목록을 반환합니다.

다음 코드 조각은 사용자 정의 핸들러의 예입니다. 사용자 정의 핸들러는 TorchServe의 BaseHandler를 상속합니다.모든 주요 함수를 재정의할 수 있습니다.이 예제에서는 핸들러를 사용하여 Detectron2 모델을 로드하고 그림 감지 문제를 해결하는 방법을 보여줍니다. 이 모델은 Torchscript로 내보내져 사용되었습니다.  mod.half()  FP16 추론을 실행합니다.

편집하다

TorchServe 핵심 개념: 지표

모델을 프로덕션 환경에 배포할 때는 성능을 모니터링하는 것이 중요합니다. TorchServe는 시스템 수준의 측정 항목을 주기적으로 수집하고 사용자 정의 측정 항목을 추가할 수 있습니다.

시스템 수준 측정 항목에는 CPU 사용률, 호스트에서 사용 가능한 디스크 공간과 메모리, 그리고 서로 다른 응답 코드가 포함된 요청 수가 포함됩니다.(예: 200-300, 400-500 및 500 이상). 사용자 정의 메트릭 API를 사용하여 사용자 정의 메트릭을 추가할 수 있습니다.

사용자 정의 메트릭 API:

https://github.com/pytorch/serve/blob/master/docs/metrics.md#custom-metrics-api

TorchServe는 이 두 가지 측정 항목을 서로 다른 로그 파일에 기록합니다. 기본적으로 메트릭은 다음 위치에서 수집됩니다.

시스템 측정항목: log_directory/ts_metrics.log

사용자 정의 지표:로그 디렉토리/model_metrics.log

TorchServe의 Metrics API는 기본적으로 포트 8082에서 수신하며, 사용자는 수집된 메트릭을 쿼리하고 모니터링할 수 있습니다. 기본 메트릭 엔드포인트는 Prometheus 형식의 메트릭을 반환합니다. curl 요청으로 메트릭을 쿼리하거나 Prometheus 서버를 엔드포인트로 지정하고 대시보드에 Grafana를 사용할 수 있습니다.

curl을 사용하여 메트릭을 쿼리합니다.

curl http://127.0.0.1:8082/metrics

mtail을 사용하여 기록된 메트릭을 Prometheus로 내보내는 예:https://github.com/google/mtail

대시보드에서 이러한 측정 항목을 추적하면 오프라인 벤치마크 실행 중에는 발견하기 어렵거나 산발적으로 발생하는 성능 저하를 모니터링할 수 있습니다.

다음은 무엇인가

위의 내용은 모두 TorchServe에 대한 내용입니다. 다음 섹션에서는 구체적인 예를 살펴보겠습니다.모델을 프로덕션 환경에 배포하는 데 영향을 미치는 구체적인 요소를 설명하고 TorchServe를 사용하여 Animated Drawing APP를 조정하는 방법을 설명합니다.

더 많은 학습 자료와 실용적인 튜토리얼을 보려면 공식 계정을 팔로우하세요.PyTorch 개발자 커뮤니티. 튜토리얼을 실제로 보려면 방문하세요. 오픈베이즈닷컴  실제 운영. ​