Views
No views yet
1lora r=64
2lora_alpha=16
3lora_dropout=0.05
4
5learning_rate = 2e-4
6lr_scheduler = "constant"
7optimizer = "paged_adamw_32bit"
8max_seq_length = 20481import torch
2from transformers import AutoTokenizer, AutoConfig, AutoModelForCausalLM, BitsAndBytesConfig, LlamaTokenizer
3from peft import PeftModel, PeftConfig
4
5model_name = "robinsyihab/Sidrap-7B-v2"
6adapter_name = "Willy030125/finetune-indoMMLU-Sidrap-7B-v1"
7
8bnb_config = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_use_double_quant=True,
11 bnb_4bit_quant_type="nf4",
12 bnb_4bit_compute_dtype=torch.bfloat16
13)
14
15model = AutoModelForCausalLM.from_pretrained(
16 model_name,
17 quantization_config=bnb_config,
18 device_map="auto",
19 trust_remote_code=True
20)
21
22model = PeftModel.from_pretrained(model, adapter_name)
23tokenizer = LlamaTokenizer.from_pretrained(model_name)
24
25def generate_response(question: str) -> str:
26 chat = [
27 {"role": "system", "content": "Anda adalah asisten yang suka membantu, penuh hormat, dan jujur. Selalu jawab semaksimal mungkin, sambil tetap aman. Jawaban Anda tidak boleh berisi konten berbahaya, tidak etis, rasis, seksis, beracun, atau ilegal. Harap pastikan bahwa tanggapan Anda tidak memihak secara sosial dan bersifat positif.\n\
28Jika sebuah pertanyaan tidak masuk akal, atau tidak koheren secara faktual, jelaskan alasannya daripada menjawab sesuatu yang tidak benar. Jika Anda tidak mengetahui jawaban atas sebuah pertanyaan, mohon jangan membagikan informasi palsu."},
29 {"role": "user", "content": question}
30 ]
31
32 prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
33 inputs = tokenizer(prompt, return_tensors="pt", return_attention_mask=True)
34
35 with torch.no_grad():
36 outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"),
37 attention_mask=inputs.attention_mask,
38 eos_token_id=tokenizer.eos_token_id,
39 pad_token_id=tokenizer.eos_token_id,
40 max_new_tokens=1024)
41 response = tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0]
42
43 return response[response.find("[/INST]\n") + len("[/INST]\n"):]
44
45prompt = """Hewan pemakan tumbuhan dinamakan ...
46A. Omnivora
47B. Karnivora
48C. Pengurai
49D. Herbivora"""
50
51print(generate_response(prompt))