ThakrePranjal/pharma-preference-dataset
Viewer β’ Updated β’ 48 β’ 33
How to use ThakrePranjal/pharma-tinyllama-dpo-lora with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("/content/pharma_tinyllama_instruction_merged_model")
model = PeftModel.from_pretrained(base_model, "ThakrePranjal/pharma-tinyllama-dpo-lora")This is the Stage 3 DPO preference-tuning LoRA adapter, trained on top of the instruction-tuned merged model (ThakrePranjal/pharma-tinyllama-instruct-merged) using Direct Preference Optimization (DPO).
TinyLlama (base)
β
βββ Stage 1: Domain Pretraining (LoRA)
β [ThakrePranjal/pharma-tinyllama-domain-lora]
β
βββ Stage 1 Merged Model β used as base for Stage 2
β
βββ Stage 2: Instruction Fine-Tuning (LoRA / SFT)
β [ThakrePranjal/pharma-tinyllama-instruct-lora]
β
βββ Stage 2 Merged Model β used as base for Stage 3
β [ThakrePranjal/pharma-tinyllama-instruct-merged]
β
βββ Stage 3: DPO Preference Tuning (LoRA)
[THIS ADAPTER]
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
# Load Stage 2 merged model as base
base_model = AutoModelForCausalLM.from_pretrained(
"ThakrePranjal/pharma-tinyllama-instruct-merged"
)
# Attach Stage 3 DPO LoRA adapter
model = PeftModel.from_pretrained(base_model, "ThakrePranjal/pharma-tinyllama-dpo-lora")
tokenizer = AutoTokenizer.from_pretrained("ThakrePranjal/pharma-tinyllama-dpo-lora")
model.eval()
def generate(instruction, input_text="", max_new_tokens=150):
if input_text.strip():
prompt = (
f"### Instruction:\n{instruction}\n\n"
f"### Input:\n{input_text}\n\n"
f"### Response:\n"
)
else:
prompt = f"### Instruction:\n{instruction}\n\n### Response:\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id,
)
return tokenizer.decode(out[0], skip_special_tokens=True)
print(generate("Explain the primary mechanism of action of metformin."))
| Param | Value |
|---|---|
| Beta (KL penalty) | 0.1 |
| Epochs | 3 (max_steps=5) |
| Learning rate | 5e-5 |
| Batch size | 1 |
| Grad accum steps | 8 |
| Max seq length | 512 |
| Max prompt length | 256 |
| LoRA rank (r) | 16 |
| LoRA alpha | 32 |
ThakrePranjal/pharma-preference-dataset
Trained on a small pharma corpus. Not validated for clinical or production use. Intended for educational/research purposes only.