포스트

Inference Server - Triton

기술세미나 리뷰

Inference Server - Triton

Triton Inference Server architecture

  • 목표
    • ML/DL 배포 서빙 간소화 및 최적화
    • 아키텍처
      • 애플리케이션, 클라이언트, 서버 ..
    • 특징
      • NVIDIA GPU 사용 서버/모델 최적화
      • TensorRT로 변환해서 사용하는 것을 권장 (다른 형태의 모델도 가능)
      • 자체 helth check metric 지원

스케줄링 방식

  • 사용자 요청 단위 == 시퀀스

Direct

  • 시퀀스의 모든 추론 요청이 동일한 모델의 인스턴스, 배치슬롯으로 라우팅 됨
  • 요청을 한번에 보낼때 사용하는 것이 좋을 것 같음

  • 과정
    • 사용자로부터 추론 입력
    • 시퀀스 Bather에 요청 입력
    • 모델에 적합한 형태로 추론이 입력됨
      • 시퀀스 하나 단위가 인스턴스와 슬롯에 할당됨. <- 뭘까
  • 묶어서 보내는 경우에 GPU를 max로 채워서 했을 때 속도 저하?
    • 모델별로 다름
  • 결과를 바로 안보내주고 묶어서

Oldest

  • 시퀀스 내부 여러 단위를 일괄적으로 처리하는 것이 아니라 쪼개서 처리

  • 과정
    • 사용자부터 추론 입력
    • 추론 요청 온 순서대로 모델에 적합한 형태로 추론 입력됨
    • 순서대로 추론 결과가 도출됨
  • 요청을 보낼때 얼마 간격으로 다음 요청을 보낼지 설정 가능

Metrics

  • 시간이 지남에 따라 변화하는 데이터를 의미

  • 활용 가능 데이터
    • 추론 요청 횟수
    • cpu 사용량
    • gpu 사용량
    • 누적 추론 시간
  • Prometeus
    • 데이터 저장 서버의 역할
  • Grafana
    • 시각화 대시보드 역할

TIS 생태계

  • 클라이언트
    • 간단한 웹서버로 구현할 수 있음
  • 모델 분석기
    • 모델을 분석해 최적의 추론 파라미터를 도출할 수 있음 (대기시간 길어도 단일 시간이 짦은 것이 좋은지, 한번에 하는 것이 좋은지 인간이 판단하여 결정)
  • 모델 네비게이터
    • 프레임워크로 개발한 모델을 TensorRT로 변환하고 테스트 기능 제공
    • 자동화 잘 되지 않아 사용할때 주의
  • pytriton
    • API를 이용해 간단하게 트라이톤 사용 가능

샘플 설명

  • 트라이톤 인퍼런스 서버에서 별개의 환경을 설정하는 방법
    • 환경 분리하도록 만들어서 모델처럼 사용
  • 구조
    1
    2
    3
    4
    5
    6
    
    model_repo/
      model_name/
          config.pdtxt
          model_version/(무조건 숫자로)
              model.py (이름 변경 불가능, 모델 최초 실행 파일)
      ...
    
  • config.pbtxt

  • model.py 구조
    1
    2
    3
    4
    
    class TritonPythonModel:
      def initialize(self, args):
      ...
      def  
    
  • 앙상블 모델
    • 개별 모델 생성

TIS Python 환경 분리

  • conda 환경 생성하고 설치도 conda로 설치
  • 콘다팩
    • 가상환경 압축해서 폴더 자체를 넣어버리는 방식

QnA

  • 모델 레포 관리
    • 모델을 업데이트 되었는지 확인해서 자동으로 업데이트 되도록 인퍼런스 서버가 모델을 띄우는 형태
  • 재실행 하는 상황에서
    • 기존 실행 프로세스 끝나고 내릴 수 있는지. 설정 가능
  • init 할때 모델을 계속 띄워놓고 실행할 수 있음
    • 클라이언트에서 모델을 올려놓고 내려놓고 할 수 있음
  • MLFlow에서 모델 성능 관리하고 -> 에어플로우에서 바꿔끼는 형태로 …
  • model -> 꼭 AI 모델일 필요는 없음

  • 환경을 한번에 가지고 있으면.. 무겁지 않을까?
    • 모델을 사용하지 않는 것들까지 올릴 필요가 없어보임.
    • “추론”을 하기 위한것이라면…
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.