1684 words
8 minutes
[ML]LLM 구축의 절차

서론#

ChatGPT, Claude, DeekSeek 과 같은 LLM 에 대한 대중적인 관심이 높아지면서 일상적으로 LLM을 쓰는 사람도 예전보다 훨씬 늘어났고 그에 따라 어떻게 활용하면 좋을지에 대한 고민도 많아진 것 같습니다. 개인적으로는 LLM이 기본적으로 어떤 방식으로 구축되는지에 대한 이해가 있어야 LLM의 기본적인 매커니즘과 그 한계를 알고 LLM을 더 나은 방식으로 보다 더 적합한 분야에 적용할 수 있을 것이라고 생각합니다. 여기서는 LLM을 구축할때 거치는 단계에 대해 간략하게 정리해보았습니다.

1. Pretraining Stage#

  • 기본적으로 원천이 되는 엄청큰 데이터가 필요함.
  • 데이터 수집, 전처리, 토큰화 등의 과정을 거침.

1.1 데이터 수집 및 전처리#

The FineWeb Pipeline

https://huggingface.co/datasets/HuggingFaceFW/fineweb

1.1 URL Filtering#

  • 학습이 대상이 되면 안되는 웹사이트들이 있음(너무 폭력적이거나 불법적인 내용을 포함하는 사이트)

1.2 Text Extraction#

  • 기본적으로 웹의 거의 모든 컨텐츠는 HTML 형식으로 되어 있음.
  • HTML 태그를 제거하고 텍스트만 추출하는 과정이 필요함.

1.3 Language filtering#

  • 데이터 셋의 양은 학습 비용과 시간에 영향을 미침.
  • 특정 언어의 데이터를 제거하거나 필터링하는 과정이 필요함.
  • ex) 영어의 비율이 40% 이상인 사이트만 수집

1.4 PII Masking#

  • 개인정보 마스킹

1.2 Tokenization#

문자열을 토큰으로 분리하는 과정. 토큰은 단순히 숫자로된 인덱스 값임. BPE, WordPiece, SentencePiece 등의 알고리즘이 사용됨.

여기까지 거치면 모델의 입력으로 사용할 토큰이 준비됨.

2. Training Stage#

기계학습에서의 학습은 기본적으로 가중치 조정을 통해 모델을 최적화하는 과정을 의미함.

2.1 Model Architecture#

Transformer 아키텍처가 기본이 됨.

  • Multi-head Self Attention
  • Feed Forward Neural Networks
  • Layer Normalization
  • Residual Connections

2.2 Embedding and Weight#

LLM에서 모델은 기본적으로 확률 모델임.

모델 학습과정에서의 입력값은 토큰이며, 이 토큰은 임베딩 레이어를 통과해 벡터로 변환됨.

1. 토큰 입력#

2. 임베딩 변환 단계:#

이 토큰들이 모델의 임베딩 레이어를 통과하면서 벡터로 변환됩니다.

ex) 768차원의 임베딩을 사용할 경우 768차원의 벡터로 변환됨.

3. Transformer 레이어 처리:#

  • 이렇게 변환된 임베딩 벡터들이 Transformer 레이어들을 통과하면서 반복적으로 새로운 임베딩으로 업데이트됨

  • 각 레이어는 입력 임베딩을 받아서 새로운 임베딩을 출력

4. 최종 출력:#

  • 마지막 레이어에서 임베딩 형태의 출력이 나옴.
  • 언어 모델링의 경우: 최종 임베딩은 다시 선형 레이어를 통과해 vocabulary 크기의 로짓(logit)으로 변환되어 다음 토큰을 예측
  • 임베딩 추출의 경우: 중간단계나 최종단계의 임베딩을 추출하여 다른 모델에 입력으로 사용

Concept

  • Token : 텍스트를 모델이 처리할 수 있는 기본 단위로 나눈 것. 사전의 색인처럼 각 단어나 단어의 일부를 고유한 숫자로 매핑한것. 토큰화 방식에는 단어 단위(Word), 문자 단위(Character), 단어와 문자의 중간형태인 서브워드(Subword) 단위가 있음
  • Embedding : 토큰을 다차원 벡터 공간에 표현한 것. 각 토큰에 대한 좌표값처럼 작동하며, 의미가 비슷한 단어들은 벡터 공간에서 서로 가까운 위치에 있게 됨. 임베딩은 학습 과정에서 계속 업데이트되며, 최종적으로는 각 토큰에 대한 최적의 벡터 표현을 찾게 됨. 기본적으로 임베딩은 데이터 분포를 압축한 표현으로 볼 수 있음. 따라서 학습데이터의 품질과 성격이 임베딩의 품질에 큰 영향을 미침
  • Weight : 신경망이 입력을 처리하는 과정에서 사용하는 학습 가능한 파라미터. 여러 곳에 존재하며, 데이터를 가장 잘 표현할 수 있는 값으로 조정됨

정리

  • 원시데이터를 필터링 및 가공해서 토큰화.
  • 모델의 입력은 기본적으로 토큰(숫자)임. 정확히는 context window 라고 불리는 토큰들의 시퀀스임
  • 이 토큰은 모델 내부에서 임베딩 레이어를 통과해 벡터(임베딩)로 변환됨
  • 이 벡터는 Transformer 레이어를 통과하면서 업데이트됨
  • 최종 출력은 임베딩과 학습된 가중치
  • 태스크에 따라 임베딩을 그대로 사용하거나, 추가 변환을 거쳐 확률이나 다른 형태로 출력될 수 있음

이 시점에서 모델은 텍스트의 의미를 벡터 공간에서 표현하고 처리할 수 있게끔 준비됨.

2.3 Baseline Model#

Baseline Model은 처음 학습을 시작할 때 기준이 되는 모델을 의미. 보통 더 작은 규모의 검증된 모델 아키텍처를 시작점으로 사용

3. Post Training Stage#

학습된 모델을 목적에 맞게 최적화 수행 크게 Fine-tuning, Reinforcement Learning, Model Compression 등의 방법이 있음.

  • Knowledge Distillation: 큰 모델의 지식을 작은 모델로 전달
  • Quantization: 모델 가중치의 정밀도를 낮춰 모델 크기 축소. 모델 경량화
  • Pruning: 중요도가 낮은 파라미터를 제거

Fine-tuning#

특정 태스크나 도메인에 맞게 모델을 조정하는 과정

  • Prompt Tuning: 프롬프트 자체를 학습 가능한 파라미터로 설정
  • LoRA(Low-Rank Adaptation): 적은 파라미터로 효율적인 미세조정
  • P-tuning: 연속적인 프롬프트 임베딩을 학습

Reinforcement Learning#

보상 시스템을 통해 모델을 학습하는 방식

  • RLHF(Reinforcement Learning from Human Feedback): 인간의 피드백을 보상으로 활용하는 학습 방식
  • Prompt-based RL: 프롬프트를 통해 보상을 제어하는 방식
  • Policy Network: 주어진 상태에서 행동을 결정하는 네트워크

4. Inference Stage#

추론의 단계해서 생각해볼만한 컨셉들

4.1 Prompt Engineering#

4.2 Vector DB#

  • 임베딩 벡터를 저장하는 데이터베이스
  • KNN, ANN 등의 알고리즘을 사용해 유사한 벡터를 검색

4.3 Zero-shot Learning#

4.4 Few-shot Learning#

4.5 RAG(Retriever-Aided Generation)#

Reference#

[ML]LLM 구축의 절차
https://yjinheon.netlify.app/posts/04ml/llm/building_llm/
Author
Datamind
Published at
2025-02-14
License
CC BY-NC-SA 4.0