23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
얼마전 AWS에서 Data and AI roadshow 2024라는 3일 동안 진행하는 세션 중 Day-2에 redshift에 대한 세션을 듣고 왔습니다.
작년에 유사한 세션과 AWS reInvet를 통해 접한 redshift의 ra3, serverless 등을 업무에 적용하여 용량/성능에서 충분한 재미(?)를 봐서,
이번에는 어떤 걸 취할 수 있을까 기대하며 참석을 했습니다.
그 기대에 딱 맞는 기능이 바로
"Redshift에서 ML Model 생성하기" 였습니다. 해당 기능이 완전 신기술은 아니고, 몇년 전에 소개된 기능인데, 저는 처음 알게되어서, 저에게는 신기술입니다. ㅎㅎ
(아래 이미지는 Redshift로 할수 있는 것 중, ML관련 기능을 붉은 색으로 표시한 것입니다.)
요약하면, Redshift에서 가지고 있는 데이터로 Model을 만들고, 그 Model을 function으로 저장해서 query로 한번에 호출 할 수 있다는 것입니다.
조금만 길게 이야기하면
create model 로 ML 모델을 생성할 수 있고,
redshift에 저장되어 있는 데이터를 학습데이터로 넣을 수 있고,
학습된 모델을 redshift function으로 저장하고,
쿼리에서 함수로 그 학습된 모델로 추론한 결과를 가져올 수 있다.
라는 겁니다. ㅎㅎ
물론 이 1~4단계가 하나의 쿼리문으로 처리가 됩니다. (사전 작업이 좀 있지만.. 그것 비밀.. )
쿼리문이 수행되면, 자동으로 sagemaker의 processing jobs에서 처리가 되어 호출 가능한 function으로 생성이 됩니다.
우선 수행 전에 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 )
모델을 만들기 전, 반드시 어떤 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를 통해 모델을 학습할 때, 필요한 데이터를 파일로 자동관리하는 용도 등입니다.
명령어로
show model predict_cost_model;
하면 아래 이미지와 같이 모델 정보가 표시됩니다. (중요정보는 가림)
생성 직 후여서 상테가 "Training"이고, 이 뒤에 여러단계를 거쳐서 20~30분 뒤에 "Active"가 됩니다.
"Active"가 되어야 호출이 가능하게 됩니다.
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 자체가 대충만들어서, 아웃풋도 대충 나오네요 ㅎㅎ
PoC로는 약 1~2시간 만에 ML 모델이 적용된 데이터를 만들 수 있습니다.
하지만, 실무에는 바로 사용할 수는 없습니다... 사전에 할 것이 많습니다.
동작하는 방식은 이해를 했지만,
실무에 적용하기 위해서는 모델 및 데이터를 정확하게 설계하고,
정확도를 높일 수 있도록 쿼리안에서 전처리를 해야 사용이 가능한 형태가 됩니다.
결국 전처리가 잘된 DB가 있고, 정확한 프로세스가 있다면,
정말 query 몇 개만으로 ML을 만들어서 실무에 적용할 수 있다는 것입니다.
일정 부분 자동화된 프로세스가 공수를 절감해 준다. 그것이 교훈인 것 같네요..
이 외에도 Seoul에는 Bedrock이 없지만,
비슷한 형태로 BedRock도 연동이 가능합니다.
물론 중간에 프롬프트 넣은 Lambda가 필요하긴 하지만, 가능성은 있는 것이고,
살짝, 아주 조금(?) 불편한 것들은 점차 개선될 것이라 사용 확대가 기대는 됩니다.
그럼 정말 ML/LLM도 query만으로 생성하는 과제도 생기겠죠?
요약 내용은 이상이고, 첨부의 AWS 소개자료를 통해 보다 정확한 정보가 얻으실 수 있습니다.
감사합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.