튜토리얼: 원격 추론 모델 구축 - Amazon Redshift

튜토리얼: 원격 추론 모델 구축

이 튜토리얼에서는 이전에 Amazon Redshift 외부의 Amazon SageMaker에서 훈련 및 배포한 Random Cut Forest 모델을 생성하는 방법을 단계별로 살펴봅니다. Random Cut Forest 알고리즘은 데이터 세트 내에서 이상한 데이터 포인트를 감지합니다. 원격 추론을 사용하여 모델을 생성하면 Random Cut Forest SageMaker 모델을 Amazon Redshift로 가져올 수 있습니다. 그런 다음 Amazon Redshift에서 SQL을 사용하여 원격 SageMaker 엔드포인트에 대한 예측을 수행합니다.

CREATE MODEL 명령을 사용하여 Amazon SageMaker 엔드포인트에서 기계 학습 모델을 가져오고 Amazon Redshift 예측 함수를 준비할 수 있습니다. CREATE MODEL 작업을 사용할 때 SageMaker 기계 학습 모델의 엔드포인트 이름을 제공합니다.

이 튜토리얼에서는 SageMaker 모델 엔드포인트를 사용하여 Amazon Redshift 기계 학습 모델을 생성합니다. 기계 학습 모델이 준비되면 이를 사용하여 Amazon Redshift에서 예측을 수행할 수 있습니다. 먼저 Amazon SageMaker에서 엔드포인트를 훈련하고 생성한 다음 엔드포인트 이름을 얻습니다. 그런 다음 CREATE MODEL 명령을 사용하여 Amazon Redshift ML을 통해 모델을 생성합니다. 마지막으로 CREATE MODEL 명령이 생성하는 예측 함수를 사용하여 모델에 대한 예측을 수행합니다.

사용 사례

Random Cut Forest 모델과 원격 추론을 사용하여 다른 데이터 세트에서 전자 상거래 트랜잭션의 급격한 증가 또는 감소 예측과 같은 이상 징후를 감지할 수 있습니다. 날씨 또는 지진 활동의 중대한 변화도 예측할 수 있습니다.

작업

  • 필수 조건

  • 1단계: Amazon SageMaker 모델 배포

  • 2단계: SageMaker 모델 엔드포인트 가져오기

  • 3단계: Amazon S3에서 Amazon Redshift로 데이터 로드

  • 4단계: Amazon Redshift ML을 사용하여 모델 생성

  • 5단계: 모델을 사용하여 예측 수행

필수 조건

이 튜토리얼을 완료하려면 다음과 같은 사전 조건이 필요합니다.

1단계: Amazon SageMaker 모델 배포

  1. 모델을 배포하려면 Amazon SageMaker 콘솔로 이동하여 탐색 창의 Notebook(노트북)에서 Notebook instances(노트북 인스턴스)를 선택합니다.

  2. CloudFormation 템플릿으로 생성된 Jupyter Notebook에서 Open Jupyter(Jupyter 열기)를 선택합니다.

  3. bring-your-own-model-remote-inference.ipynb를 선택합니다.

  4. 다음 줄을 Amazon S3 버킷과 접두사로 대체하여 Amazon S3에 훈련 입력 및 출력을 저장하도록 파라미터를 설정합니다.

    data_location=f"s3://{bucket}/{prefix}/", output_path=f"s3://{bucket}/{prefix}/output",
  5. Fast-forward(빨리 감기) 버튼을 눌러 모든 셀을 실행합니다.

2단계: SageMaker 모델 엔드포인트 가져오기

Amazon SageMaker 콘솔 탐색창의 Inference(추론)에서 Endpoints(엔드포인트)를 눌러 모델 이름을 찾습니다. Amazon Redshift에서 원격 추론 모델을 생성할 때 모델의 엔드포인트 이름을 복사해야 합니다.

3단계: Amazon S3에서 Amazon Redshift로 데이터 로드

Amazon Redshift 쿼리 편집기 v2를 사용하여 Amazon Redshift에서 다음 SQL 명령을 실행합니다. 이 명령은 rcf_taxi_data 테이블이 있는 경우 이 테이블을 삭제하고 같은 이름의 테이블을 생성한 후 샘플 데이터 세트를 테이블로 로드합니다.

DROP TABLE IF EXISTS public.rcf_taxi_data CASCADE; CREATE TABLE public.rcf_taxi_data (ride_timestamp timestamp, nbr_passengers int); COPY public.rcf_taxi_data FROM 's3://sagemaker-sample-files/datasets/tabular/anomaly_benchmark_taxi/NAB_nyc_taxi.csv' IAM_ROLE default IGNOREHEADER 1 FORMAT AS CSV;

4단계: Amazon Redshift ML을 사용하여 모델 생성

다음 쿼리를 실행하여 이전 단계에서 얻은 SageMaker 모델 엔드포인트를 사용하여 Amazon Redshift ML에 모델을 생성합니다. randomcutforest-xxxxxxxxx를 사용자의 SageMaker 엔드포인트 이름으로 대체합니다.

CREATE MODEL public.remote_random_cut_forest FUNCTION remote_fn_rcf(int) RETURNS decimal(10, 6) SAGEMAKER '<randomcutforest-xxxxxxxxx>' IAM_ROLE default;

모델 상태 확인(선택 사항)

SHOW MODEL 명령을 사용하여 모델이 준비되었는지 알 수 있습니다.

모델 상태를 확인하려면 다음 SHOW MODEL 작업을 사용합니다.

SHOW MODEL public.remote_random_cut_forest

출력에 SageMaker 엔드포인트와 함수 이름이 표시됩니다.

+--------------------------+-----------------------------------------+ | Model Name | remote_random_cut_forest | +--------------------------+-----------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Wed, 15.06.2022 17:58:21 | | Model State | READY | | | | | PARAMETERS: | | | Endpoint | <randomcutforest-xxxxxxxxx> | | Function Name | remote_fn_rcf | | Inference Type | Remote | | Function Parameter Types | int4 | | IAM Role | default-aws-iam-role | +--------------------------+-----------------------------------------+

5단계: 모델을 사용하여 예측 수행

Amazon SageMaker Random Cut Forest 알고리즘은 데이터 세트 내에서 이상한 데이터 포인트를 감지하도록 설계되었습니다. 이 예에서 모델은 중요한 행사로 인한 택시 이용의 급증을 감지하도록 설계되었습니다. 이 모델을 사용하여 각 데이터 포인트에 대한 이상 점수를 생성하면 이상 이벤트를 예측할 수 있습니다.

다음 쿼리를 사용하여 전체 택시 데이터 세트의 이상 점수를 계산합니다. 이전 단계에서 CREATE MODEL 스테이트먼트에 사용한 함수를 참조한다는 점에 유의하세요.

SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data;

높음 및 낮음 이상 여부 확인(선택 사항)

다음 쿼리를 실행하여 점수가 평균 점수에서 3표준편차보다 큰 데이터 요소를 찾습니다.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean + 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score > ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

다음 쿼리를 실행하여 점수가 평균 점수에서 3표준편차보다 큰 데이터 요소를 찾습니다.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean - 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score < ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

Amazon Redshift ML에 대한 자세한 내용은 다음 설명서를 참조하세요.

기계 학습에 대한 자세한 내용은 다음 설명서를 참조하세요.