생성형 AI를 공부하기 위한 토이 프로젝트를 진행해보자 Part1.

Simon Kim·2024년 2월 16일
0
post-thumbnail

서론


작년 한해 IT 시장을 강타한 단어 '생성형 AI'. 이 마법의 단어는 2024년을 맞이한 지금 시점에서 IT를 모르는 사람들에게 서서히 들어오기 시작하였다. 작년까지 IT직군에서 많은 관심을 보였다고 한다면, 올해는 전 직군에서 비즈니스적인 도입을 검토하거나, 도입하여 운영하고 있는 사례들이 나오고 있다.

나 또한 AI 웨이브가 펼쳐지고 있는 지금 시점에서 생성형 AI가 무엇인지 공부할 겸, 이전의 AI플랫폼 고도화한 경험을 활용하여 AI를 시스템에 통합하는 딥 다이브한 방법을 시도해 보고자, 나만의 토이 프로젝트를 진행해 보고자 한다.
(2부 또는 3부의 걸쳐 블로그를 작성할 계획이다..)

그래서 무슨 프로젝트를 해볼껀데?


그래서 무엇을 만들어 볼까 고민하다가, 현재 내가 다니고 있는 교육회사에서 작년에 큰 화두였던 디지털 교과서 사업이 생각나, 나만의 디지털 교과서(?)를 만들어 보면 어떨까라는.. 아이디어로 토이 프로젝트를 선정하였다.
(제목은 거창하고 사실은 보충학습지를 만드는 것일듯 하다. MVP같지 않은 진짜 토이다. ㅋㅋ)

프로젝트 제목 : 나만의 디지털 교과서(?) 생성 - 부재 : 나만의 보충학습지 만들기
가상 배경 :

초등학교 1학년 새학기가 시작된 "환이"는 한가득 기대를 가지고 초등학교에 입학하였다. 
새롭게 만난 친구들, 선생님, 그리고 디지털 교과서가 들어있는 MPxx 테블릿...(응, 책이 아니었어??) 
"환이"는 첫 수업 과목인 산수에서 "사칙연산"에 대한 개념을 배우고 문제를 풀었다. 
수학이 약한 "환이"는 10문제 중에 3문제만을 맞춰 기분이 우울했다. 
그런데 이때, MPxx 테블릿에서 알람이 울렸고, "환이"는 알람 내용을 보는데...

_"문제를 잘 못풀어 우울해하고 있는 "환이"님. 당신의 사칙연산을 마스터 시켜 드릴께요. 
아래 링크를 클릭해서 들어오세요.^^ - from X가
(추신 : 당신이 생각하는 그 X는 아니랍니다 ㅎㅎ.) "_

"환이"는 "사칙연산"을 마스터하고 싶은 마음에 링크를 클릭하게 되는데...

핵심 시나리오 :

1. 사용자 "환이"는 "사칙연산" 문제 풀이 결과 보충학습이 필요한 대상자이다.
2. 시스템은 "환이"에게 제공할 "사칙연산" 개념과 문제를 생성하고, 이를 알람으로 제공한다.
3. 사용자 "환이"는 알람을 클릭하여 보충학습지에 입장하게 되고, 시스템이 생성한 "사칙연산" 개념을 이해하고 문제를 학습한다.
4. 사용자 "환이"가 풀이한 문제 풀이가 전송되고, 시스템은 향후 추가 학습이 필요한지 분석할 수 있도록 데이터를 관리한다.

어떻게 만들꺼야?


  1. 생성형 AI 모듈 및 솔루션 검토

    1-1) 생성형 AI 개발 환경
    시스템이 자동으로 생성하기 위한 AI Framework가 필요하다고 생각하여, AI 모델 연동 시 가장 많이 사용하고 있는 Langchain 으로 개발 환경을 구성하였다.

    1-2) 임베딩 모델, 생성형 AI 모델
    참고로 나는 백엔드 개발과 Devops를 메인으로 하는 개발자이기 때문에, 생성형 AI에 사용되는 임베딩 모델이나 학습 모델은 잘 모른다. 다행히, HuggingFace에서 제공하는 임베딩 모델인multilingual 모델과 사전에 학습된 LLAMA 2 모델을 조합하여 질의응답 모듈을 구성하였다. 이번 토이 프로젝트에서는 Finetuning을 이용한 Custom training은 고려하지 않았다.

    1-3) RAG
    1-2에 소개한 모델은 범용적 모델이어서, 교육 카테고리에 특화를 위한 RAG 구성이 필요하다. 이를 위해 ChatGPT를 이용하여 가상의 학습지를 만들어 이를 Dataset화 하였고, Dataset를 저장하기 위해 memory vector DB인 faiss db를 구성하여 데이터를 저장하였다.
    결국 1-2와 1-3을 조합하여 보충학습 문제를 자동으로 생성할 것이다.

    1-4) 생성형 AI 솔루션
    보충학습지에는 문제뿐만 아니라, 학습에 대한 개념을 설명할 것이다. 단순한 텍스트로도 설명하겠지만 우리 "환이"는 아직 8살이다. 글보다는 그림으로 이해하는 것이 더 빠른 나이이므로, "사칙연산" 개념을 그림으로 설명하기 위해 이미지를 생성할 것이다. text-to-image 솔루션 중 가장 많이 알려져있는 Stabiliy.AI사의 Stable diffusion을 사용할 것이다. 일부 오픈소스로 제공하고 있으며, 최초 회원가입 시, 무료 Token을 제공해준다.

  2. 어플리케이션 환경 검토
    일반적인 3-tier 아키택처로 구성하였고, 각 영역별 사용 언어는 다음과 같다.

frontend : jQuery + Bootstrap
backend : Django Framework (python)
DB : mariaDB
  1. 프로세스 설계
    생성형 AI을 이용한 보충학습지 생성 프로세스는 다음과 같이 구성하였다.
    3-1) VectorDB에 저장할 산수 데이터를 RAG화 진행
    3-2) "사칙연산"에 대한 프롬프트를 작성하여 범용 모델인 LLAMA 2에 요청하면 VectorDB 데이터를 바탕으로 문제를 생성한다.
    3-3) 산수 데이터의 개념 텍스트를 바탕으로 이미지 생성에 대한 프롬프트를 작성하여 Stable diffusion에 이미지 생성을 요청하여 DB에 저장한다.
    3-4) 최종적으로 "환이"가 보충학습지에 진입하면 보충학습지가 생성된다.

결과


위의 프로세스를 구성하고 실행한 결과는 아래와 같다. 생각보다 잘 나와서 놀랐고, 프롬프트와 템플릿만 잘 구성하면 퀄리티 있는 결과물이 나올 것으로 예상된다.
4-1) 모바일

4-2) 테블릿

개발 과정


구체적인 개발 과정은 다음 편에 자세히 설명하겠다.

profile
다양한 주제를 심플하고 명확하게 정리해 보려는 연차만 많은 IT 잡부입니다. 사람들과의 소통을 사랑합니다.~^^

0개의 댓글