왜 커스텀 모델 배포가 필요한가?
Databricks Model Serving은 등록된 MLflow 모델을 REST API 엔드포인트로 배포하는 관리형 서비스입니다. Foundation Model API (FMAPI) 가 제공하는 사전 학습 모델(llama, mixtral 등)로 충분하지 않은 경우, 커스텀 모델 배포가 필요합니다.Foundation Model API vs. 커스텀 모델 배포
| 구분 | Foundation Model API | 커스텀 모델 배포 |
|---|---|---|
| 모델 제어 | Databricks가 제공하는 모델만 사용 | 직접 학습/파인튜닝한 모델 사용 가능 |
| 전처리/후처리 | 불가 (입출력 형식 고정) | 완전한 자유도 |
| 비용 | 토큰당 종량제 (Pay-per-token) | 인스턴스 시간당 과금 |
| 운영 복잡도 | 낮음 (인프라 자동 관리) | 높음 (의존성, 스케일링 직접 설정) |
| 레이턴시 | 공유 인프라 (변동 가능) | 전용 인스턴스 (예측 가능) |
| 규정 준수 | 데이터가 외부 모델 통과 | 워크스페이스 내부에서 처리 |
커스텀 배포가 필요한 경우
| 사용 사례 | 설명 |
|---|---|
| 전후처리 파이프라인 | 입력 데이터 정규화, 피처 엔지니어링, 출력 후처리가 필요한 경우 |
| 파인튜닝 모델 | 도메인 특화 데이터로 Fine-tuning한 모델을 배포해야 하는 경우 |
| 자체 학습 모델 | 사내 데이터로 처음부터 학습한 ML/DL 모델 |
| 앙상블 모델 | 여러 모델의 예측을 결합해야 하는 경우 |
| 외부 라이브러리 의존 | 표준 MLflow flavor에 없는 프레임워크를 사용하는 경우 |
| 비즈니스 로직 포함 | 예측값에 규칙 기반 로직을 적용해야 하는 경우 |
| GPU 추론 | 대규모 딥러닝 모델을 GPU로 서빙해야 하는 경우 |
| 데이터 거버넌스 | 입력 데이터가 외부 서비스로 나가면 안 되는 경우 |
모델 서빙 엔드포인트 (Model Serving Endpoint) 란 학습된 ML 모델을 REST API로 노출하여, 애플리케이션에서 실시간으로 예측을 요청할 수 있게 해주는 서비스입니다. Databricks에서는 인프라 관리, 오토스케일링, 모니터링을 자동으로 처리합니다.
배포 가능한 모델 유형
| 배포 유형 | 설명 | 포함 모델 |
|---|---|---|
| 표준 Flavor | 기본 제공 MLflow Flavor를 사용합니다 | sklearn, xgboost, lightgbm, spark |
| 커스텀 PyFunc | mlflow.pyfunc.PythonModel을 상속하여 자유로운 추론 로직을 구현합니다 | 전처리/후처리, 멀티모델 앙상블 등 |
| 외부 모델 | 외부 LLM 제공사를 프록시합니다 | OpenAI, Anthropic, Cohere |
| 모델 유형 | 특징 | 적합한 경우 |
|---|---|---|
| 표준 MLflow Flavor | mlflow.sklearn, mlflow.xgboost 등으로 저장한 모델 | 단순 predict 호출로 충분한 경우 |
| 커스텀 PyFunc | mlflow.pyfunc.PythonModel을 상속하여 자유로운 추론 로직 구현 | 전후처리, 앙상블, 비즈니스 로직이 필요한 경우 |
| 외부 모델 (External Models) | OpenAI, Anthropic 등 외부 API를 Databricks 엔드포인트로 프록시 | 외부 LLM API에 거버넌스/레이트 리밋을 적용할 때 |
모델 시그니처 정의 (Model Signature)
모델 시그니처 (Model Signature) 는 모델의 입력/출력 스키마를 명시적으로 정의합니다. 시그니처가 있으면 서빙 시 입력 데이터 유효성 검사가 자동으로 수행되어 오류를 조기에 감지할 수 있습니다.시그니처 없이 배포하면 입력 형식 오류가 서빙 환경에서 런타임에 발생합니다.input_example과 함께signature를 항상 명시하는 것을 권장합니다.
PyFunc 커스텀 모델 작성법
mlflow.pyfunc.PythonModel을 상속하면 load_context()와 predict() 메서드를 직접 구현하여 자유로운 추론 로직을 만들 수 있습니다.
기본 구조
커스텀 모델 저장 및 등록
의존성 관리 주의:conda_env또는pip_requirements를 명시하지 않으면, 로컬 환경의 패키지 버전이 서빙 환경과 달라 오류가 발생할 수 있습니다. 반드시 학습에 사용한 주요 라이브러리 버전을 명시하십시오.