StackOrderFlow
LLM 기반 AWS-Cloudformation 어시스턴트
Capstone-2024-05 Team
2024.05.24
WinFo
당신의 18일을 아껴드립니다.
Capstone-2024-05 Team
2024.05.24
WinFo
프로젝트 기획배경
01
?JSON/YAML File
?Framework
Configured AWS resources
Template
CloudFormation
Stack
AWS CloudFormation이란?
AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 투자할 수 있도록 하는 서비스이다.
프로젝트 기획배경
02
Template
Documents
공부할게 얼마나 많은데, cloudformation docs까지?
하지만, 공식 문서를 학습하고 Template을 만드는 과정은 굉장히 힘들다.
서비스 개발할 시간도 부족한데 이걸 언제 공부하지.....
?JSON/YAML File
CloudFormation
Stack
User
프로젝트 목표
03
LLM
LLM이 만들어주는 Template!
LLM에게 공식 문서를 학습시킨 후 Template을 자동으로 만들게 하면 어떨까?
Template
Learned - AI
User
프로젝트 목표
04
“Auto Scaling을 지원하는 RDS Aurora 클러스터를 만들어줘. 인스턴스 타입은 db.r5.large로 해줘”
문서를 학습하지 않고, 훨씬 더 간단하게 CloudFormation을 이용할 수 있다.
LLM
“ 요청하신 내용에 따라 다음과 같은 템플릿을 만들었어요. ”
LLM이 만들어주는 Template!
“Stack-Order-Flow”
프로젝트 제목
사람의 명령(Order)만으로 AWS Stack을 생성할 수 있는 서비스
Template
LLM
Learned AI
?User - Order
?CloudFormation
Stack
05
프로젝트 수행 내용
06
Feature 1 - Template Generator
StackOrderFlow의 핵심 비즈니스, 템플릿 생성기능
Template Generator 사용 과정
RAG 기법 적용
Self-Feedback
RAG 기법을 적용하여
LLM의 응답 정확도 향상
생성한 템플릿 파일을 반복적으로
개선하는 과정을 통해 유효한 응답 생성
프로젝트 수행 내용
07
Feature 1 - Template Generator
*RAG가 적용된 Generator의 Sequence Diagram
*RAG란?
LLM의 응답을 생성하기 전, 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.
프로젝트 수행 내용
08
RAG 적용을 통해 향상된 성능
기존 GPT
LLM + RAG
46%
RAG 적용으로 정확도 19%p 향상
65%
*성공률 계산 방법
100개의 사용자 입력을 넣었을 때 유효한 템플릿이 생성된 경우의 비율
Feature 1 - Template Generator
프로젝트 수행 내용
09
Self-Feedback이 적용된 Generator의 Sequence Diagram
Feature 1 - Template Generator
프로젝트 수행 내용
10
Feature 1 - Template Generator
Self-Feedback 적용을 통해 향상된 성능
*성공률 계산 방법
100개의 사용자 입력을 넣었을 때 유효한 템플릿이 생성된 경우의 비율
LLM + RAG
StackOrderFlow
(LLM + RAG + Self-Feedback)
65%
76%
Self-Feedback 적용으로 정확도 11%p 향상
프로젝트 수행 내용
11
Feature 1 - Template Generator
지속적인 기능 개선으로 Generetor의 성능을 높임
RAG 적용
LLM의 응답 생성 과정에서 지식을 참조하게 하는 프로세스인 RAG를 적용함으로써 GPT대비 65%의 성능 향상을 이뤄냄.
Self-Feedback 적용
생성된 Template에 대한 validation을 진행하여 생성 성공 확률을 높임.
Prompt Engineering
지속적인 실험과 테스트로 Prompt를 수정하여 성능을 개선함.
Generator 성능 변화
프로젝트 수행 내용
12
Feature 1 - Template Generator - User Validation
사용자의 의도를 잘 반영하는 Generator 라는 사실을 검증했습니다.
ECR 공개 리포지토리에 정책 텍스트와 태그를 적용하되, 리포지토리 이름을 my-secure-repository로 설정해줘
1. ECR 공개 리포지토리 생성 (미달)
2. 정책 텍스트 적용 (충족)
3. 태그 적용 (충족)
4. 리포지토리 이름 (충족)
User Validation 진행 방법
?1. 사용자 입력에서 요구사항을 선정합니다.
2. 요구사항 충족 여부를 확인합니다.
3. 비율을 통해 성능을 계산합니다.
3/4 = 75% 충족
프로젝트 수행 내용
13
Feature 1 - Template Generator - User Validation
사용자의 의도를 잘 반영하는 Generator 라는 사실을 검증했습니다.
StackOrderFlow
- User Validation
94%
사용자 요구사항 94% 반영 성공
테스트 케이스 선정
진행 결과
서로다른 요구사항을 갖는 테스트케이스를 25개 선정하여 생성 후 템플릿을 검토하며 요구사항 충족 여부 검사
stackorderflow는 143개의 요구사항 중 135개를 충족하는 것을 확인함.
프로젝트 수행 내용
14
Feature 1 - Template Generator with Docs Provision
템플릿을 이해하고 싶으신가요? 필요한 문서만 참고해보세요.
Template Generator 사용 후 Documents 사용 과정
관련 문서 제공
문서 연결을 통한 직관적 참고
Template 생성 시 RAG 과정에서 참고한 문서를 사용자에게 제공
생성된 Template과 함께 관련 문서 목록을 제공하여 편리한 이동 가능
프로젝트 수행 내용
15
Feature 2 - Template Editor
내용 수정이 필요한가요? 생성된 템플릿을 수정해보세요
Template ?Editor 사용 과정
JSON Formmater
Editable
생성된 template을 JSON 형식에 맞게 구조화
VPC ID, Image ID와 같이 사용자가
직접 입력해야 하는 내용 수정 가능
프로젝트 수행 내용
16
Feature 3 - Template Hub
템플릿 허브를 통한 template 공유
원하는 template을 검색해보세요!
Template hub 사용 과정
Template 공유
AWS 서비스 기반 검색
생성된 template을 공개하여
사용자 간 공유 기능 제공
AWS 서비스를 기반으로
사용자가 원하는 template 검색
프로젝트 수행 내용
17
Template 활용 - AWS
다운받은 템플릿은 이렇게 사용합니다!
Template 적용 과정
Template 다운로드
AWS에서 사용하세요!
다운로드 버튼을 통해 편리한 저장
생성된 template을 통해 스택 생성
18
StackOrderFlow는 다릅니다.
GPT보다 더 높은 신뢰도와 특화된 서비스를 제공합니다.
Generator
RAG 기법, Self-Feedback, Prompt Engineering을 통해
향상된 성능의 템플릿 생성 기능 제공
Editor
private value를 삽입하여 즉각적인
사용이 가능
Hub
사례 공유 기능 제공
소개 페이지
https://kookmin-sw.github.io/capstone-2024-05/
깃허브
https://github.com/kookmin-sw/capstone-2024-05
Service 페이지
https://capstone-2024-05.vercel.app/
WinFo
Capstone-2024-05 Team
2024.05.24
Appendix
prompt 변화 과정
모델 평가 방법
Generate Training Data(Code)
LLM 학습 -> GPT 사용
Project Workflow Overview
Explanation of RAG
사용자 입력 필터
project overview
project overview with letter box
Appendix1 - ?Prompt Engineering
Persona
모델에게 명확한 역할과 지시 사항을 제공하여
원하는 출력 결과를 얻음
Appendix2 - Generate Training Data(Code)
Appendix3 - LLM학습 -> GPT 사용
DLPC - A5000
GPU 리소스 한계
단과대학에서 제공하는 A5000의 경우 학습시킬 수 있는 모델의 크기가 70B 정도인 만큼 LLM의 학습에 적절치 않았음.
데이터 부족
학습 데이터 생성을 위해서 GPT4를 통해 데이터 생성 및 증강을 진행했지만 LLM을 학습시키기에 불충분했음.
GPT4의 우수함
위 두 개의 장애를 해결한다고 해서 학습된 LLM의 성능이 GPT4보다 우수한 성능을 갖출거라 기대하기 어려움
Appendix4 - Project Workflow Overview
Appendix5 - RAG
Appendix6 - Evaluation Model
LLM 학습을 위해 GPT4를 사용하여 사용자 입력 - template 쌍의 데이터를 생성함.
?모델 성능 평가용 데이터 선정 방법
?1. 기존에 LLM 학습을 위해 생성한 데이터셋 사용
2. 데이터 샘플링
3. 해당 데이터(약 100개)로 성능 측정을 진행함
위 과정에서, 생성된 800개의 데이터 셋 중 100개의 데이터 셋 샘플링 진행함.
해당 데이터들에 대해 GPT4만 사용했을 때, StackOrderFlow를 사용했을 때를 비교하여 성능 비교 진행함.
3-1. 사용자 입력을 넣어 템플릿을 생성함.
3-2. validation API를 통해 템플릿의 유효성 검증을 진행함.
3-3. 템플릿이 유효한 경우 성공, 유효하지 않은 경우 실패로 간주함.
평가 진행 방법
Appendix7 - 사용자 입력 필터
?사용자 입력 검증 기능의 부재
Appendix8 - project overview
Appendix9 - project overview with letter box