본문 바로가기
IT 공부/생성형 AI

[생성형 AI] 애플리케이션 개발을 위한 생성AI 활용 프로세스 이해하기

by 해모해모 2024. 11. 11.
728x90
반응형

애플리케이션 개발을 위한 생성AI 활용 프로세스 이해하기

사용자 input과 생성 AI output

  • Language Interface

    • 현재 우리 사회를 강타하고 있는 생성 AI 열풍의 밑바탕에는 자연어 인터페이스가 존재
    • 인류 최고의 발명이라고도 불리는 "언어"는 가장 직관적이고 가장 표현력이 뛰어난 매체
    • 언어 생성 모델도, 이미지 생성 모델도 과거부터 존재해왔지만 Language Interface를 갖추면서 대중적인 관심을 모으게 됨
  • Input과 Output

    • 함수, 컴퓨터 프로그램, AI 모델 등은 모두 입력(input)과 출력(output)의 관점으로 이해할 수 있음
      • Input이란 우리(사용자)가 제공하는 정보이고, output은 우리에게 반환되는 정보
    • 최근 활용되고 있는 대부분의 생성 AI 모델에서 사용자 입력은 자연어
    • 반면, 출력의 경우 목적에 따라 다양한 편
      • 자연어, 이미지, 비디오, 오디오 등
  • 자연어 생성 모델 - LLM

    • 현재 가장 널리 사업화되고 있는 생성 AI 모델은 거대 언어 모델(Large Language Model)
    • 사실 외국어를 번역하거나, 문서를 요약하는 등의 자연어 생성을 수행하는 거대 언어 모델은 수년 전부터 존재해 왔음(ex: GPT-3, 2020)
    • 비교적 최근 챗봇 형태로 사람과 교감할 수 있는 언어 모델들이 등장하면서 (ex: ChatGPT) 그 활용성에 주목하기 시작
    • ChatGPT를 시작으로 수많은 Open Source 모델들 등장
  • 이미지 생성 모델 - DM

    • 이미지(비디오) 생성 역시 AI 연구자들의 오랜 숙원이었으나, 최근 Diffusion Model 들이 text-to-image 태스크에서 뛰어난 성과를 보여주면서 대중화되기 시작
    • 초기 적대적 생성 신경망(GAN) 등에 비해 이미지 품질이 뛰어난 반면 속도가 느린 것이 단점이었으나, 최근 많은 개선이 이루어지는 중
    • 이커머스, 컴퓨터 그래픽, 디자인 등 다양한 영역에서 사업화가 진행되는 중
  • 그 외 다양한 생성 모델들

    • 그 외에도 비디오, 3D shape, Speech, Music 등 다양한 output의 생성 모델들이 존재
    • 우리가 만들고자 하는 출력값의 형태는 다양하지만, 그 input으로써 자연어가 현재 기준 최고의 인터페이스라는 점에 대해서는 대체로 동의하는 편
  • LLM의 기대 출력값

    • 일반적으로 LLM은 사람의 instruction을 따르는 것을 원칙으로 함("Instruction tuning")
    • 원하는 구체적인 답변의 형태(format)가 존재하는 경우, 프롬프트 엔지니어링을 통해 특정 형태의 출력을 유도할 수 있음
      • 가장 대표적이며 효과적인 형태는 입출력 예시를 프롬프트에 제공해주는 것
      • 구체적인 답변의 형태로는 마크다운, JSON 포맷 등 다양하게 존재

세부 기능 정의

  • 하나의 LLM, 여러 개의 서비스

    • 기존 AI 모델들은 하나의 태스크를 해결하기 위해 학습된 전문가 모델들이었음
      • 최소한 사전 학습된 모델을 미세조정(fine-tuning) 해서 사용
    • 하지만 GPT와 같은 Foundation Model 들이 주류가 되면서 별도의 학습 없이 하나의 모델로 여러 문제를 해결하는 것이 일반화됨
    • 이 때 우리가 원하는 구체적인 기능에 맞게 프롬프트를 작성하여 LLM을 우리가 원하는 서비스 목적에 특화시킬 수 있음
      • 이 때 프롬프트(prompt)란 언어 모델에게 넣어주는 입력값을 의미
  • Input에서 Output까지의 여정

    • AI 모델을 활용하는 서비스들은 맣은 경우 두 개 이상의 모델 결괏값을 활용
      • ChatGPT가 한 번에 원하는 결과를 만들어낼 수 없는 경우, 여러 단계에 나눠서 접근(ex: Chain-of-Thoughts, CoT)
      • 기능적으로 여러 모델을 활용할 필요가 있는 경우, I/O 구조에 유의하면서 파이프라인 설계
  • Input-Output 파이프라인 예시

    • 입력: 사람이 등장하는 이미지
    • 출력: 이미지에 등장하는 패션 아이템 (옷, 가방, 신발 등)에 대한 정보
    • 과정:
      • 이미지에서 패션 아이템 영역 추출 (Object Detection / Visual Grounding / Segmentation)
      • 추출된 이미지 영역으로 검색 (Google Image Search API 등)
      • 검색 결과 Parsing (API Call 형태에 맞게 정보 처리)
      • Language Model Prompting을 통한 Final User Output 생성

UI 구현

  • 생성 AI 서비스에서 UI란

    • UI(User Interface)란 기본적으로 값을 입력 받고 출력 하는 방식에 대한 디자인
    • 효율성 만큼이나 직관성이나 심미성 등도 깊게 관여하는 영역
      • 요구되는 역량이 다양한 만큼 일반적으로 한 명의 엔지니어가 AI 서비스 전체 파이프라인을 담당하기는 어려움
      • AI 제품을 만드는 팀이라면 AI modeling, model serving, backend, frontend 등으로 엔지니어링 파트가 구성되는 것이 보통
  • 기본적인 UI 디자인

    • 스큐어모피즘(Skeuomorphic Design)
      • 3차원적, 사실주의적 (초기 애플 디자인), 디지털 UI에 익숙하지 않은 사용자 대상으로 강점
    • 플랫 디자인(Flat Design)
      • 2차원적, 단순함, 가독성이 좋고 로딩이 빠름(가벼움)
  • Gradio

    • AI resercher / engineer 들이 널리 사용하는 데모 제작 프레임워크
    • Frontend를 위한 코드를 최소화하면서 AI model을 GUI 상에서 테스틓해볼 수 있음
    • 챗봇, 피드백 등의 인터페이스도 구현이 잘 되어 있어 빠르게 공유하고 피드백을 모으기 적합
  • Streamlit

    • Python에 특화된 데이터 웹 애플리케이션 제작 프레임워크
    • Frontend 비용을 최소화하고 빠르게 공유가능한 앱 제작을 도와줌
    • AI 뿐 아니라 데이터 분석 분야에서도 널리 활용됨
  • HTML, CSS, JavaScript

    • 과거부터 가장 널리 사용되는 웹 개발 프레임워크들은 HTML, CSS, JS를 기반으로 동작
      • HTML: 웹 페이지의 기본 구조(뼈대) 담당
      • CSS: 디자인/스타일 담당
      • JavaScript: 클라이언트 단에서 웹페이지의 동작 담당

프롬프트 엔지니어링을 통한 결과 확인

  • 피드백 루프를 통한 AI 모델 개선

    • AI 모델을 학습시키는 것은 본질적으로 "iterative process"
    • [최초 모델 학습 - 성능 평가 - 단점 보완] 사이클을 반복하여 높은 성능의 모델 제작
    • 이러한 피드백 루프가 잘 작동하기 위해서는 좋은 평가 지표 확보와 적절한 보완책 수립이 중요
  • 피드백 루프를 통한 프롬프트 개선

    • 우리는 AI 모델 자체를 학습하는 것은 아니지만, 프롬프트 엔지니어링도 본질적으로 이와 유사
      • 프롬프트를 통한 모델 추론을 ML에서는 "In-context Learning"이라고 부름
    • 현재 프롬프트에 대한 결과를 확인하고, 단점을 보완할 수 있는 다음 버전 프롬프트 작성
    • 완벽한 모델이란 존재하지 않으므로 애플리케이션이 활용되는 한 프롬프트에 대한 평가와 개선은 끊임없이 이루어져야 하는 작업
  • 프롬프트 엔지니어링 예시

    • 사람과 같이 LLM도 구체적인 정보가 주어질수록 적절한 답변을 돌려줌
    • LLM 프롬프트는 간결하면서도 의미가 명확한 것이 효과적
    • 필요에 따라 구체적인 예시를 포함시키면 출력값을 보다 세밀하게 조절할 수 있음

결과 평가, 개선 및 유지보수

  • 생성 AI 결과 평가

    • 생성 AI의 결과 평가는 현재도 활발히 연구되고 있는 분야
      • 단순한 기계 학습 문제에 비해 다양한 요소(ex: 정확성, 유창성, 적절성 등)를 모두 평가하는 것이 쉽지 않음
    • 하지만 점진적인 성능 향상을 위해서는 목표에 맞는 평가 지표 수립이 필수적
      • 완벽하지 않더라도, 서비스 목적에 맞는 평가 지표를 만드는 것이 중요(ex: 정확성, 참신성, 흥미도 등)
  • GPT Evaluation

    • 현재 AI 학계에서 가장 널리 사용되는 평가 방법 중 하나는 GPT를 이용한 평가
    • 비교 평가
      • GPT에게 문제, 평가 기준, 그리고 서로 다른 모델의 결괏값을 입력으로 준 뒤 어느 쪽이 더 우수한지 비교
    • 절대 평가
      • GPT에게 문제, 평가기준, 점수 범위 (보통 5점 정도), 그리고 모델 결괏값을 입력으로 준 뒤 몇 점인지를 출력하도록 지시
    • 보통 GPT-4 혹은 ChatGPT를 사용하며, 이들의 성능이 가장 우수한 점을 활용
  • GPT Evalutaion 예시

    • GPT를 사용하는 평가도 구체적인 태스크에 따라 다양한 형태를 띨 수 있음
    • 여기서는 한 편의 글을 읽고 요약하는 태스크에 대한 평가 방법을 예시로 소개
  • 꾸준한 개선 및 유지 보수의 필요성

    • OpenAI API 자체가 라이브 서비스이기 때문에 실시간으로 버전이 바뀌고, 이에 따라 행동 양식이 조금씩 달라짐
      • 현업에서는 어제까지 잘 되던 input/output이 오늘부터 망가지는 경우도 발생
    • LLM을 활용하는 애플리케이션에서의 핵심은 프롬프트이기 때문에 꾸준한 모니터링을 통해 이것을 개선하는 것이 곧 서비스 품질 관리
      • 지시사항이 명확한지(이중 해석의 소지는 없는지)
      • 원치 않는 결과들을 명시하고 있지는 않은지
      • 추가/개선할 만한 예시들이 있는지
728x90
반응형

댓글