Menu iconMenu icon
Aprendizaje Profundo Generativo Edición Actualizada

Capítulo 8: Proyecto: Generación de Texto con Modelos Autoregresivos

8.3 Generación de Texto con el Modelo Ajustado

En esta sección, nos enfocaremos en generar texto utilizando el modelo GPT-2 ajustado. La generación de texto implica usar el modelo entrenado para predecir las siguientes palabras en una secuencia, creando texto coherente y contextualmente relevante basado en un prompt dado. Exploraremos cómo generar texto con varios parámetros y evaluaremos la calidad del texto generado.

8.3.1 Generación de Texto con un Prompt

El uso principal de nuestro modelo GPT-2 ajustado es generar texto basado en un prompt inicial. Esto implica proporcionar al modelo una secuencia inicial de palabras y dejar que prediga las palabras subsecuentes para completar el texto.

Ejemplo: Generación de Texto con un Prompt

# Define the prompt
prompt = "In the heart of the city, there was a secret garden where"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate text
output = model.generate(input_ids, max_length=100, num_return_sequences=1)

# Decode the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Este código de ejemplo es un script simple que utiliza un modelo de lenguaje preentrenado para generar texto basado en un prompt dado. El prompt, "En el corazón de la ciudad, había un jardín secreto donde", se tokeniza (se convierte en un formato que el modelo puede entender) y luego se pasa al modelo. El modelo luego genera una secuencia de palabras que continúa el prompt, hasta una longitud máxima de 100 palabras. El texto generado se decodifica nuevamente a un formato legible para los humanos y se imprime en la consola.

8.3.2 Ajuste de los Parámetros de Generación

La generación de texto puede ser influenciada por varios parámetros que controlan la calidad, diversidad y longitud del texto generado. Los parámetros clave incluyen:

  • Max Length: El número máximo de tokens a generar.
  • Temperature: Controla la aleatoriedad de las predicciones al escalar los logits antes de aplicar softmax. Valores más bajos (por ejemplo, 0.7) hacen que la salida sea más determinista, mientras que valores más altos (por ejemplo, 1.0) aumentan la diversidad.
  • Top-k Sampling: Limita el grupo de muestreo a los k tokens siguientes más probables.
  • Top-p (Nucleus) Sampling: Limita el grupo de muestreo al conjunto más pequeño de tokens con una probabilidad acumulada por encima de un umbral (por ejemplo, 0.9).

Ejemplo: Ajuste de los Parámetros de Generación

# Generate text with different parameters
output = model.generate(
    input_ids,
    max_length=150,
    num_return_sequences=1,
    temperature=0.7,
    top_k=50,
    top_p=0.9
)

# Decode and print the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

La función 'model.generate' se llama con varios parámetros que influyen en la salida: 'input_ids' son la entrada para el modelo, 'max_length' es la longitud máxima del texto generado, 'num_return_sequences' es el número de secuencias generadas a devolver, 'temperature' afecta la aleatoriedad en la salida (valores más bajos significan más determinista), 'top_k' limita el número de opciones con la probabilidad más alta que el modelo puede elegir, y 'top_p' implementa el muestreo nucleus, donde el modelo solo selecciona el conjunto más pequeño posible de palabras cuya probabilidad acumulada excede el valor especificado. La salida generada se decodifica y se imprime.

8.3.3 Generación de Múltiples Variaciones

Una de las ventajas de usar un modelo generativo como GPT-2 es la capacidad de generar múltiples variaciones de texto basadas en el mismo prompt. Esto puede ser útil para tareas que requieren salidas creativas, como la escritura de historias, la generación de diálogos y la creación de contenido.

Ejemplo: Generación de Múltiples Variaciones

# Define the prompt
prompt = "The mysterious cave was hidden behind the waterfall,"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate multiple variations of text
outputs = model.generate(input_ids, max_length=100, num_return_sequences=3, temperature=0.7)

# Decode and print each generated variation
for i, output in enumerate(outputs):
    generated_text = tokenizer.decode(output, skip_special_tokens=True)
    print(f"Variation {i+1}:\\n{generated_text}\\n")

Este código en Python utiliza un modelo y un tokenizador preentrenados para generar texto. La entrada para el modelo es un prompt, "La cueva misteriosa estaba escondida detrás de la cascada,". El modelo luego genera tres continuaciones diferentes de este prompt, cada una con una longitud máxima de 100 tokens. El parámetro 'temperature' controla la aleatoriedad de la salida; un valor más bajo hace que la salida sea más determinista, mientras que un valor más alto la hace más aleatoria. El texto generado se decodifica (se convierte de IDs de tokens a palabras) y se imprime.

8.3.4 Manejo de la Generación de Texto de Larga Duración

Para tareas que requieren generar textos más largos, como artículos o informes, es importante gestionar la capacidad del modelo para mantener la coherencia y el contexto en secuencias más largas. Esto se puede lograr generando texto en fragmentos y alimentando el texto generado de nuevo en el modelo como un nuevo prompt.

Ejemplo: Generación de Texto de Larga Duración

# Define the initial prompt
prompt = "In the beginning, the universe was a vast expanse of nothingness, until"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Initialize the generated text
generated_text = prompt

# Generate text in chunks
for _ in range(5):  # Generate 5 chunks of text
    output = model.generate(input_ids, max_length=100, num_return_sequences=1, temperature=0.7)
    chunk = tokenizer.decode(output[0], skip_special_tokens=True)
    generated_text += chunk
    input_ids = tokenizer.encode(chunk, return_tensors='pt')

print(generated_text)

El prompt inicial ("Al principio, el universo...") es codificado en tokens por el tokenizador, y luego estos tokens se pasan al modelo. El modelo genera nuevos tokens que representan un fragmento de texto. Este fragmento de texto se decodifica de nuevo en texto legible para humanos y se agrega al texto generado.

Este proceso se repite cinco veces en un bucle. Cada iteración usa el último fragmento de texto generado como entrada para el siguiente fragmento de texto a generar. El parámetro 'temperature' en la función 'model.generate' controla la aleatoriedad de la salida. Valores más bajos hacen que la salida sea más determinista, mientras que valores más altos añaden más variabilidad.

Finalmente, se imprime todo el texto generado.

8.3 Generación de Texto con el Modelo Ajustado

En esta sección, nos enfocaremos en generar texto utilizando el modelo GPT-2 ajustado. La generación de texto implica usar el modelo entrenado para predecir las siguientes palabras en una secuencia, creando texto coherente y contextualmente relevante basado en un prompt dado. Exploraremos cómo generar texto con varios parámetros y evaluaremos la calidad del texto generado.

8.3.1 Generación de Texto con un Prompt

El uso principal de nuestro modelo GPT-2 ajustado es generar texto basado en un prompt inicial. Esto implica proporcionar al modelo una secuencia inicial de palabras y dejar que prediga las palabras subsecuentes para completar el texto.

Ejemplo: Generación de Texto con un Prompt

# Define the prompt
prompt = "In the heart of the city, there was a secret garden where"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate text
output = model.generate(input_ids, max_length=100, num_return_sequences=1)

# Decode the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Este código de ejemplo es un script simple que utiliza un modelo de lenguaje preentrenado para generar texto basado en un prompt dado. El prompt, "En el corazón de la ciudad, había un jardín secreto donde", se tokeniza (se convierte en un formato que el modelo puede entender) y luego se pasa al modelo. El modelo luego genera una secuencia de palabras que continúa el prompt, hasta una longitud máxima de 100 palabras. El texto generado se decodifica nuevamente a un formato legible para los humanos y se imprime en la consola.

8.3.2 Ajuste de los Parámetros de Generación

La generación de texto puede ser influenciada por varios parámetros que controlan la calidad, diversidad y longitud del texto generado. Los parámetros clave incluyen:

  • Max Length: El número máximo de tokens a generar.
  • Temperature: Controla la aleatoriedad de las predicciones al escalar los logits antes de aplicar softmax. Valores más bajos (por ejemplo, 0.7) hacen que la salida sea más determinista, mientras que valores más altos (por ejemplo, 1.0) aumentan la diversidad.
  • Top-k Sampling: Limita el grupo de muestreo a los k tokens siguientes más probables.
  • Top-p (Nucleus) Sampling: Limita el grupo de muestreo al conjunto más pequeño de tokens con una probabilidad acumulada por encima de un umbral (por ejemplo, 0.9).

Ejemplo: Ajuste de los Parámetros de Generación

# Generate text with different parameters
output = model.generate(
    input_ids,
    max_length=150,
    num_return_sequences=1,
    temperature=0.7,
    top_k=50,
    top_p=0.9
)

# Decode and print the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

La función 'model.generate' se llama con varios parámetros que influyen en la salida: 'input_ids' son la entrada para el modelo, 'max_length' es la longitud máxima del texto generado, 'num_return_sequences' es el número de secuencias generadas a devolver, 'temperature' afecta la aleatoriedad en la salida (valores más bajos significan más determinista), 'top_k' limita el número de opciones con la probabilidad más alta que el modelo puede elegir, y 'top_p' implementa el muestreo nucleus, donde el modelo solo selecciona el conjunto más pequeño posible de palabras cuya probabilidad acumulada excede el valor especificado. La salida generada se decodifica y se imprime.

8.3.3 Generación de Múltiples Variaciones

Una de las ventajas de usar un modelo generativo como GPT-2 es la capacidad de generar múltiples variaciones de texto basadas en el mismo prompt. Esto puede ser útil para tareas que requieren salidas creativas, como la escritura de historias, la generación de diálogos y la creación de contenido.

Ejemplo: Generación de Múltiples Variaciones

# Define the prompt
prompt = "The mysterious cave was hidden behind the waterfall,"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate multiple variations of text
outputs = model.generate(input_ids, max_length=100, num_return_sequences=3, temperature=0.7)

# Decode and print each generated variation
for i, output in enumerate(outputs):
    generated_text = tokenizer.decode(output, skip_special_tokens=True)
    print(f"Variation {i+1}:\\n{generated_text}\\n")

Este código en Python utiliza un modelo y un tokenizador preentrenados para generar texto. La entrada para el modelo es un prompt, "La cueva misteriosa estaba escondida detrás de la cascada,". El modelo luego genera tres continuaciones diferentes de este prompt, cada una con una longitud máxima de 100 tokens. El parámetro 'temperature' controla la aleatoriedad de la salida; un valor más bajo hace que la salida sea más determinista, mientras que un valor más alto la hace más aleatoria. El texto generado se decodifica (se convierte de IDs de tokens a palabras) y se imprime.

8.3.4 Manejo de la Generación de Texto de Larga Duración

Para tareas que requieren generar textos más largos, como artículos o informes, es importante gestionar la capacidad del modelo para mantener la coherencia y el contexto en secuencias más largas. Esto se puede lograr generando texto en fragmentos y alimentando el texto generado de nuevo en el modelo como un nuevo prompt.

Ejemplo: Generación de Texto de Larga Duración

# Define the initial prompt
prompt = "In the beginning, the universe was a vast expanse of nothingness, until"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Initialize the generated text
generated_text = prompt

# Generate text in chunks
for _ in range(5):  # Generate 5 chunks of text
    output = model.generate(input_ids, max_length=100, num_return_sequences=1, temperature=0.7)
    chunk = tokenizer.decode(output[0], skip_special_tokens=True)
    generated_text += chunk
    input_ids = tokenizer.encode(chunk, return_tensors='pt')

print(generated_text)

El prompt inicial ("Al principio, el universo...") es codificado en tokens por el tokenizador, y luego estos tokens se pasan al modelo. El modelo genera nuevos tokens que representan un fragmento de texto. Este fragmento de texto se decodifica de nuevo en texto legible para humanos y se agrega al texto generado.

Este proceso se repite cinco veces en un bucle. Cada iteración usa el último fragmento de texto generado como entrada para el siguiente fragmento de texto a generar. El parámetro 'temperature' en la función 'model.generate' controla la aleatoriedad de la salida. Valores más bajos hacen que la salida sea más determinista, mientras que valores más altos añaden más variabilidad.

Finalmente, se imprime todo el texto generado.

8.3 Generación de Texto con el Modelo Ajustado

En esta sección, nos enfocaremos en generar texto utilizando el modelo GPT-2 ajustado. La generación de texto implica usar el modelo entrenado para predecir las siguientes palabras en una secuencia, creando texto coherente y contextualmente relevante basado en un prompt dado. Exploraremos cómo generar texto con varios parámetros y evaluaremos la calidad del texto generado.

8.3.1 Generación de Texto con un Prompt

El uso principal de nuestro modelo GPT-2 ajustado es generar texto basado en un prompt inicial. Esto implica proporcionar al modelo una secuencia inicial de palabras y dejar que prediga las palabras subsecuentes para completar el texto.

Ejemplo: Generación de Texto con un Prompt

# Define the prompt
prompt = "In the heart of the city, there was a secret garden where"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate text
output = model.generate(input_ids, max_length=100, num_return_sequences=1)

# Decode the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Este código de ejemplo es un script simple que utiliza un modelo de lenguaje preentrenado para generar texto basado en un prompt dado. El prompt, "En el corazón de la ciudad, había un jardín secreto donde", se tokeniza (se convierte en un formato que el modelo puede entender) y luego se pasa al modelo. El modelo luego genera una secuencia de palabras que continúa el prompt, hasta una longitud máxima de 100 palabras. El texto generado se decodifica nuevamente a un formato legible para los humanos y se imprime en la consola.

8.3.2 Ajuste de los Parámetros de Generación

La generación de texto puede ser influenciada por varios parámetros que controlan la calidad, diversidad y longitud del texto generado. Los parámetros clave incluyen:

  • Max Length: El número máximo de tokens a generar.
  • Temperature: Controla la aleatoriedad de las predicciones al escalar los logits antes de aplicar softmax. Valores más bajos (por ejemplo, 0.7) hacen que la salida sea más determinista, mientras que valores más altos (por ejemplo, 1.0) aumentan la diversidad.
  • Top-k Sampling: Limita el grupo de muestreo a los k tokens siguientes más probables.
  • Top-p (Nucleus) Sampling: Limita el grupo de muestreo al conjunto más pequeño de tokens con una probabilidad acumulada por encima de un umbral (por ejemplo, 0.9).

Ejemplo: Ajuste de los Parámetros de Generación

# Generate text with different parameters
output = model.generate(
    input_ids,
    max_length=150,
    num_return_sequences=1,
    temperature=0.7,
    top_k=50,
    top_p=0.9
)

# Decode and print the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

La función 'model.generate' se llama con varios parámetros que influyen en la salida: 'input_ids' son la entrada para el modelo, 'max_length' es la longitud máxima del texto generado, 'num_return_sequences' es el número de secuencias generadas a devolver, 'temperature' afecta la aleatoriedad en la salida (valores más bajos significan más determinista), 'top_k' limita el número de opciones con la probabilidad más alta que el modelo puede elegir, y 'top_p' implementa el muestreo nucleus, donde el modelo solo selecciona el conjunto más pequeño posible de palabras cuya probabilidad acumulada excede el valor especificado. La salida generada se decodifica y se imprime.

8.3.3 Generación de Múltiples Variaciones

Una de las ventajas de usar un modelo generativo como GPT-2 es la capacidad de generar múltiples variaciones de texto basadas en el mismo prompt. Esto puede ser útil para tareas que requieren salidas creativas, como la escritura de historias, la generación de diálogos y la creación de contenido.

Ejemplo: Generación de Múltiples Variaciones

# Define the prompt
prompt = "The mysterious cave was hidden behind the waterfall,"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate multiple variations of text
outputs = model.generate(input_ids, max_length=100, num_return_sequences=3, temperature=0.7)

# Decode and print each generated variation
for i, output in enumerate(outputs):
    generated_text = tokenizer.decode(output, skip_special_tokens=True)
    print(f"Variation {i+1}:\\n{generated_text}\\n")

Este código en Python utiliza un modelo y un tokenizador preentrenados para generar texto. La entrada para el modelo es un prompt, "La cueva misteriosa estaba escondida detrás de la cascada,". El modelo luego genera tres continuaciones diferentes de este prompt, cada una con una longitud máxima de 100 tokens. El parámetro 'temperature' controla la aleatoriedad de la salida; un valor más bajo hace que la salida sea más determinista, mientras que un valor más alto la hace más aleatoria. El texto generado se decodifica (se convierte de IDs de tokens a palabras) y se imprime.

8.3.4 Manejo de la Generación de Texto de Larga Duración

Para tareas que requieren generar textos más largos, como artículos o informes, es importante gestionar la capacidad del modelo para mantener la coherencia y el contexto en secuencias más largas. Esto se puede lograr generando texto en fragmentos y alimentando el texto generado de nuevo en el modelo como un nuevo prompt.

Ejemplo: Generación de Texto de Larga Duración

# Define the initial prompt
prompt = "In the beginning, the universe was a vast expanse of nothingness, until"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Initialize the generated text
generated_text = prompt

# Generate text in chunks
for _ in range(5):  # Generate 5 chunks of text
    output = model.generate(input_ids, max_length=100, num_return_sequences=1, temperature=0.7)
    chunk = tokenizer.decode(output[0], skip_special_tokens=True)
    generated_text += chunk
    input_ids = tokenizer.encode(chunk, return_tensors='pt')

print(generated_text)

El prompt inicial ("Al principio, el universo...") es codificado en tokens por el tokenizador, y luego estos tokens se pasan al modelo. El modelo genera nuevos tokens que representan un fragmento de texto. Este fragmento de texto se decodifica de nuevo en texto legible para humanos y se agrega al texto generado.

Este proceso se repite cinco veces en un bucle. Cada iteración usa el último fragmento de texto generado como entrada para el siguiente fragmento de texto a generar. El parámetro 'temperature' en la función 'model.generate' controla la aleatoriedad de la salida. Valores más bajos hacen que la salida sea más determinista, mientras que valores más altos añaden más variabilidad.

Finalmente, se imprime todo el texto generado.

8.3 Generación de Texto con el Modelo Ajustado

En esta sección, nos enfocaremos en generar texto utilizando el modelo GPT-2 ajustado. La generación de texto implica usar el modelo entrenado para predecir las siguientes palabras en una secuencia, creando texto coherente y contextualmente relevante basado en un prompt dado. Exploraremos cómo generar texto con varios parámetros y evaluaremos la calidad del texto generado.

8.3.1 Generación de Texto con un Prompt

El uso principal de nuestro modelo GPT-2 ajustado es generar texto basado en un prompt inicial. Esto implica proporcionar al modelo una secuencia inicial de palabras y dejar que prediga las palabras subsecuentes para completar el texto.

Ejemplo: Generación de Texto con un Prompt

# Define the prompt
prompt = "In the heart of the city, there was a secret garden where"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate text
output = model.generate(input_ids, max_length=100, num_return_sequences=1)

# Decode the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Este código de ejemplo es un script simple que utiliza un modelo de lenguaje preentrenado para generar texto basado en un prompt dado. El prompt, "En el corazón de la ciudad, había un jardín secreto donde", se tokeniza (se convierte en un formato que el modelo puede entender) y luego se pasa al modelo. El modelo luego genera una secuencia de palabras que continúa el prompt, hasta una longitud máxima de 100 palabras. El texto generado se decodifica nuevamente a un formato legible para los humanos y se imprime en la consola.

8.3.2 Ajuste de los Parámetros de Generación

La generación de texto puede ser influenciada por varios parámetros que controlan la calidad, diversidad y longitud del texto generado. Los parámetros clave incluyen:

  • Max Length: El número máximo de tokens a generar.
  • Temperature: Controla la aleatoriedad de las predicciones al escalar los logits antes de aplicar softmax. Valores más bajos (por ejemplo, 0.7) hacen que la salida sea más determinista, mientras que valores más altos (por ejemplo, 1.0) aumentan la diversidad.
  • Top-k Sampling: Limita el grupo de muestreo a los k tokens siguientes más probables.
  • Top-p (Nucleus) Sampling: Limita el grupo de muestreo al conjunto más pequeño de tokens con una probabilidad acumulada por encima de un umbral (por ejemplo, 0.9).

Ejemplo: Ajuste de los Parámetros de Generación

# Generate text with different parameters
output = model.generate(
    input_ids,
    max_length=150,
    num_return_sequences=1,
    temperature=0.7,
    top_k=50,
    top_p=0.9
)

# Decode and print the generated text
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

La función 'model.generate' se llama con varios parámetros que influyen en la salida: 'input_ids' son la entrada para el modelo, 'max_length' es la longitud máxima del texto generado, 'num_return_sequences' es el número de secuencias generadas a devolver, 'temperature' afecta la aleatoriedad en la salida (valores más bajos significan más determinista), 'top_k' limita el número de opciones con la probabilidad más alta que el modelo puede elegir, y 'top_p' implementa el muestreo nucleus, donde el modelo solo selecciona el conjunto más pequeño posible de palabras cuya probabilidad acumulada excede el valor especificado. La salida generada se decodifica y se imprime.

8.3.3 Generación de Múltiples Variaciones

Una de las ventajas de usar un modelo generativo como GPT-2 es la capacidad de generar múltiples variaciones de texto basadas en el mismo prompt. Esto puede ser útil para tareas que requieren salidas creativas, como la escritura de historias, la generación de diálogos y la creación de contenido.

Ejemplo: Generación de Múltiples Variaciones

# Define the prompt
prompt = "The mysterious cave was hidden behind the waterfall,"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Generate multiple variations of text
outputs = model.generate(input_ids, max_length=100, num_return_sequences=3, temperature=0.7)

# Decode and print each generated variation
for i, output in enumerate(outputs):
    generated_text = tokenizer.decode(output, skip_special_tokens=True)
    print(f"Variation {i+1}:\\n{generated_text}\\n")

Este código en Python utiliza un modelo y un tokenizador preentrenados para generar texto. La entrada para el modelo es un prompt, "La cueva misteriosa estaba escondida detrás de la cascada,". El modelo luego genera tres continuaciones diferentes de este prompt, cada una con una longitud máxima de 100 tokens. El parámetro 'temperature' controla la aleatoriedad de la salida; un valor más bajo hace que la salida sea más determinista, mientras que un valor más alto la hace más aleatoria. El texto generado se decodifica (se convierte de IDs de tokens a palabras) y se imprime.

8.3.4 Manejo de la Generación de Texto de Larga Duración

Para tareas que requieren generar textos más largos, como artículos o informes, es importante gestionar la capacidad del modelo para mantener la coherencia y el contexto en secuencias más largas. Esto se puede lograr generando texto en fragmentos y alimentando el texto generado de nuevo en el modelo como un nuevo prompt.

Ejemplo: Generación de Texto de Larga Duración

# Define the initial prompt
prompt = "In the beginning, the universe was a vast expanse of nothingness, until"

# Tokenize the prompt
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# Initialize the generated text
generated_text = prompt

# Generate text in chunks
for _ in range(5):  # Generate 5 chunks of text
    output = model.generate(input_ids, max_length=100, num_return_sequences=1, temperature=0.7)
    chunk = tokenizer.decode(output[0], skip_special_tokens=True)
    generated_text += chunk
    input_ids = tokenizer.encode(chunk, return_tensors='pt')

print(generated_text)

El prompt inicial ("Al principio, el universo...") es codificado en tokens por el tokenizador, y luego estos tokens se pasan al modelo. El modelo genera nuevos tokens que representan un fragmento de texto. Este fragmento de texto se decodifica de nuevo en texto legible para humanos y se agrega al texto generado.

Este proceso se repite cinco veces en un bucle. Cada iteración usa el último fragmento de texto generado como entrada para el siguiente fragmento de texto a generar. El parámetro 'temperature' en la función 'model.generate' controla la aleatoriedad de la salida. Valores más bajos hacen que la salida sea más determinista, mientras que valores más altos añaden más variabilidad.

Finalmente, se imprime todo el texto generado.