Team Ai
Apppublic

EddieLEEYH/peft-hands-on

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
App README

🧩 PEFT Hands-on

Parameter-Efficient Fine-Tuning (PEFT) 기법듀을 μ΄ˆλ³΄μžλ„ μ‰½κ²Œ μ΄ν•΄ν•˜κ³  μ‹€μŠ΅ν•  수 μžˆλŠ” λŒ€ν™”ν˜• νŠœν† λ¦¬μ–Όμž…λ‹ˆλ‹€.

✨ μ§€μ›ν•˜λŠ” PEFT 방법

  • β€”LoRA - Low-Rank Adaptation (0.8% νŒŒλΌλ―Έν„°)
  • β€”DoRA - Weight-Decomposed LoRA (0.8% νŒŒλΌλ―Έν„°)
  • β€”AdaLoRA - Adaptive LoRA (0.8% νŒŒλΌλ―Έν„°)
  • β€”QLoRA - 4-bit Quantized LoRA (12.5% νŒŒλΌλ―Έν„°)
  • β€”IAΒ³ - Infused Adapter (0.04% νŒŒλΌλ―Έν„°)
  • β€”Prefix Tuning - Virtual Token Prefix (0.1% νŒŒλΌλ―Έν„°)
  • β€”Prompt Tuning - Virtual Token Prompt (0.05% νŒŒλΌλ―Έν„°)

πŸš€ μ‚¬μš© 방법

  1. 1.쒌츑 μ‚¬μ΄λ“œλ°”μ—μ„œ μ›ν•˜λŠ” PEFT 방법 선택
  2. 2.ν•˜μ΄νΌνŒŒλΌλ―Έν„° μ„€μ • (κΈ°λ³Έκ°’ ꢌμž₯)
  3. 3.ν•™μŠ΅ μ‹€ν–‰ λ²„νŠΌ 클릭
  4. 4.μ‹€μ‹œκ°„ κ²°κ³Ό 확인 및 μ‹œκ°ν™”

🌟 νŠΉμ§•

  • β€”πŸŽ¨ μ΄ˆλ“±ν•™μƒλ„ 이해할 수 μžˆλŠ” μƒμ„Έν•œ μ„€λͺ…
  • β€”πŸ“Š μˆ˜ν•™μ  원리λ₯Ό μ‹œκ°ν™”λ‘œ 직관적 이해
  • β€”πŸ”§ μ‹€μ œ κ΅¬ν˜„ κ°€μ΄λ“œ 제곡
  • β€”πŸŒ ν•œκΈ€ μ™„λ²½ 지원 (κ·Έλž˜ν”„, μ„€λͺ…, UI)
  • β€”πŸ’» μ‹€μŠ΅ κ°€λŠ₯ν•œ ν•™μŠ΅ ν™˜κ²½ 제곡

πŸ”— 링크

πŸ“š ν”„λ‘œμ νŠΈ ꡬ쑰

peft-streamlit/
β”œβ”€β”€ app.py                 # 메인 Streamlit μ•±
β”œβ”€β”€ pages/                 # PEFT 방법별 νŽ˜μ΄μ§€
β”‚   β”œβ”€β”€ 1_LoRA.py         # LoRA μ‹€μŠ΅
β”‚   β”œβ”€β”€ 2_DoRA.py         # DoRA μ‹€μŠ΅
β”‚   β”œβ”€β”€ 3_AdaLoRA.py      # AdaLoRA μ‹€μŠ΅
β”‚   β”œβ”€β”€ 4_QLoRA.py        # QLoRA μ‹€μŠ΅
β”‚   β”œβ”€β”€ 5_IA3.py          # IAΒ³ μ‹€μŠ΅
β”‚   β”œβ”€β”€ 6_Prefix_P_Tuning.py  # Prefix/Prompt Tuning μ‹€μŠ΅
β”‚   └── 7_Evaluate_and_Compare.py  # 평가 및 비ꡐ
β”œβ”€β”€ peft_utils/            # PEFT μœ ν‹Έλ¦¬ν‹°
β”‚   β”œβ”€β”€ data.py            # 데이터 λ‘œλ”©
β”‚   β”œβ”€β”€ model.py           # λͺ¨λΈ μ„€μ •
β”‚   β”œβ”€β”€ train.py           # ν•™μŠ΅ 둜직
β”‚   β”œβ”€β”€ eval.py            # 평가 둜직
β”‚   └── viz.py             # μ‹œκ°ν™”
└── data/                  # 데이터 파일
    └── tiny_instruct.jsonl

πŸš€ λΉ λ₯Έ μ‹œμž‘

bash
# μ €μž₯μ†Œ 클둠
git clone https://github.com/LEEYH205/peft_streamlit.git
cd peft-streamlit

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

# Streamlit μ•± μ‹€ν–‰
streamlit run app.py

πŸ“– ν•™μŠ΅ κ°€μ΄λ“œ

초보자λ₯Ό μœ„ν•œ 단계별 ν•™μŠ΅

  1. 1.κΈ°λ³Έ κ°œλ… 이해: LoRAλΆ€ν„° μ‹œμž‘
  2. 2.μ‹€μŠ΅ κ²½ν—˜: μ‹€μ œ ν•™μŠ΅ μ‹€ν–‰
  3. 3.κ³ κΈ‰ 기법: DoRA, AdaLoRA λ“±
  4. 4.μ„±λŠ₯ 비ꡐ: λ‹€μ–‘ν•œ 방법 비ꡐ

각 PEFT 방법별 νŠΉμ§•

  • β€”LoRA: κ°€μž₯ 기본적이고 μ•ˆμ •μ μΈ 방법
  • β€”DoRA: LoRA의 κ°€μ€‘μΉ˜ λΆ„ν•΄ 버전
  • β€”AdaLoRA: 적응적 LoRA
  • β€”QLoRA: 4-bit μ–‘μžν™”λ‘œ λ©”λͺ¨λ¦¬ 효율적
  • β€”IAΒ³: κ°€μž₯ 적은 νŒŒλΌλ―Έν„° μ‚¬μš©
  • β€”Prefix/Prompt Tuning: 가상 토큰 기반

🀝 κΈ°μ—¬ν•˜κΈ°

ν”„λ‘œμ νŠΈμ— κΈ°μ—¬ν•˜κ³  μ‹ΆμœΌμ‹œλ‹€λ©΄:

  1. 1.Fork μ €μž₯μ†Œ
  2. 2.Feature branch 생성
  3. 3.변경사항 컀밋
  4. 4.Pull Request 생성

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT License ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€.


⭐ 이 ν”„λ‘œμ νŠΈκ°€ 도움이 λ˜μ—ˆλ‹€λ©΄ GitHub에 μŠ€νƒ€λ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”!

πŸ’‘ λ¬Έμ œκ°€ λ°œμƒν•˜κ±°λ‚˜ κ°œμ„ μ‚¬ν•­μ΄ μžˆλ‹€λ©΄ GitHub Issues에 λ“±λ‘ν•΄μ£Όμ„Έμš”!