3부 - 간소화된 MLOps 파이프라인 구축(CI/CT/CD)
이 기사에서는 자동화된 모델 재교육, 구축 및 비용 최적화에 초점을 맞춰 AWS 서비스로 MLOps 파이프라인을 구축하는 방법을 안내합니다.
-
작성자: *
Jian Jian(Ken), NetApp 수석 데이터 및 응용 과학자
== 소개
이 자습서에서는 다양한 AWS 서비스를 활용하여 지속적인 통합(CI), 지속적인 교육(CT) 및 지속적인 배포(CD)를 포함한 간단한 MLOps 파이프라인을 구축하는 방법을 알아봅니다. 기존의 DevOps 파이프라인과 달리 MLOps는 운영 주기를 완료하는 데 추가 사항을 고려해야 합니다. 이 자습서를 따르면 CT를 MLOps 루프에 통합하는 방법에 대한 통찰력을 얻고 모델을 지속적으로 훈련하고 추론을 위한 원활한 배포를 수행할 수 있습니다. 이 자습서는 AWS 서비스를 활용하여 이 엔드 투 엔드 MLOps 파이프라인을 구축하는 프로세스를 안내합니다.
== 매니페스트
기능 | 이름 | 설명 |
---|---|---|
데이터 스토리지 |
AWS FSx ONTAP |
을 "1부 - Amazon FSx for NetApp ONTAP(FSx ONTAP)를 프라이빗 S3 버킷으로 AWS SageMaker에 통합"참조하십시오. |
데이터 과학 IDE |
AWS SageMaker를 참조하십시오 |
이 자습서는 에서 제공하는 Jupyter 노트북을 기반으로 "2부 - Amazon FSx for NetApp ONTAP(FSx ONTAP)을 SageMaker에서 모델 훈련을 위한 데이터 소스로 활용"합니다. |
MLOps 파이프라인을 트리거하는 기능입니다 |
AWS Lambda 함수 |
- |
cron 작업 트리거 |
AWS 이벤트 브리지 |
- |
딥 러닝 프레임워크 |
PyTorch |
- |
AWS Python SDK에서 지원됩니다 |
봇3 |
- |
프로그래밍 언어 |
파이썬 |
v3.10 |
== 필수 구성 요소
-
사전 구성된 FSx ONTAP 파일 시스템 이 자습서에서는 FSx ONTAP에 저장된 데이터를 교육 프로세스에 활용합니다.
-
위에서 언급한 FSx ONTAP 파일 시스템과 동일한 VPC를 공유하도록 구성된 * SageMaker 노트북 인스턴스 *.
-
AWS Lambda 함수 * 를 트리거하기 전에 * SageMaker Notebook Instance * 가 * Stopped * 상태인지 확인하십시오.
-
딥 신경 네트워크의 계산에 필요한 GPU 가속을 활용하려면 * ml.g4dn.xlarge * 인스턴스 유형이 필요합니다.
== 있습니다
이 MLOps 파이프라인은 cron 작업을 사용하여 서버리스 기능을 트리거하는 실용적인 구현으로, 수명주기 콜백 기능으로 등록된 AWS 서비스를 실행합니다. AWS EventBridge * 는 cron 작업 역할을 합니다. 주기적으로 모델을 재교육하고 재배포할 책임이 있는 * AWS Lambda 함수 * 를 호출합니다. 이 프로세스에서는 * AWS SageMaker Notebook * 인스턴스를 회전하여 필요한 작업을 수행합니다.
== 단계별 구성
=== 문서 수정 상태 설정
AWS SageMaker Notebook 인스턴스에 대한 Lifecycle 콜백 기능을 구성하려면 * Lifecycle configuration * 을 사용합니다. 이 서비스를 사용하면 노트북 인스턴스를 회전할 때 수행해야 하는 필요한 작업을 정의할 수 있습니다. 특히 교육 및 배포 프로세스가 완료되면 노트북 인스턴스를 자동으로 종료하도록 * Lifecycle 구성 * 내에서 쉘 스크립트를 구현할 수 있습니다. 비용은 MLOps의 주요 고려 사항 중 하나이므로 이 구성은 필수 구성입니다.
반드시 * Lifecycle 설정 * 에 대한 구성을 미리 설정해야 합니다. 따라서 다른 MLOps 파이프라인 설정을 진행하기 전에 이 구성 우선 순위를 지정하는 것이 좋습니다.
-
Lifecycle 구성을 설정하려면 * Sagemaker * 패널을 열고 * Admin configuration * 섹션의 * Lifecycle configuration * 으로 이동합니다.
-
Notebook Instance * 탭을 선택하고 * Create configuration * 버튼을 클릭합니다
-
아래 코드를 입력 영역에 붙여 넣습니다.
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' # 1. Retraining and redeploying the model NOTEBOOK_FILE=/home/ec2-user/SageMaker/tyre_quality_classification_local_training.ipynb echo "Activating conda env" source /home/ec2-user/anaconda3/bin/activate pytorch_p310 nohup jupyter nbconvert "$NOTEBOOK_FILE" --ExecutePreprocessor.kernel_name=python --execute --to notebook & nbconvert_pid=$! conda deactivate # 2. Scheduling a job to shutdown the notebook to save the cost PYTHON_DIR='/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.10' echo "Starting the autostop script in cron" (crontab -l 2>/dev/null; echo "*/5 * * * * bash -c 'if ps -p $nbconvert_pid > /dev/null; then echo \"Notebook is still running.\" >> /var/log/jupyter.log; else echo \"Notebook execution completed.\" >> /var/log/jupyter.log; $PYTHON_DIR -c \"import boto3;boto3.client(\'sagemaker\').stop_notebook_instance(NotebookInstanceName=get_notebook_name())\" >> /var/log/jupyter.log; fi'") | crontab - EOF
-
이 스크립트는 추론을 위해 모델의 재훈련 및 재배포를 처리하는 Jupyter Notebook을 실행합니다. 실행이 완료되면 노트북이 5분 내에 자동으로 종료됩니다. 문제 설명 및 코드 구현에 대한 자세한 내용은 을 "2부 - Amazon FSx for NetApp ONTAP(FSx ONTAP)을 SageMaker에서 모델 훈련을 위한 데이터 소스로 활용"참조하십시오.
-
만든 후 노트북 인스턴스로 이동하여 대상 인스턴스를 선택하고 작업 드롭다운 아래의 * 설정 업데이트 * 를 클릭합니다.
-
생성된 * 문서 수정 상태 구성 * 을 선택하고 * 노트북 인스턴스 업데이트 * 를 클릭합니다.
=== AWS Lambda 서버리스 함수입니다
앞서 언급한 것처럼 * AWS Lambda 함수 * 는 * AWS SageMaker Notebook 인스턴스 * 를 회전하는 역할을 합니다.
-
AWS Lambda 함수 * 를 만들려면 해당 패널로 이동하여 * Functions * 탭으로 이동한 다음 * Create Function * 을 클릭합니다.
-
페이지에 필요한 모든 항목을 기록하고 Runtime을 * Python 3.10 * 으로 전환해야 합니다.
-
지정된 역할에 필요한 권한 * AmazonSageMakerFullAccess * 가 있는지 확인하고 * 기능 생성 * 버튼을 클릭하십시오.
-
생성된 Lambda 함수를 선택합니다. 코드 탭에서 다음 코드를 복사하여 텍스트 영역에 붙여 넣습니다. 이 코드는 * fsxn-ONTAP * 이라는 노트북 인스턴스를 시작합니다.
import boto3 import logging def lambda_handler(event, context): client = boto3.client('sagemaker') logging.info('Invoking SageMaker') client.start_notebook_instance(NotebookInstanceName='fsxn-ontap') return { 'statusCode': 200, 'body': f'Starting notebook instance: {notebook_instance_name}' }
-
이 코드 변경 사항을 적용하려면 * 배포 * 버튼을 클릭하십시오.
-
이 AWS Lambda 함수를 트리거하는 방법을 지정하려면 Add Trigger(트리거 추가) 단추를 클릭합니다.
-
드롭다운 메뉴에서 EventBridge 를 선택한 다음 새 규칙 만들기 라디오 단추를 클릭합니다. 스케줄 표현식 필드에 을 입력합니다 `rate(1 day)`를 클릭하고 추가 버튼을 클릭하여 이 새 cron 작업 규칙을 생성하고 AWS Lambda 함수에 적용합니다.
2단계 구성을 완료하면 * AWS Lambda Function * 이 매일 * SageMaker 노트북 * 을 시작하고 * FSx ONTAP * 리포지토리의 데이터를 사용하여 모델 재훈련을 수행한 후 업데이트된 모델을 프로덕션 환경으로 재배포한 후 * SageMaker 노트북 인스턴스 * 를 자동으로 종료하여 비용을 최적화합니다. 이렇게 하면 모델이 최신 상태로 유지됩니다.
이것으로 MLOps 파이프라인 개발을 위한 자습서를 마칩니다.