Skip to main content
NetApp Solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

3부 - 간소화된 MLOps 파이프라인 구축(CI/CT/CD)

기여자
  • 작성자: *
    Jian Jian(Ken), NetApp 수석 데이터 및 응용 과학자

소개

이 자습서에서는 다양한 AWS 서비스를 활용하여 지속적인 통합(CI), 지속적인 교육(CT) 및 지속적인 배포(CD)를 포함한 간단한 MLOps 파이프라인을 구축하는 방법을 알아봅니다. 기존의 DevOps 파이프라인과 달리 MLOps는 운영 주기를 완료하는 데 추가 사항을 고려해야 합니다. 이 자습서를 따르면 CT를 MLOps 루프에 통합하는 방법에 대한 통찰력을 얻고 모델을 지속적으로 훈련하고 추론을 위한 원활한 배포를 수행할 수 있습니다. 이 자습서는 AWS 서비스를 활용하여 이 엔드 투 엔드 MLOps 파이프라인을 구축하는 프로세스를 안내합니다.

매니페스트

기능 이름 설명

데이터 스토리지

AWS FSxN

을 참조하십시오 "1부 - AWS FSx for NetApp ONTAP(FSxN)를 프라이빗 S3 버킷으로 AWS SageMaker에 통합".

데이터 과학 IDE

AWS SageMaker를 참조하십시오

이 자습서는 에서 제공하는 Jupyter 노트북을 기반으로 합니다 "2부 - AWS FSx for NetApp ONTAP(FSxN)를 SageMaker에서 모델 훈련을 위한 데이터 소스로 활용".

MLOps 파이프라인을 트리거하는 기능입니다

AWS Lambda 함수

-

cron 작업 트리거

AWS 이벤트 브리지

-

딥 러닝 프레임워크

PyTorch

-

AWS Python SDK에서 지원됩니다

봇3

-

프로그래밍 언어

파이썬

v3.10

필수 구성 요소

  • 사전 구성된 FSxN 파일 시스템입니다. 이 자습서에서는 교육 프로세스에 FSxN에 저장된 데이터를 활용합니다.

  • 위에서 언급한 FSxN 파일 시스템과 동일한 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 파이프라인 설정을 진행하기 전에 이 구성 우선 순위를 지정하는 것이 좋습니다.

  1. Lifecycle 구성을 설정하려면 * Sagemaker * 패널을 열고 * Admin configuration * 섹션의 * Lifecycle configuration * 으로 이동합니다.

    오류: SageMaker 패널

  2. Notebook Instance * 탭을 선택하고 * Create configuration * 버튼을 클릭합니다

    오류: 수명 주기 구성 시작 페이지

  3. 아래 코드를 입력 영역에 붙여 넣습니다.

    #!/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
  4. 이 스크립트는 추론을 위해 모델의 재훈련 및 재배포를 처리하는 Jupyter Notebook을 실행합니다. 실행이 완료되면 노트북이 5분 내에 자동으로 종료됩니다. 문제 설명 및 코드 구현에 대한 자세한 내용은 을 참조하십시오 "2부 - AWS FSx for NetApp ONTAP(FSxN)를 SageMaker에서 모델 훈련을 위한 데이터 소스로 활용".

    오류: 문서 수정 상태 설정을 작성합니다

  5. 만든 후 노트북 인스턴스로 이동하여 대상 인스턴스를 선택하고 작업 드롭다운 아래의 * 설정 업데이트 * 를 클릭합니다.

    오류: 설정 업데이트 드롭다운

  6. 생성된 * 문서 수정 상태 구성 * 을 선택하고 * 노트북 인스턴스 업데이트 * 를 클릭합니다.

    오류: 노트북의 문서 수정 상태 구성을 업데이트합니다

AWS Lambda 서버리스 함수입니다

앞서 언급한 것처럼 * AWS Lambda 함수 * 는 * AWS SageMaker Notebook 인스턴스 * 를 회전하는 역할을 합니다.

  1. AWS Lambda 함수 * 를 만들려면 해당 패널로 이동하여 * Functions * 탭으로 이동한 다음 * Create Function * 을 클릭합니다.

    오류: AWS Lambda 함수 시작 페이지

  2. 페이지에 필요한 모든 항목을 기록하고 Runtime을 * Python 3.10 * 으로 전환해야 합니다.

    오류: AWS lambda 함수를 만듭니다

  3. 지정된 역할에 필요한 권한 * AmazonSageMakerFullAccess * 가 있는지 확인하고 * 기능 생성 * 버튼을 클릭하십시오.

    오류: 실행 역할을 선택하십시오

  4. 생성된 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}'
        }
  5. 이 코드 변경 사항을 적용하려면 * 배포 * 버튼을 클릭하십시오.

    오류: 배포

  6. 이 AWS Lambda 함수를 트리거하는 방법을 지정하려면 Add Trigger(트리거 추가) 단추를 클릭합니다.

    오류: AWS 함수 트리거 추가

  7. 드롭다운 메뉴에서 EventBridge 를 선택한 다음 새 규칙 만들기 라디오 단추를 클릭합니다. 스케줄 표현식 필드에 을 입력합니다 `rate(1 day)`를 클릭하고 추가 버튼을 클릭하여 이 새 cron 작업 규칙을 생성하고 AWS Lambda 함수에 적용합니다.

    오류: 트리거를 종료합니다

2단계 구성을 완료하면 * AWS Lambda 함수 * 가 매일 * SageMaker 노트북 * 을 시작하고, * FSxN * 리포지토리의 데이터를 사용하여 모델 재학습을 수행하고, 업데이트된 모델을 프로덕션 환경으로 재배포한 후 * SageMaker 노트북 인스턴스 * 를 자동으로 종료하여 비용을 최적화합니다. 이렇게 하면 모델이 최신 상태로 유지됩니다.

이것으로 MLOps 파이프라인 개발을 위한 자습서를 마칩니다.