GenAI 기초, LLM 을 쉽게 이해하기

김형섭 (Matthew)·2024년 4월 2일
5

Gen AI

목록 보기
2/4
post-thumbnail

Why

요즘 저는 아임웹 AI 제품을 위해 열심히 모델을 깎고 있습니다.

여기서 모델을 깎는다 를 설명하기 위해 많은 맥락이 필요함을 알게 됐습니다.
오늘 그것을 설명하고, 알기 쉽게 Gen AI 의 LLM을 소개해볼께요.

AI 모델을 깎는다?

그냥 쉬운 표현이지 실제로 뭘 조각하는 것은 아닙니다. 그럼 뭘까요?
바로 LLM을 파인튜닝 하는 것입니다.

음..

아직도 이해가 안되실 겁니다.
LLM은 뭐고, 파인튜닝은 뭐고…

이 글의 목적 입니다.
천천히 따라오시죠.

LLM

Large Language Model 의 약자로 대형 언어 모델을 말합니다.
언어 모델은 또 뭐야.. 하실 분을 위해 설명 하자면
우리가 사용하는 언어 (한국어, 영어 등)로 질문에 답을 잘 하는 AI 두뇌 정도가 됩니다.

즉, ChatGPT는 다 아시잖아요?
뭐라고 물어보면 답을 우리가 쓰는 말로 곧잘 해주는 똑똑한 AI죠.

이런 AI는 여러가지 종류중 Generative AI, 줄여서 Gen AI 라고 합니다. (생성AI)
AI는 예전부터 많은 종류가 있었습니다. (분류 AI, 인지 AI, 컴퓨터 비전 등등)

생성 AI는 말 그대로 뭔가를 만들어내는 AI 입니다.
생성 AI 중에서도 LLM은 인간의 말로 텍스트를 만드는 AI고요!
(이미지를 만드는 모델은 LLM이라고 하지 않습니다.)

그리고 그렇게 말을 잘 하게 만든 소프트웨어를 빚었다. 입력과 출력을 모델링 했다. 해서 그 결과물을 모델이라고 부릅니다.
이제 AI 모델은 뭔가 입력을 주면 출력을 주는 그런 마법의 박스가 됐죠.

지금 쯤, 무릎을 탁 치셨죠?

그런데, LLM 앞의 L 이 의미 심장 합니다.

Large 가 붙었어요. 그럼 Small LM도 있나라고 하실 분들을 위해 미리 답을 드리자면,
SLM은 없습니다. 이유는,

일단 말을 잘하려면 사람의 언어를 어마 어마 하게 학습 해야 해요.
즉 AI 기계 학습에 사용 되는 데이터(말뭉치,코퍼스)가 어마 어마하게 크고, 그렇게 방대한 데이터를 학습 해야만 말을 잘 할 수 있어요.

그래서 작은 데이터로는 말을 못하니까 SLM 은 있을 수 없습니다.
그런데 희안하게 sLLM 이라는게 있습니다.

(small Large Language Model) - 뭔가 웃기지만 진짜 입니다.

sLLMLLM중에 가중치 사이즈가 좀 작은 편인 수십억~수백억 사이의 모델들을 말하는데,
지금은 기계 학습?, 가중치? 모두 이해가 안되실 겁니다.

괜찮습니다. 이 글을 끝까지 읽으면 다 이해할수 있어요.
계속 따라 오시죠.

기계 학습이 뭐야?

기계가 공부하는 겁니다 ㅋㅋ

얼핏 이해가 안되시죠. 기계가 공부를 한다니

그런데 잘 생각해 보아요. 우리가 말을 잘 하는 이유를.
우리는 왜 말을 잘 할 까요?

우리는 태어난 이후로 부모님을 비롯, 주변에서 학습 했기 때문입니다.
우리 가 말이죠.

머신러닝 및 AI는 우리 뇌를 모방한 소프트웨어 입니다.
그러니까, 기계도 뇌 답게 학습을 할수 있죠.

그러니까,

기계, 즉 AI 도 말을 잘 하려면 일단 “학습” 이 필요 합니다.

기계라서 학습이 엄청 빠를것 같죠?
아니요, 뇌보다 효율적이지 못해 겁나 느립니다. 심하면 몇달씩 걸립니다.

기계는 학습을 어떻게 하는데요?

선생님이 가르치나요? 스스로 학습 하나요?
답을 먼저 드리자면,

현대의 AI 모델은 스스로 학습 합니다.
물론 선생님이 가르치듯이 학습할수도 있습니다만, (지도학습 이라고 합니다.) LLM은 스스로 학습 합니다.

이렇게 합니다.

일단 사람의 말로 표현된 온갖 데이터를 준비 합니다.
영어, 한국어, 중국어… 다 섞인, 뭐든 상관없습니다. 일단 어마어마한 양을 모아요.

그걸 이제 머신러닝(기계학습) 이라는 걸 돌립니다.
그러면 무슨일이 일어나냐고요?

그 데이터를 가지고 기계가 문장 간의 의미를 분석하기 시작해요.

예를 하나 들어볼께요.

온갖 데이터 속에 I Love 라는 문장이 엄청 많겠죠?
온갖 데이터를 보고 I 다음에 Love 가 많이 나온다는 걸 알게 됩니다.
그리고 I love me 보다 I love you 가 많은걸 알게 되죠.

즉, 기계는 영어에서 어떤 룰을 찾은거에요. (우리는 자연히 뇌가 알고 있는 그 문법, 룰 말이죠)
이렇게 사례를 몇백개만 봐도 룰을 만들어 낼 수 있죠.

그런데 그걸 수백테라 규모로 학습한다면, 우리는 모르지만 기계만 아는 온갖 룰을 찾겠죠?
I 일때 다음 단어 가능성… You 일때 다음 단어 가능성 등등등

또 사람의 말은 영어 한가지가 아니죠. 여러나라의 언어가 있습니다. 그것도 데이터로 다 넣습니다.
한국어로 나 배 라는 문장까지 왔다면 뒤는 고파 가 붙거나 아파 가 붙을 확률이 높다는걸 학습 하겠죠.

또한 그 문장 앞의 맥락을 보면 배고파가 맞을지 배아파가 맞을지도 알수 있습니다. 나 아침부터 아무것도 못먹었어. 그래서 배 일때 고파 일까요 아파 일까요?
LLM의 학습은 이런 규칙을 찾는 것입니다.

이제, 조금 이해가 되셨나요?
결국 이렇게 학습을 그냥 노가다로 하는 겁니다.

그런데, 예전에는 하드웨어가 받쳐주질 못해서 이렇게 많은 데이터는 학습을 할 수가 없었어요.
그러다 보니 모델도 그냥 작은 문제, 작은 규칙만 찾았죠. (카드 이상 거래 탐지 등)

근데 하드웨어가 쑥쑥 성장하며, 말 잘하는걸 한번 만들어 보기로 해요. (OpenAI가)
그게 지금 GPT(Generative Pretrained Transformer)의 시초 입니다.

학습 데이터가 어마어마 해지니까, 엄청난게 나온겁니다. 그걸 챗봇으로 잘 만든게 ChatGPT 입니다.

이 얘긴 인터넷에 많이 나옵니다.
아무튼 재밌어요.

결국 학습한 결과로 얻은 룰의 갯수, 그것을 가중치 = Weight 라고 부릅니다.

이 룰들을 수학 공식으로 표현하면 숫자가 됩니다.
그 숫자의 갯수를 모델의 사이즈로 말 할 수 있습니다.

이것을 모델의 가중치 (Weight) 라고 합니다.

(ps. 글에서 가중치를 이해하기 쉽게 룰이라고 표현 했습니다만, 실제로 가중치는 룰만 의미하지 않고 꽤 복잡한 정의가 있습니다. 그러나, 모두가 그 정의를 잘 이해하긴 어렵죠. 이 글에서는 그냥 룰로 이해하셔도 전혀 문제 없습니다.)

예를 들어 70B 사이즈 모델의 대문자 B빌리언 입니다. (1B = 10억)
즉, 700억개가중치=룰을 가진다는 뜻이고요.

여러분이 많이 쓰는 ChatGPT175B 라고 알려져 있습니다. (1750억개, OpenAI는 공식적으로 밝힌 적이 없지만 소문으로 알려져 있습니다.)

이 정도는 되어야 AI가 말을 잘 할 수 있게 되는거죠.
말은 곧 지식 입니다. 그래서 우리말을 잘하는 AI를 보며 우와.. 하게 됩니다.

오~ 그러니까 온갖 글로 말을 배운거군?

그렇습니다.

그 글의 갯수가 가늠이 안되긴 하지만요.
지금의 하드웨어 가지고도, 어마어마한 돈을 들여서, 어마어마한 GPU 들을 가지고 수개월 동안 학습 해야
모델을 겨우 하나 만들 수 있습니다.

ChatGPT는 초기 모델 하나 만드는데 460만 달러, 원화로 60억 정도 들었다고 합니다.
어마무시 하죠잉.

아무튼,

이렇게 대형 회사가 만든 모델을 파운데이션 모델 (Foundation Model) 이라고 합니다.
줄여서 FM 이라고 하고요.

와.. 아임웹도 그런 AI 모델을 만드는거예요?

아니요!

우리는 모델 한번 학습하는데 60억을 태울수 없고, 그런 장비도 없습니다.

에이.. 시시하네요

괜찮아요. 한국에서 FM모델을 만들수 있는 곳은 N사 정도 입니다. (어마어마한 GPU 갯수를 소유한 곳)
그런데, 사실은 우리 모두가 FM 모델을 만들 필요가 없어요.

바로 FM 오픈소스 모델이 있기 때문!

메타(페이스북)가 참 대단한 시작을 했습니다.
FM 모델을 오픈소스로 풀어버렸어요.

쉽게 말해 학습에 몇백억을 태운 결과물인 그 모델을 무료로 푼거에요.

그렇게 Llama 라는 모델이 세상에 나왔습니다.
과학자/엔지니어들은 열광했고 이를 가지고 놀기로 하죠.

파인튜닝의 대중화

이제 FMLLM을 알았으니, 지금 제가 하는 중인 파인튜닝 이해는 쉽습니다.

파인튜닝의 결과물은 이렇습니다.

원본 FM + 내가 학습한 부분만 가지고 있는 작은 모델 = 아임웹의 모델

간단합니다.

즉, 인간의 말을 잘하는 FM은 메타를 시작으로 여러 대형 회사가 내놓았습니다.
그러나 FM보편적 지식만 가지고 학습한 모델 입니다.

따라서 아임웹 특화된 질문이나 답은 잘 하지 못합니다.
우리는 아임웹을 잘 아는 모델(내 목적에 특별히 더 학습한)이 필요하죠.

그래서 FM을 갖고와서는, 원래 있던 룰은 그대로 두고
그 위에 우리 아임웹의 지식을 갖다 부어 추가적인 룰(가중치)을 만들어요.

그리고 그 룰을 병합하면!

짠! 우리 모델이 태어나는 것입니다.

하지만, 파인튜닝도 비쌈

아임웹 데이터의 양도 있지만, 원래 LLM 자체가 대형 크기다 보니 파인튜닝만 해도 학습이 오래 걸립니다.
그래도 FM 학습하는 것에 비하면 정말 새발의 피죠.

현재, 우리는 GPU도 없기 때문에 클라우드에서 GPU를 빌려서 학습 하고 있어요.

  • 오픈소스 FM을 하나 가져와서
  • A100 이라는 Nvidia의 비교적 저렴한(?) 장비를 빌려서 학습합니다. (A100 가격 검색해보시면 기절합니다)

그래서…

아임웹 데이터를 가지고 파인튜닝 한번 하는데 대략… 하루 정도 걸립니다.
저는 무언가 수정하고, 오류를 보정하고, 테스트 한바퀴 하는데 하루를 기다려야 하는거죠.

무지 지루한 싸움 입니다.

하지만, 이런식으로 모델을 계속 개선하며 벌써 버전이 100이 넘는 모델을 만들었습니다.
(하루에 서버 3대를 빌려서, 각각 돌리기도 합니다.)

마무리

어떠세요? LLM에 대해 조금 이해가 되셨나요?

사실 생성 AI 분야는 매우 방대 하여 짧은 글에 담기는 무리가 있습니다.
그래서 글에선 생략한 내용이 많습니다. (RAG, 프롬프트엔지니어링, 파인튜닝, LoRA, 양자화, 추론 속도 등등)

하지만, 이번 글의 목적은 초보자를 위한 LLM의 이해입니다.
다음에는 파인튜닝에 대한 조금 더 상세한 내용으로 찾아뵙겠습니다.

감사합니다.
매튜 드림.

profile
CTO at Imweb, 20년차 개발 장인, 전) 플레이오토 CTO/창업자

0개의 댓글