Week 1 - (1) Introduction to LLMs and the generative AI project lifecycle 

이번 포스팅의 주요 키워드 

  • 기본 용어 배우기 : Base Model, Completion, Inference,  Prediction(예시), self-attension, Transformer Archtecture, Embeddings etc. 
  • RNN -> Generative AI로 Transform  (Architecture transformation) 
  • Configuration parameters 

I. Generative AI & Large Language Model Use Cases & Model Lifecycle 

1. Base Model: 베이스 모델을 메모리로 생각할 수 있음. 즉, 파라미터 수가 많을 수록 더 정교하고 복잡한 일(task)을 수행할 수 있음. 

강의 랩에서는 flan-T5을 사용할 예정 

Collection of base models and their relative size in terms of their parameters.

 

 

2. Compeletion: 모델의 최종 아웃풋을 말함. 이렇게 모델이 텍스트를 생성하는 것을 inference라고도 함. 

Completion을 보면 Prompt와 함께 답변까지 같이 제공하는 것을 알 수 있음. 

Prompt & Model & Completion

3. Prediction: LLM인 경우 주어진 일에 따라 그 수행하는 일로 생각해볼 수 있음. (예시는 아래 이미지) 

 

  • Information retrival: 모델에게 주어진 텍스트에서 사람, 장소와 같은 정보를 찾아내는 것. (Entity recognition, 분류작업의 일종)

 

II. How LLMs Works : Transformers Architecture 

           이전 단어로 모델이 알 수 없음

          예측할 단어

 

           tastes            vs            tea tastes           

 

RNN으로 주황색 박스에 올 단어를 예측하고자 할때, 오른쪽인 경우, tea 라는 정보가 들어있어서           를 예측할 때 예측할 수 있는 그 확률이 높아질 수 있지만.. 문제는 homonyms (한 단어가 여러 개의 뜻을 가진 경우), syntatic ambituity (문장 구조로 인해 의미가 모호한 경우 ex. The teacher taught the student with the book. 책은 누구 책? )로 예측하기 힘든 문제가 있었다.

 

하지만, 기존 RNN의 알고리즘이 Generative AI로 발전할 수 있게된 계기로 논문을 소개함. 

2017년 논문: Attention is All You Need (Google and the University of Toronto) 

- Multi-core GPU (parallel process input data)  

- Larger training dataset 

- Meaning of the words its processing  등이 가능해지면서 Generative AI로 이끌 수 있었음. 

- 링크 https://arxiv.org/abs/1706.03762 

 

 

 

옆에 있는 단어 (혹은 주변 단어)의 상관관계를 파악하는 것이 아니라, 

 

 

문장 내의 모든 단어간의 관계를 살펴보게 됨으로써 모든 단어의 관련성과 문맥을 학습하게 됨. 

 

 

 

 

또한 가중치(weight)를 적용해서 모델의 입력값의 어느 위치에 상관없이 각 단어와의 관련성을 학습하게 되었음. 이러한 알고리즘으로 더 많은 문서의 맥락도 알 수 있게 됨. 

 

 

 

book은 teacher와 student와 단어와 밀접하게 연관된것을 알 수 있으며 어떤 단어가 서로 강하게 연결되어있는지를 Self-attension 라고도 함. Self-attension을 통해 input 전체를 이해할 수 있게 되어 모델 향상에 영향을 끼쳤음. 

 

 

 

 

 

 

Transformer Archtecture: 인코더(Encoder)와 디코더(Decoder)로 구성되어있음. 

  • 인코더: Encodes inputs ("prompts") with contextual understanding and produces one vector per input token. (입력 시퀀스를 인코딩해서 입력의 구조와 의미를 심층적으로 표현) 
    • prompt: 모델에 입력하는 텍스트, 텍스트를 생성하는 작업을 추론 (inference) 모델이 원하는 방식으로 잘 동작하도록 프롬프트에서 언어를 수정하거나 예시를 제공하는 작업이 필요한데, 이걸 컨텍스트 내의 학습 (in-context learning)라고도 함. 
  • 디코더: Accpets input tokens and generates new token. (입력 토큰 트리거를 바탕으로 인코더 상황을 이해해서 새 토큰을 생성하고 특정 조건에 도달할 때까지 반복해서 이 작업을 수행함)
    • 참고로 인코더와 디코더가 같이 있는 경우: translation이 대표적인 예시이며 입력 값과 출력값의 길이 차이가 달라질 수 있다는게 특징임.
    • 인코더 전용 모델:  감정 분석과 같은 분류작업 수행하는데 사용 BERT가 그 예
    • 디코더 전용 모델: 가장 일반적으로 사용되는 모델이며 디코더 전용 모델로는 GPT 모델, Jurassic, Lama등이 포함. 

두가지가 서로 연동되어 작동해서 여러가지 유사점을 공유함. 

참고로 모델 입력값은 아래쪽에 위치하고 출력값은 상단에 위치하는것에 주목할 것! 

 

 

 

머신러닝 모델을 그저 확률을 계산하는 계산기라고 생각해보면, 처리할 텍스트를 모델에 전달하기 전에 먼저 단어를 토큰화해야 한다. 

토큰화는 간단히 말해 단어가 숫자로 변환되는 것이며, 각 숫자는 모델이 사용할 수 있는 모든 단어의 사전 내 위치를 나타낸다. 

 

아래 그림을 보면, 토큰 ID가 두 개의 완전한 단어로 일치시키거나 (the인 경우) 토큰 ID를 사용해 단어 일부를 나타낼 수 있음. 

주의할 것: 모델을 학습시킬 토크나이저(tokenizer method)를 선택한 후, 텍스트를 생성할때 동일한 토크나이저를 사용해야 함. (ID가 불일치 하면 안되므로..)

 

 

 

이제 입력값이 숫자로 표시되었으므로, 임베딩 레이어에 전달할 수 있음. 이 레이어는 학습 가능한 벡터 임베딩 공간으로 각 토큰이 벡터로 표현되어 해당 공간 내에서 고유한 위치를 차지하는 고차원 공간임. (word2vec와 같은 컨셉) 아래 그림을 보면 단어는 토큰아이디와 연결되고 이 토큰아이디는 벡터와 연결(map)되어있다고 생각하면 됨. 

 

벡터 사이즈가 3개라고 할 경우, 단어 하나는 3개의 dimensional space로 보았을 때 그 단어가 위치하는 것을 알 수 있는데, 아래 그림의 경우 512 벡터 사이즈 이므로 512차원을 말하게 됨. 임베팅을 하게 되면서 수학적인 계산 (단어사이 거리를 각도로 계산하면서..)하면서 언어를 수학으로 이해할 수 있게 됨. 

 

 

 

토큰 벡터를 인코너 또는 디코더의 베이스에 추가할 때, 위치 인코딩 (Positional encoding)도 추가함. 모델은 각 입력 토큰을 병렬로 처리하는데, 이 위치 인코딩을 추가하게 되면서 단어 순서에 대한 정보를 보존하고 단어 위치의 관련성을 잃지 않게 됨. 

 

 

 

입력 토큰과 위치 인코딩을 합산한 후, 결과 벡터를 self-attention레이어에 전달. 

따라서 래서 입력 시퀀스에 있는 관계를 분석하는데, self-attention을 통해 문맥적 종속성을 더 잘 포착할 수 있음. 

 

 

 

self-attention weight를 통해 해당 입력 시퀀스의 각 단어가 시퀀스의 다른 모든 단어에 미치는 중요성을 계산함. 하지만 이건 단순히 한번만 계산하는것이 아니라, 병렬적으로 (독립적으로) 학습함. 아래 그림과 같이 multi-headed self-attension 으로 진행이 되며 각 head마다 가중치가 무작위로 초기화되어 정해지면서 각 head마다의 언어의 다른 측면을 배우게 된다.  

 

 

 

모든 가중치가 입력 데이터에 적용되었으므로 출력은 완전히 연결된 피드 포워드 네트워크 (Feed forward network)를 통해 처리 됨. 

이 레이어의 출력값은 토크나이저 사전에 있는 모든 토큰의 확률 점수에 비례하는 로짓으로 구성된 벡터이다. 

 

 

 

이 로짓을 최종 소프트맥스 계층으로 전달해 각 단어의 확률 점수로 정규화 함. 

이 출력값에는 어휘에 있는 모든 단어에 대한 확률이 포함되어있어, 여기에 수천 개의 점수가 있을 수 있으며, 단일 토큰은 나머지 토큰보다 더 높은 점수를 받게 되어 결국 예측된 토큰으로 이어짐. 이 확률 벡터를 바탕으로 최종 선택 범위를 다르게 만드는데 사용할 수 있으며 이 부분은 차후에 소개. 

 

 

 

 

III. Configuration Parameters 

Parameters: 각 모델마다 inference중에 출력에 영향을 줄 수 있는 configuration parameter가 있으며,  참고로, parameter는 모델을 트레이닝할때 사용되는 training parameter와는 다름. 

 

  • 최대 토큰: 설정된 값을 통해 모델에서 생성할 토큰수를 제한할 수 있음. 생성된 토큰의 수를 정확히 나타내는 것이 아니라 최대 새 토큰의 수 (Remember it's max new tokens, not a hard number of new tokens generated.) 

 

 

  • Greedy vs Random sampling
    • Greedy: 항상 확률이 가장 높은 단어를 선택하는 간단한 형태로 다음 단어를 예측. 문제는.. 단어가 반복되는 시퀀스에는 취약함. 더 자연스럽고 창의적이며, 단어의 반복을 줄이기 위해 다른 컨트롤이 필요한데 바로 램덤 샘플링으로 구현할 수 있음. 
    • Random sampling: 변동성을 유발하는 가장 쉬운 방법. banana라는 단어의 확률 점수는 0.02로 무작위 샘플링을 할 경우 이 단어가 선택될 확률은 2%에 해당됨. 문제는 설정에 따라 결과물이 너무 창의적이던가, 말이 안되는 단어가 생성될 수 있음. 

 

  • Top-k & Top-p sampling : 무작위 샘플링을 제한하고 출력이 합리적일 수 있도록 가능성을 높이는데 도움을 줌.
    • 일부 변동성을 허용하면서 옵션을 제한하려면 상위 k값을 지정해 모델이 확률이 가장 높은 k개의 토큰 중에서만 선택할 수 있도록 지시할 수 있음. 만약 top k가 25이면, 25개 옵션 중에 선택할 수있도록 함. 그런 다음 확률 가중치를 사용해 이런 옵션 중에 선택하고 다음 단어로 넘어가게 됨.
    • 상위 p를 설정해서 결합 확률이 p를 초과하지 않는 예측으로만 무작위 샘플링을 제한할 수 있음. 
    • 즉, 상위 k를 사용하면 무작위로 선택할 토큰 수를 지정하고, 상위 p를 사용하면 모델이 선택할 수 있는 총 확률을 지정하게 됨. 

 

  • 온도(temparature) - 모델이 다음 토큰에 대해 계산하는 확률 분포의 형태에 영향을 줌. 온도가 높을수록 무작위성이 높아지고, 온도가 낮을수록 랜덤성이 낮아짐. 온도값은 모델 최종 소프트맥스 계층 내에 적용되는 스케일링 factor로, 토큰의 확률 분포 형태에 영향을 주게 됨. 
  • 아래 그림을 보면, 1보다 작은 값을 선택할 경우, 소프트맥스 계층의 확률 분포가 더 강하게 정점에 도달하게 되므로 확률이 특정 단어에 집중하게 됨 (케이크). 모델은 무작위 샘플링을 통해 이 분포를 선택하게 되므로 결과 텍스트의 무작위성이 줄어듬. 반면 1보다 높은 값을 설정하면, 모델은 다음 토큰에 대해 더 넓고 평평한 확률 분포를 계산하게 되면서 파란색 막대와 다르게 빨간색 막대처럼 토큰 전체에 더 균등하게 분포됨을 알 수 있음. 

반응형

+ Recent posts