Views
No views yet
config.py, prepare_data.py)config.py를 통해 LLM ID, 하이퍼파라미터 및 엄격한 페르소나 정의를 통합 관리합니다.prepare_data.py는 토론 주제와 상대 의견을 모델이 이해할 수 있는 특수한 대화형 프로토콜(<start_of_turn>)로 매핑합니다.train.py, interact.py)trl.SFTTrainer와 PEFT를 사용하여 LoRA 어댑터를 적용하며, 체크포인트 자동 재개 기능을 지원합니다.interact.py를 통해 LoRA 가중치를 베이스 모델에 동적으로 결합하고, 온도(Temperature) 및 반복 패널티 설정을 최적화하여 답변을 생성합니다.google/gemma-4-E2B (Google의 고효율 네이티브 멀티모달 모델)bitsandbytes를 이용한 4-bit NF4 양자화를 적용하여 정확도를 유지하면서 VRAM 사용량을 획기적으로 절감했습니다.q_proj, k_proj, v_proj, o_proj)에 LoRA를 직접 적용하여 파라미터 효율적인 학습을 수행했습니다.[Debate Topic] + [Opponent Opinion] → [Logical Rebuttal] 구조의 합성 데이터셋입니다.1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5# Load Base Model & Adapter
6model_id = "google/gemma-4-E2B"
7adapter_id = "YOUR_USERNAME/debate_bot_lora"
8
9model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto")
10model = PeftModel.from_pretrained(model, adapter_id)
11tokenizer = AutoTokenizer.from_pretrained(adapter_id)
12
13# Inference Example
14prompt = "<start_of_turn>user\n당신은 30대 여성 IT 기획자입니다. 이 페르소나에 맞춰 다음 내용에 반박하세요.\n토론 주제: 주 4일제 도입\n상대방 의견: 무조건적인 도입이 필요합니다.<end_of_turn>\n<start_of_turn>model\n"
15inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
16outputs = model.generate(**inputs, max_new_tokens=300, temperature=0.7)
17print(tokenizer.decode(outputs[0], skip_special_tokens=True))