본문 바로가기
Artificial Intelligence

AWS GameDay 리뷰 - AWS Gen AI를 위해 알아야하는 것!?

by sohyunwriter 2024. 7. 15.
Bedrock
- 파운데이션 모델(FM)
- 플레이그라운드
- 오케스트레이션
실습
- LLM 기반 Simple 챗봇 개발
- RAG 기반 Simple 챗봇 개발
자주 겪는 어려움들
- 실습을 위한 기반 AWS 솔루션: S3, Cloud9, Step Function, ...
- (권한) IAM 사용자 권한 설정 문제, 포트 번호 사용 설정 등
- (과금) 생성형 AI 실습 시 과금되는 솔루션 목록

 

 

파운데이션 모델(FM)

  • 파운데이션 모델이란?
    • 대규모 데이터 세트를 기반으로 훈련된 모델(FM)
    • 데이터 사이언티스트가 처음부터 인공지능(AI)를 개발하지 않고 파운데이션 모델을 출발점으로 삼아 새로운 애플리케이션을 더 빠르고 비용 효율적으로 사용 가능
  • 주요 파운데이션 모델
    • 임베딩: (텍스트 Only) Titan Embedding G1 - Text, Titan Text Embedding V2, (전체) Titan Multimodal Embedding G1
    • 텍스트 처리: Claude, Claude Instant, Llama 3 8B Instruct, Llama 3 70B Instruct
    • 텍스트/비전: Claude 3 Sonnet, Claude 3 Haiku
    • 텍스트투이미지: Stable Diffusion
  • 파운데이션 모델 사용하려면 먼저 반드시 모델 엑세스 요청해야 함!! https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/model-access.html
    • 요청방법: Console > Amazon Bedrock > Model access
    • Model access 누르면 바로 승인남 (시간 1~2초?!)

(실습) AWS Bedrock 파운데이션(FM) 모델 액세스 요청해보기

 

플레이그라운드(Playground)

  • 플레이그라운드란?
    • 애플리케이션에서 사용하기로 결정하기 전에 다양한 모델 및 구성에서 추론 실행을 실험할 수 있는 콘솔 환경
    • Bedrock에서는 채팅, 텍스트(text to text), 이미지(text to image) 플레이그라운드 지원
      • 채팅 플레이그라운드: Amazon Bedrock에서 제공하는 채팅 모델을 실험 가능 (chatbot)
      • 텍스트 플레이그라운드: Amazon Bedrock에서 제공하는 텍스트 모델 실험 가능 (text to text)
      • 이미지 플레이그라운드: Amazon Bedrock에서 제공하는 이미지 모델을 실험 가능 (text to image)
  • 플레이그라운드 이용 방법
    • Bedrock > 플레이그라운드 - 채팅/텍스트/이미지 중 선택 > 모델 선택 > 이용해보기!?!
    • 물론 플레이그라운드 이용하기 전에 반드시 이용할 파운데이션 모델 액세스 요청해야 함!!

(실습) AWS Bedrock 플레이그라운드 사용해보기

  • 각 플레이그라운드 내에서 프롬프트를 입력하고 추론 파라미터 실험 가능, 또 모델 지표(지연 시간, 비용 등) 역시 확인 가능
    • 각 모델마다 프롬프트 입력 형태 & 추론 파라미터 다름 -> 아래 링크에서 직접 모델마다 확인해서 올바르게 입력 필요
    • 추론 파라미터 일반적인 것들
      • 랜덤성(Randomness)과 다양성(Diversity):
        • 생성된 응답의 변형을 제한하거나 확률 분포의 형태를 변경하여 더 가능성이 높은 결과로 출력 제한
        • 응답의 다양성을 조절하여 모델이 더 창의적이거나 보수적으로 응답하도록 설정 가능
      • 길이(Length):
        • 응답의 최대 길이를 지정하여 제한
        • 특정 문자 시퀀스로 응답 생성을 종료하도록 설정 가능
      • 반복(Repetition):
        • 응답에서 토큰 또는 특정 유형의 토큰 반복을 제한
        • 반복 유형에 대한 패널티를 설정하여 반복을 방지

오케스트레이션

  • Amazon Bedrock용 에이전트(Agent) 제공
  • 에이전트(Agent)?
  • Bedrock 오케스트레이션 구성 요소
    • 지식 기반 -> Knowledge Base 생성 (생각보다 시간이 걸리며 돈이 들어감..ㅠㅠ) -> 생성 완료 후 테스트 가능
      • 대량의 문서, 데이터, FAQ 등 다양한 정보를 체계적으로 저장, 이를 사용자가 검색할 수 있도록 하는 시스템
      • 즉, knowledge base는 정보 제공에 중점을 두며 특정 질문에 대한 답변을 검색하고 제공하는 데 초점
      • 지식 기반에 저장된 데이터는 보통 정적 데이터, 주기적으로 업데이트될 수 있지만 실시간 상호작용을 위한 것은 아님
      • 사용 사례: 고객 지원(과거 FAQ 기반 Knowledge Base 구축 -> 고객이 검색할 수 있도록 제공), 문서 관리 등
      • 기능
        • 1) 검색 및 조회: 사용자가 질문을 입력하면 관련 문서를 검색해 결과 반환
        • 2) 문서 인덱싱: 문서의 내용을 인덱싱하여 효율적인 검색 지원
        • 3) 유사도 계산: 쿼리와 문서 간의 유사도 계산해 가장 관련성이 높은 문서 반환
      • 테스트 방법: 파운데이션 모델 선택 -> Knowledge Base와 동기화 (여기도 꽤 시간이 걸림...) -> (모델 추론 파라미터나 프롬프트 엔지니어링 수정할 거면 하고) -> 채팅 창에다가 테스트해보면 됨
      • 과금 주의!! (특히, 더 이상 안 쓸거라면 OpenSearch Serverless 꼭 종료시키자.. 사용량 뿐 아니라 사용시간에 따라 과금) 
    • 에이전트(Agent)
      • 에이전트는 실시간으로 사용자의 요청에 대응하고 동적인 상호작용 제공
      • 단순히 정보를 제공하는 것에 넘어서, 특정 작업을 수행하거나 사용자를 도와주는 역할
      • 사용 사례: 챗봇(고객의 질문에 답변하고 필요한 작업을 수행하는 챗봇), 가상 비서(일정 관리, 이메일 작성 등 사용자 요청에 따라 작업 수행), 자동화(특정 프로세스를 자동화해 사용자에게 실시간으로 결과 제공)
      • 기능
        • 1) 대화 관리: 사용자의 입력을 이해하고 적절한 응답 생성
        • 2) 작업 수행: 특정 작업(예약, 검색, 데이터 업데이트 등) 수행
        • 3) 상황에 따른 응답: 실시간으로 사용자의 요청에 맞는 응답을 제공하고, 대화를 지속적으로 관리
      • Instruction을 반드시 넣어줘야 한다!! (어떤 에이전트를 만들고 싶은지 최소 40자 이상 기술)

(실습) AWS Bedrock 오케스트레이션 - 지식 기반 사용해보기 "상담원 데이터셋 knowledge graph 만들기"

AWS Bedrock > 오케스트레이션 - 지식 기반 > S3 버킷 설정 > 모델 선택 > (지식 기반 그래프 생성) > 테스트해보기



 

(실습) AWS Bedrock 오케스트레이션 - 에이전트 사용해보기

 

    - 주의: 에이전트 준비 상태로 만들어줘야 함

 

(실습) 간단한 챗봇 구축해보기 (Cloud9 이용)

  • LLM 기반 Simple 챗봇 개발
  • RAG 기반 Simple 챗봇 개발

(참고) 스트림잇 사용법 - https://docs.streamlit.io/develop/api-reference/chat/st.chat_input

 

자주 겪는 어려움들?!

  • (솔루션 이해) 실습을 위한 기반 AWS 솔루션: S3, Cloud9, Step Function, ...
    • 클릭해서 구현하기 쉽게 해놨지만 모르면 너무 어려움..
    • boto3
  • (권한) IAM 사용자 권한 설정 문제, 포트 번호 사용 설정 등
  • (과금) 생성형 AI 실습 시 과금되는 솔루션 목록
    • 기본적으로 사용량 / 사용시간 / 데이터 크기 기준 과금
      • Cloud9은 과금 안 됨 (단, EC2 인스턴스 과금되니 안 쓰면 인스턴스 중지해두기 & Bedrock 서비스는 API Call한 횟수만큼 과금되니 주의)
      • OpenSearch Serverless 안 쓸 때 꺼두기
    • 리전별로 리전에 있는 것만 보이므로 여러 리전 왔다갔다하며 하고 있다면 꼭 전체 리전 확인하기!!
    • AWS에서 비용 계산 calculator 제공하나 뭔 말인지 모르겠음...
    • https://calculator.aws/#/createCalculator/OpenSearchService
구분 솔루션 비용 관련 주의사항
컴퓨팅 리소스 EC2 인스턴스 - 사용 후 반드시 중지/삭제
- 사용시간에 따라 비용 발생
  SageMaker 인스턴스 - 모델 훈련 후 인스턴스 중지/삭제
- 훈련 완료 후에도 인스턴스 켜두면 비용 지속적으로 발생
  Lambda 함수 - 사용량 기반 과금
- 과도한 호출로 인해 예상치 못한 비용 발생 가능 (즉, 잘못된 코드 작성 시)
스토리지 S3 버킷 - 필요 없는 데이터 삭제
- 데이터 저장량, 요청 횟수에 따라 비용 발생
  EBS 볼륨 - 사용하지 않는 EBS 볼륨 분리/삭제
- 사용량에 따라 비용 청구
  Glacier - 장기 보관용으로 비용 저렴
- 복원 시 높은 비용 발생 가능
분석 서비스 OpenSearch - 필요 없는 클러스터 반드시 종료
- 클러스터 크기와 사용 시간에 따라 비용 발생
  Athena 쿼리 실행 시마다 비용 발생 -> 쿼리 사용 최적화 필요
데이터베이스 관리 RDS 인스턴스 - 사용하지 않는 인스턴스 중지/삭제
- 인스턴스 크기, 사용시간에 따라 과금
  DynamoDB - 프로비저닝된 용량 초과 시 높은 비용 발생 가능
네트워킹 데이터 전송 비용 - VPC, VPN, Direct Connect를 통해 데이터 전송할 때 비용 주의
- 리전 간 데이터 전송은 고비용 발생
  CloundFront CDN 사용량에 따라 비용 발생 -> 캐싱 기반 최적화 필요
모니터링/로깅 CloudWatch - 모니터링 지표와 로그 저장에 따라 비용 발생
- 필요 없는 지표와 로그 정리, 로그 보존 기간 설정 필요
기타 API Gateway 호출 횟수와 데이터 전송량에 따라 비용 발생 -> API 사용량 모니터링 필요
  Step Functions 실행 횟수에 따라 비용 발생 -> 워크플로우 최적화 필요

제일 과금되기 쉬운 OpenSearch Serverless (안 쓰면 꼭 인스턴스 상태 중지/삭제하기)