Amazon Web Services 한국 블로그
Amazon SageMaker Pipelines – 기계 학습 프로젝트에 DevOps 자동 배포 기능 제공
오늘 Amazon SageMaker의 새로운 기능인 Amazon SageMaker Pipelines를 출시합니다. 이 기능을 사용하면 데이터 사이언티스트 및 엔지니어가 전체 기계 학습 파이프라인을 쉽게 구축하고 자동화하여 확장할 수 있습니다.
기계 학습(ML)은 본질적으로 실험적이며 예측할 수 없습니다. 여러 가지 많은 방법으로 며칠 또는 몇 주에 걸쳐 데이터를 탐색하고 처리하며, 귀중한 보석을 찾기 위해 반짝이는 정동석을 깨뜨리려고 합니다. 그리고 다양한 알고리즘과 파라미터로 실험하며 최고 정확도의 검색을 바탕으로 많은 모델을 훈련하고 최적화합니다. 이 프로세스는 보통 서로 종속된 단계를 포함하며, 이러한 단계를 수동으로 관리하기란 꽤 복잡할 수 있습니다. 특히 모델 계보 추적은 어려울 수 있고 감사 가능성 및 거버넌스를 저해할 수 있습니다. 마지막으로 상위 모델을 배포하고 참조 테스트 세트를 기반으로 평가합니다. 드디어 끝일까요? 아직 아닙니다. 새로운 아이디어를 시도하거나 새로운 데이터에서 모델을 주기적으로 다시 훈련하기 위해 몇 번이고 반복할 수 있습니다.
ML이 흥미롭긴 하지만, 많은 반복 작업을 피할 수는 없습니다. 소규모 프로젝트도 프로덕션을 정상적으로 진행하기 전에 수백 개의 단계를 거쳐야 합니다. 시간이 갈수록 이러한 작업 때문에 프로젝트의 재미와 흥미가 떨어지고 실수와 인적 오류가 늘어날 수 있습니다.
많은 ML 팀이 수동 작업을 줄이고 추적 기능을 개선하기 위해 DevOps 철학을 채택하고 지속적 통합 및 지속적 전달(CI/CD)을 위한 도구와 프로세스를 구현했습니다. 올바른 방향으로 나아가는 단계이긴 하지만, 직접 도구를 작성하면 처음 예상했던 것보다 더 많은 소프트웨어 엔지니어링과 인프라 작업이 필요한 복잡한 프로젝트가 될 수 있습니다. 그리고 실제 ML 프로젝트에서 소중한 시간과 리소스를 앗아가고 혁신의 속도가 느려질 수 있습니다. 결국 일부 팀은 모델 관리, 승인 및 배포를 위해 수동 작업으로 돌아가기도 합니다.
Amazon SageMaker Pipelines 소개
쉽게 말하면, Amazon SageMaker Pipelines는 ML 프로젝트에 가장 뛰어난 DevOps 사례를 제공합니다. 이 새로운 기능을 사용하면 데이터 사이언티스트와 ML 개발자가 신뢰할 수 있는 자동화된 전체 ML 파이프라인을 쉽게 생성할 수 있습니다. 평상시 SageMaker를 사용하듯이, 모든 인프라가 완전관리형으로 제공되므로, 사용자 측에서 별도의 작업이 필요하지 않습니다.
Care.com은 고품질 패밀리 케어 서비스를 검색하고 관리하는 뛰어난 플랫폼입니다. Care.com의 데이터 사이언스 관리자인 Clemens Tummeltshammer는 이렇게 말합니다. “개별 가정의 경제력이 국가 GDP 수준까지 성장하려면 공급이 수요와 일치하는 강력한 케어 서비스 산업이 필요합니다. 그래서 Amazon SageMaker Feature Store와 Amazon SageMaker Pipelines를 알게 되어 정말 기뻤습니다. 이를 바탕으로 데이터 준비에서 배포에 이르기까지 확장 가능한 전체 기계 학습(ML) 모델 파이프라인을 구축하는 데 사용할 수 있는 준비된 데이터의 일관된 세트를 활용하여 데이터 사이언스 및 개발 팀에서 규모를 보다 효율적으로 조정할 수 있을 것이기 때문입니다. 새로 발표된 Amazon SageMaker의 기능을 통해 다양한 애플리케이션에 대한 ML 모델의 개발과 배포를 가속화할 수 있으므로, 고객도 더 빠른 실시간 추천을 통해 정보에 기반한 의사결정을 보다 효율적으로 내릴 수 있습니다.“
Amazon SageMaker Pipelines의 기본 구성 요소(파이프라인, 모델 레지스트리 및 MLOps 템플릿)에 대해 자세히 알아보겠습니다.
파이프라인 – 모델 구축 파이프라인은 간단한 Python SDK로 정의됩니다. 파이프라인은 Amazon SageMaker Processing 또는 Amazon SageMaker Data Wrangler에서 데이터 준비, 모델 훈련, 실시간 엔드포인트에 모델 배포 또는 배치 변환과 같이 Amazon SageMaker에서 사용할 수 있는 작업을 포함할 수 있습니다. 또한 훈련 전에 또는 모델을 배포한 후에 편향을 탐지하기 위해 Amazon SageMaker Clarify를 파이프라인에 추가할 수도 있습니다. 마찬가지로, Amazon SageMaker Model Monitor를 추가하여 데이터 및 예측 품질 문제를 탐지할 수 있습니다.
모델 구축 파이프라인이 시작되면 CI/CD 파이프라인으로 실행됩니다. 모든 단계가 기록되고 추적 기능 및 디버깅 목적으로 자세한 로깅 정보를 사용할 수 있습니다. 물론, Amazon SageMaker Studio에서 파이프라인을 시각화하고 실시간으로 다양한 실행을 추적할 수 있습니다.
모델 레지스트리 – 모델 레지스트리를 사용하면 모델을 추적하고 카탈로그화할 수 있습니다. SageMaker Studio에서는 모델 기록을 쉽게 확인하고 버전을 나열 및 비교하며 모델 평가 지표와 같은 메타데이터를 추적할 수 있습니다. 프로덕션에 배포할 버전이나 배포하지 않을 버전을 정의할 수도 있습니다. 실제로 승인을 받으면 모델 배포를 자동으로 트리거하는 파이프라인을 구축할 수 있습니다. 모델 레지스트리는 모델 계보를 추적하는 데 매우 유용하기 때문에 모델 거버넌스를 개선하며 규정 준수 상태를 강화할 수 있습니다.
MLOps 템플릿 – SageMaker Pipelines는 널리 사용되는 파이프라인(구축/훈련/배포, 배포 전용 등)에 대한 기본 제공 CI/CD 템플릿 모음을 포함합니다. 또한 팀에서 템플릿을 쉽게 검색하고 배포할 수 있도록 고유한 템플릿을 추가하고 게시할 수 있습니다. 템플릿을 사용하면 많은 시간을 절약할 수 있을 뿐만 아니라, ML 팀이 인프라를 관리하지 않고도 표준 프로세스를 사용하여 실험에서 배포까지 쉽게 협업할 수 있습니다. 또한 템플릿을 통해 Ops 팀은 필요에 따라 단계를 사용자 지정하고 문제 해결을 위한 완벽한 가시성을 제공할 수 있습니다.
간단한 데모를 보여드리겠습니다!
Amazon SageMaker Pipelines에서 전체 파이프라인 구축
SageMaker Studio를 열고 [구성 요소(Components)] 탭을 선택하고 [프로젝트(Projects)] 보기를 선택합니다. 그러면 기본 제공 프로젝트 템플릿 목록이 표시됩니다. 하나를 선택하여 모델을 구축하고 훈련하며 배포합니다.
이제 프로젝트에 이름을 지정하고 생성합니다.
몇 초 후에 프로젝트가 준비됩니다. AWS CodeCommit에 호스팅된 2개의 Git 리포지토리가 포함되어 있습니다. 하나는 모델 훈련용이고 하나는 모델 배포용입니다.
첫 번째 리포지토리는 데이터 처리, 모델 훈련, 모델 평가 및 정확도를 기반으로 하는 조건부 모델 등록과 같은 다단계 모델 구축 파이프라인을 생성하는 스캐폴딩 코드를 제공합니다. pipeline.py
파일을 보면, 이 파이프라인은 잘 알려진 Abalone 데이터 세트에서 XGBoost 알고리즘을 사용하여 선형 회귀 모델을 훈련합니다. 또한 이 리포지토리는 AWS CodePipeline 및 AWS CodeBuild에서 파이프라인을 자동으로 실행하는 데 사용하는 빌드 사양 파일을 포함합니다.
마찬가지로, 두 번째 리포지토리는 모델 배포를 위한 코드 및 구성 파일과 품질 게이트를 통과하는 데 필요한 테스트 스크립트를 포함합니다. 이 작업은 스테이징 및 프로덕션에서 모델 엔드포인트를 생성하기 위해 AWS CloudFormation 템플릿을 실행하는 AWS CodePipeline 및 AWS CodeBuild에도 기반합니다.
2개의 파란색 링크를 클릭하면 리포지토리를 로컬로 복제합니다. 그러면 파이프라인의 첫 번째 실행이 트리거됩니다.
몇 분 후 파이프라인이 실행됩니다. [파이프라인(Pipelines)] 보기로 전환하면 해당 단계를 시각화할 수 있습니다.
훈련 단계를 클릭하면 모델의 평균 제곱근 오차(RMSE) 지표를 볼 수 있습니다.
RMSE가 조건부 단계에서 정의한 임계값보다 낮기 때문에 아래와 같이 모델이 모델 레지스트리에 추가됩니다.
쉽게 이해할 수 있도록 등록 단계에서 모델 상태를 “승인됨”으로 설정하여 동일한 계정의 실시간 엔드포인트에 대한 배포를 자동으로 트리거합니다. 몇 초 안에 모델이 배포 중임을 알 수 있습니다.
또는 “수동 승인 대기 중” 상태로 모델을 등록할 수 있습니다. 그러면 모델을 수동으로 검토하고 승인할 때까지 배포가 차단됩니다. 모델 레지스트리는 교차 계정 배포를 지원하므로 계정 사이에서 복사하지 않고도 다른 계정에 쉽게 배포할 수도 있습니다.
몇 분 후 엔드포인트가 표시되며, 이를 사용하여 모델을 테스트할 수 있습니다.
이 모델이 예상대로 작동하는지 확인한 후에 MLOps 팀에 알리고 프로덕션에 모델을 배포할 것을 요청할 수 있습니다.
MLOps를 대신하여 AWS CodePipeline 콘솔을 열고 배포가 실제로 승인 대기 중임을 확인합니다.
그런 다음, 모델의 배포를 승인합니다. 그러면 파이프 라인의 마지막 단계가 트리거됩니다.
다시 데이터 사이언티스트 역할로 돌아가 SageMaker Studio에서 모델이 배포 중임을 확인합니다. 작업이 끝났습니다!
시작하기
보다시피, Amazon SageMaker Pipelines를 사용하면 데이터 사이언스 및 MLOps 팀이 친숙한 도구를 사용하여 쉽게 협업할 수 있습니다. 이제 전보다 더 빠르게 프로덕션에서 고품질 모델을 제공하는 자동화된 강력한 ML 파이프라인을 생성 및 실행할 수 있습니다.
SageMaker를 지원하는 모든 상용 리전에서 SageMaker Pipelines를 사용하기 시작할 수 있습니다. MLOps 기능은 CodePipeline도 지원하는 리전에서 사용할 수 있습니다.
샘플 노트북을 사용하여 시작해볼 수 있습니다. 사용해보시고 의견을 알려주세요. 언제든지 AWS 지원 담당자나 SageMaker에 대한 AWS 포럼을 통해 피드백을 보내 주시기 바랍니다.
초기 테스트에 귀중한 도움을 주신 동료, Urvashi Chowdhary에게 특별한 감사를 전합니다.