[레포트] 아직도 파이썬으로만 머신 러닝 하니? 난 SQL로 바로 쓴다. #AWSSummitOnlineKorea
안녕하세요 클래스메소드 신입엔지니어 송영진입니다!
이번에 쓸 내용은 2020년 5월 13일에 개최된 AWS Summit Online Korea의 레포트입니다.
AWS에서 어떻게 머신러닝을 이용할 수 있는지 궁금해서 들었던 세션인데요. Database, Analytics의 파트로 송규호 님, 정의준 님께서 발표해주셨던 아직도 파이썬으로만 머신 러닝 하니? 난 SQL로 바로 쓴다. 라는 주제의 세션입니다.
포스트에서 사용된 자료는 세션의 슬라이드에서 보실 수 있습니다.
세션 정보
- 세션 타이틀
- 아직도 파이썬으로만 머신 러닝 하니? 난 SQL로 바로 쓴다.
- 발표자
- AWS 솔루션즈 아키텍트 송규호 님
- AWS 테크니컬어카운트 매니저 정의준 님
- 세션 개요
더 이상 머신 러닝을 어렵게 적용하지 마세요! AWS의 AI/ML 서비스에서 학습한 모델을 데이터 처리에 직관적인 SQL문을 이용해서 직접 활용할 수 있습니다. 이를 통해 어떻게 분석 프로세스를 개선할 수 있을 지 또 분석가들과의 협업 모델은 어떻게 바뀌는 지 알아보겠습니다. Amazon의 AI/ML 서비스들 (Amazon SageMaker, Amazon Comprehend)과 데이터베이스/쿼리 서비스로 (Amazon Aurora 그리고 Amazon Athena) 구성된 데모도 함께 준비되어 있습니다.
레포트
분석 환경의 변화와 변하지 않은 Business
2010년대에 들어오면서 빅데이터와 데이터분석에 대한 뜨거운 관심이 있었습니다. 많은 기업들이 데이터 분석을 도입하기 시작했고 그에 따라서 변해온 것과 변하지 않은 것들이 있습니다.
- 진화된 분석 환경
- Business intelligence에서 AI로
- Business 분석가에서 데이터 분석가로
- 기존에 통계학자와 소프트웨어 개발자들은 데이터 사이언티스트가 됨
- 비용이 큰 상용 분석 소프트웨어 대신 오픈소스 협업 툴이 인기를 끌게 됨
- Business의 목표는 변하지 않음
- 기업의 목표는 revenue 창출
- 기술이 Businesses에 활용되어야 유용한 것임
- 협업의 중요성
- 프로세스의 개선과 좋은 문화를 만들어야 함
데이터 분석을 이용한 선순환 구조의 예
훌륭한 데이터 분석을 통하여 좋은 유저 경험을 만들게 되면 더 많은 유저들의 이용이 가능해지고 따라서 더 많은 데이터가 생성되기 때문에 더 좋은 분석이 가능해집니다.
데이터 분석을 통하여 이와 같은 좋은 선순환이 이루어지게 됩니다.
좋은 Data Scientist?
데이터 분석가는 요구되는 스킬이 많습니다. 대표적인 스킬들은 다음과 같습니다.
- 통계학
- 머신러닝
- 개발능력
- 비즈니스의 이해
- 협업을 위한 커뮤니케이션
이러한 여러가지 스킬을 전부 갖고있는 사람은 많지 않습니다. 따라서 고용하기가 쉽지 않죠. 이러한 인재를 고용해서 분석조직을 꾸린다고 하더라도 유지하고 관리하기가 쉽지 않습니다.
머신러닝 도입이 어려운 이유
기업에서 일하고 있던 기존 직원들에게 머신러닝을 익히게 하는건 쉽지 않습니다. 머신러닝, 딥러닝은 전문적인 지식이 필요하기 때문입니다.
또한 데이터에 대해서도 데이터를 분석을 해야하는데, 이 데이터가 사용해도 되는 데이터인지 개인정보 같은 프라이버시가 문제가 되지 않는지에 대한 문제가 있습니다.
머신러닝을 쿼리로 적용할 수 있다면?
이러한 머신러닝을 쿼리로 적용할 수 있게 된다면 데이터 분석가들과 협업하기가 쉬워질 것 입니다. 데이터 분석가들이 만들어놓은 모델을 이용하여 비즈니스에 적용하기도 쉬워집니다.
SQL은 접근성이 굉장히 낮아서 쉽게 익힐 수 있습니다. 따라서 생산성 향상, 인건비 절약 등 이점이 있으며,
가장 중요한 점은 실무자들이 데이터 분석 실무 경험을 갖게 된다는 겁니다.
서로 잘할 수 있는 분야에서 역량을 집중하게 되면서 빠르게 비즈니스에 적용이 가능하게 됩니다. 이러한 경험이 쌓이면서 엔지니어에서 데이터 분석가로의 전환도 이루어질 수 있습니다.
SQL에서 ML 모델 호출
Amazon SageMaker와 Amazon Comprehend에서 학습된 모델을 Amazon Aurora와 Amazon Athena에서 호출이 가능하게 업데이트 되었습니다.
따라서 SQL에서 쉽게 머신러닝 모델을 이용해 볼 수 있습니다.
기존의 머신러닝 모델의 사용은 데이터를 읽어 온 후에 모델에 적합한 데이터로 전처리를 해야합니다. 그 후에 추론 결과를 후처리해야 결과를 확인 할 수 있습니다.
SQL에서 학습된 모델을 사용하는 예
SQL에서 학습된 모델을 펑션으로 정의하여 모델과 연결을 하기만 하면 됩니다. 추론한 결과도 데이터베이스에 저장이 되기 때문에 바로 결과를 볼 수 있습니다. 출력된 결과를 사람이 확인하기에도 직관적입니다.
Demo
데모의 내용은 다음과 같습니다.
SageMaker를 이용해서 학습한 추천 모델을 Aurora에서 활용
- SageMaker를 이용하여 과거 구매 패턴 학습
- Aurora에서 SageMaker Model endpoint에 SQL을 이용해서 Inference 해서 추천 후보군 1차 도출
- Comprehend를 Aurora에서 직접 호출하여 상품 Review data의 Sentimental 분석 결과를 더해서 최종 추천 품목 제시
데이터
- Kaggle의 E-commerce 구매이력 dataset
- Amazon Review dataset
Demo Architecture
주요 SQL 코드
CREATE FUNCTION recommend_score ( user_id BIGINT(20), product_id BIGINT(20)) RETURNS double alias aws_sagemaker_invoke_endpoint endpoint name 'sagemaker-mxnet-2020-04-05-09-40-05-472’;
Sagemaker의 엔드포인트를 호출하는 함수를 정의하는 코드입니다.
SELECT *, recommend_score(user_id,product_id) recommend_score FROM inputs;
SELECT 문으로 정의해둔 함수를 간단하게 호출이 가능합니다.
환경
- 버전 : Aurora (MySQL 5.7) 2.07.0 이상
- Sagemaker 노트북 인스턴스 유형: ml.p2.xlarge
데모에 대한 자세한 내용은 다음 링크에서 확인하실 수 있습니다.
감상
머신러닝을 해본 경험이 있는 분들은 학습된 모델을 데이터에 적용해보고 결과를 이용하는데 Python을 사용하는데에 익숙할 것입니다. 하지만 머신러닝에 익숙하지 않은 분들은 모델을 어떻게 사용해야하는지 어떤 데이터를 사용해야하는지 잘 모를 수 있습니다. 하지만 SQL에서 머신러닝 모델을 이용할 수 있게 된다면 협업하는 도중에 ML 모델이 학습 된 상태에서 예측 결과가 데이터베이스 내부에 저장되기 때문에 결과를 확인하거나 후처리를 위해 실무자가 쿼리로 이용하여 직접 모델을 이용할 수 있게 되어서 머신러닝 전문가에게 문의하고 기다리는 시간이 줄어들기 때문에 비즈니스에 적용이 굉장히 빨라질 것으로 생각됩니다.
모델에 적절한 데이터로 만들기 위해서 데이터를 전처리 해야하는 것은 같기 때문에 데이터 분석가와 커뮤니케이션을 통하여 학습된 모델에 적용하기 위해서 데이터를 어떻게 가공하여 어떤 데이터만 DB에 저장을 해야할지를 정해야 할 것입니다. 그래도 비전문가가 간편하게 모델을 사용할 수 있다는건 굉장한 장점이기 때문에 더욱 머신러닝 기술에 대한 접근성이 낮아져서 많은 분야에서 적용이 가능할 것으로 보입니다.
참조
New for Amazon Aurora – Use Machine Learning Directly From Your Databases