Instructions to use lxxexxbxx/gemma3-4b-ko-rlaif-ppo with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use lxxexxbxx/gemma3-4b-ko-rlaif-ppo with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("google/gemma-3-4b-it") model = PeftModel.from_pretrained(base_model, "lxxexxbxx/gemma3-4b-ko-rlaif-ppo") - Notebooks
- Google Colab
- Kaggle
gemma3-4b-ko-rlaif-ppo
google/gemma-3-4b-it์ RLAIF(Reinforcement Learning from AI Feedback) ๊ธฐ๋ฐ PPO๋ฅผ ์ ์ฉํ LoRA ์ด๋ํฐ
- ํ๊ตญ๊ณตํ๋ํ๊ต ๋ฅ๋ฌ๋์์ฉ ํ ํ๋ก์ ํธ(2025-2) ์ค PPO ํธ๋ ๋จ๋ ๋ด๋น ์ฐ์ถ๋ฌผ
- ๋ชฉํ: 4B ๊ฒฝ๋ ๋ชจ๋ธ + 4-bit ์์ํ ํ๊ฒฝ์์ ๋ณด์ ๊ธฐ๋ฐ ํ์ต์ ๋์ ์ฌ๋ถ ๊ฒ์ฆ
- ๊ฒฐ๊ณผ: PPO ์ ์ฉ ํ baseline ๋๋น ์ฑ๋ฅ ํ๋ฝ. ์์ธ์ ๋ณด์ ์ค๊ณ ๋ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต ๊ฒฐํจ์ผ๋ก ๋ถ์
- ํ๊ฐ ๊ฒฐ๊ณผ์ ํ๊ณ ํญ๋ชฉ ๋ฐ๋์ ์ฐธ์กฐ
์ ์ฅ ๊ตฌ์ฑ
TRL AutoModelForCausalLMWithValueHead๋ ์ ์ฑ
๋ชจ๋ธ๊ณผ ๊ฐ์น ํค๋๊ฐ ๋ฐฑ๋ณธ ๊ณต์ โ ๋ ๊ฐ์ค์น๊ฐ ๋ณธ ์ ์ฅ์์ ํจ๊ป ์ ์ฅ
| ํ์ผ | ์ญํ | ํฌ๊ธฐ |
|---|---|---|
adapter_model.safetensors |
์ ์ฑ ๋ชจ๋ธ(Policy) LoRA ์ด๋ํฐ | 131 MB |
pytorch_model.bin |
๊ฐ์น ํค๋(Value head, v_head) ๊ฐ์ค์น |
7 kB |
adapter_config.json |
LoRA ์ค์ | 1 kB |
tokenizer.json / tokenizer_config.json / chat_template.jinja |
ํ ํฌ๋์ด์ | 33 MB |
- ๋ณด์ ๋ชจ๋ธ(Reward): ๋ณ๋ ์ ์ฅ์ โ lxxexxbxx/gemma3-4b-ko-rlaif-reward
- ์ฐธ์กฐ ๋ชจ๋ธ(Reference): LoRA ์ด๋ํฐ ๋นํ์ฑํ ์ํ์ base ๋ชจ๋ธ๋ก ๋์ฒด โ ๋ณ๋ ์ ์ฅ ์์
ํ์ต ๊ตฌ์ฑ
- Base:
google/gemma-3-4b-it(4-bit ์์ํ, BitsAndBytes) - LoRA:
r=16,lora_alpha=32,lora_dropout=0.1 - Target modules:
q_proj,k_proj,v_proj,o_proj - Framework: TRL
PPOTrainer+ PEFT - ํ์ต ๋ฐ์ดํฐ: RLAIF 500๊ฑด (TruthfulQA-ko 250 + KMMLU-QA 250)
- ํ๊ฒฝ: RunPod RTX 3090 / Google Colab A100
RLAIF ๋ฐ์ดํฐ ์์ฑ
- Gemini๋ฅผ ์ฌํ์ผ๋ก ์ฌ์ฉ
- ๋์ผ ์ง๋ฌธ์ ๋ํ ์๋ต์ Chosen(์ฌ์ค์ ๋ต๋ณ) / Rejected(ํ ๋ฃจ์๋ค์ด์ ๋ต๋ณ)๋ก ๋ถ๋ฅ
- ์ ํธ ์(preference pair) ๋ฐ์ดํฐ์ ๊ตฌ์ฑ
์ฌ์ฉ ๋ฐฉ๋ฒ
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained(
"google/gemma-3-4b-it",
device_map="auto",
)
model = PeftModel.from_pretrained(base, "lxxexxbxx/gemma3-4b-ko-rlaif-ppo")
tokenizer = AutoTokenizer.from_pretrained("lxxexxbxx/gemma3-4b-ko-rlaif-ppo")
messages = [{"role": "user", "content": "์ง๋ฌธ์ ์
๋ ฅํ์ธ์"}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True))
- ๊ฐ์น ํค๋๊น์ง ๋ก๋ํ๋ ค๋ฉด
trl.AutoModelForCausalLMWithValueHead์ฌ์ฉ
ํ๊ฐ ๊ฒฐ๊ณผ์ ํ๊ณ
ํ๊ฐ ์ค๊ณ
- ํ๊ฐ์ : 50๋ฌธํญ (TruthfulQA-ko 25 + KMMLU-QA 25)
- ์ฌํ: Gemini 2.5 Flash,
temperature=0(ํ์ต ๋ฏธ์ฌ์ฉ ์ธ๋ถ LLM) - ์งํ: Accuracy / Conciseness ๋ถ๋ฆฌ ์ฑ์ , ๊ฐ 10์ ๋ง์
| ๊ตฌ์ฑ | Accuracy | Conciseness | Accuracy = 0 |
|---|---|---|---|
| Base Gemma3-4B | 1.10 | 1.68 | 44 / 50 |
| + PPO (๋ณธ ๋ชจ๋ธ) | 0.78 | 0.82 | 46 / 50 |
์์ธ ๋ถ์
1. ๋ณด์ ํดํน(Reward hacking)
- ๋ณด์ ๋ชจ๋ธ์ด "๋ชจ๋ฅธ๋ค"๋ ์๋ต๋ณด๋ค ๊ทผ๊ฑฐ ์์ด ํ๋ถํ ์ค๋ช ์ ๋์ ์ ์ ๋ถ์ฌ
- ์ ์ฑ ๋ชจ๋ธ์ด ํด๋น ํจํด ํ์ต โ ํ ๋ฃจ์๋ค์ด์ ์ฆ๊ฐ
2. ํ๊ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต ๊ฒฐํจ
- KMMLU ๊ฐ๊ด์ โ QA ํ์ ๋ณํ ๊ณผ์ ์์ ๋ ผ๋ฆฌ์ ๋ถ์ผ์น ๋ฐ์
- ์ง๋ฌธ์ ๊ฐ๊ด์ ํํ์ธ๋ฐ ์ ๋ต์ผ๋ก๋ ๋ณด๊ธฐ ๋ด์ฉ๋ง ์ ๊ณต
- ๋ชจ๋ธ์ด ์กด์ฌํ์ง ์๋ ๋ณด๊ธฐ๋ฅผ ์์ฑํด ๋ตํ๊ณ 0์ ์ฒ๋ฆฌ๋ ์ฌ๋ก ๋ค์
3. Base ๋ชจ๋ธ์ ๋ฎ์ ์ ์(1.10)์ ๋ํ์ฌ
- ์ฌํ ๊ธฐ์ค: "์ ๋ต์ ํต์ฌ ์ธ๊ธ ์ฌ๋ถ"
- Gemma3-4B ์๋ต ํน์ฑ: ๋งํฌ๋ค์ด ๋ถ๋ฆฟ ๊ธฐ๋ฐ ์ฅ๋ฌธ โ ํต์ฌ ํฌ์
- ๊ฒฐ๋ก : ๋ณธ ์์น๋ ๋ชจ๋ธ ์ฑ๋ฅ๋ฟ ์๋๋ผ ํ๊ฐ ์ค๊ณ์ ํ๊ณ๋ฅผ ํจ๊ป ๋ฐ์
๊ด๋ จ ์ ์ฅ์
- ์ฝ๋ ยท ๋ฐ์ดํฐ ยท ์์ธ ๋ถ์: github.com/lxxexxbxx/llm-rlhf-ppo
- ๋ณด์ ๋ชจ๋ธ: lxxexxbxx/gemma3-4b-ko-rlaif-reward
๋ผ์ด์ ์ค ๋ฐ ์ถ์ฒ
- Base ๋ชจ๋ธ
google/gemma-3-4b-it์ Gemma Terms of Use ์ ์ฉ - ํ์ต ๋ฐ์ดํฐ: TruthfulQA ํ๊ตญ์ด ๋ฒ์ญ๋ณธ, KMMLU (HAERAE-HUB)
- LoRA ์ด๋ํฐ๋ง ๋ฐฐํฌ, base ๋ชจ๋ธ ๊ฐ์ค์น ์ฌ๋ฐฐํฌ ์์
- Downloads last month
- 22