AI 시대 필수 교양! 챗GPT 너머, 진짜 LLM 배우기 feat. 스탠포드 대학 강의

 

스탠포드 강의로 배우는 머신러닝과 LLM 

자, 그럼 시작해볼까요. 오늘은 LLMs, 즉 대규모 언어 모델을 구축하는 방법에 대해 이야기할 거예요. 아마 많은 분들이 이미 LLM이라는 단어를 들어보셨을 텐데요, 간단히 다시 짚고 넘어가자면, LLM은 Large Language Models의 약자로, 요즘 자주 들리는 챗봇들—예를 들어 OpenAI의 ChatGPT, Anthropic의 Claude, 구글의 Gemini 같은 모델들이 여기에 해당돼요.

오늘 강의에서는 이러한 모델들이 실제로 어떻게 작동하는지를 다룰 겁니다. 하나의 강의로 모든 내용을 다 담기에는 어려우니 개요 수준에서 전체를 살짝씩 훑어보게 될 거예요. 가능하다면 LLM을 학습시키는 데 필요한 핵심 구성 요소들을 다 한 번씩 짚고 넘어갈 생각입니다.

그리고 강의 도중에 질문이 있다면 꼭 끊고 질문해주세요. 여러분이 궁금한 점은 다른 사람도 똑같이 궁금해하고 있을 가능성이 커요. 이 강의실에 있는 사람들뿐만 아니라 Zoom으로 듣고 있는 사람들도 마찬가지겠죠. 그러니 꼭 질문해주세요.

자, 그럼 LLM을 학습시킬 때 어떤 요소들이 중요할까요? 핵심 요소는 몇 가지가 있어요. 첫 번째는 아키텍처입니다. 다들 알고 있듯이 LLM은 신경망이고, 신경망을 생각할 때는 어떤 구조를 사용하는지가 중요해요. 두 번째, 정말 중요한 요소는 트레이닝 손실 함수(loss function)와 학습 알고리즘이에요. 즉, 이 모델을 어떻게 학습시키는지가 중요하죠. 그 다음은 데이터입니다.

즉, “무엇으로 학습을 시킬 것인가?”라는 질문이죠. 그 다음은 모델 평가(evaluation), 즉 실제로 우리가 목표에 도달하고 있는지 어떻게 판단할 것인가입니다. 그리고 마지막은 시스템 구성이에요. 이건 곧, “이 거대한 모델들을 어떻게 실제 하드웨어에서 잘 돌릴 수 있을까?”에 대한 문제입니다. 요즘은 모델 크기가 엄청 커졌기 때문에, 시스템 요소가 그 어느 때보다 중요해졌어요.

이 다섯 가지 구성요소를 다시 정리하자면:

  1. 아키텍처
  2. 학습 손실과 알고리즘
  3. 데이터
  4. 평가 방법
  5. 시스템

그리고 아마 대부분 아시겠지만, 혹시 모르는 분들을 위해 말씀드리자면, LLM은 모두 Transformer 아키텍처 기반입니다. 아니면 적어도 Transformer에서 파생된 구조죠.

오늘은 Transformer 구조 자체에 대해서는 다루지 않을 거예요. 그 이유는, 하나는 제가 이미 몇 주 전에 Transformer만을 주제로 한 강의를 따로 했기 때문이고, 다른 하나는 Transformer에 대한 정보는 온라인에도 너무나 많기 때문이에요. 반면 나머지 네 가지 주제에 대해서는 온라인에 정보가 많지 않기 때문에 오늘은 그쪽에 집중하고 싶어요.

또 한 가지 말씀드리고 싶은 건, 학계는 주로 아키텍처나 학습 알고리즘에 집중하는 경향이 있어요. 저 역시 경력의 많은 부분에서 그런 연구를 해왔고요. 학계에서는 새로운 구조나 새로운 모델을 만드는 것이 굉장히 중요하다고 여기죠. 하지만 현실적으로, 산업 현장에서 정말 중요한 건 오히려 나머지 세 가지—데이터, 평가, 시스템입니다. 산업계에서는 이 세 가지가 훨씬 더 중요하게 여겨져요.

그래서 저 역시 아키텍처보다는 나머지 요소들에 집중해서 말씀드리고 싶습니다.

자, 오늘 강의의 개요를 말씀드릴게요.

우선 프리트레이닝(pre-training)에 대해 이야기할 거예요. 이 용어는 아마 들어보셨을 텐데요, 일반적으로 인터넷 전체를 학습 대상으로 삼는 전통적인 언어 모델 학습 방식이죠. 그리고 그 다음은 포스트트레이닝(post-training)인데, 이건 좀 더 최근의 트렌드입니다. 이미 훈련된 거대한 언어 모델을 AI 어시스턴트로 조정(fine-tuning, 파인튜닝)하는 과정이에요. ChatGPT가 등장한 이후로 본격적으로 시작된 흐름이죠.

GPT-3나 GPT-2를 들어보셨다면, 그건 전형적인 프리트레이닝 모델입니다. 반면 ChatGPT 같은 모델은 포스트트레이닝 과정을 거친 모델이에요. 둘 다 다룰 예정이지만, 먼저 프리트레이닝부터 시작할 거예요. 구체적으로는 프리트레이닝의 과업이 무엇이고, 어떤 손실 함수(loss)를 사용하는지에 대해 말씀드릴게요.

프리트레이닝이란, 아주 간단히 말해서 인터넷 전체를 학습시키는 방식이고요, 그 다음에 등장한 새로운 방식이 포스트트레이닝(post-training)입니다. 포스트트레이닝은 이미 학습된 LLM을 AI 비서(assistant)로 전환하는 과정을 말해요. 이건 ChatGPT가 등장하면서부터 본격적으로 널리 퍼졌죠.

만약 여러분이 GPT-3나 GPT-2를 들어보셨다면, 그건 프리트레이닝 영역입니다. ChatGPT는 포스트트레이닝 영역이고요. 오늘 강의에서는 이 두 가지를 모두 다룰 예정이지만, 먼저 프리트레이닝부터 시작할 거예요. 특히, LLM의 프리트레이닝 과업이 정확히 무엇인지, 그리고 어떤 손실 함수(loss function)가 사용되는지를 설명할 겁니다.

언어 모델링이란?

언어 모델은 아주 간단히 말해서 토큰(단어나 부분 단어)들의 순서에 대한 확률 분포를 예측하는 모델입니다. 즉, 문장 X₁부터 X_L까지의 확률 P(X₁, …, X_L)를 모델링하는 것이죠. 예를 들어, “the mouse ate the cheese”라는 문장이 있다고 해봅시다. 언어 모델은 이 문장이 인간에 의해 말해졌거나, 온라인에서 발견될 확률을 출력합니다. “the mouse ate cheese”처럼 문법적으로 어색한 문장은 더 낮은 확률을 가지게 되죠. 또 “the cheese ate the mouse” 같은 문장이 있다면, 모델은 일반적으로 치즈가 생쥐를 먹지 않는다는 상식을 바탕으로, 이 문장의 확률이 더 낮다고 판단할 수 있어야 합니다. 이건 단순한 문법뿐 아니라 의미적 이해도 필요하다는 뜻이에요.

생성 모델과 오토리그레시브 언어 모델

최근 뉴스에서 자주 들리는 용어 중 하나가 바로 생성 모델(generative models)입니다. 생성 모델이란 데이터를 만들어낼 수 있는 모델을 의미하죠. 언어 모델이 생성 모델인 이유는, 확률 분포를 모델링하고 나면 그 분포에서 샘플링(sampling)해서 문장을 생성할 수 있기 때문이에요.

현재 가장 널리 쓰이는 언어 모델은 오토리그레시브(autoregressive) 모델입니다. 오토리그레시브 모델의 핵심 아이디어는 문장의 확률 분포를 다음과 같이 나누는 거예요. 그러니까, 첫 단어의 확률 × 두 번째 단어의 (첫 번째 단어를 조건으로 한) 확률 × 세 번째 단어의 (앞의 두 단어를 조건으로 한) 확률… 이렇게 계속 곱해 나가는 겁니다.  이건 확률의 연쇄 법칙(chain rule)으로, 아무런 근사 없이 정확한 방식이에요.

자 그럼, 이 방식의 단점은 무엇일까요? 이 방식의 단점은 문장을 생성할 때 for loop처럼 작동해서 단어를 하나씩 예측하고, 그 예측된 단어를 기반으로 다음 단어를 또 예측하는 방식이라는 점이에요. 그래서 긴 문장을 생성할수록 시간이 오래 걸립니다. 현재 우리가 사용하는 방식이긴 하지만, 완벽한 건 아닙니다.

오토리그레시브 모델의 구체적인 작동 방식을 살펴보면 다음과 같습니다.예를 들어 “she likely prefers”라는 문장이 있을 때, 다음에 올 단어로는 “dogs”가 될 수 있겠죠.

  1. 토크나이즈(tokenize): 문장을 단어나 서브워드 단위로 쪼개서 각각 고유한 ID를 부여합니다.
  2. 모델 통과: 이 ID들을 모델(여기선 Transformer)에 통과시켜서, 다음에 올 단어의 확률 분포를 얻습니다.
  3. 샘플링 & 디토크나이즈: 분포에서 샘플링하여 새로운 토큰을 선택한 뒤, 그걸 다시 문자열로 변환합니다.

단, 이 샘플링과 디토크나이즈는 추론 시(inference)에만 필요한 과정이고, 학습할 때는 그냥 실제 정답 토큰과 비교해서 모델의 가중치를 업데이트하는 식으로 진행됩니다.

 

손실 함수: 크로스 엔트로피

오토리그레시브 언어 모델의 학습은 다음 토큰 분류(classification) 문제로 보면 됩니다. 그래서 크로스 엔트로피(cross-entropy) 손실 함수를 사용해요.

예를 들어볼까요?  문장이 “I saw”이고, 실제 다음 단어가 “cat”이라면, 정답은 “cat”에 해당하는 원-핫 벡터입니다. 모델이 예측한 분포와 이 정답 벡터 간의 크로스 엔트로피를 최소화하도록 학습하는 거죠. 이건 다시 말하면, 텍스트의 로그 우도(log-likelihood)를 최대화하는 것과 동일해요. 즉, 손실 함수를 줄이는 것은 텍스트의 생성 확률을 높이는 것이기도 합니다.

 

고품질 데이터와 LLM

LLM의 학습 마지막 단계에서는 러닝 레이트(learning rate)를 점점 줄이게 되는데, 이건 곧 모델이 아주 고품질의 데이터에 과적합(overfit) 되도록 만든다는 의미예요. 이때 주로 사용하는 데이터는 위키피디아(Wikipedia) 같은 것이고, 또는 사람이 수집한 고품질 텍스트들도 사용됩니다.

또한, 더 긴 문맥을 다룰 수 있게 하기 위한 지속적 프리트레이닝(continual pre-training) 같은 작업도 있지만, 오늘 강의에서는 이 부분은 생략할게요. 여기서 하고 싶은 말은, 사람들이 “인터넷으로 학습시키면 되잖아?”라고 쉽게 말하지만, 실제로는 엄청나게 많은 작업과 어려움이 있다는 거예요. 사실 아직도 우리가 데이터 수집 문제를 완전히 해결하지 못했고, 고품질 데이터를 수집하는 건 LLM 구축에서 핵심이라고 볼 수 있어요.

 

그렇다면, 이런 질문이 있을 수 있는데요. 

“처음에 1테라바이트(TB)의 데이터를 시작으로 위에서 말한 모든 필터링 과정을 거친 후에는 보통 얼마나 데이터가 남나요? 그리고 그런 작업들을 하려면 보통 몇 명 정도의 팀이 필요하죠?”

우선 데이터 양에 대해서 먼저 답변해볼까요. 팀 규모에 대한 정확한 숫자는 저도 잘 모르지만, 프리트레이닝 모델을 튜닝하는 팀보다 데이터 처리에 관여하는 사람이 더 많을 수도 있어요. 예를 들어 LLaMA 팀에는 약 70명이 있는데, 그 중 약 15명 정도가 데이터 작업에 참여했을 것 같아요.

하지만 데이터는 사람이 많다고 해결되는 문제가 아니고, 오히려 엄청난 컴퓨팅 리소스(CPU 자원)가 더 많이 필요합니다. 그리고 이 데이터 처리 문제는 아직 해결되지 않았고, 앞으로도 많은 연구가 필요한 주제예요. 

효율적인 대규모 처리 방법 다양한 도메인 간 균형을 어떻게 맞출 것인가 합성 데이터의 활용 가능성 텍스트 외에 멀티모달 데이터를 활용하면 성능이 좋아지는가? 이처럼 데이터 문제는 복잡하고 방대한데, 이 분야에 대해 기업들이 잘 공개하지 않는 이유는 다음과 같습니다.

  • 경쟁 문제: 데이터를 어떻게 모으는지 밝히지 않음
  • 저작권 문제: 책 같은 자료를 학습에 사용했다고 공개하면 소송당할 위험

한편, 학계에서 사용하는 기준을 보면 초기에는 1500억 토큰(약 800GB) 수준에서 시작했어요. 지금은 15조(15 trillion) 토큰까지 학습하는 것이 일반적입니다. 예를 들어볼게요. LLaMA 2는  22조 토큰 학습, LLaMA 3는 15조 토큰 학습, GPT-4 의 경우우정확한 수치는 비공개지만..유출에 따르면 비슷한 수준(13조 토큰 추정). 이 정도예요.

 

이건 Common Crawl에서 수집한 웹 전체 데이터 중, 실제로 사용할 수 있게 필터링한 양의 100~1000배 수준일 수 있어요. 대표적인 학계용 공개 데이터셋은 The Pile입니다. 여기에는 아카이브(arXiv), PubMed, 위키피디아, Stack Exchange, GitHub, 책 등이 포함되어 있어요. 다만 이것도 규모로는 상업 모델보다 훨씬 작죠.

스케일링 법칙(Scaling Laws)

2020년경부터, 또는 그 이전부터 업계에서는 한 가지 사실을 경험적으로 알게 되었어요: “모델 크기와 학습 데이터 양이 커질수록 성능도 계속 향상된다.” 이건 우리가 일반적으로 배우는 오버피팅 개념과는 다릅니다. 전통적인 머신러닝에서는 모델이 너무 크면 과적합이 발생하지만, LLM에서는 오히려 더 큰 모델이 더 잘 작동해요. 이걸 수학적으로 설명해보면, 컴퓨팅 자원을 늘릴수록 검증 손실(validation loss)이 예측 가능하게 줄어드는 선형적인 관계가 있어요. OpenAI의 유명한 논문인 「Scaling Laws」에서는 이를 다음과 같은 방식으로 시각화했습니다:

  • X축: 컴퓨팅 자원(Compute)
  • Y축: 손실 값(log scale)

모델 크기, 데이터 양, 컴퓨팅 자원 각각을 증가시키면 성능 향상이 예측 가능한 수준으로 개선돼요.

이런 질문도 있을 수 있어요.
“이번 달에 GPU 10,000개를 사용할 수 있는데, 무슨 모델을 훈련시켜야 하지?”

이 질문에 답해볼게요. 과거에는 이런 방식을 썼죠. 다양한 모델을 하루씩 학습시켜서 최선의 모델을 선택했어요. 반면 지금은 소형 모델을 다양한 크기로 학습시켜 스케일링 법칙을 먼저 측정하고 최종 대형 모델을 그 추세를 바탕으로 선택해서 나머지 기간(27일) 동안 집중 학습합니다. 이 전략을 통해 효율적인 하이퍼파라미터 설정과 자원 분배가 가능해졌어요.

한편, 스케일링 법칙은 아키텍처 선택에도 도움을 줍니다.

  • Transformer와 LSTM 각각을 다양한 크기로 학습시키고
  • 성능 추세선을 그려보면, 어떤 모델이 확장 시 더 좋은 성능을 낼지 예측 가능

대부분의 경우 Transformer가 우세하죠. 작은 아키텍처 변경(예: 활성화 함수 변경) 같은 건 성능의 절대값은 바꿀 수 있어도, 추세는 잘 안 바뀜. 그래서 스케일링 관점에서는 아키텍처보다는 데이터와 리소스가 더 중요하다는 겁니다.

 

Chinchilla 논문이란 

이제 Chinchilla 논문에 대해 얘기해볼까요? 이 논문은 스케일링 법칙을 바탕으로 자원을 어떻게 최적 배분할지 제시합니다. 같은 연산량(FLOPs)으로 다양한 파라미터 수와 토큰 수 조합을 실험하고 각 조합별로 가장 성능이 좋은 지점을 뽑고 추세선을 만들어 예측하죠. 그 결과, 학습에 이상적인 비율은 파라미터 하나당 20개의 토큰이고 실제 운영상 추론 비용을 고려하면 150:1 비율이 효율적 (즉, 작은 모델에 더 많은 데이터를 주는 게 운영비 절감에 유리)이라는 결론을 도출했어요. 

“그렇다면 추론 비용은 학습 비용에 비해 얼마나 비쌀까요?”
이 질문에  답을 드리자면.. 매우 비쌉니다.

ChatGPT처럼 수억 명이 사용하는 서비스는 매 순간 수많은 추론 연산을 하게 되죠. 실제로 추론 비용을 줄이기 위한 최적화 연구가 활발하게 진행 중이고, 이건 또 다른 강의 주제일 정도로 중요한 분야입니다.

GPU를 더 살까,

아니면 데이터를 더 모아야 할까?

이 질문도 스케일링 법칙을 통해 어느 정도 답을 얻을 수 있어요. 여기서 제가 꼭 공유하고 싶은 중요한 교훈이 있어요. 혹시 리처드 서튼(Richard Sutton)의 2019년 블로그 글을 본 적 있다면 알 수도 있는데요, 그 글에서 나온 핵심 메시지는 다음과 같아요:

“계산량이 늘어나면 성능은 무조건 향상된다.”

이건 처음엔 많은 사람들이 인식하지 못했던 사실이에요. 저조차도 예전에는 이걸 잘 몰랐죠. 하지만 스케일링 법칙을 보면, 컴퓨팅 자원이 많을수록 더 좋은 모델을 만들 수 있다는 게 분명해집니다. 그리고 무어의 법칙(Moore’s Law)이나 그 변형들을 통해, 우리는 계속해서 더 나은 하드웨어를 갖게 되리란 것도 알고 있어요.

따라서 정말 중요한 건 ‘아키텍처’가 아니라 그 아키텍처가 계산 자원을 얼마나 잘 활용할 수 있는가입니다. 즉, 앞으로는 시스템(system)과 데이터(data)가 핵심이고, 작은 아키텍처 차이(예: 활성화 함수 등)는 부차적인 요소가 될 수 있어요. 사실 OpenAI가 GPT 시리즈와 ChatGPT를 통해 우리에게 보여준 건 바로 단순한 방법을 잘 적용하면 큰 성과를 낼 수 있다는 거예요.

LLaMA 3 400B 모델 비용과 환경 문제

LLaMA 3 400B는 현재 공개된 모델 중 가장 성능이 뛰어난 오픈소스 LLM입니다. 이 모델은 45억 개의 파라미터와 15.6조 개의 토큰으로 훈련되었어요. 여기서 파라미터당 토큰 수는 약 40개로, 이는 Chinchilla 논문에서 제안된 학습 최적 비율보다 조금 많고, 추론 최적 비율보다는 적습니다.

 

  • FLOPs 계산법:
    파라미터 수 × 토큰 수 × 6 = 약 3.8×10²⁵ FLOPs

이 수치는 미국 바이든 대통령의 행정명령에 나오는 1×10²⁶ FLOPs 임계치보다 살짝 낮아요. 즉, 모델이 정부 감시 대상이 되는 걸 피하기 위해 이 수치를 넘지 않도록 조절한 것이죠. H100 GPU 16,000개 × 70일 = 약 2,600만 GPU 시간, GPU 임대 비용(1시간당 $2) 기준으로 약 5,200만 달러
인건비(직원 50명 × 연봉 $50만): 약 2,500만 달러. 총 합산 비용이  약 7,500만 달러인데요. 탄소 배출량은 약 4,000톤 CO₂로, 이는 뉴욕에서 런던까지 왕복 항공권 2,000회와 비슷한 수준이에요. 아직은 환경적으로 “심각”한 수준은 아니지만, GPT-6, GPT-7로 넘어가면서 100배 규모가 되면 현실적인 문제로 떠오를 수 있습니다.

사후 학습(Post-Training)과 AI 어시스턴트

프리트레이닝 모델(GPT-3 등)은 언어 자체는 잘 알지만 질문-답변 구조를 학습하지 않았기 때문에 어시스턴트로는 부적합합니다. 예를 들어, GPT-3에게 “6살 어린이에게 달 착륙을 설명해줘”라고 하면, “중력 이론을 설명해줘” 같은 관련 없는 질문을 출력할 수 있어요.

이걸 ‘정렬(alignment)’ 문제라고 부르며, 이를 해결하는 게 사후 학습의 핵심 목적이에요. 즉, 사용자의 요청에 맞는 답변을 하도록 모델을 조정하는 것이죠.

  • 예: 특정 인구 집단을 혐오하는 트윗을 요청하면 거절하도록 설계됨
  • 이런 행위 제어는 OpenAI 같은 기업 입장에선 절대적인 필수 조건

SFT (Supervised Fine-Tuning)

SFT는 이미 트레이닝 완료된 LLM을 사람이 바람직하다고 판단한 응답 예시에 맞춰 미세 조정하는 과정입니다.

  • 방법: 사람에게 질문과 정답을 직접 쓰게 함
    예: “monopsony란?” → 사람이 정의 작성
  • 오픈소스 예시: Open Assistant

재미있는 건, 실제로 SFT에는 많은 데이터가 필요하지 않다는 점이에요. 논문 Lima에 따르면 2,000개에서 32,000개 사이의 예시를 써도 성능 향상은 미미했어요. 이렇게 얻어진 결론은 이겁니다. SFT는 “지식 전달”보다는, 이미 프리트레이닝에 포함된 여러 사용자 유형 중 “이 사용자 스타일을 따르라”고 모델에 지정해주는 역할에 가깝다는 점입니다.

 

합성 데이터(Synthetic Data)의 활용

  • 알파카(Alpaca) 프로젝트는 LLM(Text-Davinci-003)을 사용해
    • 175개의 사람 작성 질문/답변을 기반으로
    • 52,000개의 질문/답변을 생성
    • 이를 라마 7B 모델에 SFT 적용

이는 ChatGPT를 아카데믹하게 재현한 첫 시도였고, 이후 합성 데이터를 활용한 LLM 개발이 본격화됐죠. 

한편, SFT에도 한계가 좀 있습니다.  첫 번째로 사람 능력의 한계. 사람이 “좋은 글”을 판단할 순 있어도 그 모든 걸 직접 생성하기엔 어렵고 한계가 있으니까요. 두 번째로 잘 알려진 환각(hallucination) 문제. 사람이 적은 정답에 대한 근거를 모델이 사전에 본 적 없을 경우모델은 “그럴듯한 말”을 지어냅니다.

 

그럼 이런 문제를 어떻게 극복하면 좋을까요?

SFT의 한계를 극복하기 위한 방법은 크게 두 가지가 있어요. 모델이 생성한 두 개의 답변 중 어느 것이 더 나은지 사람에게 선택하게 하거나, 이를 학습하여 모델이 “더 선호받는 응답”을 출력하게 하는 것.

 

방법 1: PPO (Proximal Policy Optimization)

  • 기본 RL 방식 사용
  • 문제점: 이산적인 보상(binary reward)은 정보량이 적음
    → “조금 나은지, 많이 나은지” 구분이 안 됨

방법 2: 보상 모델(Reward Model)

  • 사람의 선택 데이터를 기반으로 보상 모델을 학습
  • 두 응답 중 어느 쪽을 더 선호하는지 소프트맥스 확률로 출력
  • 이를 통해 연속적인 보상 값(logits) 확보

이 방식은 실제 ChatGPT 학습 과정에서도 아래와 같이 사용됩니다.

  1. SFT 수행
  2. 보상 모델 학습
  3. PPO 반복 수행
    → 새로운 데이터 수집 후 다시 반복

PPO의 단점과 DPO의 등장

PPO는 실제 구현이 매우 복잡해요. 다양한 요소(rollout, clipping 등)를 고려해야 하고 문서화도 잘 안 되어 있어요. 그래서 스탠포드에서 제안한 DPO(Direct Preference Optimization)는 훨씬 간단합니다.

  • 핵심 아이디어:
    → 선호하는 응답(green)은 확률을 높이고
    → 비선호 응답(red)은 확률을 낮춘다
  • 수학적으로도 PPO와 동등한 최소값(global minima)을 가짐

즉, 보상 모델도 필요 없고 RL도 안 써도 됨
→ 최대 우도 추정(maximum likelihood estimation) 방식으로 간단하게 해결

그렇다면 실전에서는 어떨까요? SFT는 성능 향상을 위한 핵심 요소지만, 많은 양은 필요 없습니다. RLHF(PPO)는 강력하지만 복잡하고 불안정하고요. DPO는 단순하고, 실제로 많은 오픈소스 및 산업계에서도 주류로 채택 중이죠.

 

마지막, 포스트 트레이닝

​이제 포스트 트레이닝의 평가에 대해 이야기하겠습니다. 이는 강의 초반에 제기된 질문으로 돌아가게 되는데요: ChatGPT와 같은 모델을 어떻게 평가할 수 있을까요? 이러한 모델이 제공하는 답변은 무한하며, 정답이 하나만 있는 것이 아니라 여러 개의 좋은 답변이 존재할 수 있습니다. 따라서 몇 가지 도전 과제가 있습니다. 첫째, 검증 손실(validation loss)을 사용할 수 없습니다. 한 방법은 PPO를 사용하고, 다른 방법은 DPO를 사용할 수 있기 때문에 검증 손실은 비교할 수 없습니다. 둘째, 퍼플렉시티(perplexity)를 사용할 수 없습니다. 이러한 모델들은 보정을 거치지 않았으며, 분포를 제공하지 않고 하나의 결과만을 최적화하기 때문에, 정렬된 모델을 평가하는 데 퍼플렉시티는 적절하지 않습니다. 셋째, 인간이 이러한 모델에 묻는 질문의 다양성이 매우 큽니다. 예를 들어, 오픈 QA, 요약 등 다양한 유형의 질문이 있습니다. 따라서 다루어야 할 사항이 많습니다. 또한, 이러한 작업들은 매우 개방적이어서 자동화하기가 어렵습니다. 따라서, 쉽게 자동화된 벤치마크를 만들기보다는, 실제 사용자들이 모델에 묻는 질문을 사용하여 평가를 진행하고, 평가자들에게 두 모델 중 어느 것이 더 나은지 판단하도록 요청하는 방법을 사용합니다. 이는 RHF의 데이터와 동일한 방식이지만, 이제는 평가를 위해 사용됩니다.​

가장 일반적이고 신뢰받는 벤치마크 중 하나는 ‘Chatbot Arena’입니다. 이는 인터넷에서 무작위 사용자들이 두 개의 챗봇과 블라인드 테스트로 대화하고, 각 질문에 대한 두 개의 답변을 보고 어느 것이 더 나은지 평가하는 방식입니다. 수십만 명의 사용자가 참여하여 실제 선호도를 파악하고 모델의 순위를 매깁니다. 현재 Chatbot Arena에 접속하여 이러한 모델들과 상호작용할 수 있습니다. 하지만 한 가지 잠재적인 문제는 이러한 평가에 참여하는 사람들이 주로 기술 지향적이거나 기술에 능통한 경우가 많아, 질문들이 소프트웨어 오류, AI 도구에 대한 문의 등 기술 관련 주제에 치우칠 수 있다는 점입니다. 또 다른 문제는 비용과 속도입니다. 개발 과정에서 이러한 평가 방법을 사용하려면 많은 비용이 들고, 많은 인간 평가자를 고용해야 하기 때문에 비효율적일 수 있습니다. 

따라서 간단한 아이디어는, 다시 말해, 인간 대신 LLM을 사용하는 것입니다. 이제는 이러한 절차가 익숙하실 텐데요, 각 지침에 대해 기본 모델과 평가하려는 모델의 출력을 생성하고, 예를 들어 ChatGPT의 답변과 다른 모델의 답변을 비교하여 어느 것이 더 나은지 판단하도록 다른 모델에 요청하는 방식입니다. 이를 전체 벤치마크나 데이터셋에 대해 평균화하여 모델의 승률을 계산하고, 이를 통해 모델을 순위화할 수 있습니다. 이것이 Alpha Eval 리더보드입니다. 이 방법의 장점은 Chatbot Arena와 98%의 상관관계를 보여 인간 평가와 높은 일치를 보인다는 점입니다. 또한 실행 시간이 3분 이내이고 비용이 $10 미만으로 매우 저렴합니다. 하지만 단점도 있습니다. 하나의 예는 편향된 상관관계입니다. 이전에 보았듯이, LLM은 더 긴 출력을 선호합니다. 사실 인간도 더 긴 출력을 선호하지만, LLM을 사용할 때의 문제는 이러한 편향이 지속적으로 최적화된다는 점입니다. 인간의 경우, 간단한 질문에 대해 너무 긴 답변을 받으면 불만을 가질 수 있지만, LLM은 이러한 편향이 학습되어 계속해서 더 긴 출력을 선호하게 됩니다. 따라서 이러한 편향을 통제하기 위해 회귀 분석과 같은 보정 추론 도구를 사용할 수 있으며, 이를 통해 길이에 따른 편향을 줄일 수 있습니다.​

정말 마지막으로 시스템과 관련해서 얘기해보자면, 컴퓨팅 자원이 큰 병목이 되고 있습니다. GPU를 추가로 구매하는 것은 비용이 많이 들고, 물리적인 한계도 존재합니다. 여러 GPU를 사용할 때는 통신에 시간이 소요되며, 이는 성능 저하를 초래할 수 있습니다. 따라서 리소스 할당과 파이프라인 최적화가 중요합니다. GPU는 높은 처리량을 위해 최적화되어 있으며, 행렬 곱셈과 같은 작업에 특화되어 있습니다. 하지만 메모리와 통신 속도는 연산 속도에 비해 개선이 더디기 때문에, 데이터 전송이 병목이 될 수 있습니다. 이를 해결하기 위한 한 가지 방법은 저정밀도 연산을 사용하는 것입니다. 예를 들어, 32비트 대신 16비트 부동소수점을 사용하면 통신 속도를 높이고 메모리 소비를 줄일 수 있습니다. 또 다른 방법은 연산자 퓨전(operator fusion)입니다. 이는 여러 연산을 하나의 커널로 결합하여 데이터 전송을 최소화하고 성능을 향상시키는 기법입니다. PyTorch에서는 torch.compile을 사용하여 이러한 최적화를 자동으로 수행할 수 있습니다.​

이 외에도 타일링(tiling), 파티셔닝(partitioning)같은 기법들도 매우 중요하긴 해요. 근데 지금은 그걸 다 다룰 시간이 없네요. 우리가 아까 이야기했던 것처럼, 사실 우리는 아키텍처에 대해 거의 이야기하지도 못했고, 추론에 대해서도 전혀 다루지 못했어요. 근데 사실 LLM을 다루는 데 있어서 정말 중요한 게 굉장히 많습니다.

예를 들면 UI가 어떤지, 그것도 중요한 요소 중 하나예요. 실제로 ChatGPT가 폭발적인 반응을 얻은 것도, 결국 사람들이 처음으로 자연스럽게 쓸 수 있는 사용자 인터페이스를 제공했기 때문이죠. 모델의 성능도 물론 좋았지만, 그렇게까지 새롭진 않았어요. 큰 차별점은 ‘이걸 어떻게 쓸 수 있게 만들었느냐’였어요.

그리고 멀티모달리티, 그러니까 여러 형태의 입력(예: 이미지, 오디오 등)을 같이 다룰 수 있는 기능들도 중요하죠. 또, 이런 모델들이 잘못 쓰일 가능성에 대한 고민도 필요하고요. 게다가 요즘엔 인터넷에 있는 데이터만으로는 더 이상 충분하지 않을 수도 있다는 이야기도 있어요. 실제로 다음 세대 모델들을 학습시키기엔 데이터가 부족하다는 거예요. 거기다 데이터 수집의 법적 문제도 있고요. 그러니까, 다뤄야 할 문제들이 정말 많습니다.

혹시 이 모든 것들에 대해 더 공부하고 싶다면, 추천할 만한 수업들이 몇 가지 있어요.

먼저 CS224N. 이 수업은 사실 LLM 자체에 대해 깊게 들어가진 않아요. 하지만 LLM이 나오기 전의 자연어처리(NLP)에 대한 기본기와 역사적인 맥락들을 배울 수 있어서 중요해요. 그러니까, 지금 우리가 알고 있는 기술들이 어디서 왔는지 이해할 수 있게 되는 거죠. 그런 배경을 갖추기 좋아요.

그다음은 CS324. 이 수업은 이름부터 아예 “Large Language Models”고요. 지금 제가 강의에서 다룬 거의 모든 내용을 포함해서, 훨씬 더 심도 깊은 리딩 자료와 강의들을 제공해요. 요즘 LLM과 관련된 최신 연구들을 직접 따라가고 싶다면 이 수업이 제일 좋습니다.

그리고 마지막으로, 제가 정말 추천하고 싶은 수업은 CS336이에요. 이건 아예 처음부터 끝까지 LLM을 직접 만들어보는 수업입니다. 진짜로요, 직접 구현해보는 거예요. 이 수업은 제 두 명의 지도교수님이 가르치고 계시고요, 굉장히 workload가 빡세요. 진짜 진짜 바쁩니다. 근데 정말 좋아요. 진짜로 배우고 싶은 사람에겐 최고의 수업이에요.

 

AI 시대, 가장 확실한 대비를 위해
지금 바로 배울 수 있는 [ AI ] 관련 강의가 준비되어있어요.

지금 바로 아래에서 관심을 끄는 강의를 눌러 확인해보세요.

테디노트의 RAG 비법노트 : 랭체인을 활용한 GPT부터 로컬 모델까지의 RAG 가이드테디노트의 RAG 비법노트 : 랭체인을 활용한
GPT부터 로컬 모델까지의 RAG 가이드
모두의 AI 케인의 Agent로 완성하는 RAG: 데이터 별 아키텍처 설계를 중심으로모두의 AI 케인의 Agent로 완성하는 RAG:
데이터 별 아키텍처 설계를 중심으로
차원이 다른 연구 프로세스: 연구자를 위한 AI툴 활용법

차원이 다른 연구 프로세스
: 연구자를 위한 AI툴 활용법

2025 AI 시대 일잘러를 위한 비현실적인 700가지 ChatGPT 활용 바이블

2025 AI 시대 일잘러를 위한 비현실적인
700가지 ChatGPT 활용 바이블

[출처] Stanford CS229 I Machine Learning I Building Large Language Models (LLMs)

Facebook Comments