AWS Community Day 2023 - 모이고 또 모이고
10월 28일 AWS 커뮤니티 데이 행사 후기를 올려봅니다.
요새 이런 개발자 커뮤니티 행사가 조금 많이 보입니다. 적극적으로 참여하면서 저의 진로를 탐색하고 있습니다.
아래는 awskrug라는 소모임 행사들의 마스코트 캐릭터들을 모은 스티커입니다. 귀여워서 그냥 촬영해보았습니다.
들어가면 멋진 입간판이 참가자를 맞아줍니다.
신청하면 문자로 온 QR 코드를 제시하면 아래의 SWAG? 세트라는 걸 줍니다. 예쁜 무신사 검정 반팔티 하나와 비상식량(간식꾸러미), 물한잔, 우산 하나, 작은 에코백이 있습니다. 옷은 2XL인데 조금 작아보여서 그냥 두었습니다.
그 외에 포토존이 저렇게 있습니다. 시간이 없어 제 자신은 못찍었지만, 다음 기회에 찍어보는걸로!
AWS 환영인사 분석-인공지능 트랙을 보여줍니다. 토스 라운지에서 진행되며, 토스 업무 공간, 간식 공간 등은 당연하게도 접근이 안됩니다. 무료 와이파이 제공 아주 좋습니다. 각 책상마다 콘센트도 있어 충전하기도 좋았습니다.
본격적인 프로그램 소개
기존 연설부터 시작했습니다. 도니와 데릭이란 AWS 직원분들의 소개로 시작했습니다. 유쾌하고 재밌는 분들입니다. 도니는 C#을 사랑하고, 데릭은 어떤 언어든 좋아하는 분입니다.
크게 세가지 정도로 요약할 수 있습니다.
1. AWS 서버리스 함수 및 컨테이너: AWS Lambda, Fargate 두가지 상품군이 있으며 이를 비교합니다. 서버리스 함수를 위한 개발 도구도 소개합니다.
2. Amazon Bedrock 상품 소개 : AWS가 자랑하는 GenAI(생성형 AI) 상품입니다.
- 데모 버전으로 아마존 Text Palyground를 통해 웹 콘솔에서 사용할 수 있습니다. API로도 가능합니다. python app.py 명령어로 실행만 하면 되어 편리합니다.
- AWS Application Composer를 사용할 수 있습니다. canvas를 통해 그림으로 필요한 서비스만 이어주면 하나의 파이프라인이 구축됩니다. 여기서 AWS CDK(Cloud Development Kit)를 제공합니다.
- SAM이라는 것이 있는데, 여기서 sam deploy만 하면 배포까지 완성됩니다.
- AWS SAM vs CDK를 비교합니다.
- AWS SAM: SAM CLI, 로컬 람다 개발, YAML 정의, 사용자 정의 함수는 Cloud Formation 확장, CDK로 변환이 가능합니다.
- AWS CDK: 인프라 완벽 제어가 가능하며, 허브를 구축하고나 확장 가능한 모델을 제공합니다. 커스텀하기 좋겠습니다.
3. 서버리스 컨테이너를 위한 애플리케이션
AWS Fargate는 컨테이너를 위한 서버리스 컴퓨팅 엔진입니다. 컨테이너로는 AWS ECS와 EKS를 사용할 수 있습니다. 인스턴스도 없으며 필요한 만큼 사용이 가능합니다. AWS ECS + AWS Copilot으로 훌륭한 결과물을 냅니다. 물론 AWS Copilot 하나만으로도 대부분의 문제가 해결된다네요. 관련 데모도 진행했습니다.
- DEMO: RESUME SERVICE
- 이력서 상세 설명해주는 데모를 AWS 코파일럿으로 진행했습니다. LLM 모델을 선택하고, 각 이력서마다 평가 점수와 피드백을 제공합니다. manifest.yaml 파일도 수정할 수 있고 충분히 좋아보입니다.
AWS AI/ML 서비스를 활용한 질문 답변 시스템 구축 방법
Gen AI에 관한 AWS 서비스와 오픈소스를 이해하고, RAG라는 개념을 소개했습니다.
Search라는 개념의 역사에 대해 간단히 소개했습니다.
Extractive QA부터 Abstractive QA 순으로 이어집니다.
Extractive QA
추출적 QA라고 합니다. 허깅페이스 과제에서, 트랜스포머를 기반으로 하는 Question Answering(QA) 질문 답변입니다. SQuAD라는 개념이 나옵니다. 이 모델의 데이터셋으로 SQuAD는 Stanford Question Answering Dataset의 약자입니다. 본 데이터셋이 구축되어 있어 과거의 QA 동작을 코드로 확인할 수 있습니다.
NLP QA 과제의 내부 실행 과정을 살펴보겠습니다. 먼저 Encoder 모델로 'RoBERTa'라는 것을 사용합니다. 내부 실행과정은 총 3단계로, Tokenizer, Model, Post processing이 있습니다. 토크나이저는 텍스트가 입력되면 이를 입력 아이디 순으로 분리하고, 모델과 후처리에서는 로짓으로 바꾸어 예측하는 과정이 이어집니다. 출력은 score, start, end로 나누어집니다.
QA 파이프라인은 과거에 있던 리트리버-리더(Retrever-Reader) 구조부터 시작합니다. Reader가 도큐먼트 기반의 답을 생성합니다.
Retriever
Retriever는 두 가지 종류로 나누어 집니다.
1. sparse 희소 리트리버 : 단어의 빈도로 각 문서 쿼리를 희소 벡터로 표현합니다. 벡터의 내적을 계산해서 관련성을 결정할 수 있습니다.
2. dense 밀집 리트리버(Embedding, DPR) : 트랜스포머 인코더로 임베딩합니다. 시간을 줄일 수 있습니다.
Vector Embeddings
벡터 임베딩은, context data → Semantic elements → vectors 순으로 실행됩니다. 벡터 요소는 의미적으로 비슷한 곳에 위치하며, 근접성을 기반으로 문맥 관계를 보여줍니다.
Abstractive QA
문맥에서만 답의 범위를 유추하는 방법입니다. 핵심은 "사전 훈련된" (pre-trained) 언어 모델로 답을 생성합니다. Generative QA라고도 부르며, 기존의 추출적 QA를 뛰어 넘은 모델입니다. 좋아보이네요.
RAG(Retrieval Augmented Generation)
메타(Meta, 구 페이스북)에서 제공했습니다. 리트리버를 DPR로 리더를 제너레이터로 사용합니다. 2020년 언어 모델과 데이터의 조합으로 높은 정확도를 보이는 답변을 생성할 수 있습니다. 희소가 아니라, 밀집(DPR)을 사용하며, 리더 대신에 제너레이터를 사용합니다.
파라미터 메모리(오픈 북) 혹은 비파라미터 메모리(클로즈 북)을 함께 고려할 수 있으며, AWS에도 유사한 서비스를 제공합니다. 리트리버(당신의 데이터 기반 검색기) 및 제너레이터(LLM 기반 문장 생성기)를 함께 고려해서 만들었습니다.
RAG in AWS
Amazon Kendra가 있습니다. AWS AI 솔루션으로 vector DB 및 오로라의 pgvector를 사용합니다. 여기서 질문이 들어오면 거리상 가까운 답을 고르며 이를 다시 LLM에서 유사한 답변을 선택합니다. Lang Chain을 사용합니다. 여기서 Indexes라는 문서를 구조화하고 모델과 상호작용하는 개념을 사용하는데, 자세한 건 찾아봐야겠습니다.
Amazon Kendra는 리턴 값으로 QA를 받습니다. 프롬프트 엔지니어링 혹은 Instruction tuning output이라고도 하며 두 페이지 길이의 소스만으로도 충분히 작동한다고 합니다.
Vector DB (PGVector)를 통해 AWS 커스텀을 제공하며 이를 기반으로 Kendra가 만들어졌다고 합니다.
Amazon Bedrock은 AWS가 에이전트를 제공하며 SaaS에 가까운 상품으로 제공합니다. 즉, ChatGPT처럼 사용할 수 있습니다. 그 외에도 실습 과정에서는 오픈소스인 라마(Llama), 허깅 페이스 등을 적용했습니다.
Amazon SageMaker SDK로 모델을 직접올리거나, Amazon SageMaker JumpStart로 주어진 모델을 사용할 수 있습니다. 이 때, Inference Endpoints를 사용하면 좋습니다. 이것은 허깅페이스의 개념으로 아마존이 제공하지 않습니다. 아마존 마켓플레이스에서 허깅페이스를 구독하여 빌링 통합하면 사용 가능합니다. 클릭 한번으로 허깅페이스의 모델을 골라서 사용할 수 있다니 편리하겠네요.
인공지능 챗봇을 만들려면, 가드레일(Guardrails), Caching Queries(인메모리, SQLite, Redis, 카산드라), RLHF(강화학습, 인간 피드백 기반)을 통해 성능을 개선해나아가야 할 것입니다. 참고할만한 도서로는 트랜스포머를 활용한 자연어 처리가 있습니다.
https://www.yes24.com/Product/Goods/115633781
이 모든 내용은 다음의 블로그에 자세히 기록되어있으니 참고바랍니다.
https://heuristicwave.github.io
AWS Kendra를 활용한 검색 엔진 구축하기
대학생으로 AUSG 그룹에서 발표를 진행했습니다. 기존 검색 엔진과 AWS Kendra 기반 검색 엔진 구축하고 비교해보는 시간이었습니다.
기존 검색 기능으로 RDBMS가 있고, 검색 엔진은 ElasticSearch가 있습니다. 먼저 RDBMS는 고정 스키마로 구조적인 한계가 있으며 검색 성능에도 한계가 있습니다.
- 검색 성능의 한계: 패턴 매칭으로 인덱스 이용 불가
- 검색 기능 제한: 유의어 동의어 검색, 형태소 분석(최신 모형은 n-gram)
- 확장성 어려움: 수직적 확장 의존. 수평 부적합.
다음으로, Elastic Search는 오픈소스 검색 엔진(Apache Lucene) 기반입니다. 역인덱스 방식이며 Full text search, 통계 분석 등 다양하게 활용 가능합니다. 키바나로 시각화도 가능하고, 샤드로 분산시스템 병렬 처리도 되는 인기있는 엔진입니다. 그러나 다양한 데이터 형태를 지원하지 않습니다. 현재 80%가 비구조화 형태 데이터라는 점을 감안한다면 말이죠. 또한, 검색 질의도 자연어로 질문하게 된다면 그 답변이 특정 키워드만 매치하므로 아쉬운 답변이 나오곤 하죠.
극복을 위해 AWS Kendra를 소개합니다. ML, NLP 기술로 구조화 및 비구조화 데이터에 대해 검색 질문에 대해 답변을 하는 AWS의 검색 서비스 입니다. NLP는 자연어 질문에 대한 답변에 도움을 주며, 비구조화 데이터인 MS 파워포인트, 워드 같은 자료에 대해서도 답변이 가능합니다.
- NLU and ML Core Feature
- Reading Comprehension
- FAQ Matching 사용자 질의 빈도 확인
- Document Ranking: 관련 의미 기반 랭킹 순 제공
- Domain Expertise
- 도메인에 특화된다.
- 실제로 IT 도메인에 특화해보면,
IT 도메인 → pcb → process contain block으로 이해하는 걸 확인할 수 있다.
- Data Source Connectors
- Text형식 지원 + 커넥터 유형을 선택해서 추가 가능하다.
- 빠르고 쉽게 데이터 연결할 수 있다.
- Jira, confluence, oracle 등 다른 서비스도 지원. 50여종
Kendra 생성 과정: Index
document → 청크분리 → 리트리버 가져옴
커넥터로 가져옴.
비구조화 데이터 소스 연결해서 관리한다. 켄드라 장점이다.
인덱싱의 크론잡 설정해서, RDS 2시, 오라클 4시, S3 원할때 이렇게 주기설정 가능.
동기화 과정 이루어진다.
- 크롤링 : 분산 데이터 취합 인덱싱 과정 거친다.
- 이를 통해 세가지 소스로 검색 엔진 이용 가능하다.
ElasticSearch vs Kendra
ES는 자연어 질의 결과 반환못함.
Kendra는 핵심 단어를 기반으로 작성한다.
인공지능 서비스에 효과적으로 적용가능할 것이다.
AWS Kendra 활용한 검색 엔진: 나의 사이드 프로젝트
- 대학 강의 : 영상, 필기 다양한 자료 소스 쓰겠다.
- 데이터 업로드 → 보관 → 람다로 실행
- 영상을 음성 - 텍스트로 진행.
- what is pcb: process control block?
검색 품질 개선: Continuous Improvement 과정
- good, bad 피드백을 제공
검색 품질 개선: Relevance Tuning
- 데이터 필드를 1~10으로 높인다.
- 부스팅 과정이라 한다.
- Text / Date / Numeric
- 그 중에서 Custom field의 description field를 최대로 높인다.
기타 문제 해결
- FAQ 제공: csv 형태로 제공해서 검색 품질을 개선한다?
- 동의어 사전 적용
- 솔라 형식 텍스트 파일 제공한다. 상관관계. 특정 도메인 검색 품질을 개선한다.
- chat gpt 사용한다.
Rest API
- AWS rest API로 활용해본다.
- 쿼리 조회 등이 가능하다.
데모도 가능하니 아래 소스코드 링크를 참고하시면 됩니다.
https://github.com/Chocochip101/aws-kendra-demo
AWS 실시간 상담
점점 길어집니다. 한번 올리고 나서 열심히 수정해봐야겠군요.
최신 LLM을 배포하겠습니다. 근데 이제 서버리스를 곁들인?
이 대사 어디서 많이 봤습니다. 최강록입니다.
나름대로 GPU 서버로 인해 엄청난 요금 폭탄이 나올뻔한 스토리입니다. 근데 서버리스를 사용하여 효과적으로 요금을 줄이고 최대한 성능을 뽑아낼 수 있다는 이야기입니다.
다음 글에서 좀 더 자세히 살펴보겠습니다.
후기
대학생 분들이 많이 강의를 해주셨습니다. 귀한 경험담을 나눠주시고, 퀴즈 같은 경우에는 AWS-SAA 자격증을 취득하시거나 관련 공부를 하시는 분들이 좋은 성적을 받았습니다.
다음 글부터는 자격증 공부와 후기를 남겨볼 예정입니다. 또한, 최근 대두되고 있는 LLM이란 콘텐츠로 각 CSP가 제공하는 것과 OpenAI의 Chat GPT를 한번 비교해보고 살펴보고자 합니다.
'세미나 후기' 카테고리의 다른 글
HyperCLOVA-X와 함께하는 Healthcare Mini Promptathon 후기 (1) | 2023.11.21 |
---|---|
7th Pseudo-Con 후기: AI 대격변의 시대에서 나는? (1) | 2023.11.12 |
SK Devocean 5회차 테크데이 후기 (0) | 2023.10.26 |
[NCUC] 첫번째 판교 소모임 후기 (2) | 2023.07.26 |
5th Pseudo-con: 함께할 의지와 혼자의 힘 (2) | 2022.11.27 |