Views
No views yet
1import torch
2from peft import PeftModel, PeftConfig
3from transformers import AutoModelForCausalLM, AutoTokenizer
4peft_model_id = "InMedData/InMD-X-HEM"
5config = PeftConfig.from_pretrained(peft_model_id)
6model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_8bit=True, device_map='auto')
7tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
8# Load the Lora model
9model = PeftModel.from_pretrained(model, peft_model_id)
10pipeline = transformers.pipeline(
11 "text-generation",
12 model=model,
13 tokenizer = tokenizer,
14 device_map="auto" # if you have GPU
15)
16def inference(pipeline, Qustion,answer_only = False):
17 sequences = pipeline("Answer the next question in one sentence.\n"+
18 Qustion,
19 do_sample=True,
20 top_k=10,
21 top_p = 0.9,
22 temperature = 0.2,
23 num_return_sequences=1,
24 eos_token_id=tokenizer.eos_token_id,
25 max_length=500, # can increase the length of sequence
26 )
27
28 Answers = []
29 for seq in sequences:
30
31 Answer = seq['generated_text'].split(Qustion)[-1].replace("\n","")
32 Answers.append(Answer)
33 return Answers
34
35question = 'What is the association between long-term beta-blocker use after myocardial infarction (MI) and the risk of reinfarction and death?'
36answers = inference(pipeline, question)
37print(answers)| Parameter | PT | SFT |
|---|---|---|
| r | 8 | 8 |
| lora alpha | 32 | 32 |
| lora dropout | 0.05 | 0.05 |
| target | q, k, v, o,up, down, gate | q, k, v, o,up,down, gate |
| Parameter | PT | SFT |
|---|---|---|
| train epochs | 3 | 1 |
| per device train batch size | 1 | 1 |
| optimizer | adamw_hf | adamw_hf |
| evaluation strategy | no | no |
| learning_rate | 1e-4 | 1e-4 |