Mar 13, 2026
Faradilla A.
16min Leer
El ajuste de prompts es una técnica para mejorar el desempeño de los modelos de IA al optimizar vectores entrenables llamados soft prompts. En lugar de reentrenar y modificar todo el modelo, tú solo trabajas con estos vectores, lo que hace que el modelo sea más eficiente y logre un mejor rendimiento para tus necesidades específicas.
El proceso sigue cinco pasos sencillos: creas vectores entrenables, los pruebas con el modelo y mides su rendimiento. Luego, el sistema realiza mejoras y actualiza los prompts automáticamente mediante ciclos repetidos hasta que obtienes resultados cada vez mejores de forma constante.
En esta guía vamos a recorrer estos pasos en detalle, profundizar en cómo funciona realmente el ajuste de prompts, explorar aplicaciones reales en distintas industrias, compartir estrategias comprobadas para obtener los mejores resultados y comparar este método con las técnicas estándar de ajuste fino.
El prompt tuning significa que tú personalizas modelos de IA al entrenar un conjunto pequeño de vectores especiales que guían cómo responde el modelo, en lugar de modificar el modelo en sí. Esta técnica se basa en soft prompting para adaptarse automáticamente y ofrecer mejores resultados en tus tareas específicas.
El soft prompting es un proceso para mejorar el rendimiento que usa vectores numéricos entrenables en lugar de palabras comunes para comunicarse con modelos de IA. Mientras la ingeniería de prompts tradicional consiste en redactar manualmente la frase perfecta, el soft prompting permite que el sistema descubra su propio enfoque, lo que suele superar cualquier cosa que una persona pueda escribir.
Así funciona: cuando escribes “Por favor, resume este texto de forma profesional”, estás usando instrucciones estrictas. Estas son palabras reales que la IA lee, igual que tú las lees.
El soft prompting adopta un enfoque distinto al usar patrones numéricos que transmiten ideas que la IA entiende sin estar ligado a palabras específicas que tú reconocerías. El sistema desarrolla su propio método de comunicación que funciona mejor que el lenguaje humano para muchas tareas.
Aquí es donde entra en juego el ajuste de soft prompts. A partir de esta base, entrena estos patrones numéricos con tus tareas específicas. El sistema aprende qué combinaciones dan de forma constante los resultados que buscas y crea un enfoque de comunicación personalizado perfectamente adaptado a tus necesidades.
Una vez que hayas entrenado estos soft prompts, funcionan en tareas similares y te dan un mejor desempeño sin tener que empezar desde cero cada vez.
El prompt tuning consiste en entrenar vectores específicos que les enseñan a los modelos de IA a rendir mejor en tus tareas específicas. El proceso sigue un ciclo sencillo: empiezas con vectores básicos de marcador de posición, los pasas por tu modelo, mides qué tan bien funcionan y luego usas entrenamiento automatizado para mejorar su rendimiento.
En lugar de ajustar manualmente los prompts mediante prueba y error, este enfoque utiliza aprendizaje automático para descubrir de forma automática las estrategias más efectivas para comunicarte con tu sistema de IA.
Acompáñanos a recorrer cada paso para ver cómo este enfoque sistemático convierte prompts básicos en herramientas poderosas de comunicación con IA.
El primer paso consiste en crear un conjunto de vectores de embedding entrenables que servirán como punto de partida para tu optimización.
Estos vectores comienzan como valores numéricos aleatorios. Piensa en ellos como marcadores de posición en blanco que el sistema aprenderá gradualmente a completar con los patrones de indicaciones más efectivos para tu tarea específica.
Durante la inicialización, tú decides cuántos vectores de embedding usar (normalmente entre 20 y 100 tokens), mientras el sistema asigna sus valores iniciales automáticamente.
El número de vectores depende de la complejidad de tu tarea. Las tareas simples como la clasificación pueden necesitar solo entre 20 y 50 vectores, mientras que la generación de texto compleja podría requerir entre 50 y 100 o más.
Así funciona en la práctica. Supongamos que quieres entrenar modelos de lenguaje grandes para escribir mejores descripciones de productos para un sitio de comercio electrónico.
Usaremos las bibliotecas transformers y peft en este ejemplo, junto con PyTorch como nuestro framework de aprendizaje automático. Si estás siguiendo esto en Google Colab, solo necesitas ejecutar !pip install peft porque las otras librerías ya están disponibles.
Este es el código que debes ingresar para inicializar los vectores de embedding:
python
from peft import PromptTuningConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer
# Step 1: Configure your prompt tuning setup
config = PromptTuningConfig(
num_virtual_tokens=50, # You decide how many tokens
task_type=”CAUSAL_LM”, # Specify your task type
prompt_tuning_init=”RANDOM” # Start with random values
)
# Step 2: Load your model and tokenizer
model = AutoModelForCausalLM.from_pretrained(“gpt2”) # Fixed: Use AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(“gpt2”)
# Add padding token if it doesn’t exist
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
model = get_peft_model(model, config) # Add prompt tuning capabilityEsta configuración crea 50 vectores aleatorios para la generación de texto usando GPT-2 como modelo base. La función get_peft_model() añade la capacidad de prompt tuning sin cambiar los parámetros del modelo original.
En este punto, tus vectores de embedding siguen siendo aleatorios y no mejorarán el rendimiento de tu modelo, pero eso está a punto de cambiar a medida que avancemos en el proceso de entrenamiento.
Una vez que se inicializan tus vectores de embedding, el siguiente paso es realizar una propagación hacia adelante. Aquí es donde el modelo combina tus vectores con tu texto de entrada y genera una respuesta.
Aunque los vectores no son legibles para las personas, influyen en cómo el modelo interpreta y responde a tu contenido.
Veamos esto en acción con nuestro ejemplo de comercio electrónico. Aquí tienes el código para ejecutar la propagación hacia adelante:
python
import torch
from peft import PromptTuningConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer
# Assuming you have the model setup from the previous step
# Your product information
product_info = “Wireless Bluetooth headphones, 30-hour battery life, noise cancellation”
# Generate description using your prompt-tuned model
inputs = tokenizer(product_info, return_tensors=”pt”)
# Move inputs to same device as model (important!)
if torch.cuda.is_available():
inputs = {k: v.to(model.device) for k, v in inputs.items()}
# Generate with better parameters
with torch.no_grad(): # Save memory during inference
outputs = model.generate(
**inputs,
max_length=100,
do_sample=True, # Add randomness
temperature=0.7, # Control randomness
pad_token_id=tokenizer.eos_token_id # Avoid warnings
)
description = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(description)En segundo plano, el modelo combina automáticamente tus 50 vectores de embedding con tu texto de entrada antes de procesarlo todo junto.
Los vectores aleatorios ya están influyendo en el estilo y la estructura del modelo, pero aún no están optimizados, así que no esperes grandes resultados. Esto es normal. Si te aparecen errores, asegúrate de haber ejecutado primero el código del paso 1.
El siguiente paso es medir qué tan bueno es el resultado en comparación con lo que quieres, y ahí es donde entra la etapa de evaluación.
Después de que el modelo genere su respuesta, necesitas medir qué tan bien se desempeñó en comparación con lo que querías. Las funciones de pérdida calculan la diferencia entre la salida del modelo y tus resultados objetivo, como si le pusieras una nota a la IA. Para tareas de generación de texto como esta, usaremos la pérdida de entropía cruzada, que es la opción estándar para los modelos de lenguaje.
La función de pérdida asigna un puntaje numérico que representa qué tan preciso es el resultado. Los puntajes más bajos indican un mejor desempeño. Tus comentarios son clave para mejorar tus vectores de embedding.
Vamos a configurar datos de evaluación para nuestro ejemplo de descripción de producto. Vas a necesitar ejemplos que le muestren al modelo cómo deben ser las buenas descripciones:
python
import torch
from torch.utils.data import Dataset
from transformers import TrainingArguments, Trainer, DataCollatorForLanguageModeling
# Create your training examples (input-output pairs)
training_examples = [
{
“input_text”: “Wireless Bluetooth headphones, 30-hour battery life, noise cancellation”,
“target_text”: “Enjoy crystal-clear sound with these wireless Bluetooth headphones. With 30-hour battery life and noise cancellation, they’re perfect for daily use and travel.”
},
{
“input_text”: “Smart fitness tracker, heart rate monitor, waterproof”,
“target_text”: “Track your fitness goals with this smart tracker featuring heart rate monitoring and waterproof design for any workout.”
},
]
class PromptDataset(Dataset):
def __init__(self, examples, tokenizer, max_length=128):
self.examples = examples
self.tokenizer = tokenizer
self.max_length = max_length
def __len__(self):
return len(self.examples)
def __getitem__(self, idx):
example = self.examples[idx]
# Combine input and target for causal LM training
full_text = example[“input_text”] + “ “ + example[“target_text”]
# Tokenize properly
tokenized = self.tokenizer(
full_text,
truncation=True,
padding=”max_length”,
max_length=self.max_length,
return_tensors=”pt”
)
# For causal LM, labels are the same as input_ids
return {
“input_ids”: tokenized[“input_ids”].squeeze(),
“attention_mask”: tokenized[“attention_mask”].squeeze(),
“labels”: tokenized[“input_ids”].squeeze()
}
# Create your dataset
dataset = PromptDataset(training_examples, tokenizer)
# Configure data collator (this was missing!)
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer,
mlm=False, # We’re not doing masked language modeling
)
# Configure your training setup
training_args = TrainingArguments(
output_dir=”./prompt_tuning_results”,
num_train_epochs=5,
per_device_train_batch_size=4,
learning_rate=0.01,
logging_steps=10,
save_steps=100,
logging_dir=”./logs”,
remove_unused_columns=False,
)
# Set up the trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset,
data_collator=data_collator,
)La primera parte de este código crea pares de texto de entrada (características del producto) y texto objetivo (las descripciones ideales que quieres). El sistema usa estos ejemplos para aprender cómo debe ser un buen resultado para tu caso de uso.
Luego, la configuración le indica al sistema cuántas veces revisar tus ejemplos, cuántos procesar a la vez y con qué intensidad aplicar cambios.
El framework calcula la pérdida de forma automática y muestra el progreso con valores de pérdida que van disminuyendo. Cuando completes esta configuración, ya puedes comenzar el proceso de entrenamiento propiamente dicho, donde se realiza la optimización.
Ahora es momento de optimizar tus vectores de embeddings con el valor de la pérdida.
Este paso emplea dos técnicas matemáticas clave: la retropropagación identifica qué vectores mejoraron o perjudicaron el rendimiento, y el descenso de gradiente determina la mejor manera de ajustar esos vectores para mejorar el rendimiento.
En lugar de cambiar valores al azar, el sistema calcula la dirección óptima para cada ajuste. Esta precisión matemática hace que el ajuste de prompts sea mucho más eficiente que la prueba y error.
Así puedes comenzar el proceso de entrenamiento en el que ocurre esta optimización:
python print(“Starting prompt tuning training”) trainer.train()
Durante el entrenamiento, verás un progreso parecido a esto, con valores de pérdida que disminuyen:
# Epoch 1/5: [██████████] 100% - loss: 2.45 # Epoch 2/5: [██████████] 100% - loss: 1.89 # Epoch 3/5: [██████████] 100% - loss: 1.34 # Epoch 4/5: [██████████] 100% - loss: 0.95 # Epoch 5/5: [██████████] 100% - loss: 0.73
El sistema hace un seguimiento automático de cómo cada vector contribuye a la pérdida, realiza ajustes precisos y muestra el progreso mediante la disminución de los valores de pérdida. Los valores más bajos indican que tus vectores de embeddings están aprendiendo a generar mejores descripciones.
El entrenamiento se detiene automáticamente después de que completes todas las épocas o cuando la pérdida deja de mejorar de forma significativa. El proceso puede tardar desde minutos hasta horas, según el tamaño de tus datos. Cuando finalice el entrenamiento, verás que el cursor vuelve y los vectores optimizados se guardan automáticamente en tu directorio de salida.
Lo mejor es que no necesitas entender las matemáticas complejas: solo inicias el proceso de entrenamiento y los algoritmos se encargan de toda la optimización de forma automática.
El paso final es probar tus vectores de embedding optimizados. Durante el entrenamiento, el sistema ejecutó automáticamente cientos de iteraciones en segundo plano, y en cada ronda hizo pequeñas mejoras que viste reflejadas en la disminución de los valores de la pérdida.
Ahora probemos cómo evolucionaron tus vectores de embedding durante el entrenamiento. Agrega este código para probar tu modelo recién optimizado:
python
# Test your optimized prompt-tuned model
test_products = [
“Wireless earbuds, 8-hour battery, touch controls”,
“Gaming laptop, RTX graphics, 144Hz display”,
“Smart watch, fitness tracking, waterproof design”
]
print(“Testing optimized embedding vectors:”)
model.eval() # Set to inference mode (not pt_model)
for product in test_products:
inputs = tokenizer(product, return_tensors=”pt”)
# Move inputs to same device as model
if torch.cuda.is_available():
inputs = {k: v.to(model.device) for k, v in inputs.items()}
# Generate with corrected parameters
with torch.no_grad(): # Save memory during inference
outputs = model.generate(
**inputs,
max_new_tokens=100, # Fixed parameter name
do_sample=True,
top_p=0.95,
pad_token_id=tokenizer.eos_token_id, # Avoid warnings
temperature=0.7 # Add for better control
)
description = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f”nProduct: {product}”)
print(f”Generated: {description}”)Deberías notar mejoras significativas en comparación con el Paso 2:
Calidad mejorada: ahora las descripciones coinciden de forma constante con tu estilo y tono deseados, en lugar de los resultados aleatorios de antes.
Rendimiento constante: los mismos vectores de embedding optimizados funcionan en diferentes tipos de producto, lo que te da un sistema reutilizable.
Progreso claro: compara estos resultados con el paso 2 para ver cómo el entrenamiento transformó vectores aleatorios en resultados afinados.
Durante el entrenamiento, tus vectores de embedding pasaron de tener valores de pérdida altos con resultados deficientes a valores de pérdida bajos y una calidad constante alineada con tus objetivos. Los números exactos varían según la tarea, pero siempre verás este patrón de pérdida decreciente que indica una mejora.
¿Y esos números aleatorios del inicio del proceso? Ahora se han convertido en una herramienta útil que hace que tu IA haga exactamente lo que quieres.
El ajuste de prompts está ayudando a empresas de distintos sectores a personalizar la IA para sus necesidades específicas sin tener que reconstruir modelos desde cero.
Las aplicaciones son sorprendentemente diversas:
Para lograr excelentes resultados con el ajuste de prompts, se trata de seguir algunas prácticas clave que pueden ahorrarte tiempo y evitar errores comunes:
Aunque el ajuste mediante indicaciones es más accesible que el ajuste fino tradicional, trae desafíos de los que debes estar al tanto:
El ajuste de prompts agrega vectores entrenables a tu entrada que guían el comportamiento del modelo sin cambiar el modelo original. Estos vectores aprenden la manera óptima de comunicarse con la IA para tu tarea específica.
El ajuste fino modifica el modelo al volver a entrenarlo con tus datos específicos. Este proceso actualiza millones de parámetros en todo el modelo y crea una versión especializada adaptada a tu caso de uso en particular.
Ambos enfoques personalizan modelos de IA para necesidades específicas, pero funcionan de maneras fundamentalmente distintas. El fine-tuning es como volver a entrenar la IA, mientras que el prompt tuning se parece más a aprender la forma perfecta de comunicarte con ella.
Aquí tienes algunas diferencias clave:
Para la mayoría de los usos prácticos, el ajuste de prompts ofrece el mejor equilibrio entre personalización y eficiencia, sin la complejidad ni las exigencias de recursos del ajuste fino completo. Para una comparación más detallada de los casos de uso, consulta nuestra guía completa sobre prompt tuning vs. fine-tuning.
El prefix tuning funciona agregando parámetros entrenables directamente a las capas de atención del modelo en lugar de agregarlos a tu texto de entrada. Estos parámetros aprendidos influyen en cómo el modelo procesa la información en cada capa y, en esencia, crean indicaciones que actúan desde dentro del propio modelo.
Ambas técnicas personalizan el comportamiento del modelo sin volver a entrenarlo por completo, pero funcionan en puntos distintos. El prompt tuning agrega vectores a tu texto de entrada, mientras que el prefix tuning realiza cambios en el procesamiento interno del modelo.
Estas son algunas diferencias clave:
Para la mayoría de las aplicaciones prácticas, el ajuste de prompts ofrece un buen equilibrio entre eficacia y simplicidad. Considera usar prefix tuning si estás trabajando en tareas complejas y tienes los conocimientos técnicos para implementarlo correctamente.
La ingeniería de prompts consiste en escribir y mejorar indicaciones de texto para obtener mejores resultados de los modelos de IA. Es el arte de crear instrucciones y ejemplos claros que ayudan al modelo a entender exactamente lo que quieres.
El ajuste fino crea una versión personalizada del modelo al volver a entrenarlo con tu conjunto de datos específico. Este enfoque ajusta millones de parámetros en toda la arquitectura del modelo y produce un sistema especializado adaptado a tu tarea en particular.
Ambos enfoques buscan mejorar el rendimiento de la IA en tareas específicas, pero funcionan de maneras completamente diferentes. Las mejores prácticas para crear prompts se apoyan en la creatividad humana y la experimentación con prompts de texto, mientras que el ajuste fino usa aprendizaje automático para volver a entrenar de forma sistemática todo el modelo.
Estas son algunas diferencias clave:
Para experimentos rápidos o tareas puntuales, la ingeniería de prompts suele ser la opción más rápida. Si tus aplicaciones requieren el máximo rendimiento y cuentas con recursos considerables, el ajuste fino ofrece los resultados más especializados.
El ajuste de prompts funciona mejor con modelos de lenguaje basados en transformadores como GPT, BERT, T5 y arquitecturas similares que procesan texto. Estos modelos están diseñados para que el ajuste de prompts sea efectivo, lo que explica por qué la técnica se ha vuelto tan popular en las aplicaciones de IA basadas en texto.
Aun así, no es una solución válida para todos los casos. Las redes neuronales antiguas, los modelos centrados en imágenes o los sistemas especializados de procesamiento de audio por lo general no pueden usar el prompt tuning de la misma manera. Sin embargo, como los modelos transformadores impulsan hoy en día la mayoría de las aplicaciones populares de IA, esta limitación no afecta a muchos casos de uso reales.
Aquí es donde el ajuste de prompts realmente brilla:
La creciente popularidad del ajuste de prompts refleja lo que está pasando en todo el mundo de la IA. Las estadísticas recientes sobre IA muestran que las organizaciones buscan de forma activa maneras innovadoras de adaptar los modelos de IA a sus necesidades específicas, y que métodos eficientes como el ajuste de prompts se están convirtiendo en herramientas esenciales para implementar la IA en la práctica.
Para la mayoría de las organizaciones, el ajuste de prompts ofrece una forma accesible de personalizar modelos de IA sin la complejidad de reentrenar los modelos por completo. Y lo más emocionante es que apenas estamos empezando a explorar lo que es posible.
A medida que los modelos se vuelvan más sofisticados y evolucionen las técnicas de prompt tuning, es probable que veamos surgir aplicaciones aún más creativas.
All of the tutorial content on this website is subject to Hostinger's rigorous editorial standards and values.