-
[LLM 기초 다지기] LoRA for LLM Fine-tuningDeep-Learning/[NLP] 이론 2023. 11. 9. 14:06
진작 알았다면 좋았을 NLP 및 LLM에 대한 기초 지식 11. LoRA for LLM Fine-tuning
Contents
🔹 Word Embeddings: https://kuklife.tistory.com/144
🔹 Attention Mechanism: https://kuklife.tistory.com/145
🔹 Self-Attention: https://kuklife.tistory.com/148
🔹 Overview of LLMs:
🔹 LLM benchmark and Metrics:
🔹 GPT:
🔹 LLaMA2:
🔹 RAG:
🔹 Chain of Thought (CoT, Zero-shot CoT, AutoCoT, ReACT):
🔹 Fine-tuning for LLM (LoRA, P-tuning): https://kuklife.tistory.com/147LoRA 3줄 요약
- https://arxiv.org/abs/2106.09685
- PLM의 크기가 점점 커질수록 fine-tuning의 cost가 점점 커지고 있다. 그에 대한 해결책으로 LoRA가 등장하였다
- LoRA는 PLM을 freeze 한 뒤, trainable rank decomposition metrices를 inject하여 downstream task의 trainable parameters를 줄이는 기법이다. GPT3의 0.01% 정도의 파라미터만 학습하는 기법으로 GPU 메모리 요구량도 3배를 줄인다.
- 또한, 기존에 제안된 adapter에서 발생하는 inference latency 문제를 해결했다.
LoRA 개요 (Introduce)
- LLM을 1) full fine-tuning 하면 비싼 cost가 발생하고, 2) 조금의 파라미터만 학습하는 외부 모듈을 추가하는 방법론(adapter)은 종종 inference layency 문제를 일으킨다.
- LoRA는 dense layers의 rank decomposition matrices를 optimizing 함으로써 기존 dense layers를 간접적으로 학습하기 때문에 이 기법은 아래와 같은 이유로 위 2가지 문제를 해결한다.
1) 작은 low-rank matrices만을 optimaize 함으로써 학습을 효과적으로 할 수 있고, 요구되는 하드웨어 성능도 줄일 수 있다.
2) 심플한 선형 디자인을 통해 inference latency를 없앴다.
다른 fine-tuning 기법의 문제점 (P-tuning, Adapter)
- Adapter Layers Introduce Inference Latency: 큰 모델에는 하드웨어 병렬화를 많이 사용했고, 이는 adapter layer가 순서대로 처리되어야 하는 문제가 있다. 이로 인해 어뎁터를 사용할 때 latency가 존재하였다.
- Directly Optimizing the Prompt is Hard: Prefix-tuning은 optimize하기 어려웠으며 성능이 trainable parameters에 따라 급변한다.
방법론
- Aghajanyan et al.(2020)에 따르면, 특정 task에 pre-trained 모델을 적용할 때 해당 모델은 낮은 "intrinsic dimension"을 가진다. 여기서, "Intrinsic dimension"은 모델의 내재적 차원 또는 모델이 표현할 수 있는 표현의 차원을 의미합니다. 낮은 intrinsic dimension은 해당 모델이 표현할 수 있는 표현의 수가 적다는 것을 의미합니다.
- 정리하자면 일반적인 pre-train 모델들은 full-rank 즉 모든 특성들을 잘 가지고있다. 이 때 pre-train 모델을 downstream task에 적용하면 full-rank가 아닌 low "instrisic rank"만을 가져도 잘 학습하기에 low "instrisic rank"를 가진 adapter를 적용하고자 하였다.
- 이를 수식적으로 표현하면 다음과 같다.
- 여기서 A는 random gaussian initialization, B는 0으로 초기화. 그리고 Wx의 변화량은 α/r로 scaling 된다. 이는 Adam으로 optimization 할 떄, α를 tuning하는 것은 learning rate를 tuning 하는 것과 같이 하였다
- 아래 코드는 lora의 코드 일부이다. (코드를 확인해보니 r, α값은 보통 (8,16) 혹은 (16,32) 로 설정하였다)
실험결과
- NLU (GLUE 벤치마크)
- NLG (E2E NLG Challenge)
- vs. GPT3
- 최적의 rank r을 찾는 실험: 저자들은 Grassmann distance를 기반으로 다음과 같이 두 subspace의 유사도를 측정하였는데, 자세한건 논문을 참고해주세요!
'Deep-Learning > [NLP] 이론' 카테고리의 다른 글
금융권에서 경험한 NLP 일기장 - 1. DAPT (0) 2023.11.10 [LLM 기초 다지기 ] Self Attention and Transformer (0) 2023.11.05 [LLM 기초 다지기] Attention Mechanism (0) 2023.11.03 [LLM 기초 다지기] Word Embeddings (0) 2023.10.30