개념 - AI 및 기계 학습 워크플로를 위한 MLOps(기계 학습 작업)
이 문서에서는 어떤 유형의 사례 및 도구가 관련되어 있는지, AKS(Azure Kubernetes Service)에서 AI 및 기계 학습 워크플로를 단순화하고 가속화할 수 있는 방법을 포함하여 MLOps(기계 학습 작업)에 대해 알아봅니다.
MLOps란?
MLOps(기계 학습 작업)에는 데이터 과학자, IT 운영 및 비즈니스 이해 관계자 간의 협업을 용이하게 하여 기계 학습 모델이 효율적으로 개발, 배포 및 유지 관리되도록 하는 사례가 포함됩니다. MLOps는 엔드 투 엔드 기계 학습 수명 주기를 자동화하고 간소화하는 것을 목표로 기계 학습 프로젝트에 DevOps 원칙을 적용합니다. 이 수명 주기에는 모델 학습, 패키징, 유효성 검사, 배포, 모니터링 및 재학습이 포함됩니다.
MLOps를 사용하려면 여러 역할과 도구가 함께 효과적으로 작동해야 합니다. 데이터 과학자는 내부 루프라고 하는 모델 학습과 관련된 작업에 집중합니다. 기계 학습 엔지니어와 IT 운영 팀은 외부 루프를 처리하며, 여기서 DevOps 사례를 적용하여 모델을 패키지, 유효성 검사, 배포 및 모니터링합니다. 모델에 미세 조정 또는 재학습이 필요한 경우 프로세스는 내부 루프로 다시 반복됩니다.
MLOps 파이프라인
MLOps 파이프라인은 순차적으로 또는 병렬로 배포되는 다양한 도구 및 마이크로 서비스를 활용할 수 있습니다. 다음은 다음 모범 사례를 구현하여 오버헤드를 줄이고 더 빠른 반복을 가능하게 하는 파이프라인의 주요 구성 요소 예제입니다.
- 애플리케이션으로 흐르는 새 데이터에 대한 구조화되지 않은 데이터 저장소
- 구조화된 미리 처리된 데이터를 저장하고 쿼리할 벡터 데이터베이스
- 데이터 수집 및 인덱싱 프레임워크
- 벡터 수집 및/또는 모델 재학습 워크플로
- 메트릭 수집 및 경고 도구(모델 성능 추적, 수집된 데이터 볼륨 등)
- 수명 주기 관리 도구
DevOps 및 MLOps
DevOps는 강력하고 재현 가능한 애플리케이션을 만들 수 있는 도구와 사례의 조합입니다. DevOps를 사용하는 목표는 최종 사용자에게 신속하게 가치를 제공하는 것입니다. 최종 사용자에게 가치를 제공하기 위해 강력하고 재현 가능한 모델을 만들고, 배포하고, 모니터링하는 것이 MLOps의 주요 목표입니다.
MLOps에는 다음 세 가지 프로세스가 필요합니다.
- EDA(예비 데이터 분석), 기능 엔지니어링 및 모델 학습 및 튜닝을 포함하여 데이터 과학자가 담당하는 기계 학습 워크로드 .
- 배포를 위한 모델 계획, 개발, 테스트 및 패키징을 비롯한 소프트웨어 개발 사례
- 릴리스, 리소스 구성 및 모델 모니터링을 포함하여 프로덕션 환경에서 모델을 배포하고 유지 관리하는 운영 측면입니다.
MLOps에 적용되는 DevOps 원칙
MLOps는 DevOps의 몇 가지 원칙을 활용하여 자동화, CI/CD(지속적인 통합 및 전달), 소스 제어, Agile 계획 및 IaC(Infrastructure as Code)와 같은 기계 학습 수명 주기를 향상시킵니다.
Automation
작업을 자동화하면 수동 오류를 줄이고 효율성을 높이며 ML 수명 주기 전반에 걸쳐 일관성을 유지할 수 있습니다. 자동화는 데이터 수집, 모델 학습, 배포 및 모니터링을 비롯한 다양한 단계에 적용할 수 있습니다. 자동화를 통해 AI 파이프라인에서 자동 관리 조치를 적용하여 조직의 정책에 대한 데이터 준수를 보장할 수도 있습니다.
예를 들어 파이프라인은 다음을 자동화할 수 있습니다.
- 일정한 시간 간격으로 또는 애플리케이션에서 특정 양의 새 데이터가 수집되는 경우 모델 튜닝/재학습
- 다른 데이터 하위 집합에서 미세 조정 또는 재학습을 시작하기 위한 성능 저하 검색
- 안전한 보안 사례를 보장하기 위해 외부 컨테이너 레지스트리에서 가져온 기본 컨테이너 이미지에 대한 CVE(일반적인 취약성 및 노출) 검사입니다.
CI(연속 통합)
연속 통합은 모델 개발 프로세스의 생성 및 확인 측면을 다룹니다. CI의 목표는 코드를 만들고 배포 전에 코드와 모델의 품질을 확인하는 것입니다. 여기에는 모델이 예상대로 수행되고 품질 표준을 충족하는지 확인하기 위한 다양한 샘플 데이터 집합에 대한 테스트가 포함됩니다.
MLOps에서 CI에는 다음이 포함될 수 있습니다.
- Jupyter Notebook의 예비 코드를 Python 또는 R 스크립트로 리팩터링합니다.
- 누락 또는 오류 값에 대한 새 입력 데이터의 유효성을 검사합니다.
- 엔드 투 엔드 파이프라인의 단위 테스트 및 통합 테스트입니다.
Linting 및 단위 테스트를 수행하려면 Azure DevOps 또는 GitHub Actions의 Azure Pipelines와 같은 자동화 도구를 사용할 수 있습니다.
CD(지속적인 업데이트)
지속적인 업데이트에는 프로덕션 환경에서 모델을 안전하게 배포하는 데 필요한 단계가 포함됩니다. 첫 번째 단계는 개발 및 테스트 환경과 같은 사전 프로덕션 환경에서 모델을 패키지하고 배포하는 것입니다. 매개 변수, 하이퍼 매개 변수 및 기타 모델 아티팩트 이식성은 이러한 환경을 통해 코드를 승격할 때 유지 관리해야 하는 중요한 측면입니다. 이 이식성은 LLM(대규모 언어 모델) 및 안정적인 확산 모델에서 특히 중요합니다. 모델이 단위 테스트 및 QA(품질 보증) 테스트를 통과하면 프로덕션 환경에서 배포를 승인할 수 있습니다.
소스 컨트롤
소스 제어 또는 버전 제어는 코드 및 모델의 변경 내용을 관리하는 데 필수적입니다. ML 시스템에서는 데이터 버전 관리, 코드 버전 관리 및 모델 버전 관리라고 하며, 이를 통해 기능 간 팀이 효과적으로 공동 작업하고 시간에 따른 변경 내용을 추적할 수 있습니다. Azure DevOps의 Azure Repos 또는 GitHub 리포지토리와 같은 Git 기반 소스 제어 시스템을 사용하면 프로그래밍 방식으로 변경 기록을 유지하고, 이전 버전으로 되돌리고, 다양한 실험에 대한 분기를 관리할 수 있습니다.
Agile 계획
Agile 계획에는 특정 작업을 완료하기 위한 짧은 시간 프레임인 스프린트로 작업을 격리하는 작업이 포함됩니다. 이 접근 방식을 통해 팀은 변경 내용에 신속하게 적응하고 모델에 증분 개선 사항을 제공할 수 있습니다. 모델 학습은 진행 중인 프로세스일 수 있으며 Agile 계획은 프로젝트 범위를 지정하고 더 나은 팀 맞춤을 가능하게 하는 데 도움이 될 수 있습니다.
Azure DevOps의 Azure Boards 또는 GitHub 문제와 같은 도구를 사용하여 Agile 계획을 관리할 수 있습니다.
IaC(Infrastructure as Code)
인프라를 코드로 사용하여 모델을 학습, 배포 및 제공하는 데 필요한 인프라를 반복하고 자동화합니다. ML 시스템에서 IaC는 코드의 특정 작업 유형에 필요한 적절한 Azure 리소스를 단순화하고 정의하는 데 도움이 되며 코드는 리포지토리에서 유지 관리됩니다. 이를 통해 필요에 따라 인프라를 버전 제어하고 리소스 최적화, 비용 효율성 등을 변경할 수 있습니다.
다음 단계
AKS의 지능형 애플리케이션에서 MLOps에 대한 모범 사례에 대해 알아보려면 다음 문서를 확인하세요.
Azure Kubernetes Service