From 3f8383b6fb27295b127268df81601e1c0c6aef6b Mon Sep 17 00:00:00 2001 From: Maira Ladeira Tanke Date: Fri, 19 Aug 2022 21:03:06 +0000 Subject: [PATCH 1/2] Adapting readme to workshop and quick-fixes to notebooks --- .../1-data-prep-feature-store.ipynb | 39 ++----------------- mlops-roadshow/2-training-registry.ipynb | 2 +- mlops-roadshow/3-deployment.ipynb | 22 +++++++---- mlops-roadshow/4-sagemaker-pipeline.ipynb | 16 +++++++- mlops-roadshow/README.md | 32 ++++++--------- 5 files changed, 43 insertions(+), 68 deletions(-) diff --git a/mlops-roadshow/1-data-prep-feature-store.ipynb b/mlops-roadshow/1-data-prep-feature-store.ipynb index 95ed14c..b973df6 100644 --- a/mlops-roadshow/1-data-prep-feature-store.ipynb +++ b/mlops-roadshow/1-data-prep-feature-store.ipynb @@ -1270,7 +1270,9 @@ "fs_df = pd.DataFrame()\n", "while len(fs_df) == 0:\n", " if len(fs_df.columns) > 0:\n", - " time.sleep(120)\n", + " print('The features have not yet been ingested to our Feature Store. '\n", + " 'Let\\'s try again in a minute.')\n", + " time.sleep(60)\n", " query_string = f'SELECT * FROM \"sagemaker_featurestore\".\"{train_table}\" ORDER BY record_id'\n", " query_results= 'sagemaker-featurestore'\n", " output_location = f's3://{bucket}/{query_results}/query_results/'\n", @@ -1325,41 +1327,6 @@ "%store raw_s3" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, diff --git a/mlops-roadshow/2-training-registry.ipynb b/mlops-roadshow/2-training-registry.ipynb index 2216a02..546f44f 100644 --- a/mlops-roadshow/2-training-registry.ipynb +++ b/mlops-roadshow/2-training-registry.ipynb @@ -805,7 +805,7 @@ "\n", "model_package = best_estimator.register(content_types=['text/csv'],\n", " response_types=['application/json'],\n", - " inference_instances=['ml.t2.medium', 'ml.m5.xlarge'],\n", + " inference_instances=['ml.m5.xlarge'],\n", " transform_instances=['ml.m5.xlarge'],\n", " image_uri=best_estimator.image_uri,\n", " model_package_group_name=model_package_group_name,\n", diff --git a/mlops-roadshow/3-deployment.ipynb b/mlops-roadshow/3-deployment.ipynb index 958d323..03b20db 100644 --- a/mlops-roadshow/3-deployment.ipynb +++ b/mlops-roadshow/3-deployment.ipynb @@ -138,9 +138,11 @@ "metadata": {}, "outputs": [], "source": [ - "random_forest_regressor_model = ModelPackage(role_arn,\n", - " model_package_arn=model_package_arn,\n", - " name=model_name)" + "xgboost_regressor_model = ModelPackage(\n", + " role_arn,\n", + " model_package_arn=model_package_arn,\n", + " name=model_name\n", + ")" ] }, { @@ -158,8 +160,10 @@ "metadata": {}, "outputs": [], "source": [ - "sagemaker_client.update_model_package(ModelPackageArn=random_forest_regressor_model.model_package_arn,\n", - " ModelApprovalStatus='Approved')" + "sagemaker_client.update_model_package(\n", + " ModelPackageArn=xgboost_regressor_model.model_package_arn,\n", + " ModelApprovalStatus='Approved'\n", + ")" ] }, { @@ -177,9 +181,11 @@ "metadata": {}, "outputs": [], "source": [ - "random_forest_regressor_model.deploy(initial_instance_count=1,\n", - " instance_type='ml.t2.medium',\n", - " endpoint_name=f'{model_name}-endpoint')" + "xgboost_regressor_model.deploy(\n", + " initial_instance_count=1,\n", + " instance_type='ml.m5.xlarge',\n", + " endpoint_name=f'{model_name}-endpoint'\n", + ")" ] }, { diff --git a/mlops-roadshow/4-sagemaker-pipeline.ipynb b/mlops-roadshow/4-sagemaker-pipeline.ipynb index b0484df..b2bf767 100644 --- a/mlops-roadshow/4-sagemaker-pipeline.ipynb +++ b/mlops-roadshow/4-sagemaker-pipeline.ipynb @@ -47,7 +47,11 @@ "\n", "Here, we will put on the hat of a `DevOps/MLOps Engineer` and perform the task of orchestration which includes building pipeline steps that include all the previous notebooks components into one singular entity. This pipeline entity accomplishes a repeatable and reliable orchestration of each step in the ML workflow.\n", "\n", - "For this task we will be using Amazon SageMaker Pipeline capabilities.\n", + "For this task we will be using Amazon SageMaker Pipeline capabilities. We will be creating two SageMaker Pipelines, one for model training and one for model deployment.\n", + "\n", + "
\n", + "\n", + "
\n", "\n", "Let's get started!" ] @@ -253,6 +257,14 @@ "![](./pipeline_scripts/images/sagemaker-pipelines-dag.png)" ] }, + { + "cell_type": "markdown", + "id": "85c57073-02f7-4fa1-aea8-f9bfb0231a1f", + "metadata": {}, + "source": [ + "You can also include other steps to your pipeline, for example for performing Hyperparameter Optimization (HPO) on your training pipeline. [Pipeline Steps Types](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-steps-types) has a list of all posible pipeline step types that you can use to build your pipeline and [this workshop](https://aws.amazon.com/getting-started/hands-on/machine-learning-tutorial-mlops-automate-ml-workflows/#) explains how to build a SageMaker pipeline with steps for data bias check and model explainability." + ] + }, { "cell_type": "markdown", "id": "29cefc9b", @@ -544,7 +556,7 @@ "model_registry_args = model.register(\n", " content_types=['text/csv'],\n", " response_types=['application/json'],\n", - " inference_instances=['ml.t2.medium', 'ml.m5.xlarge'],\n", + " inference_instances=['ml.m5.xlarge'],\n", " transform_instances=['ml.m5.xlarge'],\n", " model_package_group_name=model_package_group_name,\n", " approval_status='PendingManualApproval',\n", diff --git a/mlops-roadshow/README.md b/mlops-roadshow/README.md index 38ccab3..dfc8a2e 100644 --- a/mlops-roadshow/README.md +++ b/mlops-roadshow/README.md @@ -6,33 +6,23 @@ This Lab covers core Amazon SageMaker components and how they help our customers to transition their model's journey experimentation to production, through the development of MLOps foundations. -Building an MLOps foundation that can cover the operations, people, and technology needs of -enterprise customers is challenging. Therefore, we define the following maturity model -that defines the necessary capabilities of MLOps in four key phases. +We typically see this journey/adoption broken up into four stages: -![MLOPs stages of adoption](pipeline_scripts/images/mlops-stages-of-adoption1.png) +![MLOPs stages of adoption](pipeline_scripts/images/mlops-stages-of-adoption.png) -Each stage represents practices that align to the increased adoption of MLOps -practices to move from a project or repeatable stage to adopting ML workloads -at scale. Check this [Blog Post](https://aws.amazon.com/blogs/machine-learning/mlops-foundation-roadmap-for-enterprises-with-amazon-sagemaker/) -for further details on the MLOps Foundations Roadmap for Enterprises on Amazon SageMaker. +Each stage represents practices that align to the increased adoption of MLOps practices to move from an initial or repeatable stage to adopting ML workloads at scale. -On this workshop we will cover the initial stages of the process: -**Initial** and **Repeatable**. +This lab will cover the Initial and Repeatable stages. Often customers will span multiple stages as they begin to adopt practices that are common within each stage. -In the Initial stage, you begin to incorporate ML projects into your overall strategy to -drive business outcomes. At this stage, the Machine Learning Development Cycle (MLDC) -typically involves a lot of manual hand-offs and processes. For example, the data engineer -manually hands off the data to the data scientists. The data scientists manually hand off -their model to the deployment team which can consist of DevOps or MLOps engineers. +In the Initial stage, you begin to incorporate ML projects into your overall strategy to drive business outcomes. At this stage, the Machine Learning Development Cycle (MLDC) typically involves a lot of manual hand-offs and processes. For example, the data engineer manually hands off the data to the data scientists. The data scientists manually hand off their model to the deployment team which can consist of DevOps or MLOps engineers. -In this Initial stage, you might have or will have multiple models running in production with -manual handoffs and processes and that starts to become very cumbersome. -So there becomes a need to increase the level of automation to ensure the deployments are -repeatable. +In this Initial stage, you might have or will have multiple models running in production with manual handoffs and processes and that starts to become very cumbersome. So there becomes a need to increase the level of automation to ensure the deployments are repeatable. This is where we move to the Repeatable stage where we automate most handoffs by orchestrating each step of the MLDC together. -This is where we move to the Repeatable stage where we automate most handoffs by orchestrating -each step of the MLDC together. +In the Repeatable stage, customers focus on automation, relying on lessons learned from DevOps. Data scientists, Data Engineers, and DevOps Engineers work to automate model training and deployment as well as reduce manual hand-offs between steps. That automation reduces manual errors and increases MLDC velocity. + +In the Reliable stage, customers shift focus to improving quality. The quality checks that data scientists often perform manually, like checking for data drift and evaluating model metrics, are built into the MLDC pipeline. That requires putting ML monitoring tools into place, and lets the pipelines use best-of-breed patterns like blue/green upgrades. At this stage, CI/CD practices such as source and version control along with automated quality gates are implemented. Defect rates begin to drop. + +Finally, as ML becomes a widespread and valuable practice in the organization, customers reach the Scalable stage. At the Scalable phase, customers see ML become widely impactful across the organization. The MLDC cycle time drops as cross-functional ML teams become more productive. Data scientists enjoy the benefits of codified best practices and shared model and feature repositories, which take time and effort to collect but often don’t directly benefit a specific team. At this stage, mechanisms are established for sharing practices and assets across the organization. This stage is as much about people and process as about technology, and customers often see data scientists assigned directly to project teams or rotating from the Center of Excellence (CoE) into other business units. ## Setting up the Lab environment From bf990106c368ec3e227dc0daf9d75f8050abf55b Mon Sep 17 00:00:00 2001 From: Maira Ladeira Tanke Date: Fri, 19 Aug 2022 21:05:55 +0000 Subject: [PATCH 2/2] Adding training and deployment pipelines image --- .../training_and_deployment_pipelines.png | Bin 0 -> 39354 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mlops-roadshow/pipeline_scripts/images/training_and_deployment_pipelines.png diff --git a/mlops-roadshow/pipeline_scripts/images/training_and_deployment_pipelines.png b/mlops-roadshow/pipeline_scripts/images/training_and_deployment_pipelines.png new file mode 100644 index 0000000000000000000000000000000000000000..000658d10385ffbf6c31ea65fccc1a5a15f91d56 GIT binary patch literal 39354 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 KxvX