Views
No views yet
1import time
2import torch
3from transformers import AutoTokenizer, AutoModelForCausalLM
4from peft import PeftModel
5
6# 🔧 Model + checkpoint config
7base_model_name = "EleutherAI/polyglot-ko-1.3b"
8lora_model_path = "jwywoo/burnfit-lora-v2"
9
10# ✅ Load tokenizer
11tokenizer = AutoTokenizer.from_pretrained(lora_model_path)
12tokenizer.add_special_tokens({"additional_special_tokens": ["<END>"]})
13tokenizer.eos_token = "<END>"
14
15# ✅ Load base model + LoRA adapter
16device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
17base_model = AutoModelForCausalLM.from_pretrained(base_model_name).to(device)
18base_model.resize_token_embeddings(len(tokenizer))
19model = PeftModel.from_pretrained(base_model, lora_model_path).to(device)
20model.eval()
21
22
23# For Newbies if you are using colab put this part in different cell
24# 🔠 Prompt example
25prompt = """## 질문
26- 5/3/1 프로그램
27- **운동경험**: 2
28- **성별**: 여성
29- **운동목표**: 3
30- **1RM**:
31 - 벤치프레스: 60
32 - 스쿼트: 70
33 - 데드리프트: 75
34 - 오버헤드프레스: 40
35
36## 답변
37"""
38
39# ⏱️ Measure time
40start = time.time()
41
42inputs = tokenizer(prompt, return_tensors="pt").to(device)
43inputs.pop("token_type_ids", None)
44
45eos_token_id = tokenizer.convert_tokens_to_ids("<END>")
46outputs = model.generate(
47 **inputs,
48 max_new_tokens=300,
49 eos_token_id=eos_token_id,
50 do_sample=False,
51 temperature=0.7,
52 top_p=0.9,
53 repetition_penalty=1.1
54)
55
56# 📄 Decode and trim
57generated = tokenizer.decode(outputs[0])
58generated = generated.split("<END>")[0].strip() + "\n<END>"
59
60elapsed = time.time() - start
61print(f"\n⏱️ Inference Time: {elapsed:.2f} seconds")
62print("\n🧠 Generated Output:\n")
63print(generated)## 질문
- 5/3/1프로그램
- **운동경험**: 3
- **성별**: 남성
- **운동목표**: 2
- **1RM**:
- 벤치프레스: 60kg
- 스쿼트: 70kg
- 데드리프트: 70kg
- 오버헤드프레스: 70kg
## 답변## 질문
- 5/3/1프로그램
- **운동경험**: 3
- **성별**: 남성
- **운동목표**: 2
- **1RM**:
- 벤치프레스: 60kg
- 스쿼트: 70kg
- 데드리프트: 70kg
- 오버헤드프레스: 70kg
## 답변
{
"program": "5/3/1프로그램",
"init_weight_rate": "55",
"increase_rate_week": "10",
"increase_rate_set": "10",
"deloading_rate": "30",
"weekly_weight_increase_plan": "Week1\nSET1 55%x5\nSET2 65%x5\nSET3 75%x5+\n\nWeek2\nSET1 65%x3\nSET2 75%x3\nSET3 85%x3+\n\nWeek3\nSET1 75%x5\nSET2 80%x3\nSET3 85%x1+\n\nWeek4\nSET1 30%x5\nSET2 40%x5\nSET3 50%x5\n"
}