#llm
- NEFTune이번 대회 학습 데이터는 약 2,000개로 적은데 모델은 27B였다. 거대 모델이 소규모 데이터를 학습하면 과적합 위험이 크다. 이걸 막으려고 NEFTune을 도입했는데, 임베딩에 노이즈를 더하는 단순한 기법이 왜 과적합을 막는지 정리해봤다. 문제: SFT 단계의 소규모 과적합 L...
- 체크포인트 선정하기학습이 끝나면 보통 eval/loss가 가장 낮은 체크포인트를 골라 추론에 쓴다. 나도 그렇게 했는데, 정작 loss가 더 높은 마지막 epoch 체크포인트가 실제 점수는 더 높게 나와서 한참 갸웃했다. WandB 차트를 보면서 어떤 체크포인트를 써야 하는지 다시 생각했던 걸 정리...

- Unsloth 적용기27B 모델을 V100 32GB에서 굴리려니 속도와 메모리 양쪽이 빠듯했다. unsloth를 적용하면서 왜 쓰는지, 그리고 직접 batch size를 1·4·8로 바꿔보다 batch 1이 제일 빨랐던 이상한 결과를 추적했던 걸 정리해봤다. 왜 unsloth였나 unsloth는 같은...
- completion-only loss - 질문 말고 정답만 학습시키기SFT 데이터를 학습시킬 때 질문과 정답이 한 시퀀스로 들어가는데, 처음엔 모델이 이 전체를 다 학습하는 줄 알았다. 그런데 질문은 학습하지 않고 정답 부분에만 loss를 거는 방법이 따로 있었다. 입력으로 받는 것과 loss를 거는 것의 차이를 정리해봤다. 입력으로 받는 것 ≠...
- LLM 추론 최적화 이해하기LLM 추론은 토큰을 auto-regressive하게 하나씩 생성하는 과정이라 바닐라로 돌리면 매우 느리다. 이걸 빠르게 만드는 최적화 기법들을 메모리 이동, 반복 계산, 배치 처리 관점으로 나눠 정리해봤다. 생성 단계의 sampling/search 자체는 3. Sampling 기...
- LoRA를 사용하는 이유LoRA의 메커니즘 자체는 머릿속에 잘 그려져 있었다. 큰 weight 행렬을 두 개의 작은 행렬로 쪼개 덧붙이는 것. 그런데 정작 LoRA가 왜 PEFT 중에서 가장 널리 쓰이는지, 그 결정적 장점은 정리해두지 못했었다. 그 부분까지 채워봤다. 메커니즘 - low-rank 분해...
- Casual LM을 사용하는 이유최근 LLM이 대부분 Decoder-Only 구조라는 게 처음엔 의아했다. 그런데 학습 효율 관점에서 보면 납득이 됐다. 문장 하나가 주어지면 매 토큰 위치마다 다음 토큰이라는 학습 신호가 생기므로, 사실상 문장 하나로 거의 모든 토큰에서 학습이 일어난다. 이 점을 정리하면서 두...
- Pretrained LM과 LLM둘 다 대량의 코퍼스로 사전학습한 언어모델인데, 왜 Pretrained LM과 LLM을 굳이 나눠 부르는지가 처음엔 잘 와닿지 않았다. 핵심은 모델 크기보다 하나의 모델로 몇 개의 태스크를 푸느냐에 있었다. Pretrained LM BERT, GPT-1/2 같은 모델이 여기에 속한...
- Pretrain Corpus 정제와 MemorizationLLM은 온라인에서 긁어모을 수 있는 최대한 많은 텍스트로 사전학습한다. 그런데 그 원시 데이터를 그대로 쓰지 않고 굳이 정제 작업을 거치는 이유가 무엇인지 정리해봤다. Corpus와 원시 데이터 코퍼스는 사전학습을 위한 대량의 텍스트 데이터 집합이다. 원시 데이터는 블로그, 뉴스...