Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

第 3 部分:建立簡化的 MLOps 管道( CI/CT/CD )

貢獻者

本文提供使用 AWS 服務建置 MLOps 管線的指南、著重於自動化模型重新訓練、部署和成本最佳化。
-

  • 作者: *
    NetApp 資深資料與應用科學家 Jian Jian ( Ken )

簡介

在本教學課程中、您將學習如何運用各種 AWS 服務來建構簡單的 MLOps 管道、其中包括持續整合( CI )、持續訓練( CT )和持續部署( CD )。與傳統的 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 EventBridge

-

深度學習架構

PyTorch

-

AWS Python SDK

boto3.

-

程式設計語言

Python

v3.10.

先決條件

  • 預先設定的 FSX ONTAP 檔案系統。本教學課程將儲存在 FSX ONTAP 中的資料用於訓練程序。

  • * SageMaker 筆記型電腦執行個體 * 、設定為與上述的 FSX ONTAP 檔案系統共用相同的 VPC 。

  • 在觸發 *AWS Lambda 功能 * 之前、請確定 *SageMaker 筆記型電腦執行個體 * 處於 * 停止 * 狀態。

  • 需要 * ml.g4dn.xlarg* 執行個體類型才能運用深度神經網路運算所需的 GPU 加速。

架構

架構

此 MLOps 管道是一種實際實作、利用 cron 工作觸發無伺服器功能、進而執行以生命週期回撥功能登錄的 AWS 服務。AWS EventBridge 充當 cron 工作。它會定期調用一個負責重新訓練和重新部署模型的 * AWS Lambda 功能 * 。此程序涉及將 AWS SageMaker Notebook 執行個體旋轉、以執行必要的工作。

逐步組態

生命週期組態

若要設定 AWS SageMaker 筆記型電腦執行個體的生命週期回撥功能、您可以使用 * 生命週期組態 * 。此服務可讓您定義在啟動筆記型電腦執行個體時要執行的必要動作。具體而言、您可以在 * 生命週期組態 * 中實作 Shell 指令碼、以便在訓練與部署程序完成後、自動關閉筆記型電腦執行個體。這是必要的組態、因為成本是 MLOps 的主要考量之一。

請務必注意 * 生命週期組態 * 的組態必須事先設定。因此、建議您在繼續進行其他 MLOps 管道設定之前、先優先設定此方面的設定。

  1. 若要設定生命週期組態、請開啟 Sagemaker 面板、然後瀏覽至 * 管理組態 * 一節下的 * 生命週期組態 * 。

    SageMaker 面板

  2. 選取 * 筆記型電腦執行個體 * 標籤、然後按一下 * 建立組態 * 按鈕

    生命週期組態歡迎頁面

  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 部分:運用 Amazon FSX for NetApp ONTAP ( FSX ONTAP )做為 SageMaker 模型訓練的資料來源"、請參閱。

    建立生命週期組態

  5. 建立之後、請瀏覽至「筆記本執行個體」、選取目標執行個體、然後按一下「動作」下拉式清單下的「 * 更新設定 * 」。

    更新設定下拉式清單

  6. 選取建立的 * 生命週期組態 * 、然後按一下 * 更新筆記型電腦執行個體 * 。

    更新筆記型電腦的生命週期組態

AWS Lambda 無伺服器功能

如前所述、 * AWS Lambda Funct* 負責加速 *AWS SageMaker 筆記型電腦執行個體 * 。

  1. 若要建立 * AWS Lambda 功能 * 、請瀏覽至個別面板、切換至 * 功能 * 索引標籤、然後按一下 * 建立功能 * 。

    AWS lambda 功能歡迎頁面

  2. 請將所有必要項目歸檔在頁面上、並記得將執行時間切換為 * Python 3.10* 。

    建立 AWS Lambda 功能

  3. 請驗證指定的角色是否具有所需的權限 amzonSageMakerFullAccess 、然後按一下 * 建立功能 * 按鈕。

    選取執行角色

  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 功能、請按一下「新增觸發按鈕」。

    新增 AWS 功能觸發程式

  7. 從下拉式功能表中選取 EventBridge 、然後按一下標有「建立新規則」的選項按鈕。在排程運算式欄位中、輸入 rate(1 day)、然後按一下「新增」按鈕、以建立這個新的 cron 工作規則、並將其套用至 AWS Lambda 功能。

    完成觸發程序

完成雙步驟組態後、 AWS Lambda 功能 * 每天會啟動 *SageMaker Notebook 、使用 *FSX ONTAP * 儲存庫中的資料執行模型重新訓練、將更新的模型重新部署至正式作業環境、並自動關閉 *SageMaker 筆記型電腦執行個體 * 以最佳化成本。如此可確保模型保持在最新狀態。

本課程將為您介紹如何開發 MLOps 管道。