Azure에서 클라우드 규모 분석을 사용하는 데이터 과학 프로젝트에 대한 모범 사례
Microsoft Azure에서 클라우드 규모 분석을 사용하여 데이터 과학 프로젝트를 운영하기 위한 모범 사례를 권장합니다.
템플릿 개발
데이터 과학 프로젝트에 대한 서비스 집합을 번들로 묶는 템플릿을 개발합니다. 서비스 세트를 번들로 묶는 템플릿을 사용하여 다양한 데이터 과학 팀의 사용 사례 간에 일관성을 제공합니다. 템플릿 리포지토리의 형태로 일관된 청사진을 개발하는 것이 좋습니다. 엔터프라이즈 내의 다양한 데이터 과학 프로젝트에 이 리포지토리를 사용하여 배포 시간을 단축할 수 있습니다.
데이터 과학 템플릿에 대한 지침
다음 지침에 따라 조직에 대한 데이터 과학 템플릿을 개발합니다.
IaC(Infrastructure as code) 템플릿 집합을 개발하여 Azure Machine Learning 작업 영역을 배포합니다. 키 자격 증명 모음, 스토리지 계정, 컨테이너 레지스트리 및 Application Insights와 같은 리소스를 포함합니다.
컴퓨팅 인스턴스, 컴퓨팅 클러스터 및 Azure Databricks와 같은 이러한 템플릿에 데이터 저장소 및 컴퓨팅 대상의 설정을 포함합니다.
배포 모범 사례
실시간
- 템플릿 및 Azure Cognitive Services에 Azure Data Factory 또는 Azure Synapse 배포를 포함합니다.
- 템플릿은 데이터 과학 탐색 단계 및 모델의 초기 운영화를 실행하는 데 필요한 모든 도구를 제공해야 합니다.
초기 설정에 대한 고려 사항
경우에 따라 조직의 데이터 과학자는 필요에 따라 신속하게 분석할 수 있는 환경이 필요할 수 있습니다. 이 상황은 데이터 과학 프로젝트가 공식적으로 설정되지 않은 경우에 일반적입니다. Azure 내에서 교차 청구에 필요할 수 있는 프로젝트 관리자, 비용 코드 또는 비용 센터가 누락될 수 있으며, 그 이유는 필요한 요소가 승인을 받아야 하기 때문일 수 있습니다. 조직 또는 팀의 사용자는 데이터를 이해하고 프로젝트의 타당성을 평가하기 위해 데이터 과학 환경에 액세스해야 할 수 있습니다. 또한 일부 프로젝트에는 적은 수의 데이터 제품으로 인해 전체 데이터 과학 환경이 필요하지 않을 수 있습니다.
다른 경우에는 전용 환경, 프로젝트 관리, 비용 코드 및 비용 센터를 갖춘 전체 데이터 과학 프로젝트가 필요할 수 있습니다. 전체 데이터 과학 프로젝트는 탐색 단계가 성공한 후 공동 작업하고 결과를 공유하며 모델을 운영해야 하는 여러 팀 구성원에게 유용합니다.
설치 프로세스
템플릿은 설정된 후 프로젝트별로 배포해야 합니다. 각 프로젝트는 개발 및 프로덕션 환경을 분리하기 위해 두 개 이상의 인스턴스를 받아야 합니다. 프로덕션 환경에서는 개인에게 액세스 권한이 없어야 하며, 지속적인 통합 또는 지속적인 개발 파이프라인 및 서비스 주체를 통해 모든 것을 배포해야 합니다. Azure Machine Learning은 작업 영역 내에서 세분화된 역할 기반 액세스 제어 모델을 제공하지 않으므로 이러한 프로덕션 환경 원칙은 중요합니다. 특정 실험, 엔드포인트 또는 파이프라인 집합에 대한 사용자 액세스를 제한할 수 없습니다.
동일한 액세스 권한은 일반적으로 다양한 유형의 아티팩트에 적용됩니다. 프로덕션 파이프라인 또는 작업 영역 내의 엔드포인트가 삭제되지 않도록 프로덕션과 개발을 분리하는 것이 중요합니다. 템플릿과 함께 데이터 제품 팀에게 새 환경을 요청할 수 있는 옵션을 제공하기 위한 프로세스를 빌드해야 합니다.
프로젝트별로 Azure Cognitive Services와 같은 다양한 AI 서비스를 설정하는 것이 좋습니다. 프로젝트별로 다른 AI 서비스를 설정하면 각 데이터 제품 리소스 그룹에 대한 배포가 수행됩니다. 이 정책은 데이터 액세스 관점에서 명확한 분리를 만들고 잘못된 팀의 무단 데이터 액세스 위험을 완화합니다.
스트리밍 시나리오
실시간 및 스트리밍 사용 사례의 경우 축소된 상태의 Azure Kubernetes Service (AKS)배포를 테스트해야 합니다. 테스트는 프로덕션 AKS 또는 컨테이너용 Azure App Service에 배포하기 전에 비용을 절감하기 위해 개발 환경에 있을 수 있습니다. 간단한 입력 및 출력 테스트를 수행하여 서비스가 예상대로 응답하는지 확인해야 합니다.
다음으로, 원하는 서비스에 모델을 배포할 수 있습니다. 이 배포 컴퓨팅 대상은 AKS 클러스터의 프로덕션 워크로드에 일반적으로 사용 가능하고 권장되는 유일한 대상입니다. GPU(그래픽 처리 장치) 또는 필드 프로그래밍 가능한 게이트 배열 지원이 필요한 경우 이 단계가 더 필요합니다. 이러한 하드웨어 요구 사항을 지원하는 다른 네이티브 배포 옵션은 현재 Azure Machine Learning에서 사용할 수 없습니다.
Azure Machine Learning에는 AKS 클러스터에 대한 일대일 매핑이 필요합니다. Azure Machine Learning 작업 영역에 대한 모든 새 연결은 AKS와 Azure Machine Learning 간의 이전 연결을 끊습니다. 이러한 제한이 완화되면 중앙 AKS 클러스터를 공유 리소스로 배포하고 해당 작업 영역에 연결하는 것이 좋습니다.
모델을 프로덕션 AKS로 이동하기 전에 스트레스 테스트를 수행해야 하는 경우 또 다른 중앙 테스트 AKS 인스턴스를 호스트해야 합니다. 테스트 환경은 프로덕션 환경과 동일한 컴퓨팅 리소스를 제공하여 결과가 프로덕션 환경과 최대한 유사하도록 해야 합니다.
일괄 처리 시나리오
모든 사용 사례에 AKS 클러스터 배포가 필요한 것은 아닙니다. 대용량 데이터 양이 정기적으로 점수 매기기만 필요하거나 이벤트를 기반으로 하는 경우 사용 사례에는 AKS 클러스터 배포가 필요하지 않습니다. 예를 들어 대용량 데이터 양은 데이터가 특정 스토리지 계정에 떨어질 때를 기준으로 할 수 있습니다. 이러한 유형의 시나리오에서 Azure Machine Learning 파이프라인 및 Azure Machine Learning 컴퓨팅 클러스터를 배포에 사용해야 합니다. 이러한 파이프라인은 Data Factory에서 오케스트레이션 및 실행되어야 합니다.
올바른 컴퓨팅 리소스 식별
AZURE Machine Learning에서 모델을 AKS에 배포하기 전에 사용자는 각 모델에 할당해야 하는 CPU, RAM 및 GPU와 같은 리소스를 지정해야 합니다. 이러한 매개 변수를 정의하는 것은 복잡하고 지루한 프로세스일 수 있습니다. 적절한 매개 변수 집합을 식별하려면 다양한 구성으로 스트레스 테스트를 수행해야 합니다. 다양한 리소스 할당 조합을 테스트하고 식별된 대기 시간 및 RTT(왕복 시간)를 사용하여 최적의 조합을 권장하는 장기 실행 작업인 Azure Machine Learning의 모델 프로파일링 기능으로 이 프로세스를 간소화할 수 있습니다. 이 정보는 AKS에서 실제 모델 배포를 지원할 수 있습니다.
Azure Machine Learning에서 모델을 안전하게 업데이트하려면 팀은 제어된 롤아웃 기능(미리 보기)을 사용하여 가동 중지 시간을 최소화하고 모델의 REST 엔드포인트를 일관되게 유지해야 합니다.
MLOps에 대한 모범 사례 및 워크플로
데이터 과학 리포지토리에 샘플 코드 포함
팀에 특정 아티팩트와 모범 사례가 있는 경우 데이터 과학 프로젝트를 단순화하고 가속화할 수 있습니다. Azure Machine Learning 및 데이터 제품 환경의 각 도구를 사용하는 동안 모든 데이터 과학 팀에서 사용할 수 있는 아티팩트 만들기를 권장합니다. 데이터 및 기계 학습 엔지니어는 아티팩트 만들기 및 제공해야 합니다.
이러한 아티팩트에는 다음이 포함되어야 합니다.
다음을 설명하는 샘플 노트북
- 데이터 제품을 로드, 탑재 및 사용합니다.
- 메트릭 및 매개 변수를 기록합니다.
- 컴퓨팅 클러스터에 학습 작업을 제출합니다.
운영화에 필요한 아티팩트:
- 샘플 Azure Machine Learning 파이프라인
- 샘플 Azure 파이프라인
- 파이프라인을 실행하는 데 필요한 추가 스크립트
문서
잘 디자인된 아티팩트를 활용하여 파이프라인을 운영하세요.
아티팩트가 데이터 과학 프로젝트의 탐색 및 운영화 단계를 가속화할 수 있습니다. DevOps 포크 전략은 모든 프로젝트에서 이러한 아티팩트를 확장하는 데 도움이 될 수 있습니다. 이 설정은 Git 사용을 촉진하므로 사용자와 전체 자동화 프로세스는 제공된 아티팩트를 활용할 수 있습니다.
팁
Azure Machine Learning 샘플 파이프라인은 Python SDK(소프트웨어 개발자 키트) 또는 YAML 언어를 기반으로 빌드되어야 합니다. Azure Machine Learning 제품 팀이 현재 새 SDK 및 CLI(명령줄 인터페이스)에서 작업하고 있으므로 새 YAML 환경은 더 미래 지향적일 것입니다. Azure Machine Learning 제품 팀은 YAML이 Azure Machine Learning 내의 모든 아티팩트 정의 언어로 사용될 것이라고 확신합니다.
샘플 파이프라인은 각 프로젝트에 대해 기본으로 작동하지 않지만 기준선으로 사용할 수 있습니다. 프로젝트에 대한 샘플 파이프라인을 조정할 수 있습니다. 파이프라인에는 각 프로젝트의 가장 관련성이 큰 측면이 포함되어야 합니다. 예를 들어 파이프라인은 컴퓨팅 대상을 참조하고, 데이터 제품을 참조하고, 매개 변수를 정의하고, 입력을 정의하고, 실행 단계를 정의할 수 있습니다. Azure Pipelines에 대해 동일한 프로세스를 수행해야 합니다. Azure Pipelines는 Azure Machine Learning SDK 또는 CLI도 사용해야 합니다.
파이프라인은 다음의 과정을 설명해야 합니다.
- DevOps 파이프라인 내에서 작업 영역에 연결합니다.
- 필요한 컴퓨팅을 사용할 수 있는지 확인합니다.
- 작업 제출
- 모델을 등록하고 배포합니다.
아티팩트는 항상 모든 프로젝트에 적합하지 않으며 사용자 지정이 필요할 수 있지만, 기반을 두면 프로젝트의 운영화 및 배포 속도가 빨라질 수 있습니다.
MLOps 리포지토리 구조
사용자가 아티팩트 찾기 및 저장 위치를 추적하지 못하는 상황이 있을 수 있습니다. 이러한 상황을 방지하려면 표준 리포지토리에 대한 최상위 폴더 구조를 통신하고 생성하는 데 더 많은 시간을 요청해야 합니다. 모든 프로젝트는 폴더 구조를 따라야 합니다.
메모
이 섹션에서 언급한 개념은 온-프레미스, Amazon Web Services, Palantir 및 Azure 환경에서 사용할 수 있습니다.
MLOps(기계 학습 작업) 리포지토리에 대해 제안된 최상위 폴더 구조는 다음 다이어그램에 나와 있습니다.
다음 용도는 리포지토리의 각 폴더에 적용됩니다.
폴더 | 목적 |
---|---|
.cloud |
이 폴더에 클라우드별 코드 및 아티팩트 저장 아티팩트에는 컴퓨팅 대상 정의, 작업, 등록된 모델 및 엔드포인트를 포함하여 Azure Machine Learning 작업 영역에 대한 구성 파일이 포함됩니다. |
.ado/.github |
이 폴더에 YAML 파이프라인 또는 코드 소유자와 같은 Azure DevOps 또는 GitHub 아티팩트를 저장합니다. |
code |
이 폴더에 프로젝트의 일부로 개발된 실제 코드를 포함합니다. 이 폴더에는 Python 패키지와 기계 학습 파이프라인의 각 단계에 사용되는 일부 스크립트가 포함될 수 있습니다. 이 폴더에서 수행해야 하는 개별 단계를 구분하는 것이 좋습니다. 일반적인 단계는 전처리, 모델 학습, 및 모델 등록입니다. Conda 종속성, Docker 이미지 또는 각 폴더에 대한 다른 항목과 같은 종속성을 정의합니다. |
docs |
설명서 용도로 이 폴더를 사용합니다. 이 폴더는 프로젝트를 설명하는 Markdown 파일 및 이미지를 저장합니다. |
pipelines |
이 폴더의 YAML 또는 Python에 Azure Machine Learning 파이프라인 정의를 저장합니다. |
tests |
이 폴더의 프로젝트 초기에 버그 및 문제를 검색하기 위해 실행해야 하는 단위 및 통합 테스트를 작성합니다. |
notebooks |
이 폴더를 사용하여 Jupyter 노트북을 실제 Python 프로젝트에서 분리합니다. 폴더 내에서 각 개인은 Git 병합 충돌을 방지하고 노트북 내용을 체크인할 수 있도록 하위 폴더를 갖춰야 합니다. |