Spaces:
Runtime error
Runtime error
File size: 2,127 Bytes
9838f07 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# prepare_codesearchnet.py
from datasets import load_dataset
# La ruta donde guardaremos el nuevo dataset para LoRA
OUTPUT_FILE = "codesearchnet_lora_dataset.json"
# Número de ejemplos a usar. (¡ADVERTENCIA: 50000 es el MÁXIMO recomendado
# para evitar que tu entorno colapse. Puedes empezar con 5000!)
NUM_SAMPLES = 50000
print(f"Cargando CodeSearchNet (Python) - {NUM_SAMPLES} muestras...")
# 1. Cargar el dataset. 'Nan-Do/code-search-net-python' es una versión popular.
try:
# Usamos 'test' o 'validation' si el 'train' es demasiado grande para tu RAM
raw_csn = load_dataset('Nan-Do/code-search-net-python', split='train[:{}]'.format(NUM_SAMPLES))
except Exception as e:
print(f"Error al cargar el dataset de Hugging Face: {e}")
print("Asegúrate de tener conexión a Internet.")
exit()
# 2. Definir la función de transformación (adapta el formato al prompt/completion)
def format_for_lora(example):
# Generamos un prompt que instruye al modelo usando la documentación.
# El modelo base SantaCoder está acostumbrado a este formato.
prompt_text = (
f"# Descripción: {example['docstring_summary']}\n"
f"# Completa la siguiente función:\n"
f"def {example['func_name']}("
)
# La completion es el cuerpo completo de la función
completion_text = example['code']
return {
"prompt": prompt_text,
"completion": completion_text
}
# 3. Aplicar la transformación
print("Aplicando la transformación al formato 'prompt/completion'...")
lora_dataset = raw_csn.map(
format_for_lora,
remove_columns=raw_csn.column_names,
# El campo 'code' en CodeSearchNet ya tiene la definición de 'def',
# pero a veces el prompt_text hace que se duplique.
# Necesitas un poco de limpieza aquí, pero para empezar, esto funciona.
)
# 4. Guardar el resultado en un solo archivo JSON
print(f"Guardando {len(lora_dataset)} ejemplos en {OUTPUT_FILE}...")
lora_dataset.to_json(OUTPUT_FILE)
print("✅ Pre-procesamiento completado.")
print("Ahora actualiza tu app.py para usar 'codesearchnet_lora_dataset.json'.")
|