이번에는 Azure ML에서 모델을 배포하고, Online/Batch Endpoint를 통해 모델을 실제로 사용하는 흐름에 대해서 정리하였다.
현재 회사에서 진행하고 있는 프로젝트에서는 Online Endpoint만 사용하고 있지만 Batch Endpoint 개념도 확실히 잡고 넘어가고자 한다.
Online Endpoint란?
Azure ML의 Online Endpoint는 실시간 추론을 위한 REST API 진입점이다. 애플리케이션에서 실시간으로 데이터를 전송하고, 그에 대한 예측 결과를 바로 받아야 하는 경우 사용된다. 예를 들어 웹사이트에서 사용자의 행동을 바탕으로 실시간 광고 추천을 할 때 유용하다.
왜 필요한가?
- REST API 형태로 모델 서빙 가능
- 실시간 응답 처리
- 트래픽 분산 및 A/B 테스트 지원 (blue/green 배포)
구성요소
- Endpoint: REST API 주소
- Deployment: 모델 + 환경 + 코드 + 인프라 설정
- Auth Mode: azureml (AAD 토큰 기반), key (정적 키)
실무 흐름
- 모델 등록 (MLflow or Custom)
- ManagedOnlineEndpoint 정의 (예: diabetes-endpoint)
- ManagedOnlineDeployment 작성 (예: blue 버전)
- 트래픽 할당 (ex. 100% to blue)
- JSON 형태의 요청으로 추론 결과 받기
POST https://<name>.<region>.inference.ml.azure.com/score
Authorization: Bearer <token>
Content-Type: application/json
{
"input_data": [[5.1, 3.5, 1.4, 0.2]]
}
실무 포인트
- Endpoint는 이름만 있고, 실제 처리는 Deployment가 담당
- 트래픽 분산 설정 가능 (예: blue 70%, green 30%)
- CI/CD로 연결 시 GitHub Actions 또는 Azure DevOps 사용 권장
Batch Endpoint란?
Batch Endpoint는 대량의 데이터를 한 번에 처리할 때 사용하는 비동기 API이다.
데이터를 저장한 후, "이 폴더 안의 데이터 전체를 예측하라"고 요청하는 방식이다.
왜 필요한가?
- 대용량 파일 기반 예측 처리
- ETL 파이프라인과 연동 (예: Azure Synapse, Databricks)
- Job 단위 실행으로 확장성 확보
구성요소
- Endpoint: 예측 요청을 받을 REST API
- Deployment: scoring script + environment + compute 정의
- Input Data: URI_FOLDER or URI_FILE 형태로 지정
- Output Action: append or summary
실무 흐름
- 모델 등록 (MLflow or Custom)
- BatchEndpoint 정의
- BatchDeployment 작성 (compute, output_action 등)
- set_default()로 기본 deployment 지정
- invoke()로 추론 Job 실행
input = Input(type="uri_folder", path="azureml://datastores/workspaceblobstore/paths/batch_input/")
ml_client.batch_endpoints.invoke(
endpoint_name="batch-endpoint",
input=input
)
결과 확인
- 예측 결과는 Blob Storage에 CSV 등 파일로 저장됨
- Studio UI에서 Job 진행 상태 및 로그 확인 가능
- 결과 접근은 다음과 같이 가능:
- Azure ML Studio의 Job 출력 탭에서 직접 다운로드
- ml_client.jobs.download() 메서드로 로컬에 자동 저장
- Azure Storage SDK를 이용해 Blob 경로에서 직접 다운로드
from azure.storage.blob import BlobClient
blob = BlobClient.from_connection_string(conn_str, container_name="predictions", blob_name="results.csv")
with open("results.csv", "wb") as f:
f.write(blob.download_blob().readall())
Online vs Batch Endpoint 비교
항목 Online Endpoint Batch Endpoint
| 목적 | 실시간 예측 | 대량 데이터 예측 |
| 방식 | 요청 즉시 응답 | Job 생성 후 비동기 처리 |
| 응답 | 즉시 JSON 반환 | Blob에 파일로 저장 |
| 사용 사례 | 웹 앱 추론 API | 일괄 고객 예측, 보고서 생성 |
| 스케일링 | 실시간 스케일링 | 병렬 처리 기반 분산 실행 |
실무 체크리스트
- Online Endpoint는 반드시 인증 설정 필요 (AAD or key)
- Batch Endpoint는 input/output이 Blob 기반이므로, Data Asset 등록이 우선
- scoring script는 예외 처리 및 로깅을 포함해 robust하게 설계
- 모델은 MLflow로 등록하는 것이 관리 및 배포에 유리
- Endpoint + Deployment 구성은 YAML or Python SDK 기반 코드화 권장
마무리
실무에서 Azure Machine Learning을 기반으로 MLOps를 구축할 때, Online Endpoint와 Batch Endpoint는 모델을 어떻게 사용자와 연결시킬 것인지에 대한 핵심 구조다.
특히 Online Endpoint는 모델을 REST API로 배포해 실시간 서비스를 가능하게 해주며, Batch Endpoint는 데이터 엔지니어링 파이프라인과 긴밀히 연동되어 대량 예측을 처리할 수 있도록 해준다.
'MLOps' 카테고리의 다른 글
| [MLOps] AI Gateway란? 토큰·비용·모델·거버넌스를 통제하는 AI Core 아키텍처 (0) | 2026.09.04 |
|---|---|
| [Azure MLOps] Azure에서 Docker를 활용한 MLOps 파이프라인 설계 정리 (0) | 2025.06.30 |