Bedrock을 이용하여 SQL 없이 데이터 분석을 하는 방법

2분 분량
콘텐츠 수준: 중급
0

S3의 CSV테이블을 Bedrock의 다양한 AI 모델을 이용하여 SQL 없이 테이블을 분석할 수 있습니다.

요약 설명

Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Meta, Stability AI 및 Amazon과 같은 선도적인 AI 회사의 다양한 고성능 파운데이션 모델(FM)을 단일 API로 제공하는 완전관리형 서비스입니다. Bedrock의 다양한 파운데이션 모델을 API를 이용하여 사용할 수 있습니다. 해당 가이드에서는 CSV 로 되어 있는 파일을 Athena, Redshift 테이블 생성 및 SQL 을 사용할 필요 없이 간단하게 분석하는 방법에 대해서 가이드 해드립니다.

전제 조건

  • Sagemaker기본 도메인이 생성되어 있어야 합니다.
  • Sagemaker를 이용할 리전과 S3 버킷의 리전이 동일 해야합니다.
  • 사용할 Sagemaker 도메인의 IAM역할에 AmazonS3FullAccess 있어야 합니다.

단계1. CSV 테이블 다운로드 및 가공

  • 아래의 링크에 있는 Shipping Logs를 아래와 같이 수정하여 업로드합니다. [1]
  • Bedrock에 사용할 수 있는 prompt에 한계가 있어 현재 예제 에서는 19개의 데이터만을 사용합니다.

여기에 이미지 설명 입력

단계2. S3에 CSV파일 저장

  • S3에 이전단계를 통해서 가공한 데이터를 저장합니다.

여기에 이미지 설명 입력

단계3. Sagemaker를 통해 CSV 파일 분석

  • Sagemaker 네비게이션 바에서 Studio, 도메인 선택, 스튜디오 열기를 클릭합니다.
  • Studio Classic을 클릭한뒤 run을 클릭하여 studio classic 애플리케이션을 실행합니다.
  • 실행이 완료되면 open, File, New, Notebook을 클릭하여 새로운 노트북을 생성합니다.
  • 새롭게 생성된 노트북에 아래와 같은 코드를 입력해줍니다.
  • 아래의 코드에서 파일이 저장된 S3 URL에는 S3에 업로드한 URL을 Command에는 검색하려 하는것을 넣어줍니다.
import json
import boto3
import pandas as pd

bedrock = boto3.client(
    service_name='bedrock-runtime'
)

// Example S3 URL : s3://example-bucket/sage-maker/ShippingLogs.csv
s3_url ='<S3 URL>'
csv_file = pd.read_csv(s3_url, iterator=True)
df = pd.concat(csv_file, ignore_index=True)

table=df.to_string()

// Example command : How many are Shipping Origin Seattle
command=<Enter the information you want to analyze in the table>
modelId = 'meta.llama2-13b-chat-v1'
accept = 'application/json'
contentType = 'application/json'

prompt = table + command
input = {
    'prompt': prompt,
    'max_gen_len': 512,
    'temperature': 0.5,
    'top_p': 0.9
}

body=json.dumps(input)
response = bedrock.invoke_model(body=body, modelId=modelId, accept=accept,contentType=contentType)
response_body = json.loads(response.get('body').read())
results = response_body['generation']
print(results)    

여기에 이미지 설명 입력

추가정보

  • Foundation Model API 이용시 각 모델별 요구하는 파라미터가 다릅니다. 사용할 모델이 "meta.llama2-13b-chat-v1" 이 아닌 경우에는 아래의 링크를 통해 모델에 맞는 파라미터를 사용해야합니다. [2]
  • 프롬프트에 입력하는 내용에 따라서 결과값의 정확도가 달라질 수 있습니다. 아래의 모범사례를 참고해주세요. [3]
  • 사용하는 모델에 따라 지원되는 prompt의 크기가 다릅니다. 사용하는 모델에 따른 지원되는 크기를 참고하여 CSV파일을 수정하여 이용할 수 있습니다.

[1] Shipping Logs

https://catalog.us-east-1.prod.workshops.aws/workshops/80ba0ea5-7cf9-4b8c-9d3f-1cd988b6c071/en-US/1-use-cases/7-supply-chain

[2] 기초 모델의 추론 파라미터

https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/model-parameters.html

[3] 프롬프트 엔지니어링이란 무엇입니까?

https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/what-is-prompt-engineering.html

profile pictureAWS
지원 엔지니어
게시됨 3달 전342회 조회
댓글 없음

관련 콘텐츠