본문 바로가기
Data/자연어 처리

LLM(Large Language Model) 기본 정리 및 활용 방안 | LIM

by forestlim 2024. 3. 17.
728x90
반응형

LLM은 "Large Language Model"의 약자로, 대규모 데이터 세트에서 훈련된 인공지능 언어 모델을 의미한다. 

GPT 시리즈와 같은 모델은 OpenAI에 의해 개발되었고, 이는 대표적인 LLM의 한 예이다. 

LLM은 대규모의 학습 데이터셋과 엄청난 컴퓨터 리소스를 필요로 한다. 파라미터수가 엄청나기 때문이다

(이래서 엔비디아 주가가,,나만 못 샀어,,)

 

LLM에 사용되는 딥러닝 모델인 Transformer

 

이 모델은 다들 많이 아시다시피 "Attention Is All You Need" 라는 논문에서 처음 소개되었다. 

기존의 순차적인 데이터 처리 방식(ex. RNN, LSTM) 대신, "어텐션 매커니즘" 을 이용하여 전체 입력 데이터를 한 번에 처리함으로써, 처리 속도를 대폭 향상시키고, 더 긴 문맥을 효과적으로 이해할 수 있게 되었다. 

 

Transformer 모델 대략적으로 알아보기

이 모델은 Encoder 와 Decoder 스택으로 구성되어 있으며, 각각은 여러 개의 층으로 이루어져 있다. 

이 모델의 핵심은 셀프 어텐션(self-attention)으로 문장 내의 모든 단어 사이의 관계를 동시에 계산하여 각 단어가 문장에서 어떻게 상호작용하는 지를 파악한다. 

 

셀프 어텐션을 통해 입력된 문장의 모든 단어 간의 관계를 파악하고, 이 정보를 바탕으로 출력 문장을 생성한다.

셀프 어텐션 메커니즘은 문장 내의 각 단어에 대한 다른 모든 단어의 영향력을 가중치로 계산하여, 문맥을 이해하는데 필요한 정보를 집약한다.

 

이 셀프 어텐션 메커니즘 덕분에 매우 긴 문맥의 정보를 효과적으로 처리할 수 있었다. 

 

이 Transformer 아키텍처는 다양한 NLP 모델의 기반이 되었고, GPT, BERT 등이 나오게 되었다. 

 

LLM 학습의 기본 원리

LLM 학습의 핵심 원리인 언어모델은 다음에 올 단어가 무엇인 지를 예측하는 것이다. 

 

"푸른 하늘에 OO이 떠있다."

 

라는 문장이 주어졌을 때 우리는 저 빈칸에 들어가야 할 단어를 예측하는데 구름임을 알 수 있다. 

이처럼 주어진 텍스트 기반으로 다음에 어떤 텍스트가 오는 게 적절한 지를 머신러닝 기법으로 학습시키는 것을 언어모델(Laguage Model) 이라고 한다. 

 

즉, 학습을 시킬 때 하나씩 단어를 가리면서 학습을 시키는 것이다. 

 

- OO 하늘에 구름이 떠있다. => 정답: 푸른

- 푸른 OO에 구름이 떠있다. => 정답: 하늘

- 푸른 하늘에 OO이 떠있다.  => 정답: 구름

- 푸른 하늘에 구름이 OOO  => 정답: 떠있다.

 

우리만의 데이터로 우리만의 LM모델을 만들 수 있을까?

LLM을 학습시키기 위해서는 대규모의 학습 데이터셋과 엄청난 컴퓨터 리소스를 필요로 하는데, 한 번 딥러닝 모델을 학습시키는데 몇 백억, 몇 천억의 트레이닝 비용이 들어가기 때문에 알고리즘이 간단한 거에 비해 그걸 학습시키는 거 자체가 엄청난 비용이 부과되게 된다. 

 

따라서 파운데이션 모델을 이용해서 우리만의 자체 LLM 모델을 만들 수 있다. 

파운데이션 모델이란 대규모 텍스트 코퍼스에 대해서 Pre-Training 되어 있는 모델로, 주로 범용성이 높고 다양한 응용 분야에서 사용될 수 있는 대규모 머신러닝 모델을 말한다. 

 

파운데이션 모델 알아보기

기업별로 대표적인 파운데이션 모델들은 다음과 같다. 

1. OpenAI - GPT시리즈

2. Meta(Facebook) - LLaMA1, LLaMA2

3. Google - PaLM

 

 

현재 LLaMA의 경우에는 상업적으로 이용 가능하게끔 오픈 소스로 공개했다. 

 

 

 

 

그럼, 이런 LLM이 만능인가?

잘 알다시피, LLM은 편향(Bias)과 할루시네이션(Hallucination)이 가장 문제이다. 

 

LLM은 대규모 데이터셋에서 훈련되기 때문에, 그 데이터셋에 내재된 사회적, 문화적 편향을 학습할 수 있다. 이로 인해 모델은 성별, 인종, 지역 등에 대한 편견을 반영할 가능성이 있다. 

 

몇 년전, 스캐터랩스에서 만든 이루다 AI 서비스에 이러한 문제가 있었다.

https://www.yna.co.kr/view/AKR20210111155153017

 

성희롱·혐오논란에 3주만에 멈춘 '이루다'…AI윤리 숙제 남기다 | 연합뉴스

(서울=연합뉴스) 이효석 기자 = 인공지능(AI) 챗봇 '이루다'가 자연스러운 대화로 출시 직후 주목받았으나, 이내 혐오 발언이 발견되고 개인정...

www.yna.co.kr

 

 

할루시네이션은 이쯤되면 많이 들어봤을 법한 용어인데, 자기가 잘 모르는 질문에 대해서도 마치 아는 듯이 부정확한 정보를 생성하는 것이다. 

따라서 언어 모델에서 나온 Output 이 항상 정답이라고 생각하면 안 되는 것이다.

 

즉, 정답을 말해줘야 하는 서비스에서 이 LM 모델을 만능이라고 생각하고 대체할 수는 없다는 것이다. 

이러한 문제들은 LLM의 복잡성과 대규모 데이터에 기반하기 때문에 완전히 해결하기는 어렵고, 이러한 문제의식을 가지고 모델을 사용하는 것이 중요하다. 

 

오케이, 이런 문제가 있다는 건 예전부터 알았고, 그럼 이제 파운데이션 모델을 활용하여 우리만의 데이터로 우리만의 Language 모델을 만들어보자.

LLM을 이용하여 우리만의 LM 모델 만들기

LLM에서 학습 과정에 포함되지 않은 지식을 주입하는 방법은 크게 2가지다. 

 

1. Fine-Tuning: 새로운 지식에 관한 텍스트 데이터 소스를 이용해서 LLM의 파라미터를 Fine-Tuning 하는 것

                          즉, 기존에 Pre-Trained 되어 있는 파라미터를 새로운 지식에 맞게 특정 파라미터만 갱신하는 과정이다. 

                          현재 LLM은 이런 Pre-Trained 되어 있는 파라미터 개수가 매우 많아서, 진행하기가 쉽지는 않다. 

2. RAG(Retrieval-Augmentated Generation): 새로운 지식에 관한 텍스트 데이터 소스를 Embedding 해서 Vector Store 에 저장하고, 프롬프트 구성을 진행할 때 외부 데이터 소스로부터 가져온 텍스트 데이터를 함께 이용해서 프롬프트를 구성한 뒤 LLM 으로부터 답변을 얻어내는 것이다. 

*여기에서 Retrieval 은 검색이라는 뜻이다.

 

하지만, 아무것도 없이 이 기능을 구현하는 것은 쉽지 않을 것이다. 이럴 때 개발자를 도와주는 프레임워크인 랭체인을 활용해보도록 하자

 

랭체인(LangChain) 🦜🔗 이란 무엇인가

랭체인 라이브러리는 자연어처리(NLP)와 관련된 다양한 기능을 제공하는 파이썬 라이브러리로, LLM 을 사용하여 애플리케이션 생성을 단순화하도록 설계된 프레임워크다. 

이 라이브러리의 주요 목적은 대화형 AI 시스템을 구축하고 연구하는 데 있어 유용한 도구를 제공하는 것이다. 

LangChain 을 통해 사용자는 복잡한 NLP 시스템을 보다 쉽게 구축하고 실험할 수 있게 된다. 

 

아래와 같은 기능들을 랭체인에서 제공해준다. 

 

 

 

장점으로는

1. 손쉬운 구현

2. 긴 컨텍스트의 지식 주입 가능: GPT-3.5의 4096 토큰 제한으로 인해 긴 컨텍스트의 내용을 처리하기 힘들다는 문제점이 있는데, 랭체인을 이용하면 더 긴 컨텍스트의 정보로 LLM과 상호작용할 수 있다. (vector store)

3. 출처 확인 가능: LLM의 많은 부분이 블랙박스와 확률적으로 동작하기 때문에 LLM 이 만들어 낸 텍스트가 왜 그렇게 생성되는 지 확인하기 어렵고, 할루시네이션 문제가 발생할 위험성이 있지만, 랭체인을 이용하면 명확한 출처와 함께 LLM 이 텍스트를 생성할 수 있다. (vector store)

 

랭체인(LangChain)을 이용한 RAG 구현

 

랭체인을 활용하면 다음과 같은 과정들을 손 쉽게 구현할 수 있게 된다. 

1. Document Load

2. Split: 입력된 문자열을 쪼갠다

3. Storage: 쪼갠 문자열을 embedding 하여 vector store 에 저장한다.

4. Retrieval: Vector Store 에서 나의 질문에 맞는 답을 검색하여 찾는다. 

5. Output: Vector Store에서 나온 정보를 바탕으로 prompt 에 맞게 반환한다. 

 

즉, 랭체인을 이용해서 RAG를 구현하면 ChatPDF 같은 서비스를 만들 수 있는 것이다. 

ChatPDF는 내가 가지고 있는 PDF 를 upload 하면 pdf 내용 기반의 질문과 답변을 해주는 서비스다. 

https://www.chatpdf.com/?via=ba&fbclid=IwAR3NUBIMe7XLN5O4Bdn1h0rC1crD1FwmrCDl0EEW0XytpRPq1IN39UN7CVw&gad_source=1&gclid=Cj0KCQjwhtWvBhD9ARIsAOP0GoiTSV9BMJhR9fW2TWFq5Tf9CBpzgP7SWAJbpxViKog1cYM8EI1wp5UaAuTWEALw_wcB

 

ChatPDF - Chat with any PDF!

ChatPDF is the fast and easy way to chat with any PDF, free and without sign-in. Talk to books, research papers, manuals, essays, legal contracts, whatever you have! The intelligence revolution is here, ChatGPT was just the beginning!

www.chatpdf.com

 

 


현재 회사 내에서 LLM 으로 데이터 관리를 하자는 말이 계속해서 나오고 있어서, 여태까지 모호하게 자리 잡혀 있던 개념들을 정리해보았다. 이 자료를 바탕으로 발표하고 실제 데이터 관리를 어떻게 해보면 좋을지를 기획해보려 한다.

 

 

728x90
반응형

댓글