0. LoRA
๐ก Fine-Tuning
- ์ฌ์ ์ ํ๋ จ๋ ๋ชจ๋ธ์ ํน์ ์์ ์ ๋ง๊ฒ ์ถ๊ฐ๋ก ํ๋ จ์ํค๋ ๋ฐฉ๋ฒ
- ์ ์ ๋น์ฉ์ผ๋ก๋ ํฐ ๋ชจ๋ธ์ ํจ์จ์ ์ผ๋ก ํ๋ จ์ํฌ ์ ์๋ ์ฅ์ ์ ๊ณต
๐ก PEET (Parameter-Efficient Fine-Tuning)
- ์ ์ ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ตํ๋ ๊ฒ ๋ง์ผ๋ก๋ ๋น ๋ฅธ ์์ผ ์์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋น์ทํ ์ฑ๋ฅ์ผ๋ก ํ ์ ์๊ฒ ํ๊ธฐ ์ํ ๋ฏธ์ธ์กฐ์ (Fine-Tuning) ๋ฐฉ๋ฒ๋ก
- ๋ชจ๋ธ ์ ์ฒด๋ฅผ ๋ฏธ์ธ์กฐ์ ํ๋ ๊ฒ๋ณด๋ค, ํจ์ฌ ์ ์ ๊ณ์ฐ ์์๊ณผ ๋ฐ์ดํฐ๊ฐ ํ์ํจ
- ๋ค์ํ ํ์คํฌ๋ ๋ฌธ์ ์ ๋ํด ๋ชจ๋ธ์ ๋น ๋ฅด๊ฒ ์ ์ฉํ๊ฑฐ๋, ์คํํ๋ ค๋ ์ฐ๊ตฌ์๋ ๊ฐ๋ฐ์์๊ฒ ๋งค์ฐ ์ ์ฉํจ
๐ก Fully Fine-Tuning์ด ํ๋ ์ด์
- LLM์ weight๋ ์ต์ 1.5GB ~ 3GB
- Model์ GPU์ ๋ก๋ํ๋ ๊ฒ๋ง ํด๋, ์์ฒญ๋ GPU ํฌ๊ธฐ ์๋ชจ
- Fine-Tuning์ ์ฃผ๋ก Forward, Backward, ์ด๋ฅผ ํตํ Update๋ก ์ด๋ค์ง๋๋ฐ ์ด๋ ๋ฐ๊ฒฌ๋ gradient์ optimizer๋ฅผ ๋ชจ๋ GPU์ ์ ์ฅํด์ผ ํจ.
- ๊ฒฐ๊ตญ, Fully Fine-Tuning ์, weight ์ * 2 ~ 3๋ฐฐ์ GPU ์ฉ๋์ด ํ์ํจ
=> ์ฌ์ ํ์ต๋ LLM ๋ชจ๋ธ ์์ ์์ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ์ฌ ํ์ธํ๋ํ๋ ๋ฐฉ์ ๋๋ถ์ ์๋ก์ด ํ์คํฌ์ ๋ํ ๋ชจ๋ธ์ ์ ์ฉ ๋ฐ ํ๊ฐ๋ฅผ ์ํ ๊ฐ๋ฅ
๐ก LoRA (Low-Rank Adaptation)
- Huggingface์์ ๊ฐ๋ฐํ Parameter-Efficient Fine-Tuning ๋ฐฉ์ (PEET) ์ค ํ๋
- Low-Rank๋ฅผ ์ด์ฉํด์ ์๊ฐ, ๋ฆฌ์์ค, ๋น์ฉ์ ์ค์ด๋ ๊ธฐ๋ฒ
- ์ธ์ด ๋ชจ๋ธ์ ๊ตฌ์ฑํ๋ ๋๋ถ๋ถ์ ๋งค๊ฐ๋ณ์ (parameter)์ ๊ฐ์ค์น (weight)๋ฅผ ๊ทธ๋๋ก ์ ์งํ ์ฑ, ์ผ๋ถ ๋งค๊ฐ๋ณ์์๋ง ํ์ธํ๋์ ์ ์ฉํ์ฌ ๊ฐ์ค์น๋ฅผ ๋ณ๊ฒฝํ๋ ํ์ธ ํ๋ ๋ฐฉ์
- ⇒ ํน์ ๋ถ๋ถ๋ง ์ง์ค์ ์ผ๋ก ์์ ํ์ฌ ์์ ์ ๋ํ ์ฑ๋ฅ์ ๊ฐ์
- ์ฌ์ ์ ํ์ต๋ ๋ชจ๋ธ์ ๊ฐ์ค์น๋ฅผ ๋๊ฒฐํ๊ณ , ๊ฐ ์ธต์ ์ ๋ญํฌ(rank decomposition) ํ๋ ฌ์ ์ฝ์
ํ์ฌ ํ์ต ๊ฐ๋ฅํ ํ๋ผ๋ฏธํฐ ์๋ฅผ ํฌ๊ฒ ์ค์ธ๋ค.
- ์ ๋ญํฌ ํ๋ ฌ ์ฝ์
- ํฐ ์ฐจ์์ ํ๋ ฌ ์ฐ์ฐ์ ๋ฎ์ ์ฐจ์์ผ๋ก ๋ถํดํ๋ ๊ฒ
ex) ํ์ด์ฌ์ peft ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ LoRA๋ฅผ ์ฌ์ฉํ ์ ์์
๐ก LoRA ํ์ต ๋ฐฉ๋ฒ
- Fully Fine-Tuning์ ํ์ง ์๋๋ค.
- Model weight๋ฅผ Freeze ํ๋ค.
- ํ์ตํ๋ Layer๋ LoRA_A & LoRA_B (๋๋ค linear ์ํ)
- Transformer Layer์ ์๋ Query, Key, Value, Output(=self attention) ์ค ํ๋๋ฅผ ์ ํํ์ฌ ๋จ์ํ ๋ํด์ค๋ค.
- Full Finetuning์์๋ ๊ธฐ์กด W์์ฒด๋ฅผ ํ์ตํ๊ธฐ์ ๋ณดํต ๋งค์ฐ ๋ง์ ์ฐ์ฐ๋์ ํ์๋ก ํ๋ค.
- ํ์ง๋ง, LoRA์์๋ W๋ ๊ณ ์ ํด๋๊ณ , ์ ์ ์ฐ์ฐ๋์ ํ์๋กํ๋ A, B ํ๋ ฌ๋ง์ ํ์ตํจ.
๐ก LoRA ์ฅ๋จ์
์ฅ์
- Memory, Storage ์ฌ์ฉ๋์ด ์ ๋ค.
- ๊ธฐ์กด Pretrained Parameter(W)์์ ํ์ต์ ์งํํ์ง ์์ผ๋ฏ๋ก, ์ด ํ๋ผ๋ฏธํฐ๋ค์ Optimizer์ ์ ์ฅํ ํ์๊ฐ ์๋ค.
- ๋ฐ๋ผ์ Low Rank Decomposition์ ์ํํ ์ฐจ์์ ๋ฐ๋ผ VRAM์ 2/3 ์์ค์ผ๋ก ์ค์ผ ์ ์๊ณ , CheckPoint Size ๋ํ ๋งค์ฐ ์ค์ผ ์ ์๋ค.
- Infernece Cost๊ฐ ์ ์
- ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ ๋ํ ๋น์ฉ์ด ์ ์
- Task ๋ณ๋ก LoRA ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ๊ณ , Task์ ๋ฐ๋ผ Switchํ์ฌ ์ฐ์ฐํ๊ธฐ ๋๋ฌธ
- ํ์ต ์๊ฐ์ด ์ค์ด๋ฌ
- GPT3 175GB ๋ชจ๋ธ ๊ธฐ์ค 25% ์๋ ํฅ์
- ๋๋ถ๋ถ์ Pretrained Parameter (w)๋ก Gradient๋ฅผ ๊ณ์ฐํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ
๋จ์
- ๋ค์ํ Task๋ฅผ ์์ด Batch๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ ์
- ์ธ๊ณต์ง๋ฅ๋ถ์ผ์ ์ ์ฌ์ ์ธ ์ํฅ๋ ฅ o
1. QLoRA
- Quantized Low-Rank Adaptation
- ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๊ฐ์ ํ๊ณ , ์ ์ฉ๋ ํ๊ฒฝ์์๋ ๊ณ ์ฑ๋ฅ์ ์ ์งํ ์ ์๋๋ก ํ๋ ๊ธฐ์
- LoRA์ ๊ฒฐํฉ๋ QLoRA๋ ๋ชจ๋ธ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด์๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํ๋ ๋ฐ ๊ฐ์ ์ด ์กด์ฌ
- ํน์ง ๋ฐ ์ฅ์
- ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ
- ๊ณ ์ฑ๋ฅ ์ ์ง
- ํจ์จ์ ์ธ ๋๊ท๋ชจ ๋ชจ๋ธ ํ์ต ์ง์
- ์ฌ์ฉ ๋ฐฉ์ (etc)
- ํด๋ผ์ฐ๋ ์๋น์ค์์ ๋ชจ๋ธ ๋ฐฐํฌ ์ต์ ํ
- ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์์ AI ๋ชจ๋ธ ์ฌ์ฉ ์ต์ ํ
2. LoRA-FA
- Low-Rank Adaptation for Fine-Tuning
- ๋ํ ๋ชจ๋ธ์ ํ์ธํ๋ํ ๋ ํ์ํ ์์ ์๋น๋ฅผ ์ต์ ํ ํ๋ ๊ธฐ์
- ๊ธฐ์กด์ ํ์ธํ๋ ๋ฐฉ์์ ๋นํด ๊ณ์ฐ๋์ ๋ํญ ์ค์ด๊ณ , ํจ์จ์ ํ์ต ๊ฐ๋ฅ
- ํน์ง ๋ฐ ์ฅ์
- ํ์ธํ๋ ๊ณผ์ ์์ ๊ณ์ฐ ์์ ์ ์ฝ
- ๋ ์์ ๋ชจ๋ธ ํฌ๊ธฐ
- ๋น ๋ฅธ ํ์ต ์๋
- ์ฌ์ฉ ๋ฐฉ์ (etc)
- ๋ํ ์ธ์ด ๋ชจ๋ธ์ ๋น ๋ฅธ ํ์ธํ๋
- ์์ ์ ์ฝ ํ๊ฒฝ์์ AI ๋ชจ๋ธ ์ต์ ํ
3. QLoRA ์ LoRA-FA ๋น๊ต
QLoRA | LoRA-FA | |
๋ชฉ์ | ๋ชจ๋ธ ํฌ๊ธฐ ์ถ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ | ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ชจ๋ธ ํ์ธํ๋ |
์์ ์ต์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ (์์ํ ๋ฐ ์ ์ฐจ์ ๊ทผ์ฌ) | ๊ณ์ฐ ์์ ์ ์ฝ (์ ์ฐจ์ ๊ทผ์ฌ๋ฅผ ํตํ ํ์ธํ๋) |
์ฑ๋ฅ | ์ฑ๋ฅ ์์ค ๊ฐ๋ฅ์ฑ (์์ํ๋ก ์ธํ ์ ํ๋ ๊ฐ์) | ๋์ ํ์ธํ๋ ์๋, ํ์ต ํจ์จ์ฑ ํฅ์ |
์ ์ฉ ๋ถ์ผ | ๋ชจ๋ฐ์ผ, ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ AI ๋ชจ๋ธ ๋ฐฐํฌ ์ต์ ํ | ๋ํ ์ธ์ด ๋ชจ๋ธ ํ์ธํ๋, AI ์ฐ๊ตฌ |
์ฅ์ | ์ ์ฉ๋ ํ๊ฒฝ์์ ํจ์จ์ ์ธ ๋ชจ๋ธ ์คํ | ๋น ๋ฅธ ํ์ต ์๋, ์์ ์ต์ ํ |
๋จ์ | ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ, ์์ํ๋ก ์ธํ ์ ํ๋ ๊ฐ์ | ๋ชจ๋ธ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ํจ๊ณผ ๊ฐ์, ํ์ธํ๋๋ง ๊ฐ๋ฅ |
์ ๋ฆฌํ์๋ฉด, ๋ ๊ธฐ์ ๋ชจ๋ AI ๋ชจ๋ธ ์ต์ ํ๋ผ๋ ๊ณตํต ๋ชฉํ๊ฐ ์๋ค.
ํ์ง๋ง QLoRA๋ ์ ์ฉ๋ ํ๊ฒฝ์์ ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๊ทน๋ํ ํ ์ ์๋ ๊ธฐ์ ๋ก, ๋ชจ๋ฐ์ผ ๋ฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ๋งค์ฐ ์ ์ฉํ๋ค.
๋ฐ๋ฉด, LoRA-FA๋ ๋ํ ๋ชจ๋ธ ํ์ธํ๋์ ์ต์ ํํ๋ ๊ธฐ์ ๋ก, ํนํ ๋ํ ์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋ธ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ํ์ต์ํค๋ ๋ฐ ์ฅ์ ์ด ์๋ค.
'AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๊ตญ์ด ์๋ฒ ๋ฉ ๋ชจ๋ธ SOTA ๋ถ์ (1) | 2024.11.21 |
---|---|
๋ฒกํฐ DB ๋ถ์ (2) | 2024.11.20 |
Continue Extension์ ํ์ฉํ AI Coding ํ๊ฐ (2) | 2024.10.21 |
Prompt๋ ? (feat. LLM) (0) | 2024.08.28 |
Ollama / Embedding (0) | 2024.08.27 |