Views
No views yet
Qwen/Qwen2.5-1.5B-Instruct. Se estabilizó mediante cuantización en 4-bits (nf4) y se entrenó utilizando el formato de roles estandarizado ChatML para asegurar que la interacción sistema-usuario-asistente sea fluida y libre de alucinaciones.apply_chat_template). El usuario debe proveer las cantidades actuales de una receta y el nuevo número de personas. El modelo (actuando bajo el rol de system como un chef experto) devolverá la respuesta calculada y se detendrá inmediatamente usando el token de fin de secuencia (<|im_end|>).temperature=0.1) y apagando las penalizaciones de repetición (repetition_penalty=1.0) para asegurar la precisión matemática y evitar que los tokens especiales de detención se corrompan.1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5# 1. Cargar el modelo base Instruct y el Tokenizador
6modelo_id = "Qwen/Qwen2.5-1.5B-Instruct"
7adaptador_id = "TuUsuario/modelo-recetas-cocina" # <-- Cambia por tu usuario
8
9tokenizer = AutoTokenizer.from_pretrained(modelo_id)
10modelo_base = AutoModelForCausalLM.from_pretrained(
11 modelo_id,
12 load_in_4bit=True,
13 device_map="auto"
14)
15
16# 2. Cargar el adaptador entrenado y preparar para inferencia
17modelo = PeftModel.from_pretrained(modelo_base, adaptador_id)
18modelo.eval()
19modelo.config.use_cache = True
20
21# 3. Formatear la consulta usando ChatML
22mensajes = [
23 {"role": "system", "content": "Eres un chef experto en matemáticas. Responde con cálculos exactos."},
24 {"role": "user", "content": "Para hacer un pastel para 4 personas uso 200g de harina y 100g de mantequilla. ¿Cuánto necesito para 10 personas?"}
25]
26
27texto_chat = tokenizer.apply_chat_template(mensajes, tokenize=False, add_generation_prompt=True)
28inputs = tokenizer(texto_chat, return_tensors="pt").to("cuda")
29
30# 4. Generar la respuesta matemática
31with torch.no_grad():
32 outputs = modelo.generate(
33 **inputs,
34 max_new_tokens=100,
35 temperature=0.1,
36 do_sample=True,
37 pad_token_id=tokenizer.pad_token_id,
38 eos_token_id=tokenizer.eos_token_id
39 )
40
41# 5. Imprimir resultado
42respuesta_generada = outputs[0][inputs.input_ids.shape[1]:]
43print("IA:", tokenizer.decode(respuesta_generada, skip_special_tokens=True))
44
45Training Details
46Training Data
47El modelo fue entrenado con un dataset sintético en formato .jsonl estructurado con los roles de user y assistant. Los datos se centran exclusivamente en problemas de escalado (factores de multiplicación y división simple) aplicados a ingredientes de cocina.
48
49Training Procedure
50El entrenamiento se realizó bajo el framework trl usando un enfoque de Supervised Fine-Tuning (SFT). Para asegurar la estabilidad de los gradientes, se preparó el modelo base con prepare_model_for_kbit_training.
51
52Training Hyperparameters
53Training regime: QLoRA (Quantized Low-Rank Adaptation) en precisión de 4-bits (nf4) y cálculos en fp16.
54
55Target Modules: ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"] (Todas las capas conectadas para máxima estabilidad).
56
57LoRA Rank (r): 16
58
59LoRA Alpha: 32
60
61Learning rate: 2e-5
62
63Max steps: 100
64
65Batch size / Gradient Accumulation: 2 / 4
66
67Optimizer: AdamW
68
69Environmental Impact
70Hardware Type: 1x NVIDIA T4 Tensor Core GPU (16 GB VRAM)
71
72Hours used: < 1 hora
73
74Cloud Provider: Google Cloud (Google Colab)
75
76Technical Specifications
77Compute Infrastructure
78El entrenamiento se llevó a cabo utilizando el entorno de ejecución gratuito de Google Colab, superando las limitaciones de VRAM mediante técnicas avanzadas de cuantización.
79
80Software
81Python 3.x
82
83PyTorch
84
85Transformers
86
87PEFT (Parameter-Efficient Fine-Tuning)
88
89TRL (Transformer Reinforcement Learning)
90
91BitsAndBytes