fil-backend

FIL 백엔드 (트리 모델)

Triton은 거의 모든 주요 프레임워크로 학습한 모델을 쉽고 고도로 최적화된 방식으로 배포하는 머신러닝 추론 서버예요. 이 백엔드는 특히 트리 모델(tree models)을 Triton에서 쓸 수 있게 해 주는데, 여기에는 XGBoost, LightGBM, Scikit-Learn, cuML로 학습한 모델이 모두 포함돼요.

프로덕션에서 트리 기반 모델을 최적화된 실시간 또는 배치 추론으로 배포하고 싶다면, Triton의 FIL 백엔드(Forest Inference Library)가 바로 그 일을 하게 해 줘요.

이 문서에는 설치, 입문 예제, FAQ 노트북, 모델 구성, 설명 가능성(Shapley), Scikit-Learn/cuML 지원, 모델 지원 범위, 기여 방법 등이 담겨 있어요.

어디서부터 시작할까?

문서가 처음이라면 상황에 맞는 길을 골라 보세요.

  • XGBoost/LightGBM 등 트리 모델을 쓰고 있고, Triton이 프로덕션 배포에 맞는지 판단 중이라면 → FIL 백엔드 블로그 발표 글 → 모델 지원 섹션에서 모델이 지원되는지 확인 → 입문 예제 → FAQ 노트북으로 직접 배포해 보기.
  • Triton은 알지만 XGBoost/LightGBM 모델을 처음 배포하는 경우 → 입문 예제 → FAQ 노트북 (XGBoost/LightGBM 모델 직렬화 예제 포함) → 성능 최적화 팁.
  • Triton과 FIL 백엔드는 아는데 Scikit-Learn/cuML 트리 모델을 처음 배포하는 경우 → Scikit-Learn/cuML 모델 준비 섹션 → FAQ 노트북의 Scikit-Learn/cuML 섹션.
  • 트리 모델 학습 경험만 있는 데이터 과학자라면 → Triton 제품 페이지에서 용도 파악 → 입문 예제 직접 실행 → CPU 전용 학습/배포 정보는 FAQ 노트북.
  • 트리 모델이 처음이라면 → XGBoost 문서 → 입문 예제 → FAQ 노트북.
  • 문서 읽는 걸 좋아하지 않는다면 → 아래 Quickstart → FAQ 노트북을 브라우저로 열기. 막히면 FAQ 페이지에서 Ctrl-F로 키워드 검색.

Quickstart: 트리 모델을 3단계로 배포하기

1단계. 모델을 아래 디렉터리 구조로 넣어요. 예시는 XGBoost json 파일이지만 XGBoost 바이너리, LightGBM 텍스트, Treelite 체크포인트 파일도 지원돼요.

model_repository/
├─ example/
│  ├─ 1/
│  │  ├─ model.json
│  ├─ config.pbtxt

2단계. config.pbtxt를 아래처럼 채워요. $NUM_FEATURES에는 입력 피처 수, $MODEL_TYPE에는 xgboost, xgboost_json, lightgbm 또는 treelite_checkpoint, $IS_A_CLASSIFIER에는 분류기면 true, 회귀기면 false를 넣어요.

backend: "fil"
max_batch_size: 32768
input [
 {
    name: "input__0"
    data_type: TYPE_FP32
    dims: [ $NUM_FEATURES ]
  }
]
output [
 {
    name: "output__0"
    data_type: TYPE_FP32
    dims: [ 1 ]
  }
]
instance_group [{ kind: KIND_AUTO }]
parameters [
  {
    key: "model_type"
    value: { string_value: "$MODEL_TYPE" }
  },
  {
    key: "is_classifier"
    value: { string_value: "$IS_A_CLASSIFIER" }
  }
]

dynamic_batching {}

3단계. 서버를 시작해요.

docker run -p 8000:8000 -p 8001:8001 --gpus all \
  -v ${PWD}/model_repository:/models \
  nvcr.io/nvidia/tritonserver:23.09-py3 \
  tritonserver --model-repository=/models

이제 Triton 서버가 NVIDIA GPU(있으면) 또는 CPU(없으면)를 써서 모델을 HTTP(포트 8000)와 gRPC(포트 8001)로 서빙해요. 추론 요청을 보내는 방법, 다른 트리 모델 유형 배포, 고급 구성은 FAQ 노트북을 확인하면 돼요.

모델 구성

FIL 백엔드 모델은 트리 모델 학습 프레임워크에 따라 config.pbtxtparametersmodel_type을 지정해요. 위 Quickstart에서 $MODEL_TYPE 값으로 xgboost, xgboost_json, lightgbm, treelite_checkpoint를 구분한 게 바로 그 설정이에요. is_classifier로 분류/회귀를 구분하고, 필요하면 dynamic_batching {}으로 배칭을 켜요.

설명 가능성과 Shapley 값 지원

FIL 백엔드는 설명 가능성과 Shapley 값(트리 SHAP)을 지원해요. 자세한 내용은 원문의 "Explainability and Shapley value support" 섹션을 참고해 주세요.

모델 지원 및 제한

XGBoost, LightGBM, Scikit-Learn random forest, cuML random forest 모델을 지원해요. 어떤 모델 형식이 정확히 지원되는지는 원문의 "Model support and limitations" 섹션에서 확인할 수 있어요.


출처: 공식문서 (FIL Backend)