Views
No views yet
1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
3
4model_id = "nie3e/Qra-7b-dolly-instruction-0.1"
5device = "cuda" if torch.cuda.is_available() else "cpu"
6
7model = AutoModelForCausalLM.from_pretrained(
8 model_id,
9 torch_dtype=torch.bfloat16,
10)
11tokenizer = AutoTokenizer.from_pretrained(model_id)
12pipe = pipeline(
13 "text-generation", model=model, tokenizer=tokenizer, device=device
14)
15
16def get_answer(system_prompt: str, user_prompt: str) -> str:
17 input_msg = [
18 {"role": "system", "content": system_prompt},
19 {"role": "user", "content": user_prompt}
20 ]
21 prompt = pipe.tokenizer.apply_chat_template(
22 input_msg, tokenize=False,
23 add_generation_prompt=True
24 )
25 outputs = pipe(
26 prompt, max_new_tokens=512, do_sample=False, temperature=0.1, top_k=50,
27 top_p=0.1, eos_token_id=pipe.tokenizer.eos_token_id,
28 pad_token_id=pipe.tokenizer.pad_token_id
29 )
30 return outputs[0]['generated_text'][len(prompt):].strip()
31
32print(
33 get_answer(
34 system_prompt="Jesteś przyjaznym chatbotem",
35 user_prompt="Napisz czym jest dokument architectural decision record."
36 )
37)1system_message = """Jesteś przyjaznym chatbotem"""
2
3def create_conversation(sample) -> dict:
4 strip_characters = "\"'"
5 return {
6 "messages": [
7 {"role": "system", "content": system_message},
8 {"role": "user",
9 "content": f"{sample['instruction'].strip(strip_characters)} "
10 f"{sample['input'].strip(strip_characters)}"},
11 {"role": "assistant",
12 "content": f"{sample['output'].strip(strip_characters)}"}
13 ]
14 }device_map="auto"1peft_config = LoraConfig(
2 lora_alpha=128,
3 lora_dropout=0.05,
4 r=256,
5 bias="none",
6 target_modules="all-linear",
7 task_type="CAUSAL_LM"
8)1args = TrainingArguments(
2 output_dir="Qra-7b-dolly-instruction-0.1",
3 num_train_epochs=3,
4 per_device_train_batch_size=1,
5 gradient_accumulation_steps=6,
6 gradient_checkpointing=True,
7 optim="adamw_torch_fused",
8 logging_steps=10,
9 save_strategy="epoch",
10 learning_rate=2e-4,
11 bf16=True,
12 tf32=True,
13 max_grad_norm=0.3,
14 warmup_ratio=0.03,
15 lr_scheduler_type="constant",
16 push_to_hub=False,
17 report_to=["tensorboard"],
18)