[triton] 간단하게 알아가기

dddwsd·2024년 7월 9일
post-thumbnail

정의

triton-inference-server는 GPU 또는 CPU 기반 인프라의 프레임워크에서 훈련된 AI 모델을 배포, 실행 및 확장할 수 있도록 지원함으로써 AI 추론을 간소화하고 표준화한다.

장점

  1. 다양한 프레임워크 지원 - TensorRT, TensorFlow, PyTorch, ONNX 등
  2. 성능 최적화 - 자동 배치 처리와 GPU 최적화를 통해 높은 처리량과 낮은 inference latency 제공
  3. 유연성과 확장성 - 다중 GPU와 다중 인스턴스를 지원하여 대규모 배포 환경에 적합.
  4. 표준화된 통신 인터페이스 - REST 및 gRPC API를 제공하여 다양한 클라이언트 가능
  5. 모델 관리와 버전 관리 - 다양한 모델 버전을 관리하고, 업데이트 및 롤백을 쉽게 수행할 수 있다.
  6. 다양한 쿼리 지원 - 실시간, 배치, 앙상블, 오디오,비디오 스트리밍을 포함한 다양한 쿼리 가능

구조

exported model

model_repository
├── model
│   ├── 1
│   │   └── model.graphdef
│   └── config.pbtxt

config.pbtxt

name: "simple"
platform: "tensorflow_graphdef"
max_batch_size: 8
input [
  {
    name: "INPUT0"
    data_type: TYPE_INT32
    dims: [ 16 ]
  },
  {
    name: "INPUT1"
    data_type: TYPE_INT32
    dims: [ 16 ]
  }
]
output [
  {
    name: "OUTPUT0"
    data_type: TYPE_INT32
    dims: [ 16 ]
  },
  {
    name: "OUTPUT1"
    data_type: TYPE_INT32
    dims: [ 16 ]
  }
]

python backend

model_repository
├── model
│   ├── 1
│   │   ├── weights
│   │   └── model.py
│   └── config.pbtxt

TritonPythonModel 구조

  • auto_complete_config
    • triton 설정 파일이 없는 상황에서도 최소한의 모델 구성으로 모델을 로드할 수 있게 한다.
  • initialize
    • model이 load될 때 한 번 호출한다.
    • 주로 weights를 로드하거나 변수 설정을 할 때 사용한다.
  • execute
    • inference request가 생성될 때마다 호출된다.
    • 실제 inference 과정을 진행한다.
  • finalize
    • model이 unliad 될 때 한 번 호출한다.
    • 주로 리소스 해제나 모델 정리를 할 때 사용한다.

실행

  1. triton docker image를 통해 docker container 구동

  2. tritonserver 실행

    • model repository: triton에 올라갈 model 코드가 존재하는 dir
    • model-control-mode:
      1. none: 시작시 모델 저장소에 있는 모든 모델을 로드하며 그 이후로는 로드된 모델에 변경을 가하지 않음.
      2. poll: 모델 저장소를 주기적으로 확인하여 변경사항을 감지하고 그 변경사항에 따라 모델을 load 하거나 unload 함.
      3. explicit: 모델 load 및 unload 는 모델 제어 API를 사용하여 명시적으로 수행되며, 시작 시 --load-model로 지정된 모델만 로드된다.
    • load-model: server가 시작시 load할 모델의 이름으로 여러 번 지정할 수 있다. 시작시 모든 모델을 로드하려면 --load-model=*를 설정해야 하고 이 때 --load-model을 추가하면 오류가 발생한다.
    tritonserver --model-repository=/model --model-control-mode=explicit \
                    --load-model=simple --log-verbose=0 --log-info=1 --log-warning=1 --log-error=1
profile
Github - https://github.com/dddwsd

0개의 댓글