이 글은 가상 면접 사례로 배우는 생성형 AI 서비스 설계 4장 'ChatGPT: 개인 비서 챗봇'을 읽고 내용을 정리한 글입니다.
가상 면접 사례로 배우는 생성형 AI 서비스 설계 | 알리 아미니안 - 교보문고
가상 면접 사례로 배우는 생성형 AI 서비스 설계 | 구글 번역기, AI 대화 서비스, 이미지 합성 같은 생성형 AI 서비스는 어떻게 설계할까? 10개의 실전 사례를 직접 설계해 보며 배우는 생성형 AI 서
product.kyobobook.co.kr
서론
ChatGPT는 주어진 입력 값을 기반으로 사람이 작성한 듯한 글을 생성한다. 이번 장에서는 생성형 AI 챗봇을 만들기 위해 어떤 요소들을 고려해야 하는지, 그리고 어떤 과정을 거쳐 개발되는지 살펴본다.
- 요구사항 구체화 및 문제 정의
- 데이터 준비
- 모델 개발
- 평가
1. 요구사항 구체화 및 문제 정의
먼저, 어떤 챗봇을 만들 건지 요구사항을 구체화해야 한다. 특정 언어만 지원해야 하는지, 어떤 작업을 수행할 수 있어야 하는지, 어떤 데이터 형태를 다루는 챗봇인지 등.
이번에는 몇 가지 가정과 함께 개발 과정을 살펴보자.
- 시스템의 입출력이 모두 텍스트다.
- 언어 모델은 디코더 전용 트랜스포머를 활용한다.
❓ 챗봇과 언어 모델
챗봇은 언어 모델을 활용하여 입력 프롬프트를 처리하고 응답을 만들어 내는 텍스트 생성 작업을 수행한다. 이 언어 모델의 대표적인 구조는 디코더 전용 트랜스포머이므로, 위 가정에서도 언어 모델은 디코더 전용 트랜스포머를 활용한다고 가정하였다.
2. 데이터 준비
LLM의 성능은 학습 데이터의 품질에 달려 있다. 이 데이터는 여러 단계를 걸쳐 품질을 개선해야 한다.
- 콘텐츠 추출 및 파싱 - 웹 크롤링 데이터 같은 경우는 html 태그, 광고 등이 포함되기 때문에 핵심 내용 추출 필요
- URL 및 도메인 필터링 - 저품질 블로그, 스팸 사이트 등의 원치 않은 출처 배제
- 언어 식별 - 학습을 원하는 언어에 맞춰 필터링
- 콘텐츠 품질 필터링
특히 콘텐츠 품질 필터링은 학습용 데이터로써 가치 있는 것을 판단하기 위해 중요하다. 고품질 데이터만 학습할 수 있도록 더 다양한 종류의 필터링이 존재한다.
- 부적절한 콘텐츠 제거 - 유해하거나 부적절한 내용 제거
- 민감 정보 익명화 - 개인 정보 보호
- 저품질 데이터 제거
- 중복 데이터 제거
- 관련 없는 데이터 제거
- 텍스트 토큰화
💡 텍스트 토큰화와 BPE
- 텍스트를 어떻게 토큰화하냐에 따라 각 언어마다 존재하는 다양한 어휘를 어떻게 효율적으로 다룰 수 있는지 결정된다.
- BPE(Byte-Pair Encoding)는 널리 사용되는 토큰화 알고리즘 중 하나다.
- BPE는 처음에는 개별 문자로 시작해서, 자주 붙어 나오는 조합을 반복적으로 병합해 새 단위를 만들어가는 식으로 어휘집을 만든다. 자세한 설명은 위키 링크로 대체한다.
3. 모델 개발
LLM의 구조는 디코더 전용 트랜스포머 기반으로 가정했다.

위치 인코딩
위치 인코딩은 모델이 모든 토큰의 위치와 토큰 간의 관계를 이해할 수 있게 한다. 위치 인코딩의 일종인 절대 위치 인코딩, 상대 위치 인코딩, RoPE 3가지에 대해 알아보자.
절대 위치 인코딩
- 시퀀스 내 각각의 위치를 고유한 벡터로 표현
- 토큰의 임베딩에 인코딩한 위치 정보를 더해 모델이 시퀀스 내 토큰의 위치를 인식할 수 있게 함
- 한계점
- 절대적인 위치 정보만 포함
- 토큰 간의 상대적 거리 정보를 이해하기 어려움
- 다양한 길이의 시퀀스 혹은 새로운 토큰의 위치에서 일반화된 성능 나타내기 어려움 (ex: 최대 512개 토큰의 시퀀스로 학습한 모델에 4096개 토큰의 시퀀스에 대한 처리가 필요하다면?)
상대 위치 인코딩
- 두 토큰 간 위치의 차이를 인코딩
- 한계점
- 어텐션 메커니즘의 복잡성이 높아짐
- 선형 어텐션 같은 효율적 기법 사용 불가
RoPE; Rotary Positional Embedding
- 회전 행렬로 위치 정보 표현
- 장점
- 토큰의 위치가 바뀌어도 일관성 있게 위치 정보를 인코딩
- 상대적 위치 표현 가능
- 배운 적 없는 위치에 대한 일반화 가능
- 단점
- 절대 위치 인코딩에 비해 수학적 복잡도가 높음
💡 RoPE와 회전 행렬
- 회전 행렬: 벡터의 길이는 유지하고, 원점을 중심으로 정해진 각도만큼 돌려주는 변환
- RoPE는 각 토큰의 쿼리 벡터와 키 벡터를, 해당 토큰의 위치 인덱스에 비례한 각도만큼 회전시킴
- 예를 들어, 위치 1번 토큰은 1θ만큼, 위치 2번 토큰은 2θ만큼 회전한다. 둘을 내적 하면 각자의 절대 회전량(1θ, 2θ)은 사라지고 차이인 1θ(= 1칸 차이)만 남는다. (내적하다: 두 개의 벡터를 내적하면 같은 방향을 얼마나 보고 있나를 나타냄. 비슷할수록 큰 값, 정반대면 음수가 나옴. 이를 통해 두 벡터가 얼마나 관련 있는지를 판단할 수 있음)

학습

사전학습; Pretraining
- 목표: 언어와 세상의 지식에 대해 폭넓은 이해력을 가진 기본 모델 생성
- 모델에 다양한 언어 스타일을 적용, 특정 분야에 대한 이해도 높이기 등 다양한 목적의 데이터 세트 존재
- Common Crawl, C4, GitHub 등 다양한 데이터 세트 존재
지도 미세 조정; Supervised Fine Tuning
- 더 작은 규모의 고품질 데이터 세트를 활용해 기본 모델을 미세 조정
- 시범 데이터(demonstration data)
- 지도 미세 조정을 위한 학습 데이터
- 모델이 프롬프트에 어떻게 응답해야 할지 선보이는 형태
- 사전 학습 데이터보다 규모가 작고, 품질이 우수
- 한계점: 그럴듯한 응답은 생성하나, 도움이 되지 않거나 위험한 답변을 내세울 수 있음
RLHF; Reinforcement Learning from Human Feedback
- 모델이 사람이 선호하는 응답을 생성하도록 적응
- 응답과 프롬프트의 관련성을 평가할 수 있는 독립적인 보상 모델 도입
- RLHF의 단계
- 보상 모델 학습
- 지도 미세 조정 모델 최적화: PPO 같은 강화 학습 알고리즘을 통해 보상 모델이 예측하는 점수를 최대화하도록 미세 조정
❓ 보상 모델
- 보상 모델의 크기가 학습에 사용된 언어 모델의 크기에 따라 어떻게 변화해야 하는지에 대해 정해진 규칙은 없음
- 패배 응답보다 승리 응답에 더 높은 점수를 예측하는 것이 목표 -> 손실 함수 활용
❓ 손실 함수
- 승리 점수 - 패배 점수 간 차이가 너무 작은 경우 모델에 페널티 부여
- 자주 사용되는 손실 함수: 마진 순위 손실 (margin ranking loss)
- 마진: 승리 응답과 패배 응답 간에 요구되는 최소 점수 차이
- ex: 승리점수와 패배 점수의 차이가 마진보다 작으면 최적화 함수를 통해 승리 점수를 높인다
샘플링
- 모델이 예측한 확률 분포에서 토큰을 선택하는 방식
- 샘플링의 목표: 일관되고 유용한 응답 생성

탐욕 검색
- 생성 과정의 매 단계마다 가장 높은 확률의 토큰 선택
- 한계점
- 반복 - 모델이 동일한 토큰 시퀀스 사용 -> 루프에 갇힘 -> 텍스트 반복
- 최적화되지 않은 생성
빔 검색
- 여러 개의 시퀀스를 동시에 고려
- 상위 시퀀스 k개 추적
- 한계점
- 비효율적 - 여러 개의 시퀀스 한 번에 평가
- 반복적이고 포괄적인 답변 생성
다항 샘플링
- 모델이 예측한 확률 분포에 근거해 다음 토큰 선택 -> 출력의 다양성 보장
- 한계점
- 확률 분포가 균등할수록 무작위성이 높음 (= 일관성 저하)
Top-k 샘플링
- 가장 확률이 높은 k개의 토큰 중 선택
- 항상 고정된 숫자의 토큰으로부터 샘플링
- 한계점
- 예측된 확률 분포가 급격할 경우: 확률이 낮은 부적절한 토큰이 섞여 비논리적 결과 생성 가능
- 예측된 확률 분포가 평평할 경우: 모델의 창의성에 제약

Top-p 샘플링; 핵 샘플링
- 후보 토큰의 합산된 확률 값을 기반으로 샘플링 후보 토큰 개수를 그때그때 조정 (k개 고정이 아님)
- 누적 확률 값이 p를 초과하는 가장 작은 토큰 집합으로부터 샘플링

샘플링에서 활용되는 기법
- 온도
- 샘플링 기법에서 사용하는 매개변수.
- 예측의 무작위성 정도를 조절
- ex: 온도가 높다 -> 무작위성이 증가한다 (= 모델이 창의적 출력을 생성한다)
- 반복 페널티
- 반복적인 토큰 시퀀스를 생성할 가능성을 명시적으로 줄임
4. 평가
오프라인 평가 지표
전통적인 평가
- LLM 성능에 대한 기초적인 이해 제공
- ex: Perplexity - 모델이 텍스트 형태의 토큰 시퀀스를 얼마나 정확하게 예측하는지
과제별 평가
- 상식 추론: 일상적인 상황과 일반 지식에 대한 모델의 추론 능력 평가
- 일반 상식: 세상에 대한 모델의 사실 기반 지식 평가
- 독해력: 텍스트 지문을 이해하고 해석하는 능력과 질문에 대답하는 능력
- 수학적 추론
- 코드 생성
- 종합 벤치마크
안정성 평가
- 위험성 및 유해 콘텐츠
- 편향 및 공정성
- 진실성
- 사용자 프라이버시 및 데이터 유출
- 적대적 공격에 대한 강건성 - 모델을 혼란스럽게 하기 위한 의도적인 입력값에 대한 LLM의 대응 능력
사람의 평가
- 평가자들에게 직접 평가 요청
온라인 평가 지표
- 사용자의 피드백과 별점
- 사용자 참여도 - 만들어진 쿼리 개수, 세션 지속 시간 등
- 전환율 - 서비스 구매 / 구독한 사용자의 비율 등
- 실시간 순위 - 다양한 LLM 성능을 실시간으로 추적해 반영한 순위표
전체 머신러닝 시스템 설계
학습 파이프라인
- 사전 학습, 지도 미세 조정, RLHF 같은 과정 포함
추론 파이프라인
- 안정성 필터링 - 질문이 유해하거나 부적절한지
- 프롬프트 개선 장치 - 약어를 풀어쓰고 철자 오류 교정하는 등 입력 프롬프트를 정제
- 응답 생성기
- 응답 안정성 평가 장치
- 거절 응답 생성기 - 생성된 응답이 적합하지 않은 경우, 적절한 응답 생성
- 세션 관리 장치 - 대화 맥락 유지
'Develop > AI' 카테고리의 다른 글
| AI 에이전트란? (0) | 2026.03.30 |
|---|---|
| LLM 이해하기 - 딥러닝부터 LLM까지 (2) | 2026.01.31 |
| RAG란? (0) | 2025.11.04 |
| LangChain이란? (2) | 2025.11.03 |