Andro0s commited on
Commit
7fc95fb
·
verified ·
1 Parent(s): 0b03e03

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -104
app.py DELETED
@@ -1,104 +0,0 @@
1
- import os
2
- import gradio as gr
3
- from huggingface_hub import login
4
- from datasets import load_dataset
5
- from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments, DataCollatorForLanguageModeling, pipeline
6
- from peft import get_peft_model, LoraConfig, TaskType, PeftModel
7
- import json
8
-
9
- # ============================================================
10
- # ⚙️ CONFIGURACIÓN GLOBAL
11
- # ============================================================
12
- # Modelo base para generación de código
13
- BASE_MODEL = "bigcode/santacoder"
14
- LORA_PATH = "./lora_output" # Directorio para guardar los adaptadores LoRA
15
-
16
- # Nombre del archivo donde se guardará el dataset procesado
17
- DATASET_FILE = "codesearchnet_lora_dataset.json"
18
- MAX_TOKEN_LENGTH = 256 # Longitud de secuencia uniforme
19
- # Usamos un número manejable (5000) para entornos limitados como un móvil/Spaces
20
- NUM_SAMPLES_TO_PROCESS = 5000
21
- DEFAULT_EPOCHS = 5 # <--- ¡ENTRENAMIENTO PROFUNDO!
22
-
23
- # Variables globales
24
- tokenizer = None
25
- lora_model = None
26
- tokenized_dataset = None
27
- lora_generator = None
28
-
29
- # ============================================================
30
- # 🚨 LÓGICA DE PRE-PROCESAMIENTO DE DATOS (INTEGRADA) 🚨
31
- # ============================================================
32
- def prepare_codesearchnet():
33
- """Descarga, procesa y guarda el dataset CodeSearchNet si no existe."""
34
- if os.path.exists(DATASET_FILE):
35
- print(f"✅ Dataset '{DATASET_FILE}' ya existe. Cargando directamente.")
36
- return
37
-
38
- print(f"🔄 Dataset no encontrado. Iniciando descarga y pre-procesamiento de CodeSearchNet ({NUM_SAMPLES_TO_PROCESS} muestras)...")
39
-
40
- try:
41
- raw_csn = load_dataset('Nan-Do/code-search-net-python', split=f'train[:{NUM_SAMPLES_TO_PROCESS}]')
42
-
43
- def format_for_lora(example):
44
- prompt_text = (
45
- f"# Descripción: {example['docstring_summary']}\n"
46
- f"# Completa la siguiente función:\n"
47
- f"def {example['func_name']}("
48
- )
49
- completion_text = example['code']
50
-
51
- return {
52
- "prompt": prompt_text,
53
- "completion": completion_text
54
- }
55
-
56
- lora_dataset = raw_csn.map(
57
- format_for_lora,
58
- batched=False,
59
- remove_columns=raw_csn["train"].column_names,
60
- )
61
-
62
- lora_dataset.to_json(DATASET_FILE)
63
- print(f"✅ Pre-procesamiento completado. {NUM_SAMPLES_TO_PROCESS} ejemplos guardados en '{DATASET_FILE}'.")
64
-
65
- except Exception as e:
66
- print(f"❌ Error CRÍTICO al descargar/procesar CodeSearchNet. Error: {e}")
67
- minimal_dataset = [{"prompt": "# Error de carga. Intenta de nuevo.", "completion": "pass\n"}] * 10
68
- with open(DATASET_FILE, 'w') as f:
69
- json.dump(minimal_dataset, f)
70
-
71
- # ============================================================
72
- # 🔐 AUTENTICACIÓN Y PRE-CARGA DE RECURSOS (SINGLETON)
73
- # ============================================================
74
-
75
- def setup_resources():
76
- """Carga y configura todos los recursos (modelo, tokenizer, dataset) una sola vez."""
77
- global tokenizer, lora_model, tokenized_dataset
78
-
79
- # 🛑 1. PREPARA EL DATASET DE CODESEARCHNET ANTES DE INTENTAR CARGARLO
80
- prepare_codesearchnet()
81
-
82
- # 2. Autenticación con Hugging Face
83
- hf_token = os.environ.get("HF_TOKEN")
84
- if hf_token:
85
- login(token=hf_token)
86
-
87
- # 3. Carga del Tokenizer y Modelo Base
88
- print("\n🔄 Cargando modelo y tokenizer una sola vez...")
89
- tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
90
- base_model = AutoModelForCausalLM.from_pretrained(BASE_MODEL, device_map="auto")
91
-
92
- if tokenizer.pad_token is None:
93
- tokenizer.pad_token = tokenizer.eos_token
94
-
95
- # 4. Configuración y Aplicación LoRA (PEFT)
96
- peft_config = LoraConfig(
97
- task_type=TaskType.CAUSAL_LM,
98
- r=8,
99
- lora_alpha=32,
100
- lora_dropout=0.1,
101
- target_modules=["c_proj", "c_attn"],
102
- )
103
- lora_model = get_peft_model(base_model, peft_config)
104
- print(f"✅ Modelo LoRA preparado. Parámetr