데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Redshift에서 ML 모델 만들어 활용하기

      Timjoo 24.07.11
      950 5 1
      DEVOTEE 요약
      AWS Data and AI roadshow 2024의 Redshift 세션에서 Redshift에서 데이터로 ML 모델을 생성하고 쿼리를 통해 예측할 수 있는 기능을 알게 되었으며, 이를 통해 모델 생성과 학습 데이터 전처리가 가능하다는 것을 배웠습니다. 모델을 생성하는 쿼리에 필요한 준비 단계와 모델 생성, 검증, 호출 과정 등을 설명했고, 최종적으로 실무에 적용하기 위해서는 데이터의 정확한 설계와 전처리가 필요하다고 강조했습니다. 또한 향후 Bedrock 연동 가능성과 자동화된 프로세스를 통해 ML 모델 생성이 더욱 간편해질 것이라고 기대했습니다.
      DEVOTEE 추천 블로그

      얼마전 AWS에서 Data and AI roadshow 2024라는 3일 동안 진행하는 세션 중 Day-2에 redshift에 대한 세션을 듣고 왔습니다.

      작년에 유사한 세션과 AWS reInvet를 통해 접한 redshift의 ra3, serverless 등을 업무에 적용하여 용량/성능에서 충분한 재미(?)를 봐서,

      이번에는 어떤 걸 취할 수 있을까 기대하며 참석을 했습니다.


      그 기대에 딱 맞는 기능이 바로

      "Redshift에서 ML Model 생성하기" 였습니다. 해당 기능이 완전 신기술은 아니고, 몇년 전에 소개된 기능인데, 저는 처음 알게되어서, 저에게는 신기술입니다. ㅎㅎ


      (아래 이미지는 Redshift로 할수 있는 것 중, ML관련 기능을 붉은 색으로 표시한 것입니다.)

      image.png


      개요

      요약하면, Redshift에서 가지고 있는 데이터로 Model을 만들고, 그 Model을 function으로 저장해서 query로 한번에 호출 할 수 있다는 것입니다.


      조금만 길게 이야기하면

      1. create model 로 ML 모델을 생성할 수 있고,

      2. redshift에 저장되어 있는 데이터를 학습데이터로 넣을 수 있고,

      3. 학습된 모델을 redshift function으로 저장하고,

      4. 쿼리에서 함수로 그 학습된 모델로 추론한 결과를 가져올 수 있다.

      라는 겁니다. ㅎㅎ


      물론 이 1~4단계가 하나의 쿼리문으로 처리가 됩니다. (사전 작업이 좀 있지만.. 그것 비밀.. )

      쿼리문이 수행되면, 자동으로 sagemaker의 processing jobs에서 처리가 되어 호출 가능한 function으로 생성이 됩니다.


      상세

      Step.1 준비 단계

      • 우선 수행 전에 IAM Role을 생성해서, Redshift cluster에 적용을 해야 합니다.

      • 그 role은 다음의 권한이 필요합니다.

        • AmazonS3FullAccess

        • AmazonSageMakerFullAccess

        • AmazonForecastFullAccess

          (참고자료 : https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml )

      Step.2 모델만들기

      • 모델을 만들기 전, 반드시 어떤 input과 output으로 어떤 알고리즘/모델을 사용해서 학습할 것인지는 결정해야 합니다.

        • 물론 redshift에서 최상의 model을 지정해 주는 옵션이 있어서, model 생성 시, 지정을 할 필요는 없다고 하지만, 그건 연습용일 때이고, 실무에 적용할 때는 조금 더 구체적으로 접근이 필요합니다.

      • 모델 코드

      CREATE MODEL predict_cost_model
      from (select input01, input02, sum(cost) as cost
      		from public.cost_usage
      		where yearmonth > '202301'
      		and input01 >= '100000' and input01 <= '200000'
      		and itemtype = 'Usage'
      		group by input01, input02 )
      TARGET cost
      FUNCTION predict_cost_fn
      IAM_ROLE 'arn:aws:iam::123123123:role/test_role'
      SETTINGS (
      	S3_BUCKET 'test-bucket-dev'
      );|
      • 생성할 모델 이름을 넣는다

      • from 안에 학습할 데이터를 query로 지정한다. 그 결과에는 target도 포함되어야 합니다. (지도학습입니다.)

      • 참고로, 그 결과는 500개가 넘어야 합니다. 500개가 안넘으면 학습하다가 오류가 납니다.

      • Target으로 결과값을 지정합니다.

      • function을 지정합니다. 이 function이 나중에 이 학습된 model을 호출하는 접점이 됩니다.

      • 필요한 role을 추가합니다.

      • 마지막으로 S3를 지정합니다.

        • 이 S3에는 sagemaker를 통해 모델을 학습할 때, 필요한 데이터를 파일로 자동관리하는 용도 등입니다.

      Step3. 모델 확인하기

      명령어로

      show model predict_cost_model;

      하면 아래 이미지와 같이 모델 정보가 표시됩니다. (중요정보는 가림)

      생성 직 후여서 상테가 "Training"이고, 이 뒤에 여러단계를 거쳐서 20~30분 뒤에 "Active"가 됩니다.

      "Active"가 되어야 호출이 가능하게 됩니다.


      image.png

      Step4. 호출하기

      select input1, predict_cost_fn(input1,'202407') as predict_cost
      from public.cost_usage
      where input1 >= '100000' and input1 <= '200000'
      group by input1;
      • predict_cost_fn 요것이 redshift의 function이고, 이걸 호출해서 모델로 부터 결과를 가져오게 됩니다.

      • input1에 2024.07 비용을 예측한다 뭐, 이런 내용입니다.

      • 결과는 대충 아래 이미지와 같습니다. regression으로 비용을 예측하는 것인데, 이 test model 자체가 대충만들어서, 아웃풋도 대충 나오네요 ㅎㅎ

        image.png

      PoC로는  약 1~2시간 만에 ML 모델이 적용된 데이터를 만들 수 있습니다.

      하지만, 실무에는 바로 사용할 수는 없습니다... 사전에 할 것이 많습니다.


      동작하는 방식은 이해를 했지만,

      실무에 적용하기 위해서는 모델 및 데이터를 정확하게 설계하고,

      정확도를 높일 수 있도록 쿼리안에서 전처리를 해야 사용이 가능한 형태가 됩니다.


      결국 전처리가 잘된 DB가 있고, 정확한 프로세스가 있다면,

      정말 query 몇 개만으로 ML을 만들어서 실무에 적용할 수 있다는 것입니다.

      일정 부분 자동화된 프로세스가 공수를 절감해 준다. 그것이 교훈인 것 같네요..


      이 외에도 Seoul에는 Bedrock이 없지만,

      비슷한 형태로 BedRock도 연동이 가능합니다.


      물론 중간에 프롬프트 넣은 Lambda가 필요하긴 하지만, 가능성은 있는 것이고,

      살짝, 아주 조금(?) 불편한 것들은 점차 개선될 것이라 사용 확대가 기대는 됩니다.


      그럼 정말 ML/LLM도 query만으로 생성하는 과제도 생기겠죠?


      요약 내용은 이상이고, 첨부의 AWS 소개자료를 통해 보다 정확한 정보가 얻으실 수 있습니다.


      감사합니다.


      Reference

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Timjoo 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기