Machine Learning(ML) with Amazon Athena 사용 - Amazon Athena

Machine Learning(ML) with Amazon Athena 사용

Machine Learning(ML) with Amazon Athena를 통해 사용자는 Athena에서 Amazon SageMaker를 사용해 기계 학습(ML) 추론을 실행하는 SQL 문을 작성할 수 있습니다. 이 기능은 데이터 분석을 위해 ML 모델에 대한 액세스를 간소화하므로 추론을 실행하기 위해 복잡한 프로그래밍 방법을 사용할 필요가 없습니다.

ML with Athena를 사용하려면 USING EXTERNAL FUNCTION 절로 ML with Athena 함수를 정의합니다. 함수는 사용하려는 SageMaker 모델 엔드포인트를 가리키고 모델에 전달할 변수 이름과 데이터 유형을 지정합니다. 쿼리의 후속 절은 함수를 참조하여 값을 모델에 전달합니다. 모델은 쿼리가 전달하는 값을 기반으로 추론을 실행한 다음 추론 결과를 반환합니다. SageMaker와 SageMaker 엔드포인트의 작동 방식에 대한 자세한 내용은 Amazon SageMaker 개발자 안내서를 참조하세요.

ML with Athena 및 SageMaker 추론을 사용하여 결과 집합에서 이상값을 감지하는 예제는 AWS Big Data Blog(빅 데이터 블로그) 항목 Detecting anomalous values by invoking the Amazon Athena machine learning inference function(Amazon Athena 기계 학습 추론 기능을 호출하여 이상 값 감지)을 참조하세요.

고려 사항 및 제한

  • 사용 가능한 리전 - Athena ML 기능은 Athena 엔진 버전 2 이상이 지원되는 AWS 리전에서 제공됩니다.

  • SageMaker 모델 엔드포인트가 text/csv를 수락하고 반환해야 함 - 데이터 형식에 대한 자세한 내용은 Amazon SageMaker 개발자 안내서추론을 위한 공통 데이터 형식을 참조하세요.

  • Athena는 CSV 헤더를 전송하지 않음 - SageMaker 엔드포인트가 text/csv인 경우 입력 핸들러는 입력의 첫 번째 줄이 CSV 헤더라고 가정해서는 안 됩니다. Athena는 CSV 헤더를 전송하지 않으므로 Athena로 반환되는 출력에는 Athena가 예상한 것보다 포함된 행이 하나 적어서 오류가 발생합니다.

  • SageMaker 엔드포인트 확장 – 참조된 SageMaker 모델 엔드포인트가 엔드포인트에 대한 Athena 호출을 위해 충분히 확장되었는지 확인합니다. 자세한 내용은 Amazon SageMaker 개발자 안내서SageMaker 모델 자동 크기 조정Amazon SageMaker API 참조CreateEndpointConfig를 참조하세요.

  • IAM 권한 - ML with Athena 함수를 지정하는 쿼리를 실행하려면 쿼리를 실행하는 IAM 보안 주체가 참조된 SageMaker 모델 엔드포인트에 대한 sagemaker:InvokeEndpoint 작업을 수행할 수 있어야 합니다. 자세한 내용은 ML과 Athena에 대한 액세스 허용 단원을 참조하세요.

  • ML with Athena 함수는 GROUP BY 절에서 직접 사용할 수 없습니다.

ML with Athena 구문

USING EXTERNAL FUNCTION 절은 쿼리의 후속 SELECT 문에서 참조할 수 있는 ML with Athena 함수 또는 여러 함수를 지정합니다. 변수 및 반환 값에 대한 함수 이름, 변수 이름 및 데이터 유형을 정의합니다.

시놉시스

다음 구문은 ML with Athena 함수를 지정하는 USING EXTERNAL FUNCTION 절을 보여줍니다.

USING EXTERNAL FUNCTION ml_function_name (variable1 data_type[, variable2 data_type][,...]) RETURNS data_type SAGEMAKER 'sagemaker_endpoint' SELECT ml_function_name()

파라미터

USING EXTERNAL FUNCTION ml_function_name (variable1 data_type[, variable2 data_type][,...])

ml_function_name은 후속 쿼리 절에서 사용할 수 있는 함수 이름을 정의합니다. 각 variable data_type은 SageMaker 모델이 입력으로 수락하는 명명된 변수와 해당 데이터 형식을 지정합니다. 지정된 데이터 유형은 지원되는 Athena 데이터 형식이어야 합니다.

RETURNS data_type

data_typeml_function_name이 쿼리에 반환하는 SQL 데이터 형식을 SageMaker 모델의 출력으로 지정합니다.

SAGEMAKER 'sagemaker_endpoint'

sagemaker_endpoint는 SageMaker 모델의 엔드포인트를 지정합니다.

SELECT [...] ml_function_name(expression) [...]

함수 변수 및 SageMaker 모델에 값을 전달하여 결과를 반환하는 SELECT 쿼리입니다. ml_function_name은 쿼리에서 이전에 정의된 함수를 지정한 후 값을 전달하기 위해 평가되는 expression을 지정합니다. 전달되고 반환되는 값은 USING EXTERNAL FUNCTION 절의 함수에 대해 지정된 해당 데이터 유형과 일치해야 합니다.

다음의 예제는 ML with Athena를 사용하는 쿼리를 보여줍니다.

USING EXTERNAL FUNCTION predict_customer_registration(age INTEGER) RETURNS DOUBLE SAGEMAKER 'xgboost-2019-09-20-04-49-29-303' SELECT predict_customer_registration(age) AS probability_of_enrolling, customer_id FROM "sampledb"."ml_test_dataset" WHERE predict_customer_registration(age) < 0.5;

고객 사용 사례

Machine Learning(ML) with Amazon Athena의 미리보기 버전을 사용하는 다음 동영상은 Athena와 함께 SageMaker를 사용하는 방법을 보여줍니다.

고객 이탈 예측

다음 동영상은 Athena와 Amazon SageMaker의 기계 학습 기능을 결합하여 고객 이탈을 예측하는 방법을 보여줍니다.

봇넷 감지

다음 동영상은 한 기업이 Amazon Athena와 Amazon SageMaker를 사용하여 봇넷을 어떻게 감지하는지를 보여줍니다.