[NLP] PEFT(Parameter Efficient Tuning) : LoRA ์ฝ”๋“œ
ยท
NLP(์ž์—ฐ์–ด์ฒ˜๋ฆฌ)
LoRALoRA๋Š” ํฐ ๋ชจ๋ธ์„ ํŠœ๋‹ํ•˜๊ธฐ ์œ„ํ•œ PEFT ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‹ค์Œ์€ Hugging Face์— ์žˆ๋Š” KoGPT ๋ชจ๋ธ์„ LoRA ๊ธฐ๋ฒ•์œผ๋กœ ๋ฏธ์„ธ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ • ๋ฐ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.  ์˜ค๋Š˜์€ ์ด ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•œ๋‹ค. import transformers from peft import LoraConfig, PdftModel , get_peft_model, prepare_model_for_int8_trainingtarget_modules = ["q_proj" , "k_proj" , "v_proj" , "out_proj" , "fc_in" , "fc_out" , "wte"] config = LoraConfig( r= 4 , #LoRA์˜ rank ์„ค์ • lor..
[NLP] get_accuracy ํ•จ์ˆ˜ ๋‚ด๋ถ€๊ตฌํ˜„ ์ดํ•ด
ยท
NLP(์ž์—ฐ์–ด์ฒ˜๋ฆฌ)
๋ชจ๋ธ์ด ์˜ˆ์ธกํ•œ ๊ฐ’๊ณผ ์‹ค์ œ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์ •ํ™•๋„ ๊ณ„์‚ฐcollator = DataCollatorWithPadding(tokenizer)loader = DataLoader(dataset, batch_size=batch_size, collate_fn=collator, shuffle=False) DataLoader๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜(batch)๋กœ ๋‚˜๋ˆ„์–ด ๋ชจ๋ธ์— ์ž…๋ ฅ(๋ฐ์ดํ„ฐ ์…‹์ด ๋„ˆ๋ฌด ์ปค์„œ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์—†์„ ๋•Œ, ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ๋ชจ๋ธ์— ์ „๋‹ฌ) collate_fn๋ฐ์ดํ„ฐ๋ฅผ ํŒจ๋”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• DataCollatorWithPadding์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์น˜ ๋‚ด์—์„œ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์žฅ๋“ค์ด ์žˆ์„ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๊ธด ๊ธธ์ด์— ๋งž์ถฐ ๋‚˜๋จธ์ง€ ๋ฌธ์žฅ๋“ค์„ padding ํ•ด์ค€๋‹ค. with torch.inference_mode() : outputs..
[Git] Commit & Push ๋‚ด์—ญ ์‚ญ์ œ
ยท
Git
์ด๋ฏธ commit & Push ๋œ ๋‚ด์—ญ ๋˜๋Œ๋ฆฌ๊ธฐ# ํ˜„์žฌ๊นŒ์ง€์˜ commit ๊ธฐ๋ก ์กฐํšŒgit log#๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹ ๊ธฐ๋ก ์‚ญ์ œgit reset HEAD^ # ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ 1๊ฐœ ์ œ๊ฑฐ (์œ„์™€ ๋™์ผ)git reset --hard HEAD~1# ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์„ 2๊ฐœ ์ œ๊ฑฐgit reset --hard HEAD~2 #ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ๋ถ๊ตฌ (ํŠน์ • ์ปค๋ฐ‹ ์ดํ›„๋Š” ๋ชจ๋‘ ์ œ๊ฑฐ) git reset --hard #์›๊ฒฉ์ง€ commit ๊ฐฑ์‹  git push -f origin  ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์›๊ฒฉ ๋ธŒ๋žœ์น˜์— ์ ์šฉํ•  ๋•Œ๋Š”, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ -f ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•œ๋‹ค.
๊ฒฐ๊ณผ ์žฌํ˜„์„ฑ์„ ์œ„ํ•œ SEED ๊ณ ์ •
ยท
๊ฒฝ์ง„๋Œ€ํšŒ
๋ฐฐ๊ฒฝ dacon ๋Œ€ํšŒ์—์„œ ์žฌํ˜„์„ฑ ํ™•์ธ์„ ์œ„ํ•ด ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋‚ด์–ด ์ œ์ถœํ–ˆ๋Š”๋ฐ, ๊ฒฐ๊ณผ๊ฐ€ ๊ณ„์† ๋‹ฌ๋ผ์ ธ์„œ ์›์ธ์„ ์ฐพ์•„๋ณด๋‹ˆ data loader์—๋„ seed๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ด๋„ ๋œ๋‹ค. https://pytorch.org/docs/stable/notes/randomness.html Reproducibility โ€” PyTorch 2.5 documentationReproducibility Completely reproducible results are not guaranteed across PyTorch releases, individual commits, or different platforms. Furthermore, results may not be reproducib..