5 parámetros comunes de LLM explicados con ejemplos

Los modelos de lenguaje grande (LLM) ofrecen varios parámetros que le permiten ajustar su comportamiento y controlar cómo generan respuestas. Si un modelo no produce el resultado deseado, el problema suele radicar en cómo se configuran estos parámetros. En este tutorial, exploraremos algunos de los más utilizados (max_completion_tokens, temperatura, top_p, presencia_penalty y frecuencia_penalty) y comprenderemos cómo cada uno influye en la salida del modelo.

Instalando las dependencias

pip instalar openai pandas matplotlib

Cargando la clave API de OpenAI

importar sistema operativo desde getpass importar getpass os.environ[‘OPENAI_API_KEY’] = getpass(‘Ingrese la clave API de OpenAI: ‘)

Inicializando el modelo

desde openai importar OpenAI modelo=”gpt-4.1″ cliente = OpenAI()

Fichas máximas

Max Tokens es la cantidad máxima de tokens que el modelo puede generar durante una ejecución. El modelo intentará permanecer dentro de este límite en todos los turnos. Si excede el número especificado, la ejecución se detendrá y se marcará como incompleta.

Un valor más pequeño (como 16) limita el modelo a respuestas muy cortas, mientras que un valor más alto (como 80) le permite generar respuestas más detalladas y completas. Aumentar este parámetro le da al modelo más espacio para elaborar, explicar o formatear su salida de manera más natural.

Prompt = “¿Cuál es el queso francés más popular?” para fichas en [16, 30, 80]: print(f”\n— max_output_tokens = {tokens} —“) respuesta = client.chat.completions.create( modelo=modelo, mensajes=[
{“role”: “developer”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: prompt}
]max_completion_tokens=tokens ) print(respuesta.opciones[0].mensaje.contenido)

Temperatura

En los modelos de lenguaje grande (LLM), el parámetro de temperatura controla la diversidad y aleatoriedad de las salidas generadas. Los valores de temperatura más bajos hacen que el modelo sea más determinista y se centre en las respuestas más probables, ideal para tareas que requieren precisión y coherencia. Los valores más altos, por otro lado, introducen creatividad y variedad al permitir que el modelo explore opciones menos probables. Técnicamente, la temperatura escala las probabilidades de los tokens predichos en la función softmax: aumentarla aplana la distribución (resultados más diversos), mientras que disminuirla agudiza la distribución (resultados más predecibles).

En este código, solicitamos al LLM que dé 10 respuestas diferentes (n_choices = 10) para la misma pregunta: “¿Cuál es un lugar intrigante que vale la pena visitar?” — en una gama de valores de temperatura. Al hacer esto, podemos observar cómo la diversidad de respuestas cambia con la temperatura. Es probable que las temperaturas más bajas produzcan respuestas similares o repetidas, mientras que las temperaturas más altas mostrarán una distribución de lugares más amplia y variada.

inmediato = “¿Cuál es un lugar intrigante que vale la pena visitar? Da una respuesta de una sola palabra y piensa globalmente.” temperaturas = [0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.5]
n_choices = 10 resultados = {} para temperatura en temperaturas: respuesta = client.chat.completions.create( modelo=modelo, mensajes=[
{“role”: “system”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: prompt}
]temperatura=temp, n=n_choices ) # Recopilar las n respuestas en una lista de resultados[temp] = [response.choices[i].message.content.strip() for i in range(n_choices)]# Mostrar resultados para temperatura, respuestas en results.items(): print(f”\n— temperatura = {temp} —“) print(respuestas)

Como podemos ver, a medida que la temperatura aumenta a 0,6, las respuestas se vuelven más diversas, yendo más allá de la única respuesta repetida “Petra”. A una temperatura más alta de 1,5, la distribución cambia y podemos ver respuestas como las de Kioto y Machu Picchu también.

P superior

Top P (también conocido como muestreo de núcleos) es un parámetro que controla cuántos tokens considera el modelo en función de un umbral de probabilidad acumulativa. Ayuda al modelo a centrarse en los tokens más probables, lo que a menudo mejora la coherencia y la calidad de los resultados.

En la siguiente visualización, primero establecemos un valor de temperatura y luego aplicamos Top P = 0,5 (50%), lo que significa que solo se mantiene el 50% superior de la masa de probabilidad. Tenga en cuenta que cuando la temperatura = 0, la salida es determinista, por lo que Top P no tiene ningún efecto.

El proceso de generación funciona de la siguiente manera:

Aplique la temperatura para ajustar las probabilidades de las fichas. Utilice Top P para retener solo los tokens más probables que juntos representan el 50% de la masa de probabilidad total. Vuelva a normalizar las probabilidades restantes antes del muestreo.

Visualizaremos cómo cambia la distribución de probabilidad del token entre diferentes valores de temperatura para la pregunta:
“¿Cuál es un lugar intrigante que vale la pena visitar?”

inmediato = “¿Cuál es un lugar intrigante que vale la pena visitar? Da una respuesta de una sola palabra y piensa globalmente.” temperaturas = [0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.5]
n_choices = 10 results_ = {} para temperatura en temperaturas: respuesta = client.chat.completions.create( modelo=modelo, mensajes=[
{“role”: “system”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: prompt}
]temperatura=temp, n=n_choices, top_p=0.5 ) # Recopilar todas las n respuestas en una lista de resultados_[temp] = [response.choices[i].message.content.strip() for i in range(n_choices)]# Mostrar resultados para temperatura, respuestas en results_.items(): print(f”\n— temperatura = {temp} —“) print(respuestas)

Dado que Petra representó consistentemente más del 50% de la probabilidad de respuesta total, la aplicación de Top P = 0,5 filtra todas las demás opciones. Como resultado, el modelo solo selecciona “Petra” como resultado final en todos los casos.

Penalización de frecuencia

La penalización de frecuencia controla cuánto evita el modelo repetir las mismas palabras o frases en su salida.

Rango: -2 a 2

Predeterminado: 0

Cuando la penalización por frecuencia es mayor, el modelo es penalizado por usar palabras que ya ha usado antes. Esto le anima a elegir palabras nuevas y diferentes, haciendo que el texto sea más variado y menos repetitivo.

En términos simples: una penalización de mayor frecuencia = menos repetición y más creatividad.

Probaremos esto usando el mensaje:

“Enumera 10 títulos posibles para un libro de fantasía. Da solo los títulos y cada título en una nueva línea”.

inmediato = “Enumere 10 títulos posibles para un libro de fantasía. Introduzca sólo los títulos y cada título en una nueva línea.” frecuencia_penalizaciones = [-2.0, -1.0, 0.0, 0.5, 1.0, 1.5, 2.0]
resultados = {} para fp en frecuencia_penalidades: respuesta = cliente.chat.completions.create (modelo = modelo, mensajes =[
{“role”: “system”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: prompt}
]frecuencia_penalidad=fp, temperatura=0.2 ) texto = respuesta.opciones[0].message.elementos de contenido = [line.strip(“- “).strip() for line in text.split(“\n”) if line.strip()]
resultados[fp] = items # Mostrar resultados para fp, elementos en results.items(): print(f”\n— frecuencia_penalidad = {fp} —“) print(items)

Penalizaciones de baja frecuencia (-2 a 0): los títulos tienden a repetirse, con patrones familiares como “El juramento del tejedor de sombras”, “Corona de ascuas y hielo” y “El heredero del último dragón” que aparecen con frecuencia. Penalizaciones moderadas (0,5 a 1,5): Queda algo de repetición, pero el modelo empieza a generar títulos más variados y creativos. Penalización alta (2.0): Los primeros tres títulos siguen siendo los mismos, pero después de eso, el modelo produce nombres de libros diversos, únicos e imaginativos (por ejemplo, “Whisperwind Chronicles: Rise of the Phoenix Queen”, “Ashes Beneath the Willow Tree”).

Penalización de presencia

La penalización de presencia controla en qué medida el modelo evita repetir palabras o frases que ya han aparecido en el texto.

Rango: -2 a 2 Predeterminado: 0

Una penalización de presencia más alta anima al modelo a utilizar una variedad más amplia de palabras, lo que hace que el resultado sea más diverso y creativo.

A diferencia de la penalización por frecuencia, que se acumula con cada repetición, la penalización por presencia se aplica una vez a cualquier palabra que ya apareció, lo que reduce la posibilidad de que se repita en el resultado. Esto ayuda al modelo a producir texto con más variedad y originalidad.

inmediato = “Enumere 10 títulos posibles para un libro de fantasía. Introduzca sólo los títulos y cada título en una nueva línea.” presencia_penalizaciones = [-2.0, -1.0, 0.0, 0.5, 1.0, 1.5, 2.0]
resultados = {} para fp en frecuencia_penalidades: respuesta = cliente.chat.completions.create (modelo = modelo, mensajes =[
{“role”: “system”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: prompt}
]presencia_penalidad=fp, temperatura=0.2 ) texto = respuesta.opciones[0].message.elementos de contenido = [line.strip(“- “).strip() for line in text.split(“\n”) if line.strip()]
resultados[fp] = items # Mostrar resultados para fp, elementos en results.items(): print(f”\n—presencia_penalties = {fp} —“) print(items)

Penalización baja a moderada (-2,0 a 0,5): los títulos son algo variados, con cierta repetición de patrones de fantasía comunes como “El juramento del tejedor de sombras”, “El heredero del último dragón”, “Corona de ascuas y hielo”. Penalización media (1,0 a 1,5): los primeros títulos populares permanecen, mientras que los títulos posteriores muestran más creatividad y combinaciones únicas. Ejemplos: “Cenizas del Reino Caído”, “Secretos del Bosque Estelar”, “Hija de la Tormenta y la Piedra”. Penalización máxima (2.0): Los tres títulos principales siguen siendo los mismos, pero el resto se vuelve muy diverso e imaginativo. Ejemplos: “Moonfire and Thorn”, “Veil of Starlit Ashes”, “The Midnight Blade”.

Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Soy graduado en ingeniería civil (2022) de Jamia Millia Islamia, Nueva Delhi, y tengo un gran interés en la ciencia de datos, especialmente las redes neuronales y su aplicación en diversas áreas.

🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.