1 of 32

StackOrderFlow

LLM 기반 AWS-Cloudformation 어시스턴트

Capstone-2024-05 Team

2024.05.24

WinFo

2 of 32

3 of 32

당신의 18일을 아껴드립니다.

Capstone-2024-05 Team

2024.05.24

WinFo

4 of 32

프로젝트 기획배경

01

?JSON/YAML File

    • 매개변수 정의
    • 리소스 생성
    • 환경설정 등
    • 사람이 작성

?Framework

    • Stack 생성
    • Stack 업데이트
    • 오류 탐지 및 롤백

Configured AWS resources

    • 포괄적인 서비스 지원
    • 서비스 이벤트 인식
    • 커스터마이징 가능

Template

CloudFormation

Stack

AWS CloudFormation이란?

AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 투자할 수 있도록 하는 서비스이다.

5 of 32

프로젝트 기획배경

02

Template

Documents

    • 5000개 이상

공부할게 얼마나 많은데, cloudformation docs까지?

하지만, 공식 문서를 학습하고 Template을 만드는 과정은 굉장히 힘들다.

서비스 개발할 시간도 부족한데 이걸 언제 공부하지.....

?JSON/YAML File

    • 사람이 작성

CloudFormation

Stack

User

    • 학습 어려움
    • 많은 시간 소요

6 of 32

프로젝트 목표

03

LLM

LLM이 만들어주는 Template!

LLM에게 공식 문서를 학습시킨 후 Template을 자동으로 만들게 하면 어떨까?

Template

Learned - AI

    • 공식문서 기반 데이터 학습

User

    • Prompt 입력

7 of 32

프로젝트 목표

04

“Auto Scaling을 지원하는 RDS Aurora 클러스터를 만들어줘. 인스턴스 타입은 db.r5.large로 해줘”

문서를 학습하지 않고, 훨씬 더 간단하게 CloudFormation을 이용할 수 있다.

LLM

“ 요청하신 내용에 따라 다음과 같은 템플릿을 만들었어요. ”

LLM이 만들어주는 Template!

8 of 32

“Stack-Order-Flow”

프로젝트 제목

사람의 명령(Order)만으로 AWS Stack을 생성할 수 있는 서비스

Template

LLM

Learned AI

?User - Order

?CloudFormation

Stack

05

9 of 32

프로젝트 수행 내용

06

Feature 1 - Template Generator

StackOrderFlow의 핵심 비즈니스, 템플릿 생성기능

Template Generator 사용 과정

RAG 기법 적용

Self-Feedback

RAG 기법을 적용하여

LLM의 응답 정확도 향상

생성한 템플릿 파일을 반복적으로

개선하는 과정을 통해 유효한 응답 생성

10 of 32

프로젝트 수행 내용

07

Feature 1 - Template Generator

*RAG가 적용된 Generator의 Sequence Diagram

*RAG란?

LLM의 응답을 생성하기 전, 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.

11 of 32

프로젝트 수행 내용

08

RAG 적용을 통해 향상된 성능

기존 GPT

LLM + RAG

46%

RAG 적용으로 정확도 19%p 향상

65%

*성공률 계산 방법

100개의 사용자 입력을 넣었을 때 유효한 템플릿이 생성된 경우의 비율

Feature 1 - Template Generator

12 of 32

프로젝트 수행 내용

09

Self-Feedback이 적용된 Generator의 Sequence Diagram

Feature 1 - Template Generator

13 of 32

프로젝트 수행 내용

10

Feature 1 - Template Generator

Self-Feedback 적용을 통해 향상된 성능

*성공률 계산 방법

100개의 사용자 입력을 넣었을 때 유효한 템플릿이 생성된 경우의 비율

LLM + RAG

StackOrderFlow

(LLM + RAG + Self-Feedback)

65%

76%

Self-Feedback 적용으로 정확도 11%p 향상

14 of 32

프로젝트 수행 내용

11

Feature 1 - Template Generator

지속적인 기능 개선으로 Generetor의 성능을 높임

RAG 적용

LLM의 응답 생성 과정에서 지식을 참조하게 하는 프로세스인 RAG를 적용함으로써 GPT대비 65%의 성능 향상을 이뤄냄.

Self-Feedback 적용

생성된 Template에 대한 validation을 진행하여 생성 성공 확률을 높임.

Prompt Engineering

지속적인 실험과 테스트로 Prompt를 수정하여 성능을 개선함.

Generator 성능 변화

15 of 32

프로젝트 수행 내용

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% 충족

16 of 32

프로젝트 수행 내용

13

Feature 1 - Template Generator - User Validation

사용자의 의도를 잘 반영하는 Generator 라는 사실을 검증했습니다.

StackOrderFlow

- User Validation

94%

사용자 요구사항 94% 반영 성공

테스트 케이스 선정

진행 결과

서로다른 요구사항을 갖는 테스트케이스를 25개 선정하여 생성 후 템플릿을 검토하며 요구사항 충족 여부 검사

stackorderflow는 143개의 요구사항 중 135개를 충족하는 것을 확인함.

17 of 32

프로젝트 수행 내용

14

Feature 1 - Template Generator with Docs Provision

템플릿을 이해하고 싶으신가요? 필요한 문서만 참고해보세요.

Template Generator 사용 후 Documents 사용 과정

관련 문서 제공

문서 연결을 통한 직관적 참고

Template 생성 시 RAG 과정에서 참고한 문서를 사용자에게 제공

생성된 Template과 함께 관련 문서 목록을 제공하여 편리한 이동 가능

18 of 32

프로젝트 수행 내용

15

Feature 2 - Template Editor

내용 수정이 필요한가요? 생성된 템플릿을 수정해보세요

Template ?Editor 사용 과정

JSON Formmater

Editable

생성된 template을 JSON 형식에 맞게 구조화

VPC ID, Image ID와 같이 사용자가

직접 입력해야 하는 내용 수정 가능

19 of 32

프로젝트 수행 내용

16

Feature 3 - Template Hub

템플릿 허브를 통한 template 공유

원하는 template을 검색해보세요!

Template hub 사용 과정

Template 공유

AWS 서비스 기반 검색

생성된 template을 공개하여

사용자 간 공유 기능 제공

AWS 서비스를 기반으로

사용자가 원하는 template 검색

20 of 32

프로젝트 수행 내용

17

Template 활용 - AWS

다운받은 템플릿은 이렇게 사용합니다!

Template 적용 과정

Template 다운로드

AWS에서 사용하세요!

다운로드 버튼을 통해 편리한 저장

생성된 template을 통해 스택 생성

21 of 32

18

StackOrderFlow는 다릅니다.

GPT보다 더 높은 신뢰도와 특화된 서비스를 제공합니다.

Generator

RAG 기법, Self-Feedback, Prompt Engineering을 통해

향상된 성능의 템플릿 생성 기능 제공

Editor

private value를 삽입하여 즉각적인

사용이 가능

Hub

사례 공유 기능 제공

22 of 32

소개 페이지

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

23 of 32

Appendix

prompt 변화 과정

모델 평가 방법

Generate Training Data(Code)

LLM 학습 -> GPT 사용

Project Workflow Overview

Explanation of RAG

사용자 입력 필터

project overview

project overview with letter box

24 of 32

Appendix1 - ?Prompt Engineering

Persona

모델에게 명확한 역할과 지시 사항을 제공하여

원하는 출력 결과를 얻음

25 of 32

Appendix2 - Generate Training Data(Code)

26 of 32

Appendix3 - LLM학습 -> GPT 사용

DLPC - A5000

GPU 리소스 한계

단과대학에서 제공하는 A5000의 경우 학습시킬 수 있는 모델의 크기가 70B 정도인 만큼 LLM의 학습에 적절치 않았음.

데이터 부족

학습 데이터 생성을 위해서 GPT4를 통해 데이터 생성 및 증강을 진행했지만 LLM을 학습시키기에 불충분했음.

GPT4의 우수함

위 두 개의 장애를 해결한다고 해서 학습된 LLM의 성능이 GPT4보다 우수한 성능을 갖출거라 기대하기 어려움

27 of 32

Appendix4 - Project Workflow Overview

28 of 32

Appendix5 - RAG

29 of 32

Appendix6 - Evaluation Model

LLM 학습을 위해 GPT4를 사용하여 사용자 입력 - template 쌍의 데이터를 생성함.

?모델 성능 평가용 데이터 선정 방법

?1. 기존에 LLM 학습을 위해 생성한 데이터셋 사용

2. 데이터 샘플링

3. 해당 데이터(약 100개)로 성능 측정을 진행함

위 과정에서, 생성된 800개의 데이터 셋 중 100개의 데이터 셋 샘플링 진행함.

해당 데이터들에 대해 GPT4만 사용했을 때, StackOrderFlow를 사용했을 때를 비교하여 성능 비교 진행함.

3-1. 사용자 입력을 넣어 템플릿을 생성함.

3-2. validation API를 통해 템플릿의 유효성 검증을 진행함.

3-3. 템플릿이 유효한 경우 성공, 유효하지 않은 경우 실패로 간주함.

평가 진행 방법

30 of 32

Appendix7 - 사용자 입력 필터

?사용자 입력 검증 기능의 부재

    • 사용자 입력 필터 개발을 위해 Sentence Bert를 사용하여 이진분류 모델을 개발함

    • 하지만 데이터 수집 과정에서 문제가 발생

    • 참 / 거짓 비율에서 비대칭 발생 (T/F = 600/60,000)

    • 참인 데이터를 구하기가 힘들었음

    • 기대한 성능이 나오지 않아 적용 보류 결정

31 of 32

Appendix8 - project overview

32 of 32

Appendix9 - project overview with letter box