{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# [모듈 3.4] 세이지메이커 모델 스텝 개발 (SageMaker Model Building Pipeline 훈련 스텝)\n", "\n", "이 노트북은 아래와 같은 목차로 진행 됩니다. 전체를 모두 실행시에 완료 시간은 약 5분-10분 소요 됩니다.\n", "\n", "- 0. 세이지메이커 모델 개요 \n", "- 1. 모델 빌딩 파이프라인에서 세이지 메이커 모델 생성 스텝 실행 \n", " \n", "---\n", "### 노트북 커널\n", "- 이 워크샵은 노트북 커널이 `conda_python3` 를 사용합니다. 다른 커널일 경우 변경 해주세요.\n", "---\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1.세이지메이커 모델 개요" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## 1.1. 세이지 메이커 훈련, 배포, 추론 아키텍쳐\n", "아래 그림에서 \"Deployment / hosting on ML compute instances\" 와 \"Endpoint\", 세이지 메이커 모델 를 보여 주고 있습니다.\n", "- 상세 사항은 여기를 참조 하세요. --> [Amazon SageMaker 에서 모델 배포](https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/how-it-works-deployment.html)![image.png](attachment:image.png)\n", "\n", "![sagemaker_architecture.png](img/sagemaker-architecture.png)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2 세이지 메이커 모델 스텝 \n", "- Create Model 단계의 개발자 가이드 \n", " - [Create Model 스텝](https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. 기본 라이브러리 로딩\n", "\n", "세이지 메이커 관련 라이브러리를 로딩 합니다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "기본적인 세이지 메이커 정보를 가져옵니다." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import boto3\n", "import sagemaker\n", "import pandas as pd\n", "\n", "sagemaker_session = sagemaker.session.Session()\n", "role = sagemaker.get_execution_role()\n", "\n", "%store -r " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. 모델 빌딩 파이프라인 의 스텝(Step) 생성\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1 모델 빌딩 파이프라인 변수 생성\n", "\n", "이 단계에서는 파이프라인 변수를 사용하지 않습니다.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2 배포에 사용할 세이지 메이커 모델 정의 \n", "\n", "실시간 엔드포인트를 생성 하기 위해 SageMaker Model을 생성합니다.\n", "\n", "```python\n", "model = Model(\n", " image_uri= step_train.properties.AlgorithmSpecification.TrainingImage,\n", " model_data= step_train.properties.ModelArtifacts.S3ModelArtifacts,\n", " sagemaker_session=sagemaker_session,\n", " role=role,\n", ")\n", "```\n", "\n", "구체적으로, `TrainingStep` 인스턴스인 `step_train`의 속성 중 `TrainingImagea, S3ModelArtifacts` 의 결과물을 입력으로 다시 사용합니다.\n", "- 아래의 예시는 '세이지 메이커 모델 생성' 스텝을 독립적으로 실행하기 위해서, 이전 노트북의 결과인 image_uri (모델 훈련시 다커 컨테이너 경로), model_data 또한 이전 노트북에서 모델 훈련의 아티펙트의 경로인 train_model_artifact를 사용합니다.\n", "- [알림] image_uri 를 여기서는 모델 훈련시의 다커 컨테이너와 동일하게 추론에서 사용했습니다. 추론 다커 컨테이너를 따로 구성해서 사용할 수도 있습니다.\n", "- [알림] `TrainingStep`의 `properties` 속성은 [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html) API의 응답결과와 동일합니다.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sagemaker.model import Model\n", "\n", "model = Model(\n", " image_uri=image_uri,\n", " model_data= train_model_artifact,\n", " sagemaker_session=sagemaker_session,\n", " role=role,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.3 세이지 메이커 모델 생성 스탭 생성" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from sagemaker.inputs import CreateModelInput\n", "from sagemaker.workflow.steps import CreateModelStep\n", "\n", "\n", "inputs = CreateModelInput(\n", " instance_type=\"ml.m5.large\",\n", ")\n", "step_create_model = CreateModelStep(\n", " name=\"Fraud-Basic-CreateModel\",\n", " model=model,\n", " inputs=inputs,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. 파리마터, 단계, 조건을 조합하여 최종 파이프라인 정의 및 실행\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.1 파이프라인 정의\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from sagemaker.workflow.pipeline import Pipeline\n", "\n", "pipeline_name = project_prefix\n", "pipeline = Pipeline(\n", " name=pipeline_name,\n", " steps=[step_create_model],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.2 파이프라인 정의 확인\n", "위에서 정의한 파이프라인 정의는 Json 형식으로 정의 되어 있습니다." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Version': '2020-12-01',\n", " 'Metadata': {},\n", " 'Parameters': [],\n", " 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},\n", " 'TrialName': {'Get': 'Execution.PipelineExecutionId'}},\n", " 'Steps': [{'Name': 'Fraud-Basic-CreateModel',\n", " 'Type': 'Model',\n", " 'Arguments': {'ExecutionRoleArn': 'arn:aws:iam::051065130547:role/sagemaker-notebook-SageMakerIamRole-13SLYUPDCYIY9',\n", " 'PrimaryContainer': {'Image': '683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-xgboost:1.3-1',\n", " 'Environment': {},\n", " 'ModelDataUrl': 's3://sagemaker-us-east-1-051065130547/sagemaker-webinar-pipeline-base/training_jobs/pipelines-4o0prgdpt7zv-Fraud-Basic-Train-8qHPipk1OF/output/model.tar.gz'}}}]}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import json\n", "\n", "\n", "definition = json.loads(pipeline.definition())\n", "definition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.3 파이프라인 정의를 제출하고 실행하기 \n", "\n", "파이프라인 정의를 파이프라인 서비스에 제출합니다. 함께 전달되는 역할(role)을 이용하여 AWS에서 파이프라인을 생성하고 작업의 각 단계를 실행할 것입니다. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "pipeline.upsert(role_arn=role)\n", "execution = pipeline.start()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'PipelineArn': 'arn:aws:sagemaker:us-east-1:051065130547:pipeline/sagemaker-webinar-pipeline-base',\n", " 'PipelineExecutionArn': 'arn:aws:sagemaker:us-east-1:051065130547:pipeline/sagemaker-webinar-pipeline-base/execution/qbzra1i5h344',\n", " 'PipelineExecutionDisplayName': 'execution-1647853935893',\n", " 'PipelineExecutionStatus': 'Executing',\n", " 'CreationTime': datetime.datetime(2022, 3, 21, 9, 12, 15, 768000, tzinfo=tzlocal()),\n", " 'LastModifiedTime': datetime.datetime(2022, 3, 21, 9, 12, 15, 768000, tzinfo=tzlocal()),\n", " 'CreatedBy': {},\n", " 'LastModifiedBy': {},\n", " 'ResponseMetadata': {'RequestId': '3b9b274c-5a66-44fd-b457-b94f51b586ec',\n", " 'HTTPStatusCode': 200,\n", " 'HTTPHeaders': {'x-amzn-requestid': '3b9b274c-5a66-44fd-b457-b94f51b586ec',\n", " 'content-type': 'application/x-amz-json-1.1',\n", " 'content-length': '427',\n", " 'date': 'Mon, 21 Mar 2022 09:12:15 GMT'},\n", " 'RetryAttempts': 0}}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "execution.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.4 파이프라인 실행 기다리기" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "execution.wait()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.5 파이프라인 실행 단계 기록 보기" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'StepName': 'Fraud-Basic-CreateModel',\n", " 'StartTime': datetime.datetime(2022, 3, 21, 9, 12, 17, 481000, tzinfo=tzlocal()),\n", " 'EndTime': datetime.datetime(2022, 3, 21, 9, 12, 18, 691000, tzinfo=tzlocal()),\n", " 'StepStatus': 'Succeeded',\n", " 'AttemptCount': 0,\n", " 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-1:051065130547:model/pipelines-qbzra1i5h344-fraud-basic-createmo-huw6k8f1ay'}}}]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "execution.list_steps()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. 세이지 메이커 스튜디오에서 확인하기\n", "- 아래의 그림 처럼 SageMaker Studio에 로긴후에 따라하시면, SageMaker Studio 에서도 실행 내역을 확인할 수 있습니다.\n", " - SageMaker Studio 개발자 가이드 --> [SageMaker Studio](https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/studio.html)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![create_model_sm.png](img/create_model_sm.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 7. 모델 아티펙트 경로 추출\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 세이지 메이커 모델의 경로를 저장함. \n", "- 다음 노트북에서 사용합니다." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sagemaker_model: \n", " pipelines-qbzra1i5h344-fraud-basic-createmo-huw6k8f1ay\n", "Stored 'sagemaker_model' (str)\n" ] } ], "source": [ "response = execution.list_steps()\n", "sagemaker_model = response[0]['Metadata']['Model']['Arn'].split(\"/\")[-1]\n", "print(\"sagemaker_model: \\n\", sagemaker_model)\n", "\n", "%store sagemaker_model" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "instance_type": "ml.t3.medium", "kernelspec": { "display_name": "conda_python3", "language": "python", "name": "conda_python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.13" } }, "nbformat": 4, "nbformat_minor": 4 }