Bedrock
- 파운데이션 모델(FM)
- 플레이그라운드
- 오케스트레이션
실습
- LLM 기반 Simple 챗봇 개발
- RAG 기반 Simple 챗봇 개발
자주 겪는 어려움들
- 실습을 위한 기반 AWS 솔루션: S3, Cloud9, Step Function, ...
- (권한) IAM 사용자 권한 설정 문제, 포트 번호 사용 설정 등
- (과금) 생성형 AI 실습 시 과금되는 솔루션 목록
- 파운데이션 모델이란?
- 대규모 데이터 세트를 기반으로 훈련된 모델(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) 모델 액세스 요청해보기
- 플레이그라운드란?
- 애플리케이션에서 사용하기로 결정하기 전에 다양한 모델 및 구성에서 추론 실행을 실험할 수 있는 콘솔 환경
- 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):
- 응답에서 토큰 또는 특정 유형의 토큰 반복을 제한
- 반복 유형에 대한 패널티를 설정하여 반복을 방지
- 랜덤성(Randomness)과 다양성(Diversity):
오케스트레이션
- Amazon Bedrock용 에이전트(Agent) 제공
- 에이전트(Agent)?
- 여러 단계의 태스크를 오케스트레이션하여 생성형 인공 지능(AI) 애플리케이션 등 개발 가속화 가능
- 사용자 태스크 요청 -> 에이전트는 파운데이션 모델(FM)의 추론 기능 사용해 태스크 분할 -> 오케스트레이션 계획 수립 및 오케스트레이션 프롬프트 구축 -> 작업 (필요한 API 호출, 검색증강생성(RAG) 등) -> 사용자에게 최종 응답 제공
- https://aws.amazon.com/ko/blogs/korea/agents-for-amazon-bedrock-is-now-available-with-improved-control-of-orchestration-and-visibility-into-reasoning/
- Bedrock 오케스트레이션 구성 요소
- 지식 기반 -> Knowledge Base 생성 (생각보다 시간이 걸리며 돈이 들어감..ㅠㅠ) -> 생성 완료 후 테스트 가능
- 대량의 문서, 데이터, FAQ 등 다양한 정보를 체계적으로 저장, 이를 사용자가 검색할 수 있도록 하는 시스템
- 즉, knowledge base는 정보 제공에 중점을 두며 특정 질문에 대한 답변을 검색하고 제공하는 데 초점
- 지식 기반에 저장된 데이터는 보통 정적 데이터, 주기적으로 업데이트될 수 있지만 실시간 상호작용을 위한 것은 아님
- 사용 사례: 고객 지원(과거 FAQ 기반 Knowledge Base 구축 -> 고객이 검색할 수 있도록 제공), 문서 관리 등
- 기능
- 1) 검색 및 조회: 사용자가 질문을 입력하면 관련 문서를 검색해 결과 반환
- 2) 문서 인덱싱: 문서의 내용을 인덱싱하여 효율적인 검색 지원
- 3) 유사도 계산: 쿼리와 문서 간의 유사도 계산해 가장 관련성이 높은 문서 반환
- 테스트 방법: 파운데이션 모델 선택 -> Knowledge Base와 동기화 (여기도 꽤 시간이 걸림...) -> (모델 추론 파라미터나 프롬프트 엔지니어링 수정할 거면 하고) -> 채팅 창에다가 테스트해보면 됨
- 과금 주의!! (특히, 더 이상 안 쓸거라면 OpenSearch Serverless 꼭 종료시키자.. 사용량 뿐 아니라 사용시간에 따라 과금)
- 에이전트(Agent)
- 에이전트는 실시간으로 사용자의 요청에 대응하고 동적인 상호작용 제공
- 단순히 정보를 제공하는 것에 넘어서, 특정 작업을 수행하거나 사용자를 도와주는 역할
- 사용 사례: 챗봇(고객의 질문에 답변하고 필요한 작업을 수행하는 챗봇), 가상 비서(일정 관리, 이메일 작성 등 사용자 요청에 따라 작업 수행), 자동화(특정 프로세스를 자동화해 사용자에게 실시간으로 결과 제공)
- 기능
- 1) 대화 관리: 사용자의 입력을 이해하고 적절한 응답 생성
- 2) 작업 수행: 특정 작업(예약, 검색, 데이터 업데이트 등) 수행
- 3) 상황에 따른 응답: 실시간으로 사용자의 요청에 맞는 응답을 제공하고, 대화를 지속적으로 관리
- Instruction을 반드시 넣어줘야 한다!! (어떤 에이전트를 만들고 싶은지 최소 40자 이상 기술)
- 지식 기반 -> Knowledge Base 생성 (생각보다 시간이 걸리며 돈이 들어감..ㅠㅠ) -> 생성 완료 후 테스트 가능
(실습) 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 | 실행 횟수에 따라 비용 발생 -> 워크플로우 최적화 필요 |
'Artificial Intelligence' 카테고리의 다른 글
('24.11월 마지막주) Data/AI 직무 신입 채용 공고 - 우리은행, KB국민은행, 신협중앙회 등 (1) | 2024.11.28 |
---|---|
Data/AI 직무 멘토링 수강생 After 공유 자료 (0) | 2024.11.21 |
[Pytorch] model.eval()과 with torch.no_grad()의 차이점 (0) | 2023.04.20 |
책 "BERT와 GPT로 배우는 자연어 처리" 후기 - 한국어 언어모델 입문서적으로 최고인 책 (0) | 2022.01.10 |
카이제곱 검정 (chi-squared test) (0) | 2021.11.07 |