높은 처리량, 짧은 대기 시간 및 안정적인 성능이 필요한 프로덕션 워크로드에 대해 모델 서비스 엔드포인트를 최적화하는 방법을 알아봅니다.
최적화 전략은 다음 세 가지 범주로 분류됩니다.
- 엔드포인트 최적화: 성능 향상을 위해 엔드포인트 인프라 구성
- 모델 최적화: 모델 효율성 및 처리량 향상
- 클라이언트 최적화: 클라이언트가 서비스 엔드포인트와 상호 작용하는 방법 최적화
엔드포인트를 최적화하는 경우
다음 시나리오가 발생할 때 모델 서비스 엔드포인트를 최적화하는 것이 좋습니다.
- 높은 쿼리 볼륨: 애플리케이션이 초당 50k 이상의 쿼리(QPS)를 단일 엔드포인트로 보냅니다.
- 대기 시간 요구 사항: 애플리케이션에 100ms 미만의 응답 시간이 필요합니다.
- 스케일링 병목 현상: 트래픽 급증 시 엔드포인트가 대기 상태가 되거나 HTTP 429 오류를 반환합니다.
- 비용 최적화: 성능 목표를 유지하면서 서비스 비용을 줄이려는 경우
- 프로덕션 준비: 개발에서 프로덕션 워크로드로 전환할 준비를 하고 있습니다.
인프라 최적화
인프라 최적화는 네트워크 라우팅, 크기 조정 동작 및 컴퓨팅 용량을 향상시킵니다.
경로 최적화
경로 최적화 는 처리량이 많은 워크로드에 대한 가장 중요한 인프라 개선을 제공합니다. 엔드포인트에서 경로 최적화를 사용하도록 설정하면 Databricks Model Serving는 유추 요청에 대한 네트워크 경로를 개선하여 클라이언트와 모델 간의 보다 빠르고 직접적인 통신을 가능하게 합니다.
성능 이점:
| 특징 | 표준 엔드포인트 제한 | 경로 최적화를 위한 엔드포인트 한도 |
|---|---|---|
| 작업 영역당 QPS(초당 쿼리 수) | 200 | 50,000 이상(더 높은 한도를 위해 Databricks에 문의) |
| 작업 영역당 클라이언트 동시성 | 192-1024(지역에 따라 다름) | 명시적 제한 없음(프로비전된 동시성으로 제한됨) |
| 제공된 엔터티당 엔드포인트 프로비저닝된 동시성 | 1,024 | 1,024(더 높은 한도를 위해 Databricks에 문의) |
경로 최적화를 사용하는 경우:
- 200개 이상의 QPS가 필요한 워크로드
- 엄격한 대기 시간 요구 사항이 있는 애플리케이션(50ms 미만 오버헤드)
- 여러 동시 사용자에게 서비스를 제공하는 프로덕션 배포
중요합니다
경로 최적화는 엔드포인트를 제공하는 사용자 지정 모델에만 사용할 수 있습니다. 파운데이션 모델 API 및 외부 모델은 경로 최적화를 지원하지 않습니다. 인증에는 OAuth 토큰이 필요합니다. 개인용 액세스 토큰은 지원되지 않습니다.
설정 지침은 서비스 엔드포인트의 경로 최적화를 참조하고, 쿼리 세부 정보는 경로 최적화된 서비스 엔드포인트 쿼리를 참조하세요.
프로비전된 동시 실행
프로비전된 동시성은 엔드포인트에서 처리할 수 있는 동시 요청 수를 제어합니다. 예상 QPS 및 대기 시간 요구 사항에 따라 프로비전된 동시성을 구성합니다.
구성 지침:
- 최소 동시성: 큐 없이 기준 트래픽을 처리할 수 있을 만큼 높게 설정
- 최대 동시성: 비용을 제어하면서 트래픽 급증을 수용할 수 있을 만큼 높게 설정
- 자동 크기 조정: 자동 크기 조정을 사용하여 수요에 따라 용량을 동적으로 조정
필요한 동시성을 계산합니다.
Required Concurrency = Target QPS × Average Latency (seconds)
예를 들어 대상이 평균 대기 시간이 200ms인 100 QPS인 경우:
Required Concurrency = 100 × 0.2 = 20
부하 테스트를 사용하여 실제 대기 시간을 측정하고 최적의 동시성 설정을 결정합니다.
인스턴스 유형
모델의 컴퓨팅 요구 사항에 따라 인스턴스 유형을 선택합니다.
| 인스턴스 유형 | 적합한 대상 | Trade-offs |
|---|---|---|
| CPU (소형, 중형, 대형) | 간단한 모델, 간단한 유추 논리 | 컴퓨팅 집약적 모델의 경우 비용 절감, 느려집니다. |
| GPU(소형, 중형, 대형) | 대형 모델, 복잡한 계산, 이미지/비디오 처리 | 더 높은 비용, 딥 러닝을 위한 최적의 성능 |
팁 (조언)
개발 및 테스트를 위한 CPU 인스턴스로 시작합니다. 높은 유추 대기 시간을 관찰하거나 모델에 특수 컴퓨팅(예: 딥 러닝 작업)이 필요한 경우에만 GPU 인스턴스로 전환합니다.
모델 최적화
모델 최적화는 유추 속도 및 리소스 효율성을 향상시킵니다.
모델 크기 및 복잡성
모델 크기 및 복잡성: 더 작고 덜 복잡한 모델은 일반적으로 유추 시간이 빨라지고 QPS가 높아집니다. 모델이 큰 경우 모델 정량화 또는 가지 치기와 같은 기술을 고려합니다.
Batching
애플리케이션이 단일 호출로 여러 요청을 보낼 수 있는 경우 클라이언트 쪽에서 일괄 처리를 사용하도록 설정합니다. 이렇게 하면 예측당 오버헤드를 크게 줄일 수 있습니다.
전처리 및 후처리 최적화
복잡한 사전 처리 및 후처리를 엔드포인트에서 오프로드하여 유추 인프라의 부하를 줄입니다.
클라이언트 쪽 최적화
클라이언트 쪽 최적화는 애플리케이션이 서비스 엔드포인트와 상호 작용하는 방식을 개선합니다.
연결 풀링 (Connection Pooling)
연결 풀링에서는 각 요청에 대한 새 연결을 만드는 대신 기존 연결을 다시 사용하므로 오버헤드가 크게 줄어듭니다.
- 연결 풀링 모범 사례를 자동으로 구현하는 Databricks SDK 사용
- 사용자 지정 클라이언트를 사용하는 경우 직접 연결 풀링을 구현합니다.
오류 처리 및 재시도 전략
특히 자동 크기 조정 이벤트 또는 네트워크 중단 중에 임시 오류를 정상적으로 처리하도록 강력한 오류 처리를 구현합니다.
페이로드 크기 최적화
요청 및 응답 페이로드 크기를 최소화하여 네트워크 전송 시간을 줄이고 처리량을 개선합니다.
성능 측정 및 향상
성능 모니터링
Mosaic AI 모델 서비스 제공 도구를 사용하여 엔드포인트 성능을 모니터링합니다.
| Metric | 측정한 내용 | 목표/타겟 | 초과 시 조치 |
|---|---|---|---|
| 대기 시간(P50, P90, P99) | 요청에 대한 응답 시간 | 애플리케이션 종속(일반적으로 <100-500ms) | 큐 확인, 모델 또는 클라이언트 최적화 |
| 처리량(QPS) | 초당 완료된 요청 | 워크로드에 종속적인 | 경로 최적화를 사용하도록 설정하고 프로비전된 동시성을 높입니다. |
| 오류율 | 실패한 요청의 백분율 | <1% | 서비스 로그 검토, 용량 문제 확인 |
| 큐 크기 | 처리를 기다리는 요청 | 0(대기열 없음) | 프로비전된 동시성을 증가시키거나 자동 스케일링을 활성화하십시오. |
| CPU/메모리 사용량 | 리소스 사용률 | <80% | 인스턴스 유형 강화 또는 동시성 증가 |
자세한 모니터링 지침은 모델 품질과 엔드포인트 상태 모니터링을 참조하고, 메트릭을 관측 도구로 내보내려면 엔드포인트 상태 메트릭을 Prometheus 및 Datadog으로 추적 및 내보내기를 참조하세요.
부하 테스트
부하 테스트는 현실적인 트래픽 조건에서 엔드포인트 성능을 측정하고 다음을 도와줍니다.
- 최적의 프로비저닝 동시성 설정을 결정하십시오.
- 성능 병목 상태 식별
- 대기 시간 및 처리량 요구 사항 유효성 검사
- 클라이언트 동시성과 서버 동시성 간의 관계 이해
일반 성능 문제 해결
Queuing
모델 서비스 제공은 트래픽 패턴에 따라 용량을 조정하는 자동 크기 조정을 지원합니다. 그러나 갑작스런 트래픽 급증은 자동 크기 조정이 증가된 부하를 감지하고 추가 용량을 제공하는 데 시간이 필요하기 때문에 대기열을 발생시킬 수 있습니다. 이 기간 동안 들어오는 요청이 일시적으로 사용 가능한 용량을 초과하여 요청이 큐에 포함될 수 있습니다.
큐는 요청 속도 또는 동시성이 엔드포인트의 현재 처리 용량을 초과할 때 발생합니다. 이는 일반적으로 급격한 트래픽 급증, 워크로드 버스트 또는 엔드포인트에 프로비전된 동시성이 부족한 경우에 발생합니다. 모델 서비스 엔드포인트를 사용하면 임시 큐에서 버스트를 처리할 수 있지만 정의된 임계값을 초과하면 엔드포인트는 HTTP 429(너무 많은 요청) 오류를 반환하여 시스템 안정성을 보호합니다.
큐는 대기 중인 요청이 처리되기 전에 대기하므로 대기 시간이 증가합니다. 큐를 최소화하려면 다음을 수행합니다.
- 기준 트래픽과 일반적인 버스트를 처리할 수 있을 만큼 충분히 높은 최소 프로비전된 동시성 설정
- 더 높은 용량 제한에 대한 경로 최적화 사용
- 클라이언트 애플리케이션에서 지수 백오프를 사용하여 재시도 논리 구현
외부 API 병목 상태
모델은 유추 중에 데이터 보강, 기능 검색 또는 기타 작업을 위해 외부 API를 호출하는 경우가 많습니다. 이러한 외부 종속성은 성능 병목 상태가 될 수 있습니다.
- 대기 시간: 각 외부 API 호출의 응답 시간을 측정합니다. 이러한 호출의 대기 시간이 높을 경우 전체 서비스 대기 시간이 직접 증가하고 처리량이 줄어듭니다.
- 처리량 제한: 외부 API는 속도 제한 또는 용량 제약 조건을 적용할 수 있습니다. 이러한 제한을 초과하면 스로틀링, 오류 및 성능 저하가 발생할 수 있습니다.
- 오류율: 외부 API의 빈번한 오류는 재시도를 트리거하고 서비스 엔드포인트의 부하를 증가시킬 수 있습니다.
- 캐싱: 외부 API에서 자주 액세스하는 데이터에 대한 캐싱을 구현하여 호출 수를 줄이고 응답 시간을 개선합니다.
이러한 요인을 모니터링하여 병목 상태를 식별하고 처리량이 높은 워크로드에 대한 대상 최적화를 구현합니다.