이 페이지에서는 ML(기계 학습) 프로젝트를 초기 범위에서 프로덕션으로 이동하고 시간이 지남에 따라 성능이 양호하게 유지되는 엔드 투 엔드 여정에 대해 설명합니다. 코드, 데이터 및 모델은 개발, 스테이징 및 프로덕션의 세 가지 광범위한 단계를 통과합니다. 각 단계에는 다음과 같은 고유한 목표와 요구 사항이 있습니다.
- 사용 사례 범위 지정 및 성공 정의
- 데이터 탐색 및 이해
- 데이터 및 기능 준비
- 모델 학습 및 실험 추적
- 평가하다
- 모델 등록, 스테이징 및 테스트
- 프로덕션에 배포
- 모니터링 및 재학습
1. 사용 사례 범위 지정 및 성공 정의
아무것도 빌드하기 전에 모델이 수행해야 하는 작업과 모델이 작동하는 방식을 파악합니다.
- 예측 대상은 무엇이며, 분류, 회귀, 예측, 권장 사항, 순위, 변칙 검색 또는 기타 항목을 의미하는 ML 문제의 클래스는 무엇인가요?
- 사용할 수 있는 입력 데이터는 무엇이며 대상 패턴을 학습하기에 충분합니까?
- 정확도, AUC, K의 정밀도 또는 비즈니스 KPI 등 성공을 정의하는 메트릭은 무엇인가요?
- 대기 시간, 처리량 및 데이터 새로 고침의 서비스 및 프로덕션 요구 사항은 무엇인가요?
- 프로덕션 배포를 승인해야 하는 이해관계자는 누구입니까? 설명 가능성에 대한 요구 사항은 무엇인가요?
위의 요구 사항은 특정 ML 메서드를 지정하지 않습니다. 그라데이션 강화 트리와 같은 간단한 방법으로 모델링을 시작하고 나중에 더 강력한 딥 러닝 방법이 필요하다고 결정할 수 있습니다.
2. 데이터 탐색 및 이해
기능을 준비하거나 모델을 학습하기 전에 데이터를 탐색하여 예측 대상과의 구조, 품질 및 관계를 이해합니다. EDA(예비 데이터 분석) 는 데이터 세트를 요약하고 시각화하여 다운스트림 모델링 결정을 형성하는 분포, 상관 관계, 누락된 값 및 이상값을 표시하는 프로세스입니다.
초기에 학습에서 보류된 유효한 테스트 데이터가 있는지 확인하는 방법을 결정합니다. EDA 중에도 테스트 데이터를 기반으로 모델링 결정을 내리는 것을 조심하세요.
EDA는 나머지 수명 주기를 알리는 질문에 답변합니다.
- 어떤 입력이 대상을 가장 예측하며 서비스 시간에 사용할 수 없는 입력은 무엇입니까?
- 정리 또는 변환이 필요한 값, 이상값 또는 왜곡된 분포가 누락되었나요?
- 데이터 세트가 충분히 크고 대표적이면 대상 패턴을 학습할 수 있나요?
Azure Databricks 대화형, 공동 작업 및 AI 지원 도구를 사용하여 EDA를 간소화합니다. 자연어 채팅, UI 또는 코드를 사용하여 데이터를 탐색하고 실시간 공동 편집 및 Git 기반 코드 공유를 통해 공동 작업합니다.
- Notebook은 탐색, 시각화 및 설명서를 위한 공동 작업 공간을 제공합니다.
- 대시보드는 SQL 및 시각화 기반 탐색을 제공합니다.
- Genie Chat 은 데이터 질문을 위한 전체 페이지 자연어 인터페이스를 제공합니다.
- Genie Code는 완전히 자동화된 EDA를 수행하거나 대화형 도우미 역할을 할 수 있습니다.
3. 데이터 및 기능 준비
데이터를 이해하면 EDA 중에 식별된 원시 원본 및 변환을 ML 모델의 기능으로 전환합니다. 데이터 원본의 속도, 볼륨, 새로 고침 및 소유권을 포함하여 학습 및 서비스를 위한 데이터 파이프라인을 평가합니다. 데이터 엔지니어링(데이터 준비 및 변환)과 기능 엔지니어링(ML 입력 파생) 간의 경계는 유사합니다. Azure Databricks 데이터 엔지니어링과 ML은 Unity 카탈로그에서 동일한 플랫폼 및 거버넌스 계층을 공유하므로 한 팀에서 준비한 데이터를 데이터 이동 또는 중복된 파이프라인 없이 다른 팀의 기능으로 즉시 사용할 수 있습니다.
기존 데이터 및 기능 정의를 검색합니다.
- Unity 카탈로그에서 사용할 수 있는 데이터 및 기능을 탐색합니다. 조직에 관련 모델이 있는 경우 Unity 카탈로그 계보를 사용하여 해당 모델에 사용되는 데이터 원본 및 기능을 검색합니다.
- 작업 영역 검색 을 통해 이미 존재하는 관리되는 데이터, 모델 또는 애플리케이션을 검색할 수 있습니다.
필요에 따라 새 자산을 만들고 관리합니다.
- AI 지원 코드 없는 환경을 위한 Lakeflow Designer를 포함하여 데이터 수집 및 엔지니어링 도구에 대한 자세한 내용은 Databricks를 사용한 데이터 엔지니어링을 참조하세요.
- 기능 저장소를 사용하여 기능을 재사용 가능한 관리형 자산으로 정의하고 관리합니다. 동일한 기능 정의는 일괄 처리 및 실시간 데이터 수집을 지원하고 일괄 처리 및 실시간 서비스를 지원하는 학습 및 프로덕션에 사용됩니다.
Genie Code를 사용하여 Unity 카탈로그를 검색하여 관련 테이블을 검색하고, 기능 변환을 제안하고, 수집 및 기능 파이프라인을 위한 시작 코드를 생성하여 데이터 검색 및 준비를 가속화합니다.
4. 모델 학습 및 실험 추적
데이터 과학 및 ML 애플리케이션은 각각 ML 알고리즘 및 라이브러리, 컴퓨팅 요구 사항 및 워크플로에 대한 자체 요구 사항이 있는 다양한 접근 방식을 사용합니다. Azure Databricks MLflow에서 통합된 실험 추적을 통해 다양한 워크로드에 대해 유연한 환경과 컴퓨팅을 제공합니다.
환경 및 컴퓨팅
기본적으로 대화형 Notebook과 자동화된 작업 모두에 서버리스 컴퓨팅 을 사용합니다. 서버리스 컴퓨팅은 즉시 시작되며 워크로드를 통해 자동으로 확장 및 축소됩니다.
GPU 가속의 경우 서버리스 컴퓨팅에 GPU를 연결한 다음, GPU 학습 및 유추를 위해 미리 구성된 환경인 AI 런타임을 사용합니다.
CPU 및 GPU 워크로드의 경우 Machine Learning Databricks 런타임과 함께 클래식 컴퓨팅을 사용할 수도 있습니다.
ML 라이브러리를 사용하여 이전 환경을 사용자 지정합니다. 종종 ML 애플리케이션에 대해 고도로 사용자 지정된 환경에서 MLflow 추적을 활용하여 종속성을 기록하고 재현성을 확인하며 학습 제공 오차를 방지합니다.
MLflow 추적
Azure Databricks 관리되는 MLflow를 사용하여 실험 및 로깅 모델 메타데이터를 추적합니다.
- 실험에서 프로젝트 로그를 정리하고, 학습 또는 평가를 위해 기록된 런을 사용합니다.
- 각 실행에서 매개 변수, 메트릭 및 아티팩트가 자동으로 또는 수동으로 기록됩니다.
- 실험 중에 MLflow UI의 실행을 비교하여 가장 성능이 뛰어난 구성을 찾습니다.
- MLflow를 사용하여 모델을 로그 하여 전체 출처가 있는 모델 아티팩트( 데이터 세트, 코드 및 이 모델을 생성한 환경)를 저장합니다. 이 메타데이터는 프로덕션에 모델 배포를 간소화하고 감사 및 문제 해결을 간소화합니다.
모델링 시작
Genie Code는 기능 저장소, ML 학습 및 MLflow 추적의 기능 선택을 포함하여 예측 작업에 대한 일반 언어 설명에서 전체 ML Notebook을 생성할 수 있습니다.
또한 Databricks에서 하이퍼 매개 변수 튜닝, 모델 학습 예제 및 Ray에 대한 리소스를 참조하세요.
딥 러닝 및 GPU 가속 클래식 ML 학습은 AI 런타임에 대한 예제 Notebook을 참조하세요.
5. 평가
개발하는 동안 범위 지정 요구 사항에 따라 품질 평가 메트릭을 정의합니다.
- 기본 메트릭은 정확도, AUC, RMSE 또는 도메인별 메트릭과 같은 일반적인 ML 메트릭일 수 있습니다.
- 평가에는 데이터 세그먼트 간 기본 메트릭을 비교하여 측정한 모집단 세그먼트 간 편견 및 공정성과 같은 파생 메트릭도 포함될 수 있습니다.
선택한 ML 라이브러리 또는 프레임워크, MLflow의 기본 제공 메트릭 모듈 또는 사용자 지정 논리를 사용하여 메트릭을 정의합니다. 모든 메트릭의 경우 MLflow의 로그 메트릭은 해당 모델에 연결하기 위해 실행됩니다. 개발 및 학습 중에 정의하는 메트릭은 나중에 프로덕션 모니터링을 위한 메트릭으로 다시 사용할 수 있습니다.
6. 모델 등록, 단계 및 테스트
ML 모델 또는 파이프라인을 학습한 후 모델을 프로덕션으로 승격할 때 거버넌스 및 관리를 간소화하기 위해 Unity 카탈로그의 MLflow 모델 레지스트리 에 등록합니다. 등록된 모델에는 각각 해당 모델을 생성한 원래 학습 실행에 대한 링크가 있는 버전이 있습니다. 모델 버전을 사용하면 안전한 배포 워크플로를 사용할 수 있습니다. 프로덕션으로 승격하기 전에 스테이징에서 새 버전을 테스트하고, 품질이 저하되면 이전 버전으로 롤백하고, 배포된 내용과 시기에 대한 전체 감사 내역을 유지할 수 있습니다.
새 모델 버전이 프로덕션 트래픽을 처리하기 전에 실제와 유사한 조건의 스테이징 환경에서 해당 버전을 테스트하세요.
- 아티팩트 이름을 변경하지 않고 수명 주기 상태를 알리기 위해 후보 모델 버전에 별칭(
Staging,Production)으로 레이블을 지정합니다. - 스테이징 인프라에 대한 통합 테스트를 실행합니다. 서비스 엔드포인트가 시작되고 대기 시간이 요구 사항을 충족하며 출력이 잘 구성되는지 확인합니다.
- 프로덕션 데이터에 대한 A/B 또는 섀도 테스트를 수행하여 전체 중단 전에 성능의 유효성을 검사합니다.
- 평가 결과를 바탕으로 이해관계자의 승인을 받습니다.
이 설명은 배포 사례 및 MLOps(ML 작업)를 지나치게 단순화합니다. Azure Databricks MLOps 워크플로의 MLOps에 대해 자세히 알아봅니다.
7. 프로덕션에 배포
유효성 검사를 준비한 후 모델을 승격하고 프로덕션에 배포하여 실제 입력에 대한 예측을 생성합니다. Azure Databricks 두 가지 기본 서비스 패턴을 지원합니다.
- 실시간 서비스: 트랜잭션 시 사기 차단, 라이브 개인 설정 또는 동적 가격 책정과 같이 대기 시간이 짧은 의사 결정이 필요한 사용 사례에 모델 서비스를 사용하여 짧은 대기 시간 REST 엔드포인트로 모델을 배포합니다.
-
일괄 처리 유추:
ai_query모델 서비스 엔드포인트로 배포된 사용자 지정 모델에 대해 효율적인 일괄 처리 유추를 제공합니다. Apache Spark UDF(예) 또는mlflow.pyfunc일괄 처리 유추에 사용자 지정 코드를 사용할 수도 있습니다. Batch 파이프라인은 다운스트림 애플리케이션, 대시보드 또는 파이프라인에 대한 결과를 델타 테이블에 씁니다. 이 패턴은 일일 예측, 야간 권장 사항 새로 고침 및 기타 정기적인 작업을 처리합니다.
두 패턴 모두 동일한 학습된 모델 아티팩트 사용 한 번 학습하고 동일한 거버넌스 및 계보를 사용하여 동일한 등록된 버전에서 일괄 처리 또는 실시간 서비스로 배포합니다.
Genie Code는 배포를 위한 코드를 생성하고 서비스 문제를 해결하고, 엔드포인트 동작을 설명하고, 모델을 업데이트하거나 다시 배포해야 하는 경우 반복을 가속화하는 데 도움이 될 수 있습니다.
8. 모니터링 및 재학습
사용자 동작이 이동하거나 데이터 파이프라인이 변경됨에 따라 프로덕션 ML 시스템은 시간이 지남에 따라 저하할 수 있습니다. 프로덕션 데이터 및 모델 예측을 지속적으로 모니터링합니다.
- 배포된 모델의 입력 및 출력을 기록합니다. 실시간 서비스를 위해 유추 테이블 은 모델 코드를 변경하지 않고 자동 로깅을 제공합니다. 일괄 처리의 경우 파이프라인은 Unity 카탈로그에서 관리하는 델타 테이블에서 자연스럽게 읽고 씁니다.
- 이러한 로그를 데이터 품질 모니터링에 공급하여 시간에 따른 데이터 품질, 기능 드리프트 및 예측 분포를 추적합니다. 근거 또는 피드백 데이터가 있는 경우 이 데이터를 서비스 로그와 조인하여 예측 품질 메트릭을 계산할 수 있습니다.
- 모니터링 UI 및 변칙 검색 경고를 사용하여 품질이 눈에 띄게 저하되기 전에 에스컬레이션 또는 재학습을 트리거합니다.
Azure Databricks MLOps 워크플로에서 프로덕션 ML에 대해 자세히 알아봅니다.
추가 리소스
- Azure Databricks 데이터 과학 및 ML 기능 - 이 수명 주기의 각 단계에서 Azure Databricks 기능
- Azure Databricks의 MLOps 워크플로 - 프로덕션 MLOps 워크플로 참조
- Unity 카탈로그에서 모델 수명 주기 관리 - Unity 카탈로그 의 모델 버전 관리 및 수명 주기 관리