Views
No views yet

1
2 ### LoRA
3
4 r = 64,
5 target_modules = ["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj"],
6 lora_alpha = 128,
7 lora_dropout = 0,
8 bias = "none",
9 use_gradient_checkpointing = True,
10 random_state = 42,
11 use_rslora = False,
12 loftq_config = None
13
14 ### Trainer
15
16 per_device_train_batch_size = 2,
17 gradient_accumulation_steps = 32,
18 warmup_steps = 10,
19 num_train_epochs = 5,
20 learning_rate = 2e-4,
21 fp16 = not torch.cuda.is_bf16_supported(),
22 bf16 = torch.cuda.is_bf16_supported(),
23 logging_steps = 1,
24 optim = "adamw_8bit",
25 weight_decay = 0.01,
26 lr_scheduler_type = "linear",
27 save_strategy="epoch",
28 seed = 42,
29 report_to="tensorboard"1
2major_version, minor_version = torch.cuda.get_device_capability()
3# Must install separately since Colab has torch 2.2.1, which breaks packages
4!pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
5if major_version >= 8:
6 # Use this for new GPUs like Ampere, Hopper GPUs (RTX 30xx, RTX 40xx, A100, H100, L40)
7 !pip install --no-deps packaging ninja einops flash-attn xformers trl peft accelerate bitsandbytes
8else:
9 # Use this for older GPUs (V100, Tesla T4, RTX 20xx)
10 !pip install --no-deps xformers trl peft accelerate bitsandbytes
11pass
12
13from unsloth import FastLanguageModel
14import torch
15max_seq_length = 512
16dtype = None
17load_in_4bit = True
18
19base_prompt = """Responde a preguntas de forma clara, amable, concisa y solamente en el lenguaje español, sobre el libro Ñande Ypykuéra.
20
21### Pregunta:
22{}
23
24### Respuesta:
25{}"""
26
27model, tokenizer = FastLanguageModel.from_pretrained(
28 model_name = "somosnlp/gua-a",
29 max_seq_length = max_seq_length,
30 dtype = dtype,
31 load_in_4bit = load_in_4bit,
32)
33
34FastLanguageModel.for_inference(model) # Enable native 2x faster inference
35
36pregunta = "Quien es gua'a?"
37
38inputs = tokenizer([ft_prompt.format(pregunta,"",)], return_tensors = "pt").to("cuda")
39
40outputs = model.generate(**inputs, max_new_tokens = 128, temperature = 0.1, repetition_penalty=1.15, pad_token_id=tokenizer.eos_token_id)
41
42tokenizer.batch_decode(outputs[0][inputs["input_ids"].shape[1]:].unsqueeze(0), skip_special_tokens=True)[0]
43eval_prompt_template = """###Descripción de la tarea: Se da una instrucción (puede incluir un Input en su interior), una consulta, una respuesta a evaluar, una respuesta de referencia que obtiene una puntuación de 5, y una rúbrica de puntuación que representa un criterio de evaluación.
1. Escribir un feedback detallado que evalúe la calidad de la respuesta basándose estrictamente en la rúbrica de puntuación dada, no evaluando en general.
2. Después de redactar el comentario, escriba una puntuación de 1, 2, 3, 4 ó 5. Debe remitirse a la rúbrica de puntuación.
3. El formato de salida debe ser el siguiente "Feedback: (escriba una retroalimentación para los criterios) [RESULT] (1 o 2 o 3 o 4 o 5)"
4. Por favor, no genere ninguna otra apertura, cierre y explicaciones.
5. Evalúe únicamente los puntos en común entre la respuesta generada y la respuesta de referencia. No evalúe cosas que están presentes en la respuesta de referencia pero no en la respuesta generada.
###La instrucción de evaluar: Tu tarea es evaluar la respuesta generada y la respuesta de referencia para la consulta: {query}
###Respuesta generada a evaluar: {generated_answer}
###Respuesta de referencia (Puntuación 5): {reference_answer}
###Rúbricas de puntuación:
Puntuación 1: Si la respuesta generada no tiene similitud con la respuesta de referencia.
Puntuación 2: Si la respuesta generada es similar según la respuesta de referencia, pero contiene múltiples errores significativos o omisiones.
Puntuación 3: Si la respuesta generada es similar según la respuesta de referencia, pero incluye errores menores o falta de detalles.
Puntuación 4: Si la respuesta generada es correcta que la respuesta de referencia, pero no es tan concisa.
Puntuación 5: Si la respuesta generada es es totalmente correcta según la respuesta de referencia.
###Feedback:"""